aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.in291
-rw-r--r--README86
-rw-r--r--TAR.include3
l---------aclocal.m41
-rw-r--r--configure.in79
-rw-r--r--erl-build-tool-vars.sh28
-rw-r--r--erts/aclocal.m4498
-rwxr-xr-xerts/autoconf/win32.config.cache4
-rw-r--r--erts/configure.in545
-rw-r--r--erts/doc/src/erl.xml5
-rw-r--r--erts/emulator/beam/atom.c12
-rw-r--r--erts/emulator/beam/atom.h21
-rw-r--r--erts/emulator/beam/erl_init.c22
-rw-r--r--erts/emulator/beam/erl_port_task.c12
-rw-r--r--erts/emulator/beam/erl_process.c38
-rw-r--r--erts/emulator/beam/erl_vm.h2
-rw-r--r--erts/emulator/beam/external.c7
-rw-r--r--erts/etc/common/Makefile.in15
-rw-r--r--erts/etc/common/erlexec.c1
-rw-r--r--erts/etc/unix/Install.src57
-rw-r--r--erts/start_scripts/Makefile14
-rw-r--r--erts/test/Makefile21
-rw-r--r--erts/test/install_SUITE.erl727
-rwxr-xr-xerts/test/install_SUITE_data/dirname2
-rw-r--r--lib/Makefile16
-rw-r--r--lib/asn1/c_src/Makefile124
-rw-r--r--lib/asn1/c_src/Makefile.in139
-rw-r--r--lib/compiler/doc/src/compile.xml2
-rw-r--r--lib/configure.in37
-rw-r--r--lib/configure.in.src61
-rw-r--r--lib/cosEvent/doc/src/CosEventChannelAdmin.xml26
-rw-r--r--lib/cosEvent/doc/src/notes.xml18
-rw-r--r--lib/cosEvent/vsn.mk3
-rw-r--r--lib/crypto/c_src/Makefile.in28
-rw-r--r--lib/erl_interface/configure.in164
-rw-r--r--lib/erl_interface/src/Makefile.in12
-rw-r--r--lib/erl_interface/src/auxdir/config.h.in277
-rw-r--r--lib/erl_interface/src/legacy/erl_eterm.c16
-rw-r--r--lib/et/doc/src/book.gifbin1081 -> 0 bytes
-rw-r--r--lib/et/doc/src/coffee_order.pngbin0 -> 23692 bytes
-rw-r--r--lib/et/doc/src/et.xml67
-rw-r--r--lib/et/doc/src/et_architecture.xml554
-rw-r--r--lib/et/doc/src/et_collector.xml19
-rw-r--r--lib/et/doc/src/et_desc.xmlsrc683
-rw-r--r--lib/et/doc/src/et_examples.xml311
-rw-r--r--lib/et/doc/src/et_examples.xmlsrc383
-rw-r--r--lib/et/doc/src/et_intro.xml82
-rw-r--r--lib/et/doc/src/et_selector.xml112
-rw-r--r--lib/et/doc/src/et_tutorial.xmlsrc273
-rw-r--r--lib/et/doc/src/et_viewer.xml9
-rw-r--r--lib/et/doc/src/files.mk42
-rw-r--r--lib/et/doc/src/live_trans.gifbin8691 -> 0 bytes
-rw-r--r--lib/et/doc/src/live_trans.pngbin0 -> 19999 bytes
-rw-r--r--lib/et/doc/src/live_trans.ps1559
-rw-r--r--lib/et/doc/src/megaco_collector.gifbin68430 -> 0 bytes
-rw-r--r--lib/et/doc/src/megaco_collector.pngbin0 -> 37915 bytes
-rw-r--r--lib/et/doc/src/megaco_collector.ps3247
-rw-r--r--lib/et/doc/src/megaco_filter.gifbin8827 -> 0 bytes
-rw-r--r--lib/et/doc/src/megaco_filter.pngbin0 -> 19067 bytes
-rw-r--r--lib/et/doc/src/megaco_filter.ps1733
-rw-r--r--lib/et/doc/src/megaco_tracer.gifbin12400 -> 0 bytes
-rw-r--r--lib/et/doc/src/megaco_tracer.pngbin0 -> 46696 bytes
-rw-r--r--lib/et/doc/src/megaco_tracer.ps2508
-rw-r--r--lib/et/doc/src/note.gifbin1539 -> 0 bytes
-rw-r--r--lib/et/doc/src/notes.gifbin2005 -> 0 bytes
-rw-r--r--lib/et/doc/src/notes.xml60
-rw-r--r--lib/et/doc/src/part.xml9
-rw-r--r--lib/et/doc/src/ref_man.gifbin1530 -> 0 bytes
-rw-r--r--lib/et/doc/src/sim_trans.gifbin20208 -> 0 bytes
-rw-r--r--lib/et/doc/src/sim_trans.pngbin0 -> 19026 bytes
-rw-r--r--lib/et/doc/src/sim_trans.ps6595
-rw-r--r--lib/et/doc/src/sim_trans_contents_viewer_collector.gifbin11607 -> 0 bytes
-rw-r--r--lib/et/doc/src/sim_trans_contents_viewer_collector.pngbin0 -> 13361 bytes
-rw-r--r--lib/et/doc/src/sim_trans_contents_viewer_collector.ps1407
-rw-r--r--lib/et/doc/src/sim_trans_contents_viewer_mgr_actors.gifbin7531 -> 0 bytes
-rw-r--r--lib/et/doc/src/sim_trans_contents_viewer_mgr_actors.pngbin0 -> 15235 bytes
-rw-r--r--lib/et/doc/src/sim_trans_contents_viewer_mgr_actors.ps1371
-rw-r--r--lib/et/doc/src/sim_trans_mgr_actors.gifbin9118 -> 0 bytes
-rw-r--r--lib/et/doc/src/sim_trans_mgr_actors.pngbin0 -> 18936 bytes
-rw-r--r--lib/et/doc/src/sim_trans_mgr_actors.ps1705
-rw-r--r--lib/et/doc/src/sim_trans_move_actor.gifbin8965 -> 0 bytes
-rw-r--r--lib/et/doc/src/sim_trans_move_actor.pngbin0 -> 19026 bytes
-rw-r--r--lib/et/doc/src/sim_trans_move_actor.ps6403
-rw-r--r--lib/et/doc/src/sim_trans_write_lock.gifbin10871 -> 0 bytes
-rw-r--r--lib/et/doc/src/sim_trans_write_lock.pngbin0 -> 13425 bytes
-rw-r--r--lib/et/doc/src/sim_trans_write_lock.ps1287
-rw-r--r--lib/et/doc/src/user_guide.gifbin1581 -> 0 bytes
-rw-r--r--lib/et/doc/src/warning.gifbin1498 -> 0 bytes
-rw-r--r--lib/et/examples/Makefile14
-rw-r--r--lib/et/examples/et_demo.erl103
-rw-r--r--lib/et/examples/et_display_demo.erl32
-rw-r--r--lib/et/examples/et_trace_demo.erl38
-rw-r--r--lib/et/src/Makefile17
-rw-r--r--lib/et/src/et.app.src17
-rw-r--r--lib/et/src/et.erl38
-rw-r--r--lib/et/src/et_collector.erl352
-rw-r--r--lib/et/src/et_gs_contents_viewer.erl (renamed from lib/et/src/et_contents_viewer.erl)86
-rw-r--r--lib/et/src/et_gs_viewer.erl1481
-rw-r--r--lib/et/src/et_internal.hrl16
-rw-r--r--lib/et/src/et_selector.erl78
-rw-r--r--lib/et/src/et_viewer.erl1492
-rw-r--r--lib/et/src/et_wx_contents_viewer.erl700
-rw-r--r--lib/et/src/et_wx_viewer.erl2122
-rw-r--r--lib/et/src/modules.mk17
-rw-r--r--lib/et/test/Makefile (renamed from lib/et/doc/src/make.dep)76
-rw-r--r--lib/et/test/README30
-rw-r--r--lib/et/test/et.spec2
-rw-r--r--lib/et/test/et_test_lib.erl329
-rw-r--r--lib/et/test/et_test_lib.hrl90
-rw-r--r--lib/et/test/et_wx_SUITE.erl100
-rwxr-xr-xlib/et/test/ett55
-rw-r--r--lib/et/test/ett.erl154
-rw-r--r--lib/et/vsn.mk15
-rw-r--r--lib/hipe/rtl/Makefile15
-rw-r--r--lib/kernel/test/code_SUITE.erl12
-rw-r--r--lib/megaco/configure.in113
-rw-r--r--lib/megaco/doc/src/Makefile19
-rw-r--r--lib/megaco/doc/src/megaco_codec_transform.xml27
-rw-r--r--lib/megaco/doc/src/megaco_debug.xml28
-rw-r--r--lib/megaco/doc/src/megaco_performance.xml18
-rw-r--r--lib/megaco/doc/src/notes.xml48
-rw-r--r--lib/megaco/doc/standard/H.248.1-Corr1-200403.docbin296448 -> 0 bytes
-rw-r--r--lib/megaco/doc/standard/rfc2327.txt2355
-rw-r--r--lib/megaco/doc/standard/rfc3266.txt283
-rw-r--r--lib/megaco/examples/meas/meas.sh.skel12
-rw-r--r--lib/megaco/include/megaco.hrl19
-rw-r--r--lib/megaco/src/app/megaco.appup.src34
-rw-r--r--lib/megaco/src/engine/megaco_config.erl12
-rw-r--r--lib/megaco/src/engine/megaco_filter.erl286
-rw-r--r--lib/megaco/src/flex/Makefile.in80
-rw-r--r--lib/megaco/src/flex/megaco_flex_scanner_drv.flex.src13
-rw-r--r--lib/megaco/src/flex/megaco_flex_scanner_handler.erl45
-rw-r--r--lib/megaco/test/Makefile173
-rw-r--r--lib/megaco/vsn.mk21
-rw-r--r--lib/mnesia/doc/src/mnesia.xml17
-rw-r--r--lib/mnesia/src/mnesia.erl12
-rw-r--r--lib/mnesia/src/mnesia_loader.erl45
-rw-r--r--lib/mnesia/src/mnesia_monitor.erl22
-rw-r--r--lib/mnesia/src/mnesia_tm.erl11
l---------lib/odbc/aclocal.m41
-rw-r--r--lib/odbc/c_src/Makefile.in22
-rw-r--r--lib/odbc/configure.in160
-rw-r--r--lib/orber/doc/src/CosNaming.xml26
-rw-r--r--lib/orber/doc/src/Makefile11
-rw-r--r--lib/orber/doc/src/ch_example.xml170
-rw-r--r--lib/orber/doc/src/example_part.xml25
-rw-r--r--lib/orber/doc/src/make.dep9
-rw-r--r--lib/orber/doc/src/notes.xml6
-rw-r--r--lib/orber/doc/src/part.xml7
-rw-r--r--lib/orber/vsn.mk3
-rw-r--r--lib/parsetools/test/yecc_SUITE.erl2
-rw-r--r--lib/runtime_tools/c_src/Makefile.in31
-rw-r--r--lib/snmp/doc/src/notes.xml59
-rw-r--r--lib/snmp/doc/src/snmp_app.xml22
-rw-r--r--lib/snmp/doc/src/snmp_config.xml21
-rw-r--r--lib/snmp/doc/src/snmpa_conf.xml6
-rw-r--r--lib/snmp/src/agent/snmpa.erl17
-rw-r--r--lib/snmp/src/agent/snmpa_agent.erl130
-rw-r--r--lib/snmp/src/agent/snmpa_net_if.erl112
-rw-r--r--lib/snmp/src/agent/snmpa_usm.erl18
-rw-r--r--lib/snmp/src/app/snmp.appup.src52
-rw-r--r--lib/snmp/src/manager/snmpm_config.erl62
-rw-r--r--lib/snmp/src/manager/snmpm_net_if.erl66
-rw-r--r--lib/snmp/src/misc/snmp_config.erl144
-rw-r--r--lib/snmp/src/misc/snmp_log.erl495
-rw-r--r--lib/snmp/src/misc/snmp_usm.erl26
-rw-r--r--lib/snmp/test/snmp_agent_test.erl475
-rw-r--r--lib/snmp/test/snmp_log_test.erl299
-rw-r--r--lib/snmp/test/snmp_manager_config_test.erl184
-rw-r--r--lib/snmp/test/snmp_manager_test.erl96
-rw-r--r--lib/snmp/test/snmp_test_mgr.erl10
-rw-r--r--lib/snmp/vsn.mk18
-rw-r--r--lib/ssl/c_src/Makefile.in22
-rw-r--r--lib/stdlib/doc/src/epp.xml26
-rw-r--r--lib/stdlib/doc/src/erl_lint.xml8
-rw-r--r--lib/stdlib/doc/src/erl_parse.xml26
-rw-r--r--lib/stdlib/doc/src/file_sorter.xml14
-rw-r--r--lib/stdlib/doc/src/gb_sets.xml8
-rw-r--r--lib/stdlib/doc/src/gb_trees.xml8
-rw-r--r--lib/stdlib/doc/src/io.xml2
-rw-r--r--lib/stdlib/doc/src/lists.xml17
-rw-r--r--lib/stdlib/doc/src/proplists.xml9
-rw-r--r--lib/stdlib/doc/src/shell.xml40
-rw-r--r--lib/stdlib/doc/src/sofs.xml17
-rw-r--r--lib/stdlib/doc/src/stdlib_app.xml34
-rw-r--r--lib/stdlib/src/epp.erl265
-rw-r--r--lib/stdlib/src/shell.erl104
-rw-r--r--lib/stdlib/src/shell_default.erl11
-rw-r--r--lib/stdlib/test/epp_SUITE.erl143
-rw-r--r--lib/stdlib/test/shell_SUITE.erl101
-rw-r--r--lib/wx/c_src/Makefile.in23
-rw-r--r--lib/wx/c_src/gen/gl_fdefs.h10
-rw-r--r--lib/wx/c_src/gen/gl_finit.h10
-rw-r--r--lib/wx/c_src/gen/gl_funcs.cpp10
-rw-r--r--lib/wx/c_src/gen/glu_finit.h10
-rw-r--r--lib/wx/c_src/gen/wxe_derived_dest.h10
-rw-r--r--lib/wx/c_src/gen/wxe_init.cpp10
-rwxr-xr-xlib/wx/configure.in21
-rw-r--r--lib/wx/include/gl.hrl10
-rw-r--r--lib/wx/include/glu.hrl10
-rw-r--r--lib/wx/src/gen/gl.erl10
-rw-r--r--lib/wx/src/gen/gl_debug.hrl10
-rw-r--r--lib/wx/src/gen/glu.erl10
-rw-r--r--lib/wx/src/gen/wxAcceleratorEntry.erl10
-rw-r--r--lib/wx/src/gen/wxAcceleratorTable.erl10
-rw-r--r--lib/wx/src/gen/wxArtProvider.erl10
-rw-r--r--lib/wx/src/gen/wxAuiDockArt.erl10
-rw-r--r--lib/wx/src/gen/wxAuiManager.erl10
-rw-r--r--lib/wx/src/gen/wxAuiManagerEvent.erl10
-rw-r--r--lib/wx/src/gen/wxAuiNotebook.erl10
-rw-r--r--lib/wx/src/gen/wxAuiNotebookEvent.erl10
-rw-r--r--lib/wx/src/gen/wxAuiPaneInfo.erl10
-rw-r--r--lib/wx/src/gen/wxAuiTabArt.erl10
-rw-r--r--lib/wx/src/gen/wxBitmap.erl10
-rw-r--r--lib/wx/src/gen/wxBitmapButton.erl10
-rw-r--r--lib/wx/src/gen/wxBitmapDataObject.erl10
-rw-r--r--lib/wx/src/gen/wxBoxSizer.erl10
-rw-r--r--lib/wx/src/gen/wxBrush.erl10
-rw-r--r--lib/wx/src/gen/wxBufferedDC.erl10
-rw-r--r--lib/wx/src/gen/wxBufferedPaintDC.erl10
-rw-r--r--lib/wx/src/gen/wxButton.erl10
-rw-r--r--lib/wx/src/gen/wxCalendarCtrl.erl10
-rw-r--r--lib/wx/src/gen/wxCalendarDateAttr.erl10
-rw-r--r--lib/wx/src/gen/wxCalendarEvent.erl10
-rw-r--r--lib/wx/src/gen/wxCaret.erl10
-rw-r--r--lib/wx/src/gen/wxCheckBox.erl10
-rw-r--r--lib/wx/src/gen/wxCheckListBox.erl10
-rw-r--r--lib/wx/src/gen/wxChildFocusEvent.erl10
-rw-r--r--lib/wx/src/gen/wxChoice.erl10
-rw-r--r--lib/wx/src/gen/wxChoicebook.erl10
-rw-r--r--lib/wx/src/gen/wxClientDC.erl10
-rw-r--r--lib/wx/src/gen/wxClipboard.erl10
-rw-r--r--lib/wx/src/gen/wxCloseEvent.erl10
-rw-r--r--lib/wx/src/gen/wxColourData.erl10
-rw-r--r--lib/wx/src/gen/wxColourDialog.erl10
-rw-r--r--lib/wx/src/gen/wxColourPickerCtrl.erl10
-rw-r--r--lib/wx/src/gen/wxColourPickerEvent.erl10
-rw-r--r--lib/wx/src/gen/wxComboBox.erl10
-rw-r--r--lib/wx/src/gen/wxCommandEvent.erl10
-rw-r--r--lib/wx/src/gen/wxContextMenuEvent.erl10
-rw-r--r--lib/wx/src/gen/wxControl.erl10
-rw-r--r--lib/wx/src/gen/wxControlWithItems.erl10
-rw-r--r--lib/wx/src/gen/wxCursor.erl10
-rw-r--r--lib/wx/src/gen/wxDC.erl10
-rw-r--r--lib/wx/src/gen/wxDataObject.erl10
-rw-r--r--lib/wx/src/gen/wxDateEvent.erl10
-rw-r--r--lib/wx/src/gen/wxDatePickerCtrl.erl10
-rw-r--r--lib/wx/src/gen/wxDialog.erl10
-rw-r--r--lib/wx/src/gen/wxDirDialog.erl10
-rw-r--r--lib/wx/src/gen/wxDirPickerCtrl.erl10
-rw-r--r--lib/wx/src/gen/wxDisplayChangedEvent.erl10
-rw-r--r--lib/wx/src/gen/wxEraseEvent.erl10
-rw-r--r--lib/wx/src/gen/wxEvent.erl10
-rw-r--r--lib/wx/src/gen/wxEvtHandler.erl10
-rw-r--r--lib/wx/src/gen/wxFileDataObject.erl10
-rw-r--r--lib/wx/src/gen/wxFileDialog.erl10
-rw-r--r--lib/wx/src/gen/wxFileDirPickerEvent.erl10
-rw-r--r--lib/wx/src/gen/wxFilePickerCtrl.erl10
-rw-r--r--lib/wx/src/gen/wxFindReplaceData.erl10
-rw-r--r--lib/wx/src/gen/wxFindReplaceDialog.erl10
-rw-r--r--lib/wx/src/gen/wxFlexGridSizer.erl10
-rw-r--r--lib/wx/src/gen/wxFocusEvent.erl10
-rw-r--r--lib/wx/src/gen/wxFont.erl10
-rw-r--r--lib/wx/src/gen/wxFontData.erl10
-rw-r--r--lib/wx/src/gen/wxFontDialog.erl10
-rw-r--r--lib/wx/src/gen/wxFontPickerCtrl.erl10
-rw-r--r--lib/wx/src/gen/wxFontPickerEvent.erl10
-rw-r--r--lib/wx/src/gen/wxFrame.erl10
-rw-r--r--lib/wx/src/gen/wxGBSizerItem.erl10
-rw-r--r--lib/wx/src/gen/wxGLCanvas.erl10
-rw-r--r--lib/wx/src/gen/wxGauge.erl10
-rw-r--r--lib/wx/src/gen/wxGraphicsBrush.erl10
-rw-r--r--lib/wx/src/gen/wxGraphicsContext.erl10
-rw-r--r--lib/wx/src/gen/wxGraphicsFont.erl10
-rw-r--r--lib/wx/src/gen/wxGraphicsMatrix.erl10
-rw-r--r--lib/wx/src/gen/wxGraphicsObject.erl10
-rw-r--r--lib/wx/src/gen/wxGraphicsPath.erl10
-rw-r--r--lib/wx/src/gen/wxGraphicsPen.erl10
-rw-r--r--lib/wx/src/gen/wxGraphicsRenderer.erl10
-rw-r--r--lib/wx/src/gen/wxGrid.erl10
-rw-r--r--lib/wx/src/gen/wxGridBagSizer.erl10
-rw-r--r--lib/wx/src/gen/wxGridCellAttr.erl10
-rw-r--r--lib/wx/src/gen/wxGridCellBoolEditor.erl10
-rw-r--r--lib/wx/src/gen/wxGridCellBoolRenderer.erl10
-rw-r--r--lib/wx/src/gen/wxGridCellChoiceEditor.erl10
-rw-r--r--lib/wx/src/gen/wxGridCellEditor.erl10
-rw-r--r--lib/wx/src/gen/wxGridCellFloatEditor.erl10
-rw-r--r--lib/wx/src/gen/wxGridCellFloatRenderer.erl10
-rw-r--r--lib/wx/src/gen/wxGridCellNumberEditor.erl10
-rw-r--r--lib/wx/src/gen/wxGridCellNumberRenderer.erl10
-rw-r--r--lib/wx/src/gen/wxGridCellRenderer.erl10
-rw-r--r--lib/wx/src/gen/wxGridCellStringRenderer.erl10
-rw-r--r--lib/wx/src/gen/wxGridCellTextEditor.erl10
-rw-r--r--lib/wx/src/gen/wxGridEvent.erl10
-rw-r--r--lib/wx/src/gen/wxGridSizer.erl10
-rw-r--r--lib/wx/src/gen/wxHelpEvent.erl10
-rw-r--r--lib/wx/src/gen/wxHtmlEasyPrinting.erl10
-rw-r--r--lib/wx/src/gen/wxHtmlLinkEvent.erl10
-rw-r--r--lib/wx/src/gen/wxHtmlWindow.erl10
-rw-r--r--lib/wx/src/gen/wxIcon.erl10
-rw-r--r--lib/wx/src/gen/wxIconBundle.erl10
-rw-r--r--lib/wx/src/gen/wxIconizeEvent.erl10
-rw-r--r--lib/wx/src/gen/wxIdleEvent.erl10
-rw-r--r--lib/wx/src/gen/wxImage.erl10
-rw-r--r--lib/wx/src/gen/wxImageList.erl10
-rw-r--r--lib/wx/src/gen/wxJoystickEvent.erl10
-rw-r--r--lib/wx/src/gen/wxKeyEvent.erl10
-rw-r--r--lib/wx/src/gen/wxLayoutAlgorithm.erl10
-rw-r--r--lib/wx/src/gen/wxListBox.erl10
-rw-r--r--lib/wx/src/gen/wxListCtrl.erl10
-rw-r--r--lib/wx/src/gen/wxListEvent.erl10
-rw-r--r--lib/wx/src/gen/wxListItem.erl10
-rw-r--r--lib/wx/src/gen/wxListView.erl10
-rw-r--r--lib/wx/src/gen/wxListbook.erl10
-rw-r--r--lib/wx/src/gen/wxLogNull.erl10
-rw-r--r--lib/wx/src/gen/wxMDIChildFrame.erl10
-rw-r--r--lib/wx/src/gen/wxMDIClientWindow.erl10
-rw-r--r--lib/wx/src/gen/wxMDIParentFrame.erl10
-rw-r--r--lib/wx/src/gen/wxMask.erl10
-rw-r--r--lib/wx/src/gen/wxMaximizeEvent.erl10
-rw-r--r--lib/wx/src/gen/wxMemoryDC.erl10
-rw-r--r--lib/wx/src/gen/wxMenu.erl10
-rw-r--r--lib/wx/src/gen/wxMenuBar.erl10
-rw-r--r--lib/wx/src/gen/wxMenuEvent.erl10
-rw-r--r--lib/wx/src/gen/wxMenuItem.erl10
-rw-r--r--lib/wx/src/gen/wxMessageDialog.erl10
-rw-r--r--lib/wx/src/gen/wxMiniFrame.erl10
-rw-r--r--lib/wx/src/gen/wxMirrorDC.erl10
-rw-r--r--lib/wx/src/gen/wxMouseCaptureChangedEvent.erl10
-rw-r--r--lib/wx/src/gen/wxMouseEvent.erl10
-rw-r--r--lib/wx/src/gen/wxMoveEvent.erl10
-rw-r--r--lib/wx/src/gen/wxMultiChoiceDialog.erl10
-rw-r--r--lib/wx/src/gen/wxNavigationKeyEvent.erl10
-rw-r--r--lib/wx/src/gen/wxNcPaintEvent.erl10
-rw-r--r--lib/wx/src/gen/wxNotebook.erl10
-rw-r--r--lib/wx/src/gen/wxNotebookEvent.erl10
-rw-r--r--lib/wx/src/gen/wxNotifyEvent.erl10
-rw-r--r--lib/wx/src/gen/wxPageSetupDialog.erl10
-rw-r--r--lib/wx/src/gen/wxPageSetupDialogData.erl10
-rw-r--r--lib/wx/src/gen/wxPaintDC.erl10
-rw-r--r--lib/wx/src/gen/wxPaintEvent.erl10
-rw-r--r--lib/wx/src/gen/wxPalette.erl10
-rw-r--r--lib/wx/src/gen/wxPaletteChangedEvent.erl10
-rw-r--r--lib/wx/src/gen/wxPanel.erl10
-rw-r--r--lib/wx/src/gen/wxPasswordEntryDialog.erl10
-rw-r--r--lib/wx/src/gen/wxPen.erl10
-rw-r--r--lib/wx/src/gen/wxPickerBase.erl10
-rw-r--r--lib/wx/src/gen/wxPostScriptDC.erl10
-rw-r--r--lib/wx/src/gen/wxPreviewCanvas.erl10
-rw-r--r--lib/wx/src/gen/wxPreviewControlBar.erl10
-rw-r--r--lib/wx/src/gen/wxPreviewFrame.erl10
-rw-r--r--lib/wx/src/gen/wxPrintData.erl10
-rw-r--r--lib/wx/src/gen/wxPrintDialog.erl10
-rw-r--r--lib/wx/src/gen/wxPrintDialogData.erl10
-rw-r--r--lib/wx/src/gen/wxPrintPreview.erl10
-rw-r--r--lib/wx/src/gen/wxPrinter.erl10
-rw-r--r--lib/wx/src/gen/wxPrintout.erl10
-rw-r--r--lib/wx/src/gen/wxProgressDialog.erl10
-rw-r--r--lib/wx/src/gen/wxQueryNewPaletteEvent.erl10
-rw-r--r--lib/wx/src/gen/wxRadioBox.erl10
-rw-r--r--lib/wx/src/gen/wxRadioButton.erl10
-rw-r--r--lib/wx/src/gen/wxRegion.erl10
-rw-r--r--lib/wx/src/gen/wxSashEvent.erl10
-rw-r--r--lib/wx/src/gen/wxSashLayoutWindow.erl10
-rw-r--r--lib/wx/src/gen/wxSashWindow.erl10
-rw-r--r--lib/wx/src/gen/wxScreenDC.erl10
-rw-r--r--lib/wx/src/gen/wxScrollBar.erl10
-rw-r--r--lib/wx/src/gen/wxScrollEvent.erl10
-rw-r--r--lib/wx/src/gen/wxScrollWinEvent.erl10
-rw-r--r--lib/wx/src/gen/wxScrolledWindow.erl10
-rw-r--r--lib/wx/src/gen/wxSetCursorEvent.erl10
-rw-r--r--lib/wx/src/gen/wxShowEvent.erl10
-rw-r--r--lib/wx/src/gen/wxSingleChoiceDialog.erl10
-rw-r--r--lib/wx/src/gen/wxSizeEvent.erl10
-rw-r--r--lib/wx/src/gen/wxSizer.erl10
-rw-r--r--lib/wx/src/gen/wxSizerFlags.erl10
-rw-r--r--lib/wx/src/gen/wxSizerItem.erl10
-rw-r--r--lib/wx/src/gen/wxSlider.erl10
-rw-r--r--lib/wx/src/gen/wxSpinButton.erl10
-rw-r--r--lib/wx/src/gen/wxSpinCtrl.erl10
-rw-r--r--lib/wx/src/gen/wxSpinEvent.erl10
-rw-r--r--lib/wx/src/gen/wxSplashScreen.erl10
-rw-r--r--lib/wx/src/gen/wxSplitterEvent.erl10
-rw-r--r--lib/wx/src/gen/wxSplitterWindow.erl10
-rw-r--r--lib/wx/src/gen/wxStaticBitmap.erl10
-rw-r--r--lib/wx/src/gen/wxStaticBox.erl10
-rw-r--r--lib/wx/src/gen/wxStaticBoxSizer.erl10
-rw-r--r--lib/wx/src/gen/wxStaticLine.erl10
-rw-r--r--lib/wx/src/gen/wxStaticText.erl10
-rw-r--r--lib/wx/src/gen/wxStatusBar.erl10
-rw-r--r--lib/wx/src/gen/wxStdDialogButtonSizer.erl10
-rw-r--r--lib/wx/src/gen/wxStyledTextCtrl.erl10
-rw-r--r--lib/wx/src/gen/wxStyledTextEvent.erl10
-rw-r--r--lib/wx/src/gen/wxSysColourChangedEvent.erl10
-rw-r--r--lib/wx/src/gen/wxTextAttr.erl10
-rw-r--r--lib/wx/src/gen/wxTextCtrl.erl10
-rw-r--r--lib/wx/src/gen/wxTextDataObject.erl10
-rw-r--r--lib/wx/src/gen/wxTextEntryDialog.erl10
-rw-r--r--lib/wx/src/gen/wxToggleButton.erl10
-rw-r--r--lib/wx/src/gen/wxToolBar.erl10
-rw-r--r--lib/wx/src/gen/wxToolTip.erl10
-rw-r--r--lib/wx/src/gen/wxToolbook.erl10
-rw-r--r--lib/wx/src/gen/wxTopLevelWindow.erl10
-rw-r--r--lib/wx/src/gen/wxTreebook.erl10
-rw-r--r--lib/wx/src/gen/wxUpdateUIEvent.erl10
-rw-r--r--lib/wx/src/gen/wxWindow.erl10
-rw-r--r--lib/wx/src/gen/wxWindowCreateEvent.erl10
-rw-r--r--lib/wx/src/gen/wxWindowDC.erl10
-rw-r--r--lib/wx/src/gen/wxWindowDestroyEvent.erl10
-rw-r--r--lib/wx/src/gen/wxXmlResource.erl10
-rw-r--r--lib/wx/src/gen/wx_misc.erl10
-rwxr-xr-xmake/cross_check_erl147
-rwxr-xr-xmake/install_bin702
-rw-r--r--make/otp_ded.mk.in44
-rwxr-xr-xmake/unexpected_use29
-rwxr-xr-xotp_build607
-rw-r--r--prebuild.skip1
-rw-r--r--system/doc/reference_manual/macros.xml38
-rw-r--r--xcomp/README539
-rw-r--r--xcomp/erl-xcomp-TileraMDE2.0-tilepro.conf396
-rw-r--r--xcomp/erl-xcomp-vars.sh29
-rw-r--r--xcomp/erl-xcomp-vxworks_ppc32.conf397
-rw-r--r--xcomp/erl-xcomp-x86_64-saf-linux-gnu.conf236
-rw-r--r--xcomp/erl-xcomp.conf.template432
424 files changed, 16617 insertions, 37861 deletions
diff --git a/Makefile.in b/Makefile.in
index 8e97edfd84..2dcc89144d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -27,6 +27,9 @@ SHELL = /bin/sh
# The top directory in which Erlang is unpacked
ERL_TOP = @ERL_TOP@
+# OTP release
+OTP = @OTP@
+
# erts (Erlang RunTime System) version
ERTS = @ERTS@
@@ -41,48 +44,105 @@ ERTS = @ERTS@
# configure.
#
-# prefix from autoconf, default is /usr/local (must be an absolute path)
-prefix = @prefix@
-exec_prefix = @exec_prefix@
+# prefix from configure, default is /usr/local (must be an absolute path)
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+# Locations where we should install according to configure. These location
+# may be prefixed by $(DESTDIR) and/or $(EXTRA_PREFIX) (see below).
+bindir = @bindir@
+libdir = @libdir@
+
+# Where Erlang/OTP is located
+libdir_suffix = /erlang
+erlang_libdir = $(libdir)$(libdir_suffix)
+erlang_bindir = $(erlang_libdir)/bin
-# The following can be set in case you install Erlang in a different
-# location from where you have configured it to run. This can be
-# useful e.g. when installing on a server that stores the files with a
-# different path from where the clients access them. Or when building
-# rpms.
-#INSTALL_PREFIX =
-# Naah...override `prefix' instead.
+#
+# By default we install relative symbolic links for $(ERL_BASE_PUB_FILES)
+# from $(bindir) to $(erlang_bindir) as long as they are both prefixed
+# by $(exec_prefix) (and are otherwise reasonable). This behavior can be
+# overridden by passing BINDIR_SYMLINKS=<HOW>, where <HOW> is either
+# absolute or relative.
+#
+
+# $ make DESTDIR=<...> install
+#
+# DESTDIR can be set in case you want to install Erlang in a different
+# location than where you have configured it to run. This can be
+# useful, e.g. when installing on a server that stores the files with a
+# different path than where the clients access them, when building
+# rpms, or cross compiling, etc. DESTDIR will prefix the actual
+# installation which will only be able to run once the DESTDIR prefix
+# has disappeard, e.g. the part after DESTDIR has been packed and
+# unpacked without DESTDIR. The name DESTDIR have been chosen since it
+# is the GNU coding standard way of doing it.
+#
+# If INSTALL_PREFIX is set but not DESTDIR, DESTDIR will be set to
+# INSTALL_PREFIX. INSTALL_PREFIX has been buggy for a long time. It was
+# initially intended to have the same effect as DESTDIR. This effect was,
+# however, lost even before it was first released :-( In all released OTP
+# versions up to R13B03, INSTALL_PREFIX has behaved as EXTRA_PREFIX do
+# today (see below).
+
+ifeq ($(DESTDIR),)
+ifneq ($(INSTALL_PREFIX),)
+DESTDIR=$(INSTALL_PREFIX)
+endif
+else
+ifneq ($(INSTALL_PREFIX),)
+ifneq ($(DESTDIR),$(INSTALL_PREFIX))
+$(error Both DESTDIR="$(DESTDIR)" and INSTALL_PREFIX="$(INSTALL_PREFIX)" have been set and have been set differently! Please, only set one of them)
+endif
+endif
+endif
-# The directory in which user executables (ERL_BASE_PUB_FILES) are put
-BINDIR = $(INSTALL_PREFIX)@bindir@
+# $ make EXTRA_PREFIX=<...> install
+#
+# EXTRA_PREFIX behaves exactly as the buggy INSTALL_PREFIX behaved in
+# pre R13B04 releases. It adds a prefix to all installation paths which
+# will be used by the actuall installation. That is, the installation
+# needs to be located at this location when run. This is useful if you
+# want to try out the system, running test suites, etc, before doing the
+# real install using the configuration you have set up using `configure'.
+# A similar thing can be done by overriding `prefix' if only default
+# installation directories are used. However, the installation can get
+# sprawled out all over the place if the user use `--bindir', `--libdir',
+# etc, and it is possible that `prefix' wont have any effect at all. That
+# is, it is not at all the same thing as using EXTRA_PREFIX in the
+# general case. It is also nice to be able to supply this feature if
+# someone should have relied on the old buggy INSTALL_PREFIX.
+
+# The directory in which user executables (ERL_BASE_PUB_FILES) are installed
+BINDIR = $(DESTDIR)$(EXTRA_PREFIX)$(bindir)
#
# Erlang base public files
#
ERL_BASE_PUB_FILES=erl erlc epmd run_erl to_erl dialyzer typer escript
-# The directory which will contain installed Erlang version.
-# (ILIBDIR is supposed to be LIBDIR *without* the install prefix)
-ERLANG_LIBDIR = $(INSTALL_PREFIX)@libdir@/erlang
-ERLANG_ILIBDIR = @libdir@/erlang
+# ERLANG_INST_LIBDIR is the top directory where the Erlang installation
+# will be located when running.
+ERLANG_INST_LIBDIR=$(EXTRA_PREFIX)$(erlang_libdir)
+ERLANG_INST_BINDIR= $(ERLANG_INST_LIBDIR)/bin
-# You can *not* change these two, they have to stay this way for now.
-ERLANG_BINDIR = $(ERLANG_LIBDIR)/bin
-ERLANG_ERTSBINDIR = $(ERLANG_LIBDIR)/$(ERTS)/bin
+# ERLANG_LIBDIR is the top directory where the Erlang installation is copied
+# during installation. If DESTDIR != "", it cannot be run from this location.
+ERLANG_LIBDIR = $(DESTDIR)$(ERLANG_INST_LIBDIR)
# The directory in which man pages for above executables are put
-ERL_MAN1DIR = $(INSTALL_PREFIX)@mandir@/man1
+ERL_MAN1DIR = $(DESTDIR)$(EXTRA_PREFIX)@mandir@/man1
ERL_MAN1EXT = 1
# The directory in which Erlang private man pages are put. In order
# not to clutter up the man namespace these are by default put in the
-# Erlang private directory $(ERLANG_ILIBDIR)/man. If you want to
-# install the man pages together with the rest give the argument
-# "--disable-erlang-mandir" when you run configure, which will set
-# MAN_DIR to @mandir@.
+# Erlang private directory $(ERLANG_LIBDIR)/man (\@erl_mandir\@ is set
+# to $(erlang_libdir)/man). If you want to install the man pages
+# together with the rest give the argument "--disable-erlang-mandir"
+# when you run configure, which will set \@erl_mandir\@ to \@mandir\@.
# If you want a special suffix on the manpages set ERL_MANEXT to
# this suffix, e.g. "erl"
-ERL_MANDIR = $(INSTALL_PREFIX)@erl_mandir@
+ERL_MANDIR = $(DESTDIR)$(EXTRA_PREFIX)@erl_mandir@
ERL_MANEXT =
# ----------------------------------------------------------------------
@@ -93,6 +153,19 @@ MAKE = @MAKE_PROG@
# This should be set to the target "arch-vendor-os"
export TARGET = @TARGET@
+BOOTSTRAP_ONLY = @BOOTSTRAP_ONLY@
+
+CROSS_COMPILING = @CROSS_COMPILING@
+ifeq ($(CROSS_COMPILING),yes)
+INSTALL_CROSS = -cross
+else
+ifneq ($(DESTDIR),)
+INSTALL_CROSS = -cross
+else
+INSTALL_CROSS =
+endif
+endif
+
# A BSD compatible install program
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -107,6 +180,12 @@ RANLIB = @RANLIB@
# ----------------------------------------------------------------------
+# By default we require an Erlang/OTP of the same release as the one
+# we cross compile.
+ERL_XCOMP_FORCE_DIFFERENT_OTP = no
+
+# ----------------------------------------------------------------------
+
#
# The directory where at least the primary bootstrap is placed under.
#
@@ -136,6 +215,57 @@ BOOT_PREFIX=$(WIN32_WRAPPER_PATH):$(BOOTSTRAP_ROOT)/bootstrap/bin:
else
BOOT_PREFIX=$(BOOTSTRAP_ROOT)/bootstrap/bin:
endif
+
+# ----------------------------------------------------------------------
+
+# The following is currently only used for determining what to prevent
+# usage of during strict install or release.
+include $(ERL_TOP)/make/$(TARGET)/otp_ded.mk
+CC = @CC@
+LD = @LD@
+CXX = @CXX@
+
+IBIN_DIR = $(ERL_TOP)/ibin
+#
+# If $(OTP_STRICT_INSTALL) equals `yes' we prefix the PATH with $(IBIN_DIR)
+# when doing `release' or `install'. This directory contains `erlc', `gcc',
+# `ld' etc, that unconditionally will fail if used. This is used during the
+# daily builds in order to pick up on things being erroneously built during
+# the `release' and `install' phases.
+#
+INST_FORBID = gcc g++ cc c++ cxx cl gcc.sh cc.sh ld ld.sh
+INST_FORBID += javac.sh javac guavac gcj jikes bock
+INST_FORBID += $(notdir $(CC)) $(notdir $(LD)) $(notdir $(CXX))
+INST_FORBID += $(notdir $(DED_CC)) $(notdir $(DED_LD))
+INST_FORBID += $(ERL_BASE_PUB_FILES)
+IBIN_FILES = $(addprefix $(IBIN_DIR)/,$(sort $(INST_FORBID))) # sort will
+ # remove
+ # duplicates
+
+ifeq ($(OTP_STRICT_INSTALL),yes)
+
+INST_PATH_PREFIX=$(IBIN_DIR):
+INST_DEP = strict_install
+ifneq ($(CROSS_COMPILING),yes)
+INST_DEP += strict_install_all_bootstraps
+endif
+
+else # --- Normal case, i.e., not strict install ---
+
+#
+# By default we allow build during install and release phase; therefore,
+# make sure that the bootstrap system is available in the path.
+#
+INST_PATH_PREFIX=$(BOOT_PREFIX)
+# If cross compiling `erlc', in path might have be used; therefore,
+# avoid triggering a bootstrap build...
+INST_DEP =
+ifneq ($(CROSS_COMPILING),yes)
+INST_DEP += all_bootstraps
+endif
+
+endif # --- Normal case, i.e., not strict install ---
+
# ----------------------------------------------------------------------
# Fix up RELEASE_ROOT/TESTROOT havoc
ifeq ($(RELEASE_ROOT),)
@@ -164,13 +294,54 @@ endif
# * build additional compilers and copy them into bootstrap/lib
# * use the bootstrap erl and erlc to build all the libs
#
-all: all_bootstraps \
- libs local_setup dialyzer
+
+.PHONY: all bootstrap all_bootstraps
+
+ifneq ($(CROSS_COMPILING),yes)
+# Not cross compiling
+
+ifeq ($(BOOTSTRAP_ONLY),yes)
+all: bootstrap
+else
+# The normal case; not cross compiling, and not bootstrap only build.
+all: bootstrap libs local_setup dialyzer
+endif
+
+else
+# Cross compiling
+
+all: cross_check_erl depend emulator libs start_scripts dialyzer
+
+endif
+
+cross_check_erl:
+ @PATH=$(BOOT_PREFIX)$${PATH} $(ERL_TOP)/make/cross_check_erl \
+ -target $(TARGET) -otp $(OTP) -erl_top $(ERL_TOP) \
+ -force $(ERL_XCOMP_FORCE_DIFFERENT_OTP)
+
+is_cross_configured:
+ @echo @CROSS_COMPILING@
+
+target_configured:
+ @echo @TARGET@
+
+bootstrap: depend all_bootstraps
+
+
+
+ifeq ($(OTP_STRICT_INSTALL),yes)
+
+.PHONY: strict_install_all_bootstraps
+
+strict_install_all_bootstraps:
+ $(MAKE) BOOT_PREFIX=$(INST_PATH_PREFIX) OTP_STRICT_INSTALL=$(OTP_STRICT_INSTALL) all_bootstraps
+
+endif
# With all bootstraps we mean all bootstrapping that is done when
# the system is delivered in open source, the primary
# bootstrap is not included, it requires a pre built emulator...
-all_bootstraps: depend emulator \
+all_bootstraps: emulator \
bootstrap_setup \
secondary_bootstrap_build secondary_bootstrap_copy \
tertiary_bootstrap_build tertiary_bootstrap_copy \
@@ -193,11 +364,15 @@ noboot_install:
.PHONY: release release_docs
-release:
+release: $(INST_DEP)
ifeq ($(OTP_SMALL_BUILD),true)
- cd $(ERL_TOP)/lib && $(MAKE) TESTROOT=$(RELEASE_ROOT) release
+ cd $(ERL_TOP)/lib && \
+ ERL_TOP=$(ERL_TOP) PATH=$(INST_PATH_PREFIX)$${PATH} \
+ $(MAKE) TESTROOT=$(RELEASE_ROOT) release
else
- cd $(ERL_TOP)/lib && $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) release
+ cd $(ERL_TOP)/lib && \
+ ERL_TOP=$(ERL_TOP) PATH=$(INST_PATH_PREFIX)$${PATH} \
+ $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) release
ifneq ($(findstring vxworks,$(TARGET)),vxworks)
@if test -f lib/dialyzer/SKIP ; then \
echo "=== Skipping dialyzer, reason:" ; \
@@ -205,11 +380,14 @@ ifneq ($(findstring vxworks,$(TARGET)),vxworks)
echo "===" ; \
else \
cd $(ERL_TOP)/lib/dialyzer && \
- $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) release ; \
+ ERL_TOP=$(ERL_TOP) PATH=$(INST_PATH_PREFIX)$${PATH} \
+ $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) release ; \
fi
endif
endif
- cd $(ERL_TOP)/erts && $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) release
+ cd $(ERL_TOP)/erts && \
+ ERL_TOP=$(ERL_TOP) PATH=$(INST_PATH_PREFIX)$${PATH} \
+ $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) release
# ---------------------------------------------------------------
# Target only used when building commercial ERTS patches
@@ -353,7 +531,6 @@ secondary_bootstrap_copy:
cp $$x $$TF; \
true; \
done
- rm -f lib/hipe/ebin/*.beam
# if test -f lib/hipe/ebin/hipe.beam ; then cp lib/hipe/ebin/*.beam $(BOOTSTRAP_ROOT)/bootstrap/lib/hipe/ebin; fi
if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools ; fi
if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/ebin ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/ebin ; fi
@@ -654,9 +831,13 @@ primary_bootstrap_copy:
KERNEL_PRELOAD = otp_ring0 init erl_prim_loader prim_inet prim_file zlib prim_zip erlang
KERNEL_PRELOAD_BEAMS=$(KERNEL_PRELOAD:%=$(BOOTSTRAP_TOP)/lib/kernel/ebin/%.beam)
+start_scripts:
+ @cd erts/start_scripts \
+ && ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} $(MAKE) script
+
# Creates "erl" and "erlc" scripts in bin/erl which uses the libraries in lib
local_setup:
- @rm -f erts/bin/erl erts/bin/erlc erts/bin/cerl
+ @rm -f bin/erl bin/erlc bin/cerl
@cd erts && \
ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \
$(MAKE) local_setup
@@ -729,7 +910,9 @@ bootstrap_nc_for_ne_no_debug_sym:
#
# Order is important here, don't change it!
#
-install: install.dirs install.emulator install.libs install.Install install.bin
+INST_DEP += install.dirs install.emulator install.libs install.Install install.bin
+
+install: $(INST_DEP)
install-docs:
ERL_TOP=$(ERL_TOP) INSTALLROOT=$(ERLANG_LIBDIR) PATH=$(BOOT_PREFIX)$${PATH} \
@@ -738,17 +921,17 @@ install-docs:
install.emulator:
cd erts && \
- ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \
+ ERL_TOP=$(ERL_TOP) PATH=$(INST_PATH_PREFIX)$${PATH} \
$(MAKE) TESTROOT=$(ERLANG_LIBDIR) release
install.libs:
ifeq ($(OTP_SMALL_BUILD),true)
cd lib && \
- ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \
+ ERL_TOP=$(ERL_TOP) PATH=$(INST_PATH_PREFIX)$${PATH} \
$(MAKE) TESTROOT=$(ERLANG_LIBDIR) release
else
cd lib && \
- ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \
+ ERL_TOP=$(ERL_TOP) PATH=$(INST_PATH_PREFIX)$${PATH} \
$(MAKE) TESTROOT=$(ERLANG_LIBDIR) BUILD_ALL=true release
@if test -f lib/dialyzer/SKIP ; then \
echo "=== Skipping dialyzer, reason:" ; \
@@ -756,22 +939,27 @@ else
echo "===" ; \
else \
cd lib/dialyzer && \
- ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \
+ ERL_TOP=$(ERL_TOP) PATH=$(INST_PATH_PREFIX)$${PATH} \
$(MAKE) TESTROOT=$(ERLANG_LIBDIR) BUILD_ALL=true release ; \
fi
endif
install.Install:
- cd $(ERLANG_LIBDIR) && ./Install -minimal $(ERLANG_LIBDIR)
+ (cd $(ERLANG_LIBDIR) \
+ && ./Install $(INSTALL_CROSS) -minimal $(ERLANG_INST_LIBDIR))
#
# Install erlang base public files
#
+
install.bin:
- for file in $(ERL_BASE_PUB_FILES); do \
- rm -f $(BINDIR)/$$file; \
- ${LN_S} $(ERLANG_BINDIR)/$$file $(BINDIR)/$$file; \
- done
+ @ DESTDIR="$(DESTDIR)" EXTRA_PREFIX="$(EXTRA_PREFIX)" \
+ LN_S="$(LN_S)" BINDIR_SYMLINKS="$(BINDIR_SYMLINKS)" \
+ $(ERL_TOP)/make/install_bin \
+ --bindir "$(bindir)" \
+ --erlang-bindir "$(erlang_bindir)" \
+ --exec-prefix "$(exec_prefix)" \
+ $(ERL_BASE_PUB_FILES)
#
# Directories needed before we can install
@@ -781,6 +969,17 @@ install.dirs:
${MKSUBDIRS} $(ERLANG_LIBDIR)
${MKSUBDIRS} $(ERLANG_LIBDIR)/usr/lib
+.PHONY: strict_install
+
+strict_install: $(IBIN_DIR) $(IBIN_FILES)
+
+$(IBIN_FILES): $(ERL_TOP)/make/unexpected_use
+ rm -f $@
+ (cd $(dir $@) && $(LN_S) $(ERL_TOP)/make/unexpected_use $(notdir $@))
+
+$(IBIN_DIR):
+ $(MKSUBDIRS) $@
+
# ----------------------------------------------------------------------
.PHONY: clean eclean bootstrap_root_clean bootstrap_clean
@@ -790,7 +989,7 @@ install.dirs:
#
clean: check_recreate_primary_bootstrap
- rm -f *~ *.bak config.log config.status prebuilt.files
+ rm -f *~ *.bak config.log config.status prebuilt.files ibin/*
find . -type f -name SKIP -print | xargs $(RM)
cd erts && ERL_TOP=$(ERL_TOP) $(MAKE) clean
cd lib && ERL_TOP=$(ERL_TOP) $(MAKE) clean BUILD_ALL=true
diff --git a/README b/README
index 260e9fd36b..9622b2d676 100644
--- a/README
+++ b/README
@@ -13,7 +13,7 @@ The source code for Erlang/OTP can also be found in a Git repository:
%CopyrightBegin%
-Copyright Ericsson AB 1998-2009. All Rights Reserved.
+Copyright Ericsson AB 1998-2010. All Rights Reserved.
The contents of this file are subject to the Erlang Public License,
Version 1.1, (the "License"); you may not use this file except in
@@ -221,9 +221,87 @@ Step 5 builds the Erlang/OTP system. On a fast computer, this will take about
Erlang/OTP system which you can try by typing "bin/erl". This should start
up Erlang/OTP and give you a prompt.
-Step 6 is optional. It installs Erlang/OTP (if you change your
-mind about where you wish to install you can rerun step 4, without
-having to do step 5 again).
+Step 6 is optional. It installs Erlang/OTP at a standardized location (if you
+change your mind about where you wish to install you can rerun step 4,
+without having to do step 5 again).
+
+Alternative installation procedures:
+* Staged install using DESTDIR. You can perform the install phase in a
+ temporary directory and later move the installation into its correct location
+ by use of the DESTDIR variable: 'make DESTDIR=<tmp install dir> install'
+ The installation will be created in a location prefixed by $DESTDIR. It
+ can, however, not be run from there. It needs to be moved into the correct
+ location before it can be run. If DESTDIR have not been set but INSTALL_PREFIX
+ has been set, DESTDIR will be set to INSTALL_PREFIX. Note that INSTALL_PREFIX
+ in pre R13B04 was buggy and behaved as EXTRA_PREFIX (see below). There are
+ lots of areas of use for an installation procedure using DESTDIR, e.g. when
+ creating a package, cross compiling, etc. Here is an example where the
+ installation should be located under /opt/local:
+ $ ./configure --prefix=/opt/local
+ $ make
+ $ mkdir /tmp/erlang-build
+ $ make DESTDIR=/tmp/erlang-build install
+ $ cd /tmp/erlang-build/opt/local
+ $ # gnu-tar is used in this example
+ $ tar -zcf /home/me/my-erlang-build.tgz *
+ $ su -
+ Password: *****
+ $ cd /opt/local
+ $ tar -zxf /home/me/my-erlang-build.tgz
+* Test install using EXTRA_PREFIX. Note that EXTRA_PREFIX is similar to
+ DESTDIR, but it does not have the same effect as DESTDIR. The EXTRA_PREFIX
+ variable will prefix all installation paths, and the installation can and
+ have to be run from there. That is, it can be useful if you want to try the
+ system out, running test suites, etc, before doing the real install without
+ EXTRA_PREFIX.
+* Install using the `release' target. Instead of doing `make install' you can
+ creat the installation in whatever directory you like using the `release'
+ target and run the `Install' script yourself. RELEASE_ROOT is used for
+ specifying the directory where the installation should be created. This is
+ what by default ends up under `/usr/local/lib/erlang' if you do the install
+ using `make install'. All installation paths provided in the `configure'
+ phase are ignored, as well as DESTDIR, and INSTALL_PREFIX. If you want links
+ from a specific `bin' directory to the installation you have to set those up
+ yourself. An example where Erlang/OTP should be located at /home/me/OTP:
+ $ ./configure
+ $ make
+ $ make RELEASE_ROOT=/home/me/OTP release
+ $ cd /home/me/OTP
+ $ ./Install -minimal /home/me/OTP
+ $ mkdir -p /home/me/bin
+ $ cd /home/me/bin
+ $ ln -s /home/me/OTP/bin/erl erl
+ $ ln -s /home/me/OTP/bin/erlc erlc
+ $ ln -s /home/me/OTP/bin/escript escript
+ ...
+ The `Install' script should currently be invoked as follows in the
+ directory where it resides:
+ `./Install [-cross] [-minimal|-sasl] <ERL_ROOT>'
+ where:
+ -minimal - Creates an installation that starts up a minimal amount
+ of applications, i.e., only kernel and stdlib are started.
+ The minimal system is normally enough.
+ -sasl - Creates an installation that also starts up the sasl
+ application.
+ -cross - For cross compilation. Informs the install script that it
+ is run on the build machine.
+ <ERL_ROOT> - The absolute path to the Erlang installation to use at run
+ time. This is often the same as the current working
+ directory, but does not have to be. It can follow any other
+ path through the file system to the same directory.
+
+ If neither -minimal, nor -sasl is passed as argument you will be prompted.
+
+When doing `make install' and the default installation prefix is used, relative
+symbolic links will be created from /usr/local/bin to all public executables in
+the Erlang installation. The installation phase will try to create relative
+symbolic links as long as `--bindir' and the Erlang bin directory, located under
+`--libdir', both have `--exec-prefix' as prefix. Where `--exec-prefix'
+defaults to `--prefix'. `--prefix', `--exec-prefix', `--bindir', and `--libdir'
+are all arguments that can be passed to `configure'. One can however force
+relative, or absolute links by passing BINDIR_SYMLINKS=relative|absolute
+as arguments to make during the install phase. Note that such a request might
+cause a failure if the request cannot be satisfied.
The source tree is delivered with a lot of platform independent
build results already pre-built. If you want to remove these pre-built
diff --git a/TAR.include b/TAR.include
index 6446b5de94..78be579869 100644
--- a/TAR.include
+++ b/TAR.include
@@ -4,12 +4,15 @@ Makefile.in
README
README.win32
configure.in
+aclocal.m4
otp_build
lib/Makefile
lib/configure
lib/configure.in
+lib/configure.in.src
prebuild.skip
prebuild.delete
+erl-build-tool-vars.sh
bootstrap/lib/*/ebin
bootstrap/lib/*/include
bootstrap/bin/start*.script
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 120000
index 0000000000..32ceb26f5a
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1 @@
+erts/aclocal.m4 \ No newline at end of file
diff --git a/configure.in b/configure.in
index 7ddffd85ad..19ef304a1a 100644
--- a/configure.in
+++ b/configure.in
@@ -1,8 +1,28 @@
dnl Process this file with autoconf to produce a configure script.
+
+dnl %CopyrightBegin%
+dnl
+dnl Copyright Ericsson AB 1998-2010. All Rights Reserved.
+dnl
+dnl The contents of this file are subject to the Erlang Public License,
+dnl Version 1.1, (the "License"); you may not use this file except in
+dnl compliance with the License. You should have received a copy of the
+dnl Erlang Public License along with this software. If not, it can be
+dnl retrieved online at http://www.erlang.org/.
+dnl
+dnl Software distributed under the License is distributed on an "AS IS"
+dnl basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+dnl the License for the specific language governing rights and limitations
+dnl under the License.
+dnl
+dnl %CopyrightEnd%
+
AC_PREREQ(2.8)dnl
AC_INIT()
+LM_PRECIOUS_VARS
+
default_cache_file=./config.cache
if test "x$no_recursion" != "xyes" -a "x$OVERRIDE_CONFIG_CACHE" = "x"; then
@@ -19,6 +39,18 @@ if test "x$no_recursion" != "xyes" -a "x$OVERRIDE_CONFIG_CACHE" = "x"; then
cache_file=/dev/null
fi
+case "X$ERL_TOP" in
+ X)
+ ;;
+ X/*)
+ test -f $ERL_TOP/erts/emulator/beam/beam_emu.c || {
+ AC_MSG_ERROR([Invalid \$ERL_TOP])
+ }
+ srcdir="$ERL_TOP";;
+ *)
+ AC_MSG_ERROR([\$ERL_TOP needs to be absolute]);;
+esac
+
dnl How to set srcdir absolute is taken from the GNU Emacs distribution
#### Make srcdir absolute, if it isn't already. It's important to
#### avoid running the path through pwd unnecessary, since pwd can
@@ -43,7 +75,7 @@ esac
#
# Now srcdir is absolute and also the top of Erlang distribution, ERL_TOP.
#
-ERL_TOP=${srcdir}
+test "X$ERL_TOP" != "X" || ERL_TOP="$srcdir"
AC_SUBST(ERL_TOP)
dnl
@@ -65,11 +97,35 @@ fi
TARGET=$host
AC_SUBST(TARGET)
+if test X$cross_compiling = Xyes; then
+ CROSS_COMPILING=yes
+else
+ CROSS_COMPILING=no
+fi
+AC_SUBST(CROSS_COMPILING)
+
+
+AC_ARG_ENABLE(bootstrap-only,
+[ --enable-bootstrap-only enable bootstrap only configuration],
+[ if test "X$enableval" = "Xyes"; then
+ BOOTSTRAP_ONLY=yes
+ else
+ BOOTSTRAP_ONLY=no
+ fi
+],
+BOOTSTRAP_ONLY=no)
+
+AC_SUBST(BOOTSTRAP_ONLY)
+
+if test $CROSS_COMPILING = yes -a $BOOTSTRAP_ONLY = yes; then
+ AC_MSG_ERROR([Cannot both cross compile and build a bootstrap system])
+fi
dnl Checks for programs.
AC_PROG_CC
-
+AC_PROG_CXX
+AC_CHECK_TOOL(LD, [ld])
#
# We need GNU make, complain if we can't find it
@@ -123,11 +179,17 @@ AC_PROG_LN_S
AC_PROG_RANLIB
#
-# Get erts version from erts/vsn.mk
+# Get erts version and otp release from erts/vsn.mk
#
-[ERTS=erts-`sed -n 's/^VSN[ ]*=[ ]*\([0-9.]\)/\1/p' < erts/vsn.mk`]
+AC_MSG_CHECKING([ERTS version])
+[ERTS=erts-`sed -n "s/^VSN[ ]*=[ ]*\(.*\)/\1/p" < $ERL_TOP/erts/vsn.mk`]
+AC_MSG_RESULT([$ERTS])
AC_SUBST(ERTS)
+AC_MSG_CHECKING([OTP release])
+[OTP=OTP-`sed -n "s/^SYSTEM_VSN[ ]*=[ ]*\(.*\)/\1/p" < $ERL_TOP/erts/vsn.mk`]
+AC_MSG_RESULT([$OTP])
+AC_SUBST(OTP)
AC_ARG_ENABLE(threads,
[ --enable-threads enable async thread support
@@ -147,6 +209,11 @@ AC_ARG_ENABLE(kernel-poll,
AC_ARG_ENABLE(hipe,
[ --enable-hipe enable hipe support
--disable-hipe disable hipe support])
+
+AC_ARG_WITH(javac,
+[ --with-javac=JAVAC specify Java compiler to use
+ --with-javac use a Java compiler if found (default)
+ --without-javac don't use any Java compiler])
AC_ARG_ENABLE(megaco_flex_scanner_lineno,
[ --enable-megaco-flex-scanner-lineno enable megaco flex scanner lineno
@@ -176,8 +243,8 @@ AC_ARG_ENABLE(erlang-mandir,
[ --disable-erlang-mandir do not install Erlang man pages in a private directory],
[ case "$enableval" in
no) erl_mandir=$mandir ;;
- *) erl_mandir='$(ERLANG_ILIBDIR)/man' ;;
- esac ], erl_mandir='$(ERLANG_ILIBDIR)/man')
+ *) erl_mandir='$(erlang_libdir)/man' ;;
+ esac ], erl_mandir='$(erlang_libdir)/man')
AC_SUBST(erl_mandir)
AC_ARG_ENABLE(darwin-universal,
diff --git a/erl-build-tool-vars.sh b/erl-build-tool-vars.sh
new file mode 100644
index 0000000000..c6f25d7f79
--- /dev/null
+++ b/erl-build-tool-vars.sh
@@ -0,0 +1,28 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2010. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+
+#
+# erl_build_tool_vars - Build tool configuration variables currently
+# reqognized by `configure' scripts in OTP.
+#
+# NOTE:
+# When updating, also update $ERL_TOP/xcomp/{README,erl-xcomp.conf.template},
+# and precious variables in $ERL_TOP/erts/aclocal.m4.
+#
+erl_build_tool_vars="CC CFLAGS STATIC_CFLAGS CFLAG_RUNTIME_LIBRARY_PATH CPP CPPFLAGS CXX CXXFLAGS LD LDFLAGS DED_LD DED_LDFLAGS DED_LD_FLAG_RUNTIME_LIBRARY_PATH RANLIB AR"
diff --git a/erts/aclocal.m4 b/erts/aclocal.m4
index e9a0cc228f..8002ed3d34 100644
--- a/erts/aclocal.m4
+++ b/erts/aclocal.m4
@@ -1,19 +1,19 @@
dnl
dnl %CopyrightBegin%
-dnl
-dnl Copyright Ericsson AB 1998-2009. All Rights Reserved.
-dnl
+dnl
+dnl Copyright Ericsson AB 1998-2010. All Rights Reserved.
+dnl
dnl The contents of this file are subject to the Erlang Public License,
dnl Version 1.1, (the "License"); you may not use this file except in
dnl compliance with the License. You should have received a copy of the
dnl Erlang Public License along with this software. If not, it can be
dnl retrieved online at http://www.erlang.org/.
-dnl
+dnl
dnl Software distributed under the License is distributed on an "AS IS"
dnl basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
dnl the License for the specific language governing rights and limitations
dnl under the License.
-dnl
+dnl
dnl %CopyrightEnd%
dnl
@@ -25,6 +25,63 @@ dnl could/should be part of autoconf are prefixed LM_, macros specific
dnl to the Erlang system are prefixed ERL_.
dnl
+AC_DEFUN(LM_PRECIOUS_VARS,
+[
+
+dnl ERL_TOP
+AC_ARG_VAR(ERL_TOP, [Erlang/OTP top source directory])
+
+dnl Tools
+AC_ARG_VAR(CC, [C compiler])
+AC_ARG_VAR(CFLAGS, [C compiler flags])
+AC_ARG_VAR(STATIC_CFLAGS, [C compiler static flags])
+AC_ARG_VAR(CFLAG_RUNTIME_LIBRARY_PATH, [runtime library path linker flag passed via C compiler])
+AC_ARG_VAR(CPP, [C/C++ preprocessor])
+AC_ARG_VAR(CPPFLAGS, [C/C++ preprocessor flags])
+AC_ARG_VAR(CXX, [C++ compiler])
+AC_ARG_VAR(CXXFLAGS, [C++ compiler flags])
+AC_ARG_VAR(LD, [linker (is often overridden by configure)])
+AC_ARG_VAR(LDFLAGS, [linker flags (can be risky to set since LD may be overriden by configure)])
+AC_ARG_VAR(DED_LD, [linker for Dynamic Erlang Drivers (set all DED_LD* variables or none)])
+AC_ARG_VAR(DED_LDFLAGS, [linker flags for Dynamic Erlang Drivers (set all DED_LD* variables or none)])
+AC_ARG_VAR(DED_LD_FLAG_RUNTIME_LIBRARY_PATH, [runtime library path linker flag for Dynamic Erlang Drivers (set all DED_LD* variables or none)])
+AC_ARG_VAR(RANLIB, [ranlib])
+AC_ARG_VAR(AR, [ar])
+
+dnl Cross system root
+AC_ARG_VAR(erl_xcomp_sysroot, [Absolute cross system root path (only used when cross compiling)])
+AC_ARG_VAR(erl_xcomp_isysroot, [Absolute cross system root include path (only used when cross compiling)])
+
+dnl Cross compilation variables
+AC_ARG_VAR(erl_xcomp_bigendian, [big endian system: yes|no (only used when cross compiling)])
+AC_ARG_VAR(erl_xcomp_linux_clock_gettime_correction, [clock_gettime() can be used for time correction: yes|no (only used when cross compiling)])
+AC_ARG_VAR(erl_xcomp_linux_nptl, [have Native POSIX Thread Library: yes|no (only used when cross compiling)])
+AC_ARG_VAR(erl_xcomp_linux_usable_sigusrx, [SIGUSR1 and SIGUSR2 can be used: yes|no (only used when cross compiling)])
+AC_ARG_VAR(erl_xcomp_linux_usable_sigaltstack, [have working sigaltstack(): yes|no (only used when cross compiling)])
+AC_ARG_VAR(erl_xcomp_poll, [have working poll(): yes|no (only used when cross compiling)])
+AC_ARG_VAR(erl_xcomp_kqueue, [have working kqueue(): yes|no (only used when cross compiling)])
+AC_ARG_VAR(erl_xcomp_putenv_copy, [putenv() stores key-value copy: yes|no (only used when cross compiling)])
+AC_ARG_VAR(erl_xcomp_reliable_fpe, [have reliable floating point exceptions: yes|no (only used when cross compiling)])
+AC_ARG_VAR(erl_xcomp_getaddrinfo, [have working getaddrinfo() for both IPv4 and IPv6: yes|no (only used when cross compiling)])
+AC_ARG_VAR(erl_xcomp_gethrvtime_procfs_ioctl, [have working gethrvtime() which can be used with procfs ioctl(): yes|no (only used when cross compiling)])
+AC_ARG_VAR(erl_xcomp_clock_gettime_cpu_time, [clock_gettime() can be used for retrieving process CPU time: yes|no (only used when cross compiling)])
+AC_ARG_VAR(erl_xcomp_after_morecore_hook, [__after_morecore_hook can track malloc()s core memory usage: yes|no (only used when cross compiling)])
+AC_ARG_VAR(erl_xcomp_dlsym_brk_wrappers, [dlsym(RTLD_NEXT, _) brk wrappers can track malloc()s core memory usage: yes|no (only used when cross compiling)])
+
+])
+
+AC_DEFUN(ERL_XCOMP_SYSROOT_INIT,
+[
+erl_xcomp_without_sysroot=no
+if test "$cross_compiling" = "yes"; then
+ test "$erl_xcomp_sysroot" != "" || erl_xcomp_without_sysroot=yes
+ test "$erl_xcomp_isysroot" != "" || erl_xcomp_isysroot="$erl_xcomp_sysroot"
+else
+ erl_xcomp_sysroot=
+ erl_xcomp_isysroot=
+fi
+])
+
dnl ----------------------------------------------------------------------
dnl
dnl LM_FIND_EMU_CC
@@ -113,11 +170,15 @@ dnl ----------------------------------------------------------------------
dnl
dnl LM_PROG_INSTALL_DIR
dnl
+dnl This macro may be used by any OTP application.
+dnl
dnl Figure out how to create directories with parents.
dnl (In my opinion INSTALL_DIR is a bad name, MKSUBDIRS or something is better)
dnl
dnl We prefer 'install -d', but use 'mkdir -p' if it exists.
dnl If none of these methods works, we give up.
+dnl
+
AC_DEFUN(LM_PROG_INSTALL_DIR,
[AC_CACHE_CHECK(how to create a directory including parents,
@@ -412,189 +473,84 @@ fi
dnl ----------------------------------------------------------------------
dnl
-dnl ERL_FIND_ETHR_LIB
+dnl LM_CHECK_THR_LIB
dnl
-dnl Find a thread library to use. Sets ETHR_LIBS to libraries to link
-dnl with, ETHR_X_LIBS to extra libraries to link with (same as ETHR_LIBS
-dnl except that the ethread lib itself is not included), ETHR_DEFS to
-dnl defines to compile with, ETHR_THR_LIB_BASE to the name of the
-dnl thread library which the ethread library is based on, and ETHR_LIB_NAME
-dnl to the name of the library where the ethread implementation is located.
-dnl ERL_FIND_ETHR_LIB currently searches for 'pthreads', and
-dnl 'win32_threads'. If no thread library was found ETHR_LIBS, ETHR_X_LIBS,
-dnl ETHR_DEFS, ETHR_THR_LIB_BASE, and ETHR_LIB_NAME are all set to the
-dnl empty string.
+dnl This macro may be used by any OTP application.
+dnl
+dnl LM_CHECK_THR_LIB sets THR_LIBS, THR_DEFS, and THR_LIB_NAME. It also
+dnl checks for some pthread headers which will appear in DEFS or config.h.
dnl
-AC_DEFUN(ERL_FIND_ETHR_LIB,
+AC_DEFUN(LM_CHECK_THR_LIB,
[
-ethr_modified_default_stack_size=
-
-dnl Name of lib where ethread implementation is located
-ethr_lib_name=ethread
-
-ETHR_THR_LIB_BASE=
-ETHR_THR_LIB_BASE_NAME=
-ETHR_X_LIBS=
-ETHR_LIBS=
-ETHR_LIB_NAME=
-ETHR_DEFS=
-
-dnl if test "x$host_os" = "x"; then
-dnl AC_CANONICAL_HOST
-dnl fi
-
dnl win32?
AC_MSG_CHECKING([for native win32 threads])
if test "X$host_os" = "Xwin32"; then
AC_MSG_RESULT(yes)
- # * _WIN32_WINNT >= 0x0400 is needed for
- # TryEnterCriticalSection
- # * _WIN32_WINNT >= 0x0403 is needed for
- # InitializeCriticalSectionAndSpinCount
- # The ethread lib will refuse to build if _WIN32_WINNT < 0x0403.
- #
- # -D_WIN32_WINNT should have been defined in $CPPFLAGS; fetch it
- # and save it in ETHR_DEFS.
- found_win32_winnt=no
- for cppflag in $CPPFLAGS; do
- case $cppflag in
- -DWINVER*)
- ETHR_DEFS="$ETHR_DEFS $cppflag"
- ;;
- -D_WIN32_WINNT*)
- ETHR_DEFS="$ETHR_DEFS $cppflag"
- found_win32_winnt=yes
- ;;
- *)
- ;;
- esac
- done
- if test $found_win32_winnt = no; then
- AC_MSG_ERROR([-D_WIN32_WINNT missing in CPPFLAGS])
- fi
- ETHR_X_LIBS=
- ETHR_THR_LIB_BASE=win32_threads
- AC_DEFINE(ETHR_WIN32_THREADS, 1, [Define if you have win32 threads])
+ THR_DEFS="-DWIN32_THREADS"
+ THR_LIBS=
+ THR_LIB_NAME=win32_threads
else
AC_MSG_RESULT(no)
+ THR_DEFS=
+ THR_LIBS=
+ THR_LIB_NAME=
dnl Try to find POSIX threads
dnl The usual pthread lib...
- AC_CHECK_LIB(pthread, pthread_create, ETHR_X_LIBS="-lpthread")
+ AC_CHECK_LIB(pthread, pthread_create, THR_LIBS="-lpthread")
dnl FreeBSD has pthreads in special c library, c_r...
- if test "x$ETHR_X_LIBS" = "x"; then
- AC_CHECK_LIB(c_r, pthread_create, ETHR_X_LIBS="-lc_r")
+ if test "x$THR_LIBS" = "x"; then
+ AC_CHECK_LIB(c_r, pthread_create, THR_LIBS="-lc_r")
fi
dnl On ofs1 the '-pthread' switch should be used
- if test "x$ETHR_X_LIBS" = "x"; then
+ if test "x$THR_LIBS" = "x"; then
AC_MSG_CHECKING([if the '-pthread' switch can be used])
saved_cflags=$CFLAGS
CFLAGS="$CFLAGS -pthread"
AC_TRY_LINK([#include <pthread.h>],
pthread_create((void*)0,(void*)0,(void*)0,(void*)0);,
- [ETHR_DEFS="-pthread"
- ETHR_X_LIBS="-pthread"])
+ [THR_DEFS="-pthread"
+ THR_LIBS="-pthread"])
CFLAGS=$saved_cflags
- if test "x$ETHR_X_LIBS" != "x"; then
+ if test "x$THR_LIBS" != "x"; then
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
fi
- if test "x$ETHR_X_LIBS" != "x"; then
- ETHR_DEFS="$ETHR_DEFS -D_THREAD_SAFE -D_REENTRANT"
- ETHR_THR_LIB_BASE=pthread
- AC_DEFINE(ETHR_PTHREADS, 1, [Define if you have pthreads])
+ if test "x$THR_LIBS" != "x"; then
+ THR_DEFS="$THR_DEFS -D_THREAD_SAFE -D_REENTRANT -DPOSIX_THREADS"
+ THR_LIB_NAME=pthread
case $host_os in
- openbsd*)
- # The default stack size is insufficient for our needs
- # on OpenBSD. We increase it to 256 kilo words.
- ethr_modified_default_stack_size=256;;
solaris*)
- ETHR_DEFS="$ETHR_DEFS -D_POSIX_PTHREAD_SEMANTICS" ;;
+ THR_DEFS="$THR_DEFS -D_POSIX_PTHREAD_SEMANTICS" ;;
linux*)
- ETHR_DEFS="$ETHR_DEFS -D_POSIX_THREAD_SAFE_FUNCTIONS -D_GNU_SOURCE"
-
- if test X$cross_compiling = Xyes; then
- if test "X$erl_xcomp_linux_usable_sigusrx" = "X"; then
- usable_sigusrx=yes
- usable_sigusrx_guessed=yes
- else
- usable_sigusrx=$erl_xcomp_linux_usable_sigusrx
- usable_sigusrx_guessed=no
- fi
- if test "X$erl_xcomp_linux_usable_sigaltstack" = "X"; then
- usable_sigaltstack=yes
- usable_sigaltstack_guessed=yes
- else
- usable_sigaltstack=$erl_xcomp_linux_usable_sigaltstack
- usable_sigaltstack_guessed=no
- fi
- else
- # FIXME: Test for actual problems instead of kernel versions
- linux_kernel_vsn_=`uname -r`
- case $linux_kernel_vsn_ in
- [[0-1]].*|2.[[0-1]]|2.[[0-1]].*)
- usable_sigusrx=no
- usable_sigaltstack=no;;
- 2.[[2-3]]|2.[[2-3]].*)
- usable_sigusrx=yes
- usable_sigaltstack=no;;
- *)
- usable_sigusrx=yes
- usable_sigaltstack=yes;;
- esac
- usable_sigusrx_guessed=no
- usable_sigaltstack_guessed=no
- fi
-
- AC_MSG_CHECKING(if SIGUSR1 and SIGUSR2 can be used)
- AC_MSG_RESULT($usable_sigusrx)
- if test $usable_sigusrx_guessed = yes; then
- AC_MSG_WARN([result $usable_sigusrx guessed because of cross compilation])
- fi
- if test $usable_sigusrx = no; then
- ETHR_DEFS="$ETHR_DEFS -DETHR_UNUSABLE_SIGUSRX"
- fi
-
- AC_MSG_CHECKING(if sigaltstack can be used)
- AC_MSG_RESULT($usable_sigaltstack)
- if test $usable_sigaltstack_guessed = yes; then
- AC_MSG_WARN([result $usable_sigaltstack guessed because of cross compilation])
- fi
- if test $usable_sigaltstack = no; then
- ETHR_DEFS="$ETHR_DEFS -DETHR_UNUSABLE_SIGALTSTACK"
- fi
+ THR_DEFS="$THR_DEFS -D_POSIX_THREAD_SAFE_FUNCTIONS"
AC_MSG_CHECKING(for Native POSIX Thread Library)
if test X$cross_compiling = Xyes; then
- if test "X$erl_xcomp_linux_nptl" = "X"; then
- nptl=yes
- nptl_guessed=yes
- else
- nptl=$erl_xcomp_linux_nptl
- nptl_guessed=no
- fi
+ case X$erl_xcomp_linux_nptl in
+ X) nptl=cross;;
+ Xyes|Xno) nptl=$erl_xcomp_linux_nptl;;
+ *) AC_MSG_ERROR([Bad erl_xcomp_linux_nptl value: $erl_xcomp_linux_nptl]);;
+ esac
else
case `getconf GNU_LIBPTHREAD_VERSION 2>/dev/null` in
nptl*) nptl=yes;;
NPTL*) nptl=yes;;
*) nptl=no;;
esac
- nptl_guessed=no
fi
AC_MSG_RESULT($nptl)
- if test $nptl_guessed = yes; then
- AC_MSG_WARN([result $nptl guessed because of cross compilation])
- fi
- if test $nptl = yes; then
- ETHR_THR_LIB_BASE_NAME=nptl
+ if test $nptl = cross; then
+ nptl=yes
+ AC_MSG_WARN([result yes guessed because of cross compilation])
fi
if test $nptl = yes; then
need_nptl_incldir=no
@@ -604,6 +560,11 @@ dnl On ofs1 the '-pthread' switch should be used
nptl_path="$C_INCLUDE_PATH:$CPATH"
if test X$cross_compiling != Xyes; then
nptl_path="$nptl_path:/usr/local/include:/usr/include"
+ else
+ IROOT="$erl_xcomp_isysroot"
+ test "$IROOT" != "" || IROOT="$erl_xcomp_sysroot"
+ test "$IROOT" != "" || AC_MSG_ERROR([Don't know where to search for includes! Please set erl_xcomp_isysroot])
+ nptl_path="$nptl_path:$IROOT/usr/local/include:$IROOT/usr/include"
fi
nptl_ws_path=
save_ifs="$IFS"; IFS=":"
@@ -618,7 +579,7 @@ dnl On ofs1 the '-pthread' switch should be used
AC_CHECK_HEADER($dir/nptl/pthread.h,
nptl_incldir=$dir/nptl)
if test "x$nptl_incldir" != "x"; then
- ETHR_DEFS="$ETHR_DEFS -isystem $nptl_incldir"
+ THR_DEFS="$THR_DEFS -isystem $nptl_incldir"
break
fi
done
@@ -627,6 +588,158 @@ dnl On ofs1 the '-pthread' switch should be used
fi
fi
fi
+ ;;
+ *) ;;
+ esac
+
+ dnl We sometimes need THR_DEFS in order to find certain headers
+ dnl (at least for pthread.h on osf1).
+ saved_cppflags=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS $THR_DEFS"
+
+ dnl
+ dnl Check for headers
+ dnl
+
+ AC_CHECK_HEADER(pthread.h,
+ AC_DEFINE(HAVE_PTHREAD_H, 1, \
+[Define if you have the <pthread.h> header file.]))
+
+ dnl Some Linuxes have <pthread/mit/pthread.h> instead of <pthread.h>
+ AC_CHECK_HEADER(pthread/mit/pthread.h, \
+ AC_DEFINE(HAVE_MIT_PTHREAD_H, 1, \
+[Define if the pthread.h header file is in pthread/mit directory.]))
+
+ dnl restore CPPFLAGS
+ CPPFLAGS=$saved_cppflags
+
+ fi
+fi
+
+])
+
+dnl ----------------------------------------------------------------------
+dnl
+dnl ERL_FIND_ETHR_LIB
+dnl
+dnl NOTE! This macro may be changed at any time! Should *only* be used by
+dnl ERTS!
+dnl
+dnl Find a thread library to use. Sets ETHR_LIBS to libraries to link
+dnl with, ETHR_X_LIBS to extra libraries to link with (same as ETHR_LIBS
+dnl except that the ethread lib itself is not included), ETHR_DEFS to
+dnl defines to compile with, ETHR_THR_LIB_BASE to the name of the
+dnl thread library which the ethread library is based on, and ETHR_LIB_NAME
+dnl to the name of the library where the ethread implementation is located.
+dnl ERL_FIND_ETHR_LIB currently searches for 'pthreads', and
+dnl 'win32_threads'. If no thread library was found ETHR_LIBS, ETHR_X_LIBS,
+dnl ETHR_DEFS, ETHR_THR_LIB_BASE, and ETHR_LIB_NAME are all set to the
+dnl empty string.
+dnl
+
+AC_DEFUN(ERL_FIND_ETHR_LIB,
+[
+
+LM_CHECK_THR_LIB
+
+ETHR_THR_LIB_BASE="$THR_LIB_NAME"
+ETHR_DEFS="$THR_DEFS"
+ETHR_X_LIBS="$THR_LIBS"
+ETHR_LIBS=
+ETHR_LIB_NAME=
+
+ethr_modified_default_stack_size=
+
+dnl Name of lib where ethread implementation is located
+ethr_lib_name=ethread
+
+case "$THR_LIB_NAME" in
+
+ win32_threads)
+ # * _WIN32_WINNT >= 0x0400 is needed for
+ # TryEnterCriticalSection
+ # * _WIN32_WINNT >= 0x0403 is needed for
+ # InitializeCriticalSectionAndSpinCount
+ # The ethread lib will refuse to build if _WIN32_WINNT < 0x0403.
+ #
+ # -D_WIN32_WINNT should have been defined in $CPPFLAGS; fetch it
+ # and save it in ETHR_DEFS.
+ found_win32_winnt=no
+ for cppflag in $CPPFLAGS; do
+ case $cppflag in
+ -DWINVER*)
+ ETHR_DEFS="$ETHR_DEFS $cppflag"
+ ;;
+ -D_WIN32_WINNT*)
+ ETHR_DEFS="$ETHR_DEFS $cppflag"
+ found_win32_winnt=yes
+ ;;
+ *)
+ ;;
+ esac
+ done
+ if test $found_win32_winnt = no; then
+ AC_MSG_ERROR([-D_WIN32_WINNT missing in CPPFLAGS])
+ fi
+ AC_DEFINE(ETHR_WIN32_THREADS, 1, [Define if you have win32 threads])
+ ;;
+
+ pthread)
+ AC_DEFINE(ETHR_PTHREADS, 1, [Define if you have pthreads])
+ case $host_os in
+ openbsd*)
+ # The default stack size is insufficient for our needs
+ # on OpenBSD. We increase it to 256 kilo words.
+ ethr_modified_default_stack_size=256;;
+ linux*)
+ ETHR_DEFS="$ETHR_DEFS -D_GNU_SOURCE"
+
+ if test X$cross_compiling = Xyes; then
+ case X$erl_xcomp_linux_usable_sigusrx in
+ X) usable_sigusrx=cross;;
+ Xyes|Xno) usable_sigusrx=$erl_xcomp_linux_usable_sigusrx;;
+ *) AC_MSG_ERROR([Bad erl_xcomp_linux_usable_sigusrx value: $erl_xcomp_linux_usable_sigusrx]);;
+ esac
+ case X$erl_xcomp_linux_usable_sigaltstack in
+ X) usable_sigaltstack=cross;;
+ Xyes|Xno) usable_sigaltstack=$erl_xcomp_linux_usable_sigaltstack;;
+ *) AC_MSG_ERROR([Bad erl_xcomp_linux_usable_sigaltstack value: $erl_xcomp_linux_usable_sigaltstack]);;
+ esac
+ else
+ # FIXME: Test for actual problems instead of kernel versions
+ linux_kernel_vsn_=`uname -r`
+ case $linux_kernel_vsn_ in
+ [[0-1]].*|2.[[0-1]]|2.[[0-1]].*)
+ usable_sigusrx=no
+ usable_sigaltstack=no;;
+ 2.[[2-3]]|2.[[2-3]].*)
+ usable_sigusrx=yes
+ usable_sigaltstack=no;;
+ *)
+ usable_sigusrx=yes
+ usable_sigaltstack=yes;;
+ esac
+ fi
+
+ AC_MSG_CHECKING(if SIGUSR1 and SIGUSR2 can be used)
+ AC_MSG_RESULT($usable_sigusrx)
+ if test $usable_sigusrx = cross; then
+ usable_sigusrx=yes
+ AC_MSG_WARN([result yes guessed because of cross compilation])
+ fi
+ if test $usable_sigusrx = no; then
+ ETHR_DEFS="$ETHR_DEFS -DETHR_UNUSABLE_SIGUSRX"
+ fi
+
+ AC_MSG_CHECKING(if sigaltstack can be used)
+ AC_MSG_RESULT($usable_sigaltstack)
+ if test $usable_sigaltstack = cross; then
+ usable_sigaltstack=yes
+ AC_MSG_WARN([result yes guessed because of cross compilation])
+ fi
+ if test $usable_sigaltstack = no; then
+ ETHR_DEFS="$ETHR_DEFS -DETHR_UNUSABLE_SIGALTSTACK"
+ fi
AC_DEFINE(ETHR_INIT_MUTEX_IN_CHILD_AT_FORK, 1, \
[Define if mutexes should be reinitialized (instead of unlocked) in child at fork.]) ;;
@@ -635,20 +748,18 @@ dnl On ofs1 the '-pthread' switch should be used
dnl We sometimes need ETHR_DEFS in order to find certain headers
dnl (at least for pthread.h on osf1).
- saved_cppflags=$CPPFLAGS
+ saved_cppflags="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $ETHR_DEFS"
dnl We need the thread library in order to find some functions
- saved_libs=$LIBS
+ saved_libs="$LIBS"
LIBS="$LIBS $ETHR_X_LIBS"
-
-
dnl
dnl Check for headers
dnl
- AC_CHECK_HEADER(pthread.h,
+ AC_CHECK_HEADER(pthread.h, \
AC_DEFINE(ETHR_HAVE_PTHREAD_H, 1, \
[Define if you have the <pthread.h> header file.]))
@@ -684,8 +795,8 @@ dnl On ofs1 the '-pthread' switch should be used
AC_CHECK_FUNC(pthread_spin_lock, \
AC_DEFINE(ETHR_HAVE_PTHREAD_SPIN_LOCK, 1, \
[Define if you have the pthread_spin_lock function.]))
- case $host_os in
- linux*) # Writers may get starved
+ case "$force_linux_pthread_rwlocks-$host_os" in
+ yes-linux*) # Writers may get starved
# TODO: write a test that tests the implementation
;;
*)
@@ -702,9 +813,10 @@ dnl On ofs1 the '-pthread' switch should be used
LIBS=$saved_libs
dnl restore CPPFLAGS
CPPFLAGS=$saved_cppflags
-
- fi
-fi
+ ;;
+ *)
+ ;;
+esac
AC_MSG_CHECKING([whether default stack size should be modified])
if test "x$ethr_modified_default_stack_size" != "x"; then
@@ -735,7 +847,6 @@ AC_SUBST(ETHR_LIBS)
AC_SUBST(ETHR_LIB_NAME)
AC_SUBST(ETHR_DEFS)
AC_SUBST(ETHR_THR_LIB_BASE)
-AC_SUBST(ETHR_THR_LIB_BASE_NAME)
])
@@ -789,12 +900,6 @@ case $clock_gettime_correction in
unknown)
if test x$clock_gettime_compiles = xyes; then
if test X$cross_compiling != Xyes; then
- if test "X$erl_xcomp_linux_clock_gettime_correction" = "Xno"; then
- erl_cv_time_correction=times
- else
- erl_cv_time_correction=clock_gettime
- fi
- else
linux_kernel_vsn_=`uname -r`
case $linux_kernel_vsn_ in
[[0-1]].*|2.[[0-5]]|2.[[0-5]].*)
@@ -802,6 +907,19 @@ case $clock_gettime_correction in
*)
erl_cv_time_correction=clock_gettime;;
esac
+ else
+ case X$erl_xcomp_linux_clock_gettime_correction in
+ X)
+ erl_cv_time_correction=cross;;
+ Xyes|Xno)
+ if test $erl_xcomp_linux_clock_gettime_correction = yes; then
+ erl_cv_time_correction=clock_gettime
+ else
+ erl_cv_time_correction=times
+ fi;;
+ *)
+ AC_MSG_ERROR([Bad erl_xcomp_linux_clock_gettime_correction value: $erl_xcomp_linux_clock_gettime_correction]);;
+ esac
fi
else
erl_cv_time_correction=times
@@ -826,8 +944,9 @@ case $erl_cv_time_correction in
AC_DEFINE(CORRECT_USING_TIMES,[],
[Define if you do not have a high-res. timer & want to use times() instead])
;;
- clock_gettime)
- if test X$cross_compiling = Xyes -a X$erl_xcomp_linux_clock_gettime_correction = X; then
+ clock_gettime|cross)
+ if test $erl_cv_time_correction = cross; then
+ erl_cv_time_correction=clock_gettime
AC_MSG_WARN([result clock_gettime guessed because of cross compilation])
fi
xrtlib="-lrt"
@@ -892,11 +1011,20 @@ int main() {
],
erl_gethrvtime=procfs_ioctl,
erl_gethrvtime=false,
-if test "x$erl_xcomp_gethrvtime_procfs_ioctl" = "xyes"; then
- erl_gethrvtime=procfs_ioctl
-else
- erl_gethrvtime=false
-fi)
+[
+case X$erl_xcomp_gethrvtime_procfs_ioctl in
+ X)
+ erl_gethrvtime=cross;;
+ Xyes|Xno)
+ if test $erl_xcomp_gethrvtime_procfs_ioctl = yes; then
+ erl_gethrvtime=procfs_ioctl
+ else
+ erl_gethrvtime=false
+ fi;;
+ *)
+ AC_MSG_ERROR([Bad erl_xcomp_gethrvtime_procfs_ioctl value: $erl_xcomp_gethrvtime_procfs_ioctl]);;
+esac
+])
case $erl_gethrvtime in
procfs_ioctl)
@@ -905,7 +1033,13 @@ case $erl_gethrvtime in
AC_MSG_RESULT(uses ioctl to procfs)
;;
*)
- AC_MSG_RESULT(not working)
+ if test $erl_gethrvtime = cross; then
+ erl_gethrvtime=false
+ AC_MSG_RESULT(cross)
+ AC_MSG_WARN([result 'not working' guessed because of cross compilation])
+ else
+ AC_MSG_RESULT(not working)
+ fi
dnl
dnl Check if clock_gettime (linux) is working
@@ -938,29 +1072,35 @@ case $erl_gethrvtime in
exit(0); return 0;
}
],
- erl_clock_gettime=true,
- erl_clock_gettime=false,
- if test "x$erl_xcomp_clock_gettime" = "xyes"; then
- erl_clock_gettime=true
- else
- erl_clock_gettime=false
- fi)
+ erl_clock_gettime=yes,
+ erl_clock_gettime=no,
+ [
+ case X$erl_xcomp_clock_gettime_cpu_time in
+ X) erl_clock_gettime=cross;;
+ Xyes|Xno) erl_clock_gettime=$erl_xcomp_clock_gettime_cpu_time;;
+ *) AC_MSG_ERROR([Bad erl_xcomp_clock_gettime_cpu_time value: $erl_xcomp_clock_gettime_cpu_time]);;
+ esac
+ ])
LIBS=$save_libs
case $host_os in
linux*)
- AC_MSG_RESULT([not stable, disabled])
+ AC_MSG_RESULT([no; not stable])
LIBRT=$xrtlib
;;
*)
+ AC_MSG_RESULT($erl_clock_gettime)
case $erl_clock_gettime in
- true)
+ yes)
AC_DEFINE(HAVE_CLOCK_GETTIME,[],
[define if clock_gettime() works for getting process time])
- AC_MSG_RESULT(using clock_gettime)
LIBRT=-lrt
;;
+ cross)
+ erl_clock_gettime=no
+ AC_MSG_WARN([result no guessed because of cross compilation])
+ LIBRT=$xrtlib
+ ;;
*)
- AC_MSG_RESULT(not working)
LIBRT=$xrtlib
;;
esac
diff --git a/erts/autoconf/win32.config.cache b/erts/autoconf/win32.config.cache
index 51cfa13785..31dfe510cd 100755
--- a/erts/autoconf/win32.config.cache
+++ b/erts/autoconf/win32.config.cache
@@ -186,10 +186,12 @@ ac_cv_prog_CC=${ac_cv_prog_CC=cc.sh}
ac_cv_prog_CPP=${ac_cv_prog_CPP='cc.sh -E'}
ac_cv_prog_CXX=${ac_cv_prog_CXX=cc.sh}
ac_cv_prog_DED_LD=${ac_cv_prog_DED_LD=ld.sh}
+ac_cv_prog_ac_ct_DED_LD=${ac_cv_prog_ac_ct_DED_LD=ld.sh}
ac_cv_prog_M4=${ac_cv_prog_M4=m4}
ac_cv_prog_PERL=${ac_cv_prog_PERL=perl}
ac_cv_prog_RANLIB=${ac_cv_prog_RANLIB=true}
-ac_cv_prog_ac_ct_LD=${ac_cv_prog_ac_ct_LD=ld}
+ac_cv_prog_LD=${ac_cv_prog_LD=ld.sh}
+ac_cv_prog_ac_ct_LD=${ac_cv_prog_ac_ct_LD=ld.sh}
ac_cv_prog_cc_g=${ac_cv_prog_cc_g=yes}
ac_cv_prog_cc_stdc=${ac_cv_prog_cc_stdc=}
ac_cv_prog_cxx_g=${ac_cv_prog_cxx_g=no}
diff --git a/erts/configure.in b/erts/configure.in
index 48d236351b..1892a7a1f4 100644
--- a/erts/configure.in
+++ b/erts/configure.in
@@ -23,6 +23,8 @@ dnl autoconf convention that should be cleaned up.
AC_INIT(vsn.mk)
AC_PREREQ(2.59)
+LM_PRECIOUS_VARS
+
if test "x$no_recursion" != "xyes" -a "x$OVERRIDE_CONFIG_CACHE" = "x"; then
# We do not want to use a common cache!
cache_file=/dev/null
@@ -84,6 +86,9 @@ if test "X$host" != "Xfree_source" -a "X$host" != "Xwin32"; then
else
host_os=$host
fi
+
+ERL_XCOMP_SYSROOT_INIT
+
AC_ISC_POSIX
AC_CONFIG_HEADER($host/config.h:config.h.in include/internal/$host/ethread_header_config.h:include/internal/ethread_header_config.h.in include/$host/erl_int_sizes_config.h:include/erl_int_sizes_config.h.in)
@@ -94,6 +99,22 @@ enable_child_waiter_thread=no
ENABLE_ALLOC_TYPE_VARS=
AC_SUBST(ENABLE_ALLOC_TYPE_VARS)
+AC_ARG_ENABLE(bootstrap-only,
+[ --enable-bootstrap-only enable bootstrap only configuration],
+[ if test "X$enableval" = "Xyes"; then
+ # Disable stuff not necessary in a bootstrap only system in order
+ # to speed up things by reducing the amount of stuff needing to be
+ # built...
+ enable_threads=no
+ enable_smp_support=no
+ with_termcap=no
+ with_ssl=no
+ with_ssl_zlib=no
+ enable_hipe=no
+ enable_sctp=no
+ fi
+])
+
AC_ARG_ENABLE(threads,
[ --enable-threads enable async thread support
--disable-threads disable async thread support],
@@ -734,8 +755,17 @@ HCC='$(CC)' AC_SUBST(HCC)
HCFLAGS="" AC_SUBST(HCFLAGS)
HCFLAGS="$HCFLAGS -I${ERL_TOP}/erts/$host"
vxworks_reclaim="" AC_SUBST(vxworks_reclaim)
-LD='$(CC)' AC_SUBST(LD)
+dnl We want to use $(CC) as linker for the emulator regardless of
+dnl what the user say. This might not be the right way to do it, but
+dnl for now that is the way we do it.
+USER_LD=$LD
+USER_LDFLAGS="$LDFLAGS"
+LD='$(CC)'
+AC_SUBST(LD)
+
+LDFLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
+AC_SUBST(LDFLAG_RUNTIME_LIBRARY_PATH)
dnl Check for cygwin and object/exe files extension
dnl AC_CYGWIN is deprecated
@@ -1474,9 +1504,11 @@ fi
fi
-if test "x$erl_xcomp_bigendian" != "x"; then
- ac_cv_c_bigendian=$erl_xcomp_bigendian
-fi
+case X$erl_xcomp_bigendian in
+ X) ;;
+ Xyes|Xno) ac_cv_c_bigendian=$erl_xcomp_bigendian;;
+ *) AC_MSG_ERROR([Bad erl_xcomp_bigendian value: $erl_xcomp_bigendian]);;
+esac
AC_C_BIGENDIAN
@@ -1514,18 +1546,22 @@ int main(int argc, char **argv) {
}
}
],, have_getaddrinfo=no,
- if test "x$erl_xcomp_getaddrinfo" != "x"; then
- have_getaddrinfo=$erl_xcomp_getaddrinfo
- else
- have_getaddrinfo=no
- fi)
- if test $have_getaddrinfo = yes; then
- AC_MSG_RESULT(yes)
+ [
+ case X$erl_xcomp_getaddrinfo in
+ X) have_getaddrinfo=cross;;
+ Xyes|Xno) have_getaddrinfo=$erl_xcomp_getaddrinfo;;
+ *) AC_MSG_ERROR([Bad erl_xcomp_getaddrinfo value: $erl_xcomp_getaddrinfo]);;
+ esac
+ ])
+ AC_MSG_RESULT($have_getaddrinfo)
+ case $have_getaddrinfo in
+ yes)
AC_DEFINE(HAVE_GETADDRINFO, [1],
- [Define to 1 if you have a good `getaddrinfo' function.])
- else
- AC_MSG_RESULT(no)
- fi
+ [Define to 1 if you have a good `getaddrinfo' function.]);;
+ cross)
+ AC_MSG_WARN([result no guessed because of cross compilation]);;
+ *) ;;
+ esac
fi
AC_CHECK_FUNCS([getnameinfo getipnodebyname getipnodebyaddr gethostbyname2])
@@ -1807,16 +1843,21 @@ int main(void)
],
erts_cv___after_morecore_hook_can_track_malloc=yes,
erts_cv___after_morecore_hook_can_track_malloc=no,
- if test "x$erl_xcomp_after_morecore_hook" != "x"; then
- erts_cv___after_morecore_hook_can_track_malloc=$erl_xcomp_after_morecore_hook
- else
- erts_cv___after_morecore_hook_can_track_malloc=no
- fi)])
+ [
+ case X$erl_xcomp_after_morecore_hook in
+ X) erts_cv___after_morecore_hook_can_track_malloc=cross;;
+ Xyes|Xno) erts_cv___after_morecore_hook_can_track_malloc=$erl_xcomp_after_morecore_hook;;
+ *) AC_MSG_ERROR([Bad erl_xcomp_after_morecore_hook value: $erl_xcomp_after_morecore_hook]);;
+ esac
+ ]
+ )])
-if test $erts_cv___after_morecore_hook_can_track_malloc = yes; then
- AC_DEFINE(ERTS___AFTER_MORECORE_HOOK_CAN_TRACK_MALLOC, 1, \
-[Define if __after_morecore_hook can track malloc()s core memory use.])
-fi
+case $erts_cv___after_morecore_hook_can_track_malloc in
+ yes) AC_DEFINE(ERTS___AFTER_MORECORE_HOOK_CAN_TRACK_MALLOC, 1, \
+[Define if __after_morecore_hook can track malloc()s core memory use.]);;
+ cross) AC_MSG_WARN([result no guessed because of cross compilation]);;
+ *) ;;
+esac
if test "x$ac_cv_func_sbrk" = "xyes"; then
AC_CACHE_CHECK([types of sbrk()s return value and argument],
@@ -2069,15 +2110,21 @@ int main(void)
],
erts_cv_brk_wrappers_can_track_malloc=yes,
erts_cv_brk_wrappers_can_track_malloc=no,
- if test "x$erl_xcomp_dlsym_brk_wrappers" != "x"; then
- erts_cv_brk_wrappers_can_track_malloc=$erl_xcomp_dlsym_brk_wrappers
- else
- erts_cv_brk_wrappers_can_track_malloc=no
- fi)])
- if test $erts_cv_brk_wrappers_can_track_malloc = yes; then
+ [
+ case X$erl_xcomp_dlsym_brk_wrappers in
+ X) erts_cv_brk_wrappers_can_track_malloc=cross;;
+ Xyes|Xno) erts_cv_brk_wrappers_can_track_malloc=$erl_xcomp_dlsym_brk_wrappers;;
+ *) AC_MSG_ERROR([Bad erl_xcomp_dlsym_brk_wrappers value: $erl_xcomp_dlsym_brk_wrappers]);;
+ esac
+ ])])
+ case $erts_cv_brk_wrappers_can_track_malloc in
+ yes)
AC_DEFINE(ERTS_BRK_WRAPPERS_CAN_TRACK_MALLOC, 1, \
-[Define if sbrk()/brk() wrappers can track malloc()s core memory use])
- fi
+[Define if sbrk()/brk() wrappers can track malloc()s core memory use]);;
+ cross)
+ AC_MSG_WARN([result no guessed because of cross compilation]);;
+ *) ;;
+ esac
fi
dnl Restore LIBS
@@ -2090,7 +2137,7 @@ LM_SYS_MULTICAST
ERL_TIME_CORRECTION
AC_CHECK_PROG(M4, m4, m4)
dnl check to auto-enable hipe here...
-if test X${enable_hipe} != Xno; then
+if test "$cross_compiling" != "yes" && test X${enable_hipe} != Xno; then
if test -z "$M4"; then
enable_hipe=no
AC_MSG_NOTICE([HiPE disabled as no valid m4 is found in PATH])
@@ -2657,21 +2704,26 @@ int main(int argc, const char **argv)
return do_check();
}
],
-erl_ok=reliable,
-erl_ok=unreliable,
-if test "x$erl_xcomp_reliable_fpe" = "xyes"; then
- erl_ok=reliable
-else
- erl_ok=unreliable
-fi)
- if test $erl_ok = unreliable; then
- AC_DEFINE(NO_FPE_SIGNALS,[],
- [Define if floating points exceptions are non-existing/not reliable])
- AC_MSG_RESULT([unreliable; testing in software instead])
- FPE=unreliable
- else
+erl_ok=yes,
+erl_ok=no,
+[
+case X$erl_xcomp_reliable_fpe in
+ X) erl_ok=cross;;
+ Xyes|Xno) erl_ok=$erl_xcomp_reliable_fpe;;
+ *) AC_MSG_ERROR([Bad erl_xcomp_reliable_fpe value: $erl_xcomp_reliable_fpe]);;
+esac
+])
+
+ if test $erl_ok = yes; then
+ FPE=reliable
AC_MSG_RESULT(reliable)
- FPE=reliable
+ else
+ FPE=unreliable
+ AC_MSG_RESULT([unreliable; testing in software instead])
+ AC_DEFINE(NO_FPE_SIGNALS,[],[Define if floating points exceptions are non-existing/not reliable])
+ if test $erl_ok = cross; then
+ AC_MSG_WARN([result unreliable guessed because of cross compilation])
+ fi
fi
fi
@@ -2837,45 +2889,46 @@ main()
],
poll_works=yes,
poll_works=no,
-poll_works=$erl_xcomp_poll)
-
-if test "X$poll_works" != "X"; then
- guessed_poll_works=no
-else
- guessed_poll_works=yes
- case $host_os in
- darwin*) poll_works=no;;
- *) poll_works=yes;;
- esac
-fi
+[
+case X$erl_xcomp_poll in
+ X) poll_works=cross;;
+ Xyes|Xno) poll_works=$erl_xcomp_poll;;
+ *) AC_MSG_ERROR([Bad erl_xcomp_poll value: $erl_xcomp_poll]);;
+esac
+])
fi
-case $poll_works in
-yes)
- AC_DEFINE(ERTS_USE_POLL, 1, [Define if poll() should be used instead of select()])
- AC_MSG_RESULT(yes)
- ;;
-*)
+case $poll_works-$host_os in
+ no-*|cross-darwin*)
#
# The USE_SELECT define is used by the ssl application (should not
# be used by erts).
#
- poll_works=no
AC_DEFINE(USE_SELECT, 1, [Define if select() should be used instead of poll()])
- AC_MSG_RESULT([no; non-existing, broken, or based on select()])
- ;;
+ if test $poll_works = cross; then
+ AC_MSG_RESULT(cross)
+ AC_MSG_WARN([result no guessed based on OS ($host_os) because of cross compilation])
+ else
+ AC_MSG_RESULT([no; non-existing, broken, or based on select()])
+ fi
+ poll_works=no;;
+ yes-*|cross-*)
+ AC_DEFINE(ERTS_USE_POLL, 1, [Define if poll() should be used instead of select()])
+ if test $poll_works = cross; then
+ AC_MSG_RESULT(cross)
+ AC_MSG_WARN([result yes guessed based on OS ($host_os) because of cross compilation])
+ else
+ AC_MSG_RESULT(yes)
+ fi
+ poll_works=yes;;
esac
-if test $guessed_poll_works = yes; then
- AC_MSG_WARN([result $poll_works guessed based on OS ($host_os) because of cross compilation])
-fi
-
#
# If kqueue() found, check that it can be selected or polled on...
#
if test $have_kernel_poll = kqueue; then
- if test $poll_works = true; then
+ if test $poll_works = yes; then
kqueue_with=poll
else
kqueue_with=select
@@ -2907,19 +2960,25 @@ int main(void) {
return 0;
}
],
- ok_kqueue=true,
- ok_kqueue=false,
- if test "x$erl_xcomp_kqueue" = "xyes"; then
- ok_kqueue=true
- else
- ok_kqueue=false
- fi)
- if test $ok_kqueue = true; then
- AC_MSG_RESULT(yes);
- else
- AC_MSG_RESULT(no);
+ ok_kqueue=yes,
+ ok_kqueue=no,
+ [
+ case X$erl_xcomp_kqueue in
+ X) ok_kqueue=cross;;
+ Xyes|Xno) ok_kqueue=$erl_xcomp_kqueue;;
+ *) AC_MSG_ERROR([Bad erl_xcomp_kqueue value: $erl_xcomp_kqueue]);;
+ esac
+ ])
+ AC_MSG_RESULT($ok_kqueue);
+ case $ok_kqueue in
+ yes)
+ ;;
+ cross)
have_kernel_poll=no
- fi
+ AC_MSG_WARN([result no guessed because of cross compilation]);;
+ *)
+ have_kernel_poll=no;;
+ esac
fi
#
@@ -3006,16 +3065,23 @@ int main(void) {
],
copying_putenv=yes,
copying_putenv=no,
-if test "x$erl_xcomp_putenv_copy" != "x"; then
- copying_putenv=$erl_xcomp_putenv_copy
-else
- copying_putenv=no
-fi)
+[
+case X$erl_xcomp_putenv_copy in
+ X) copying_putenv=cross;;
+ Xyes|Xno) copying_putenv=$erl_xcomp_putenv_copy;;
+ *) AC_MSG_ERROR([Bad erl_xcomp_putenv_copy value: $erl_xcomp_putenv_copy]);;
+esac
+])
-if test $copying_putenv = yes; then
- AC_DEFINE(HAVE_COPYING_PUTENV,[1],[Define if you have a putenv() that stores a copy of the key-value pair])
-fi
AC_MSG_RESULT($copying_putenv)
+case $copying_putenv in
+ yes)
+ AC_DEFINE(HAVE_COPYING_PUTENV,[1],\
+[Define if you have a putenv() that stores a copy of the key-value pair]);;
+ cross)
+ AC_MSG_WARN([result no guessed because of cross compilation]);;
+ *) ;;
+esac
dnl ----------------------------------------------------------------------
dnl Stuff that should be moved into their respective application
@@ -3043,29 +3109,39 @@ dnl crypto
#
#--------------------------------------------------------------------
-DED_INCLUDE="-I${ERL_TOP}/erts/emulator/beam -I${ERL_TOP}/erts/include -I${ERL_TOP}/erts/include/$host"
+DED_SYS_INCLUDE="-I${ERL_TOP}/erts/emulator/beam -I${ERL_TOP}/erts/include -I${ERL_TOP}/erts/include/$host -I${ERL_TOP}/erts/include/internal -I${ERL_TOP}/erts/include/internal/$host -I${ERL_TOP}/erts/emulator/sys/$ERLANG_OSTYPE"
-DED_CFLAGS="$DED_INCLUDE $CFLAGS $CPPFLAGS $EMU_THR_DEFS"
+if test "X$ETHR_DEFS" = "X"; then
+ DED_THR_DEFS="-D_THREAD_SAFE -D_REENTRANT"
+else
+ DED_THR_DEFS="$ETHR_DEFS"
+fi
+DED_EMU_THR_DEFS=$EMU_THR_DEFS
+DED_CFLAGS="$CFLAGS $CPPFLAGS"
if test "x$GCC" = xyes; then
DED_CFLAGS="$DED_CFLAGS -fPIC"
fi
-STATIC_CFLAGS=""
+DED_EXT=so
+case $host_os in
+ win32) DED_EXT=dll;;
+ darwin*)
+ DED_CFLAGS="$DED_CFLAGS -fno-common"
+ if test "X$STATIC_CFLAGS" = "X"; then
+ STATIC_CFLAGS="-mdynamic-no-pic"
+ fi;;
+ *)
+ ;;
+esac
-# If DED_LD is set in environment, we expect all DED variables to be specified
-# (cross compiling)
+# If DED_LD is set in environment, we expect all DED_LD* variables
+# to be specified (cross compiling)
if test "x$DED_LD" = "x"; then
-if test "x$LD" = "x"; then
- DED_LD=ld
-else
- DED_LD=$LD
-fi
DED_LD_FLAG_RUNTIME_LIBRARY_PATH="-R"
-
case $host_os in
win32)
- DED_LD=ld.sh
+ DED_LD="ld.sh"
DED_LDFLAGS="-dll"
DED_LD_FLAG_RUNTIME_LIBRARY_PATH=
;;
@@ -3099,21 +3175,20 @@ case $host_os in
if test X${enable_darwin_universal} = Xyes; then
DED_LDFLAGS="-arch ppc -arch i386 $DED_LDFLAGS"
fi
- DED_CFLAGS="$DED_CFLAGS -fno-common"
DED_LD="$CC"
- DED_LD_FLAG_RUNTIME_LIBRARY_PATH=
- STATIC_CFLAGS="-mdynamic-no-pic"
+ DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
;;
linux*)
DED_LD="$CC"
+ DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
DED_LDFLAGS="-shared -Wl,-Bsymbolic"
- DED_LD_FLAG_RUNTIME_LIBRARY_PATH=
if test X${enable_m64_build} = Xyes; then
DED_LDFLAGS="-m64 $DED_LDFLAGS"
fi
;;
freebsd*)
DED_LD="$CC"
+ DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$CFLAG_RUNTIME_LIBRARY_PATH"
DED_LDFLAGS="-shared"
if test X${enable_m64_build} = Xyes; then
DED_LDFLAGS="-m64 $DED_LDFLAGS"
@@ -3131,8 +3206,16 @@ case $host_os in
;;
esac
+if test "$DED_LD" = "" && test "$USER_LD" != ""; then
+ DED_LD="$USER_LD"
+ DED_LDFLAGS="$USER_LDFLAGS $DED_LDFLAGS"
fi
+fi # "x$DED_LD" = "x"
+
+AC_CHECK_TOOL(DED_LD, ld, false)
+test "$DED_LD" != "false" || AC_MSG_ERROR([No linker found])
+
AC_MSG_CHECKING(for compiler flags for loadable drivers)
AC_MSG_RESULT([$DED_CFLAGS])
AC_MSG_CHECKING(for linker for loadable drivers)
@@ -3146,10 +3229,14 @@ else
AC_MSG_RESULT([not found])
fi
+AC_SUBST(DED_EXT)
+AC_SUBST(DED_SYS_INCLUDE)
AC_SUBST(DED_CFLAGS)
AC_SUBST(DED_LD)
AC_SUBST(DED_LDFLAGS)
AC_SUBST(DED_LD_FLAG_RUNTIME_LIBRARY_PATH)
+AC_SUBST(DED_THR_DEFS)
+AC_SUBST(DED_EMU_THR_DEFS)
AC_SUBST(STATIC_CFLAGS)
dnl
@@ -3172,6 +3259,9 @@ dnl use "PATH/include" and "PATH/lib".
AC_SUBST(SSL_INCLUDE)
AC_SUBST(SSL_ROOT)
AC_SUBST(SSL_LIBDIR)
+AC_SUBST(SSL_CC_RUNTIME_LIBRARY_PATH)
+AC_SUBST(SSL_LD_RUNTIME_LIBRARY_PATH)
+AC_SUBST(SSL_DED_LD_RUNTIME_LIBRARY_PATH)
AC_SUBST(SSL_DYNAMIC_ONLY)
AC_SUBST(SSL_LINK_WITH_KERBEROS)
AC_SUBST(STATIC_KERBEROS_LIBS)
@@ -3179,6 +3269,8 @@ AC_SUBST(SSL_LINK_WITH_ZLIB)
AC_SUBST(STATIC_ZLIB_LIBS)
AC_SUBST(OPENSSL_CMD)
+std_ssl_locations="/usr/local /usr/sfw /opt/local /usr /usr/pkg /usr/local/openssl /usr/lib/openssl /usr/openssl /usr/local/ssl /usr/lib/ssl /usr/ssl"
+
AC_ARG_WITH(ssl-zlib,
[ --with-ssl-zlib=PATH specify location of ZLib to be used by OpenSSL
--with-ssl-zlib link SSL with Zlib (default if found)
@@ -3188,18 +3280,20 @@ AC_ARG_WITH(ssl-zlib,
if test "x$with_ssl_zlib" = "xno"; then
SSL_LINK_WITH_ZLIB=no
STATIC_ZLIB_LIBS=
-elif test "x$with_ssl_zlib" = "xyes" -o "x$with_ssl_zlib" = "x" ;then
- if test "x$MIXED_CYGWIN" = "xyes"; then
+elif test "x$with_ssl_zlib" = "xyes" || test "x$with_ssl_zlib" = "x"; then
+ if test $erl_xcomp_without_sysroot = yes; then
+ AC_MSG_WARN([Cannot search for zlib; missing cross system root (erl_xcomp_sysroot).])
+ SSL_LINK_WITH_ZLIB=no
+ STATIC_ZLIB_LIBS=
+ elif test "x$MIXED_CYGWIN" = "xyes"; then
SSL_LINK_WITH_ZLIB=no
STATIC_ZLIB_LIBS=
else
SSL_LINK_WITH_ZLIB=no
STATIC_ZLIB_LIBS=
AC_MSG_CHECKING(for static ZLib to be used by SSL in standard locations)
- for dir in /usr/local /usr/sfw /usr /usr/pkg \
- /usr/local/openssl /usr/lib/openssl /usr/openssl \
- /usr/local/ssl /usr/lib/ssl /usr/ssl
- do
+ for rdir in $std_ssl_locations; do
+ dir="$erl_xcomp_sysroot$rdir"
if test "x$ac_cv_sizeof_void_p" = "x8"; then
if test -f "$dir/lib64/libz.a"; then
SSL_LINK_WITH_ZLIB=yes
@@ -3280,14 +3374,21 @@ done
SSL_DYNAMIC_ONLY=$enable_dynamic_ssl
-if test "x$with_ssl" = "xno"; then
+case "$erl_xcomp_without_sysroot-$with_ssl" in
+ yes-* | no-no)
SSL_APP=
CRYPTO_APP=
SSH_APP=
+ if test "$with_ssl" = "no"; then
+ skip="User gave --without-ssl option"
+ else
+ skip="Cannot search for ssl; missing cross system root (erl_xcomp_sysroot)."
+ fi
for a in ssl crypto ssh; do
- echo "User gave --without-ssl option" > $ERL_TOP/lib/$a/SKIP
+ echo "$skip" > $ERL_TOP/lib/$a/SKIP
done
-elif test "x$with_ssl" = "xyes" -o "x$with_ssl" = "x" ;then
+ ;;
+ no-yes | no- )
# On windows, we could try to find the installation
# of Shining Light OpenSSL, which can be found by poking in
# the uninstall section in the registry, it's worth a try...
@@ -3314,20 +3415,19 @@ elif test "x$with_ssl" = "xyes" -o "x$with_ssl" = "x" ;then
SSH_APP=ssh
AC_MSG_CHECKING(for OpenSSL >= 0.9.7 in standard locations)
- for dir in $extra_dir /cygdrive/c/OpenSSL \
- /usr/local /usr/sfw /opt/local /usr /usr/pkg \
- /usr/local/openssl /usr/lib/openssl /usr/openssl \
- /usr/local/ssl /usr/lib/ssl /usr/ssl
- do
- if test -f $dir/include/openssl/opensslv.h; then
+ for rdir in $extra_dir /cygdrive/c/OpenSSL $std_ssl_locations; do
+ dir="$erl_xcomp_sysroot$rdir"
+ if test -f "$erl_xcomp_isysroot$rdir/include/openssl/opensslv.h"; then
is_real_ssl=yes
SSL_ROOT="$dir"
if test "x$MIXED_CYGWIN" = "xyes" ; then
- if test -f "$dir/lib/VC/ssleay32.lib" -o \
- -f "$dir/lib/VC/openssl.lib"; then
+ if test -f "$dir/lib/VC/ssleay32.lib" || \
+ test -f "$dir/lib/VC/openssl.lib"; then
+ SSL_RUNTIME_LIBDIR="$rdir/lib/VC"
SSL_LIBDIR="$dir/lib/VC"
- elif test -f "$dir/lib/ssleay32.lib" -o \
- -f "$dir/lib/openssl.lib"; then
+ elif test -f "$dir/lib/ssleay32.lib" || \
+ test -f "$dir/lib/openssl.lib"; then
+ SSL_RUNTIME_LIBDIR="$rdir/lib"
SSL_LIBDIR="$dir/lib"
else
is_real_ssl=no
@@ -3335,31 +3435,42 @@ elif test "x$with_ssl" = "xyes" -o "x$with_ssl" = "x" ;then
else
if test "x$ac_cv_sizeof_void_p" = "x8"; then
if test -f "$dir/lib64/libcrypto.a"; then
+ SSL_RUNTIME_LIBDIR="$rdir/lib64"
SSL_LIBDIR="$dir/lib64"
elif test -f "$dir/lib/64/libcrypto.a"; then
+ SSL_RUNTIME_LIBDIR="$rdir/lib/64"
SSL_LIBDIR="$dir/lib/64"
elif test -f "$dir/lib64/libcrypto.so"; then
+ SSL_RUNTIME_LIBDIR="$rdir/lib64"
SSL_LIBDIR="$dir/lib64"
elif test -f "$dir/lib/64/libcrypto.so"; then
+ SSL_RUNTIME_LIBDIR="$rdir/lib/64"
SSL_LIBDIR="$dir/lib/64"
else
+ SSL_RUNTIME_LIBDIR="$rdir/lib"
SSL_LIBDIR="$dir/lib"
fi
else
+ SSL_RUNTIME_LIBDIR="$rdir/lib"
SSL_LIBDIR="$dir/lib"
fi
fi
if test '!' -f $SSL_LIBDIR/libcrypto.a; then
SSL_DYNAMIC_ONLY=yes
fi
- SSL_BINDIR="$dir/bin"
+ SSL_BINDIR="$rdir/bin"
dnl Should one use EXEEXT or ac_exeext?
- if test -f "$SSL_BINDIR/openssl$EXEEXT"; then
+ if test -f "$erl_xcomp_sysroot$SSL_BINDIR/openssl$EXEEXT"; then
+ if test "$cross_compiling" = "yes"; then
+ dnl Cannot test it; hope it is working...
+ OPENSSL_CMD="$SSL_BINDIR/openssl"
+ else
if "$SSL_BINDIR/openssl" version > /dev/null 2>&1; then
OPENSSL_CMD="$SSL_BINDIR/openssl"
else
is_real_ssl=no
fi
+ fi
else
is_real_ssl=no
fi
@@ -3403,7 +3514,7 @@ dnl Should one use EXEEXT or ac_exeext?
LIBS="$saveLIBS"
fi
fi
- if test "x$ssl_found" = "xyes" -a "x$ssl_linkable" = "xyes" ; then
+ if test "x$ssl_found" = "xyes" && test "x$ssl_linkable" = "xyes"; then
AC_MSG_RESULT([$dir])
break;
fi
@@ -3417,13 +3528,14 @@ dnl Should one use EXEEXT or ac_exeext?
dnl
case $host_os in
openbsd*)
- if test -f /usr/include/openssl/opensslv.h; then
+ if test -f "$erl_xcomp_isysroot/usr/include/openssl/opensslv.h"; then
# Trust OpenBSD to have everything the in the correct locations.
ssl_found=yes
ssl_linkable=yes
- SSL_ROOT="/usr/sbin"
+ SSL_ROOT="$erl_xcomp_sysroot/usr"
AC_MSG_RESULT([$SSL_ROOT])
- SSL_LIB="/usr/lib"
+ SSL_RUNTIME_LIB="/usr/lib"
+ SSL_LIB="$erl_xcomp_sysroot/usr/lib"
SSL_BINDIR="/usr/sbin"
OPENSSL_CMD="$SSL_BINDIR/openssl"
dnl OpenBSD requires us to link with -L and -l
@@ -3436,7 +3548,7 @@ dnl Now, certain linuxes have a 64bit libcrypto
dnl that cannot build shared libraries (i.e. not PIC)
dnl One could argue that this is wrong, but
dnl so it is - be adoptable
- if test "x$ssl_found" = "xyes" -a "x$ssl_linkable" = "xyes" -a "x$SSL_DYNAMIC_ONLY" != "xyes" ; then
+ if test "$ssl_found" = "yes" && test "$ssl_linkable" = "yes" && test "$SSL_DYNAMIC_ONLY" != "yes"; then
case $host_os in
linux*)
saveCFLAGS="$CFLAGS"
@@ -3468,7 +3580,7 @@ dnl so it is - be adoptable
- if test "x$ssl_found" != "xyes" -o "x$ssl_linkable" != "xyes"; then
+ if test "x$ssl_found" != "xyes" || test "x$ssl_linkable" != "xyes"; then
if test "x$ssl_found" = "xyes"; then
AC_MSG_RESULT([found; but not usable])
else
@@ -3483,13 +3595,21 @@ dnl so it is - be adoptable
echo "No usable OpenSSL found" > $ERL_TOP/lib/$a/SKIP
done
fi
-else
+ ;;
+ *)
+ if test "$cross_compiling" = "yes"; then
+ case "$with_ssl" in
+ "$erl_xcomp_sysroot"*) ;;
+ *) AC_MSG_ERROR([Invalid path to option --with-ssl=PATH (not a subdirectory to cross system root)]);;
+ esac
+ fi
+
# Option given with PATH to package
if test ! -d "$with_ssl" ; then
AC_MSG_ERROR(Invalid path to option --with-ssl=PATH)
fi
SSL_ROOT="$with_ssl"
- if test "x$MIXED_CYGWIN" = "xyes" -a -d "$with_ssl/lib/VC"; then
+ if test "x$MIXED_CYGWIN" = "xyes" && test -d "$with_ssl/lib/VC"; then
SSL_LIBDIR="$with_ssl/lib/VC"
elif test "x$ac_cv_sizeof_void_p" = "x8"; then
if test -f "$with_ssl/lib64/libcrypto.a"; then
@@ -3514,7 +3634,12 @@ else
SSL_APP=ssl
CRYPTO_APP=crypto
SSH_APP=ssh
-fi
+ if test "$cross_compiling" = "yes"; then
+ SSL_RUNTIME_LIBDIR=`echo "$SSL_LIBDIR" | sed -n "s|^$erl_xcomp_sysroot\(.*\)\$|\1|p"`
+ else
+ SSL_RUNTIME_LIBDIR="$SSL_LIBDIR"
+ fi
+esac
if test "x$SSL_APP" != "x" ; then
dnl We found openssl, now check if we use kerberos 5 support
@@ -3530,19 +3655,19 @@ if test "x$SSL_APP" != "x" ; then
AC_MSG_RESULT([yes])
ssl_krb5_enabled=yes
if test "x$SSL_DYNAMIC_ONLY" != "xyes"; then
- if test -f $SSL_LIBDIR/libkrb5.a; then
+ if test -f "$SSL_LIBDIR/libkrb5.a"; then
SSL_LINK_WITH_KERBEROS=yes
STATIC_KERBEROS_LIBS="$SSL_LIBDIR/libkrb5.a"
- if test -f $SSL_LIBDIR/libkrb5support.a; then
+ if test -f "$SSL_LIBDIR/libkrb5support.a"; then
STATIC_KERBEROS_LIBS="$STATIC_KERBEROS_LIBS $SSL_LIBDIR/libkrb5support.a"
fi
- if test -f $SSL_LIBDIR/libk5crypto.a; then
+ if test -f "$SSL_LIBDIR/libk5crypto.a"; then
STATIC_KERBEROS_LIBS="$STATIC_KERBEROS_LIBS $SSL_LIBDIR/libk5crypto.a"
fi
- if test -f $SSL_LIBDIR/libresolv.a; then
+ if test -f "$SSL_LIBDIR/libresolv.a"; then
STATIC_KERBEROS_LIBS="$STATIC_KERBEROS_LIBS $SSL_LIBDIR/libresolv.a"
fi
- if test -f $SSL_LIBDIR/libcom_err.a; then
+ if test -f "$SSL_LIBDIR/libcom_err.a"; then
STATIC_KERBEROS_LIBS="$STATIC_KERBEROS_LIBS $SSL_LIBDIR/libcom_err.a"
fi
else
@@ -3568,10 +3693,12 @@ if test "x$SSL_APP" != "x" ; then
SSL_KRB5_INCLUDE=
if test "x$ssl_krb5_enabled" = "xyes" ; then
AC_MSG_CHECKING(for krb5.h in standard locations)
- for dir in $extra_dir $SSL_ROOT/include $SSL_ROOT/include/openssl \
- $SSL_ROOT/include/kerberos /cygdrive/c/kerberos/include \
- /usr/local/kerberos/include /usr/kerberos/include \
- /usr/include
+ for dir in $extra_dir "$SSL_ROOT/include" "$SSL_ROOT/include/openssl" \
+ "$SSL_ROOT/include/kerberos" \
+ "$erl_xcomp_isysroot/cygdrive/c/kerberos/include" \
+ "$erl_xcomp_isysroot/usr/local/kerberos/include" \
+ "$erl_xcomp_isysroot/usr/kerberos/include" \
+ "$erl_xcomp_isysroot/usr/include"
do
if test -f "$dir/krb5.h" ; then
SSL_KRB5_INCLUDE="$dir"
@@ -3596,6 +3723,99 @@ fi
done # while test ssl_done != yes
+SSL_CC_RUNTIME_LIBRARY_PATH=
+SSL_LD_RUNTIME_LIBRARY_PATH=
+SSL_DED_LD_RUNTIME_LIBRARY_PATH=
+cc_rflg="$CFLAG_RUNTIME_LIBRARY_PATH"
+ld_rflg="$LDFLAG_RUNTIME_LIBRARY_PATH"
+ded_ld_rflg="$DED_LD_FLAG_RUNTIME_LIBRARY_PATH"
+
+if test "$SSL_APP" != "" && test "$SSL_DYNAMIC_ONLY" = "yes" && \
+ { test "$cc_rflg" != "" || test "$ld_rflg" != "" || test "$ded_ld_rflg" != ""; } ; then
+
+ AC_MSG_CHECKING(for ssl runtime library path to use)
+
+ libdirs="/lib"
+
+ if test "$ac_cv_sizeof_void_p" = "8"; then
+ dir_lib64=no
+ dir_lib_64=no
+
+ case "$SSL_RUNTIME_LIBDIR" in
+ */lib/64 | */lib/64/ ) dir_lib_64=yes;;
+ */lib64 | */lib64/ ) dir_lib64=yes;;
+ *) ;;
+ esac
+
+ for dir in $std_ssl_locations; do
+ test $dir_lib_64 = no &&
+ test -d "$erl_xcomp_sysroot$dir/lib/64" &&
+ dir_lib_64=yes
+ test $dir_lib64 = no &&
+ test -d "$erl_xcomp_sysroot$dir/lib64" &&
+ dir_lib64=yes
+ done
+
+ test $dir_lib_64 = yes && libdirs="/lib/64 $libdirs"
+ test $dir_lib64 = yes && libdirs="/lib64 $libdirs"
+ fi
+
+ for type in std x_std curr; do
+
+ cc_rpath="$cc_rflg$SSL_RUNTIME_LIBDIR"
+ ld_rpath="$ld_rflg$SSL_RUNTIME_LIBDIR"
+ ded_ld_rpath="$ded_ld_rflg$SSL_RUNTIME_LIBDIR"
+ rpath="$SSL_RUNTIME_LIBDIR"
+
+ if test $type != curr; then
+ for ldir in $libdirs; do
+ for dir in $std_ssl_locations; do
+ test "$SSL_LIBDIR" != "$dir$ldir" || continue
+ test $type != x_std || test -d "$dir$ldir" || continue
+ test "$cc_rflg" = "" ||
+ cc_rpath="$cc_rpath $cc_rflg$dir$ldir"
+ test "$ld_rflg" = "" ||
+ ld_rpath="$ld_rpath $ld_rflg$dir$ldir"
+ test "$ded_ld_rflg" = "" ||
+ ded_ld_rpath="$ded_ld_rpath $ded_ld_rflg$dir$ldir"
+ rpath="$rpath:$dir$ldir"
+ done
+ done
+ fi
+
+ saveCFLAGS="$CFLAGS"
+ saveLDFLAGS="$LDFLAGS"
+ saveLIBS="$LIBS"
+ CFLAGS="$CFLAGS $SSL_INCLUDE"
+ LDFLAGS="$LDFLAGS $ld_rpath -L$SSL_LIBDIR"
+ LIBS="-lcrypto"
+ AC_TRY_LINK([
+ #include <stdio.h>
+ #include <openssl/hmac.h>
+ ],
+ [
+ HMAC_CTX hc;
+ HMAC_CTX_init(&hc);
+ ],
+ [rpath_success=yes],
+ [rpath_success=no])
+ CFLAGS="$saveCFLAGS"
+ LDFLAGS="$saveLDFLAGS"
+ LIBS="$saveLIBS"
+
+ test "$rpath_success" = "yes" && break
+ done
+
+ test "$rpath_success" = "yes" || { cc_rpath=; ld_rpath=; ded_ld_rpath=; rpath=; }
+
+ SSL_CC_RUNTIME_LIBRARY_PATH="$cc_rpath"
+ SSL_LD_RUNTIME_LIBRARY_PATH="$ld_rpath"
+ SSL_DED_LD_RUNTIME_LIBRARY_PATH="$ded_ld_rpath"
+
+ AC_MSG_RESULT([$rpath])
+ test "$rpath" != "" || AC_MSG_WARN([Cannot set run path during linking])
+fi
+
#--------------------------------------------------------------------
# Os mon stuff.
#--------------------------------------------------------------------
@@ -3614,6 +3834,11 @@ case $host_os in
os_mon_programs="$os_mon_programs cpu_sup" ;;
esac
+
+AC_ARG_WITH(javac,
+[ --with-javac=JAVAC specify Java compiler to use
+ --with-javac use a Java compiler if found (default)
+ --without-javac don't use any Java compiler])
dnl
dnl Then there are a number of apps which needs a java compiler...
@@ -3625,7 +3850,20 @@ for a in $need_java ; do
/bin/rm -f $ERL_TOP/lib/$a/SKIP
done
-AC_CHECK_PROGS(JAVAC, javac.sh javac guavac gcj jikes bock)
+if test "X$with_javac" = "Xno"; then
+ for a in $need_java ; do
+ echo "Java compiler disabled by user" > $ERL_TOP/lib/$a/SKIP
+ done
+
+else # begin - try to find javac
+
+if test "X$with_javac" != "Xyes" -a "X$with_javac" != "X"; then
+ check_javac=$with_javac
+else
+ check_javac="javac.sh javac guavac gcj jikes bock"
+fi
+
+AC_CHECK_PROGS(JAVAC, $check_javac)
if test -n "$JAVAC"; then
dnl Make sure it's at least JDK 1.5
AC_CACHE_CHECK(for JDK version 1.5,
@@ -3637,6 +3875,11 @@ if test -n "$JAVAC"; then
fi
fi
if test -z "$JAVAC"; then
+
+ if test "X$with_javac" != "X"; then
+ AC_MSG_ERROR([No java compiler found in PATH (checked for $check_javac)])
+ fi
+
AC_MSG_WARN([Could not find any usable java compiler, will skip: jinterface])
for a in $need_java ; do
@@ -3644,14 +3887,15 @@ if test -z "$JAVAC"; then
done
fi
+fi # end - try to find javac
+
dnl
dnl Orber has a c++ example, this isn't the right way to check for
dnl it, but....
dnl
-CXXFLAGS=
AC_SUBST(CXXFLAGS)
dnl this deliberately does not believe that 'gcc' is a C++ compiler
-AC_CHECK_PROGS(CXX, $CCC c++ g++ CC cxx cc++ cl, false)
+AC_CHECK_TOOLS(CXX, [$CCC c++ g++ CC cxx cc++ cl], false)
# Remove SKIP file from previous run
/bin/rm -f $ERL_TOP/lib/orber/SKIP
@@ -3788,6 +4032,5 @@ dnl
../lib/orber/c_src/$host/Makefile:../lib/orber/c_src/Makefile.in
../lib/runtime_tools/c_src/$host/Makefile:../lib/runtime_tools/c_src/Makefile.in
../lib/tools/c_src/$host/Makefile:../lib/tools/c_src/Makefile.in
- ../lib/asn1/c_src/$host/Makefile:../lib/asn1/c_src/Makefile.in
)
diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml
index b01d187b01..73d15c33d7 100644
--- a/erts/doc/src/erl.xml
+++ b/erts/doc/src/erl.xml
@@ -798,6 +798,11 @@
Valid range is 4-8192 kilowords. The default stack size
is OS dependent.</p>
</item>
+ <tag><c><![CDATA[+t size]]></c></tag>
+ <item>
+ <marker id="+t"></marker>
+ <p>Set the maximum number of atoms the VM can handle. Default is 1048576.</p>
+ </item>
<tag><c><![CDATA[+T Level]]></c></tag>
<item>
<marker id="+T"></marker>
diff --git a/erts/emulator/beam/atom.c b/erts/emulator/beam/atom.c
index dfc3cde6a7..e2a79d6e4f 100644
--- a/erts/emulator/beam/atom.c
+++ b/erts/emulator/beam/atom.c
@@ -1,19 +1,19 @@
/*
* %CopyrightBegin%
- *
- * Copyright Ericsson AB 1996-2009. All Rights Reserved.
- *
+ *
+ * Copyright Ericsson AB 1996-2010. All Rights Reserved.
+ *
* The contents of this file are subject to the Erlang Public License,
* Version 1.1, (the "License"); you may not use this file except in
* compliance with the License. You should have received a copy of the
* Erlang Public License along with this software. If not, it can be
* retrieved online at http://www.erlang.org/.
- *
+ *
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
- *
+ *
* %CopyrightEnd%
*/
@@ -322,7 +322,7 @@ init_atom_table(void)
text_list = NULL;
erts_index_init(ERTS_ALC_T_ATOM_TABLE, &erts_atom_table,
- "atom_tab", ATOM_SIZE, ATOM_LIMIT, f);
+ "atom_tab", ATOM_SIZE, erts_atom_table_size, f);
more_atom_space();
/* Ordinary atoms */
diff --git a/erts/emulator/beam/atom.h b/erts/emulator/beam/atom.h
index e7e0dc440d..cb245a87b1 100644
--- a/erts/emulator/beam/atom.h
+++ b/erts/emulator/beam/atom.h
@@ -1,19 +1,19 @@
/*
* %CopyrightBegin%
- *
- * Copyright Ericsson AB 1996-2009. All Rights Reserved.
- *
+ *
+ * Copyright Ericsson AB 1996-2010. All Rights Reserved.
+ *
* The contents of this file are subject to the Erlang Public License,
* Version 1.1, (the "License"); you may not use this file except in
* compliance with the License. You should have received a copy of the
* Erlang Public License along with this software. If not, it can be
* retrieved online at http://www.erlang.org/.
- *
+ *
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
- *
+ *
* %CopyrightEnd%
*/
@@ -28,6 +28,17 @@
#define MAX_ATOM_LENGTH 255
#define ATOM_LIMIT (1024*1024)
+#define MIN_ATOM_TABLE_SIZE 8192
+
+#ifndef ARCH_32
+/* Internal atom cache needs MAX_ATOM_TABLE_SIZE to be less than an
+ unsigned 32 bit integer. See external.c(erts_encode_ext_dist_header_setup)
+ for more details. */
+#define MAX_ATOM_TABLE_SIZE ((MAX_ATOM_INDEX + 1 < (1UL << 32)) ? MAX_ATOM_INDEX + 1 : (1UL << 32))
+#else
+#define MAX_ATOM_TABLE_SIZE (MAX_ATOM_INDEX + 1)
+#endif
+
/*
* Atom entry.
diff --git a/erts/emulator/beam/erl_init.c b/erts/emulator/beam/erl_init.c
index bdf888eaff..17cf3b9597 100644
--- a/erts/emulator/beam/erl_init.c
+++ b/erts/emulator/beam/erl_init.c
@@ -119,6 +119,8 @@ int erts_disable_tolerant_timeofday; /* Time correction can be disabled it is
* not and/or it is too slow.
*/
+int erts_atom_table_size = ATOM_LIMIT; /* Maximum number of atoms */
+
int erts_modified_timing_level;
int erts_no_crash_dump = 0; /* Use -d to suppress crash dump. */
@@ -569,6 +571,10 @@ void erts_usage(void)
erts_fprintf(stderr, " schedulers online (n2), valid range for both\n");
erts_fprintf(stderr, " numbers are [1-%d]\n",
ERTS_MAX_NO_OF_SCHEDULERS);
+ erts_fprintf(stderr, "-t size set the maximum number of atoms the "
+ "emulator can handle\n");
+ erts_fprintf(stderr, " valid range is [%d-%d]\n",
+ MIN_ATOM_TABLE_SIZE, MAX_ATOM_TABLE_SIZE);
erts_fprintf(stderr, "-T number set modified timing level,\n");
erts_fprintf(stderr, " valid range is [0-%d]\n",
ERTS_MODIFIED_TIMING_LEVELS-1);
@@ -1140,6 +1146,22 @@ erl_start(int argc, char **argv)
}
break;
}
+ case 't':
+ /* set atom table size */
+ arg = get_arg(argv[i]+2, argv[i+1], &i);
+ errno = 0;
+ erts_atom_table_size = strtol(arg, NULL, 10);
+ if (errno != 0 ||
+ erts_atom_table_size < MIN_ATOM_TABLE_SIZE ||
+ erts_atom_table_size > MAX_ATOM_TABLE_SIZE) {
+ erts_fprintf(stderr, "bad atom table size %s\n", arg);
+ erts_usage();
+ }
+ VERBOSE(DEBUG_SYSTEM,
+ ("setting maximum number of atoms to %d\n",
+ erts_atom_table_size));
+ break;
+
case 'T' :
arg = get_arg(argv[i]+2, argv[i+1], &i);
errno = 0;
diff --git a/erts/emulator/beam/erl_port_task.c b/erts/emulator/beam/erl_port_task.c
index 3cb5a966ac..0b6bb0d8e9 100644
--- a/erts/emulator/beam/erl_port_task.c
+++ b/erts/emulator/beam/erl_port_task.c
@@ -575,7 +575,7 @@ erts_port_task_schedule(Eterm id,
}
#endif
- ASSERT(!(runq->flags & ERTS_RUNQ_FLG_SUSPENDED));
+ ASSERT(!enq_port || !(runq->flags & ERTS_RUNQ_FLG_SUSPENDED));
ASSERT(pp->sched.taskq);
ASSERT(ptp);
@@ -601,6 +601,15 @@ erts_port_task_schedule(Eterm id,
break;
}
+#ifndef ERTS_SMP
+ /*
+ * When (!enq_port && !pp->sched.exe_taskq) is true in the smp case,
+ * the port might not be in the run queue. If this is the case, another
+ * thread is in the process of enqueueing the port. This very seldom
+ * occur, but do occur and is a valid scenario. Debug info showing this
+ * enqueue in progress must be introduced before we can enable (modified
+ * versions of these) assertions in the smp case again.
+ */
#if defined(HARD_DEBUG)
if (pp->sched.exe_taskq || enq_port)
ERTS_PT_CHK_NOT_IN_PORTQ(runq, pp);
@@ -612,6 +621,7 @@ erts_port_task_schedule(Eterm id,
ASSERT(pp->sched.prev || runq->ports.start == pp);
}
#endif
+#endif
if (!enq_port) {
ERTS_PT_CHK_PRES_PORTQ(runq, pp);
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index b519b39d63..2789691c55 100644
--- a/erts/emulator/beam/erl_process.c
+++ b/erts/emulator/beam/erl_process.c
@@ -2765,7 +2765,7 @@ erts_block_multi_scheduling(Process *p, ErtsProcLocks plocks, int on, int all)
p->flags |= F_HAVE_BLCKD_MSCHED;
ASSERT(erts_smp_atomic_read(&schdlr_sspnd.active) == 1);
ASSERT(p->scheduler_data->no == 1);
- res = 1;
+ res = ERTS_SCHDLR_SSPND_DONE_MSCHED_BLOCKED;
}
else {
p->flags |= F_HAVE_BLCKD_MSCHED;
@@ -2896,12 +2896,16 @@ erts_block_multi_scheduling(Process *p, ErtsProcLocks plocks, int on, int all)
#endif
p->flags &= ~F_HAVE_BLCKD_MSCHED;
erts_smp_atomic_set(&schdlr_sspnd.msb.ongoing, 0);
- if (schdlr_sspnd.online == 1)
- /* No schedulers to resume */;
+ if (schdlr_sspnd.online == 1) {
+ /* No schedulers to resume */
+ ASSERT(erts_smp_atomic_read(&schdlr_sspnd.active) == 1);
+ schdlr_sspnd.changing = 0;
+ }
else if (erts_common_run_queue) {
for (ix = 1; ix < schdlr_sspnd.online; ix++)
erts_smp_atomic_set(&ERTS_SCHEDULER_IX(ix)->suspended, 0);
wake_all_schedulers();
+ erts_smp_cnd_broadcast(&schdlr_sspnd.cnd);
}
else {
int online = schdlr_sspnd.online;
@@ -2933,8 +2937,8 @@ erts_block_multi_scheduling(Process *p, ErtsProcLocks plocks, int on, int all)
erts_smp_runq_unlock(ERTS_RUNQ_IX(0));
erts_smp_mtx_unlock(&balance_info.update_mtx);
erts_smp_mtx_lock(&schdlr_sspnd.mtx);
+ erts_smp_cnd_broadcast(&schdlr_sspnd.cnd);
}
- erts_smp_cnd_broadcast(&schdlr_sspnd.cnd);
res = ERTS_SCHDLR_SSPND_DONE;
}
}
@@ -8033,11 +8037,6 @@ erts_do_exit_process(Process* p, Eterm reason)
if (p->bif_timers)
erts_cancel_bif_timers(p, ERTS_PROC_LOCKS_ALL);
-#ifdef ERTS_SMP
- if (p->flags & F_HAVE_BLCKD_MSCHED)
- erts_block_multi_scheduling(p, ERTS_PROC_LOCKS_ALL, 0, 1);
-#endif
-
erts_smp_proc_unlock(p, ERTS_PROC_LOCKS_ALL_MINOR);
#ifdef ERTS_SMP
@@ -8082,6 +8081,27 @@ continue_exit_process(Process *p
erts_smp_proc_unlock(p, ERTS_PROC_LOCK_STATUS);
#endif
+#ifdef ERTS_SMP
+ if (p->flags & F_HAVE_BLCKD_MSCHED) {
+ ErtsSchedSuspendResult ssr;
+ ssr = erts_block_multi_scheduling(p, ERTS_PROC_LOCK_MAIN, 0, 1);
+ switch (ssr) {
+ case ERTS_SCHDLR_SSPND_YIELD_RESTART:
+ goto yield;
+ case ERTS_SCHDLR_SSPND_DONE_MSCHED_BLOCKED:
+ case ERTS_SCHDLR_SSPND_YIELD_DONE_MSCHED_BLOCKED:
+ case ERTS_SCHDLR_SSPND_DONE:
+ case ERTS_SCHDLR_SSPND_YIELD_DONE:
+ p->flags &= ~F_HAVE_BLCKD_MSCHED;
+ break;
+ case ERTS_SCHDLR_SSPND_EINVAL:
+ default:
+ erl_exit(ERTS_ABORT_EXIT, "%s:%d: Internal error: %d\n",
+ __FILE__, __LINE__, (int) ssr);
+ }
+ }
+#endif
+
if (p->flags & F_USING_DB) {
if (erts_db_process_exiting(p, ERTS_PROC_LOCK_MAIN))
goto yield;
diff --git a/erts/emulator/beam/erl_vm.h b/erts/emulator/beam/erl_vm.h
index 5b0d3c2bfa..50b3e5b61c 100644
--- a/erts/emulator/beam/erl_vm.h
+++ b/erts/emulator/beam/erl_vm.h
@@ -181,6 +181,8 @@ extern int num_instructions; /* Number of instruction in opc[]. */
extern int H_MIN_SIZE; /* minimum (heap + stack) */
extern int BIN_VH_MIN_SIZE; /* minimum virtual (bin) heap */
+extern int erts_atom_table_size;/* Atom table size */
+
#define ORIG_CREATION 0
/* macros for extracting bytes from uint16's */
diff --git a/erts/emulator/beam/external.c b/erts/emulator/beam/external.c
index 24887b3dea..b011d4c0de 100644
--- a/erts/emulator/beam/external.c
+++ b/erts/emulator/beam/external.c
@@ -271,11 +271,8 @@ erts_encode_ext_dist_header_size(ErtsAtomCacheMap *acmp)
byte *erts_encode_ext_dist_header_setup(byte *ctl_ext, ErtsAtomCacheMap *acmp)
{
-#ifndef ARCH_32
-#if ATOM_LIMIT >= (1UL << 32)
-#error "ATOM_LIMIT too large for interal atom cache update instructions. New instructions needed."
-#endif
-#endif
+ /* Maximum number of atom must be less than the maximum of a 32 bits
+ unsigned integer. Check is done in erl_init.c, erl_start function. */
if (!acmp)
return ctl_ext;
else {
diff --git a/erts/etc/common/Makefile.in b/erts/etc/common/Makefile.in
index a9acab640e..3db4fcba61 100644
--- a/erts/etc/common/Makefile.in
+++ b/erts/etc/common/Makefile.in
@@ -1,19 +1,19 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 1996-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 1996-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
#
@@ -359,12 +359,9 @@ $(OBJDIR)/escript.o: escript.c
ifeq ($(TARGET),win32)
-$(BINDIR)/$(ERLEXEC): $(OBJDIR)/erlexec.o $(OBJDIR)/win_erlexec.o $(OBJDIR)/init_file.o $(OBJDIR)/$(ERLRES_OBJ) dbg
+$(BINDIR)/$(ERLEXEC): $(OBJDIR)/erlexec.o $(OBJDIR)/win_erlexec.o $(OBJDIR)/init_file.o $(OBJDIR)/$(ERLRES_OBJ)
$(LD) -dll $(LDFLAGS) -o $@ $(OBJDIR)/erlexec.o $(OBJDIR)/win_erlexec.o $(OBJDIR)/init_file.o $(OBJDIR)/$(ERLRES_OBJ) $(ERLEXEC_XLIBS)
-dbg:
- echo DBG
-
$(BINDIR)/erl@EXEEXT@: $(OBJDIR)/erl.o $(OBJDIR)/init_file.o $(OBJDIR)/$(ERLRES_OBJ)
$(LD) $(LDFLAGS) -o $@ $(OBJDIR)/erl.o $(OBJDIR)/init_file.o $(OBJDIR)/$(ERLRES_OBJ)
diff --git a/erts/etc/common/erlexec.c b/erts/etc/common/erlexec.c
index 0ad26aeea7..f79f5cc978 100644
--- a/erts/etc/common/erlexec.c
+++ b/erts/etc/common/erlexec.c
@@ -794,6 +794,7 @@ int main(int argc, char **argv)
case 'i':
case 'P':
case 'S':
+ case 't':
case 'T':
case 'R':
case 'W':
diff --git a/erts/etc/unix/Install.src b/erts/etc/unix/Install.src
index 410a77d91c..22357b057f 100644
--- a/erts/etc/unix/Install.src
+++ b/erts/etc/unix/Install.src
@@ -1,25 +1,26 @@
#!/bin/sh
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 1996-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 1996-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
-# %CopyrightEnd%
-#
-# Patch $ERL_ROOT/emulator/obj/Makefile.dist & make
#
+# %CopyrightEnd%
#
+usage="
+Usage:
+ Install [-cross] [-minimal|-sasl] <ERL_ROOT>
+"
start_option=query
unset cross
while [ $# -ne 0 ]; do
@@ -42,7 +43,8 @@ fi
if [ -z "$ERL_ROOT" -o ! -d "$ERL_ROOT" ]
then
- echo "Install: need ERL_ROOT directory as argument"
+ echo "Install: need <ERL_ROOT> directory as argument" >&2
+ echo $usage >&2
exit 1
fi
@@ -50,15 +52,17 @@ case ":$ERL_ROOT" in
:/*)
;;
*)
- echo "Install: need an absolute path to ERL_ROOT"
+ echo "Install: need an absolute path to <ERL_ROOT>" >&2
+ echo $usage >&2
exit 1
;;
esac
if [ ! -d "$ERL_ROOT/erts-%I_VSN%/bin" ]
then
- echo "Install: The directory $ERL_ROOT/erts-%I_VSN%/bin does not exist"
- echo " Bad location or erts module not un-tared"
+ echo "Install: The directory $ERL_ROOT/erts-%I_VSN%/bin does not exist" >&2
+ echo " Bad location or erts module not un-tared" >&2
+ echo $usage >&2
exit 1
fi
@@ -67,20 +71,6 @@ then
mkdir $ERL_ROOT/bin
fi
-#
-# Fetch target system.
-#
-SYS=`(uname -s) 2>/dev/null` || SYS=unknown
-REL=`(uname -r) 2>/dev/null` || REL=unknown
-case $SYS:$REL in
- SunOS:5.*)
- TARGET=sunos5 ;;
- Linux:*)
- TARGET=linux ;;
- *)
- TARGET="" ;;
-esac
-
cd $ERL_ROOT/erts-%I_VSN%/bin
sed -e "s;%FINAL_ROOTDIR%;$TARGET_ERL_ROOT;" erl.src > erl
@@ -111,7 +101,7 @@ if [ -h epmd ]; then
/bin/rm -f epmd
fi
-ln -s $TARGET_ERL_ROOT/erts-%I_VSN%/bin/epmd epmd
+ln -s ../erts-%I_VSN%/bin/epmd epmd
cp -p $ERL_ROOT/erts-%I_VSN%/bin/run_erl .
cp -p $ERL_ROOT/erts-%I_VSN%/bin/to_erl .
@@ -150,19 +140,6 @@ cp -p $Name.boot start.boot
cp -p ../releases/%I_SYSTEM_VSN%/$Name.script start.script
#
-# We always run ranlib unless Solaris/SunOS 5
-# but ignore failures.
-#
-if [ "X$TARGET" != "Xsunos5" -a -d $ERL_ROOT/usr/lib ]; then
- cd $ERL_ROOT/usr/lib
- for library in lib*.a
- do
- (ranlib $library) > /dev/null 2>&1
- done
-fi
-
-
-#
# Fixing the man pages
#
diff --git a/erts/start_scripts/Makefile b/erts/start_scripts/Makefile
index 862f7285bc..4df7568484 100644
--- a/erts/start_scripts/Makefile
+++ b/erts/start_scripts/Makefile
@@ -1,19 +1,19 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 1997-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 1997-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
#
include $(ERL_TOP)/make/target.mk
@@ -74,13 +74,13 @@ $(SS_ROOT)/start_clean.script \
$(SS_ROOT)/start_clean.boot: $(SS_ROOT)/start_clean.rel
$(INSTALL_DIR) $(SS_TMP)
( cd $(SS_TMP) && \
- $(ERLC) $(SASL_FLAGS) $(SCRIPT_PATH) -o $@ $< )
+ $(ERLC) $(SASL_FLAGS) $(SCRIPT_PATH) -o $(SS_ROOT) $< )
$(SS_ROOT)/start_sasl.script \
$(SS_ROOT)/start_sasl.boot: $(SS_ROOT)/start_sasl.rel
$(INSTALL_DIR) $(SS_TMP)
( cd $(SS_TMP) && \
- $(ERLC) $(SASL_FLAGS) $(SCRIPT_PATH) -o $@ $< )
+ $(ERLC) $(SASL_FLAGS) $(SCRIPT_PATH) -o $(SS_ROOT) $< )
$(SS_ROOT)/start_clean.rel: $(SS_ROOT)/start_clean.rel.src \
../vsn.mk \
diff --git a/erts/test/Makefile b/erts/test/Makefile
index 47e41a3625..796403e182 100644
--- a/erts/test/Makefile
+++ b/erts/test/Makefile
@@ -1,19 +1,19 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 1997-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 1997-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
#
@@ -29,6 +29,7 @@ EBIN = .
MODULES= \
erlc_SUITE \
+ install_SUITE \
nt_SUITE \
otp_SUITE \
ethread_SUITE \
@@ -42,6 +43,8 @@ ERL_FILES= $(MODULES:%=%.erl)
TARGET_FILES = $(MODULES:%=$(EBIN)/%.$(EMULATOR))
+EXTRA_FILES = install_SUITE_data/install_bin
+
# ----------------------------------------------------
# Release directory specification
# ----------------------------------------------------
@@ -56,10 +59,14 @@ ERL_COMPILE_FLAGS += -I$(ERL_TOP)/lib/test_server/include
# Targets
# ----------------------------------------------------
-tests debug opt: $(TARGET_FILES)
+tests debug opt: $(TARGET_FILES) $(EXTRA_FILES)
+
+install_SUITE_data/install_bin: ../../make/install_bin
+ rm -f $@
+ cp -p $< $@
clean:
- rm -f $(TARGET_FILES)
+ rm -f $(TARGET_FILES) $(EXTRA_FILES)
rm -f core *~
docs:
diff --git a/erts/test/install_SUITE.erl b/erts/test/install_SUITE.erl
new file mode 100644
index 0000000000..b11f65480d
--- /dev/null
+++ b/erts/test/install_SUITE.erl
@@ -0,0 +1,727 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%
+
+
+%%%-------------------------------------------------------------------
+%%% File : install_SUITE.erl
+%%% Author : Rickard Green
+%%% Description :
+%%%
+%%% Created : 12 Jan 2010 by Rickard Green
+%%%-------------------------------------------------------------------
+-module(install_SUITE).
+
+%-define(line_trace, 1).
+
+-export([all/1, init_per_suite/1, end_per_suite/1,
+ init_per_testcase/2, fin_per_testcase/2]).
+
+-export([bin_default/1,
+ bin_default_dirty/1,
+ bin_outside_eprfx/1,
+ bin_outside_eprfx_dirty/1,
+ bin_unreasonable_path/1,
+ bin_not_abs/1,
+ 'bin white space'/1,
+ bin_no_srcfile/1,
+ bin_unreachable_absolute/1,
+ bin_unreachable_relative/1,
+ bin_same_dir/1,
+ bin_ok_symlink/1,
+ bin_dirname_fail/1,
+ bin_no_use_dirname_fail/1]).
+
+-define(DEFAULT_TIMEOUT, ?t:minutes(1)).
+-define(JOIN(A,B,C), filename:join(A, B, C)).
+
+-include("test_server.hrl").
+
+-record(inst, {mkdirs = true,
+ symlinks = true,
+ cmd_prefix = "",
+ ln_s = "ln -s",
+ test_prefix = "",
+ destdir = "",
+ extra_prefix = "",
+ exec_prefix = "",
+ bindir = "",
+ erlang_bindir = "",
+ bindir_symlinks = ""}).
+
+need_symlink_cases() ->
+ [bin_unreachable_absolute,
+ bin_unreachable_relative,
+ bin_same_dir,
+ bin_ok_symlink,
+ bin_dirname_fail,
+ bin_no_use_dirname_fail].
+
+dont_need_symlink_cases() ->
+ [bin_default,
+ bin_default_dirty,
+ bin_outside_eprfx,
+ bin_outside_eprfx_dirty,
+ bin_not_abs,
+ bin_unreasonable_path,
+ 'bin white space',
+ bin_no_srcfile].
+
+all(suite) ->
+ dont_need_symlink_cases() ++ need_symlink_cases().
+
+%%
+%% The test cases
+%%
+
+bin_default(Config) when is_list(Config) ->
+ ?line E = "/usr/local",
+ ?line Bs = "/usr/local/bin",
+ ?line Be = Bs,
+ ?line EBs = "/usr/local/lib/erlang/bin",
+ ?line EBe = EBs,
+ ?line RP = "../lib/erlang/bin",
+ ChkRes = fun (Res, #inst{test_prefix = TP,
+ destdir = D,
+ extra_prefix = EP,
+ bindir_symlinks = BSL,
+ symlinks = SL}) ->
+ ?line B = join([TP, D, EP, Be]),
+ Expct = case {SL, BSL} of
+ {false, _} when BSL == "relative";
+ BSL == "absolute" ->
+ ?line {error, no_ln_s};
+ {false, _} ->
+ ?line {ok,{absolute,
+ B,join([TP,D,EP,EBe])}};
+ {true, "absolute"} ->
+ ?line {ok,{absolute,B,join([TP,EP,EBe])}};
+ {true, _} ->
+ ?line {ok,{relative,B,RP}}
+ end,
+ expect(Expct, Res)
+ end,
+ install_bin(Config, #inst{exec_prefix = E,
+ bindir = Bs,
+ erlang_bindir = EBs}, ChkRes).
+
+bin_default_dirty(Config) when is_list(Config) ->
+ ?line E = "/usr/./local/lib/..",
+ ?line Bs = "/usr/local//lib/../lib/erlang/../../bin",
+ ?line Be = "/usr/local/lib/../lib/erlang/../../bin",
+ ?line EBs = "/usr/local/lib/../lib/erlang/../erlang/bin/x/y/../..//",
+ ?line EBe = "/usr/local/lib/../lib/erlang/../erlang/bin/x/y/../..",
+ ?line RP = "../lib/erlang/bin",
+ ChkRes = fun (Res, #inst{test_prefix = TP,
+ destdir = D,
+ extra_prefix = EP,
+ bindir_symlinks = BSL,
+ symlinks = SL}) ->
+ ?line B = join([TP, D, EP, Be]),
+ Expct = case {SL, BSL} of
+ {false, _} when BSL == "relative";
+ BSL == "absolute" ->
+ ?line {error, no_ln_s};
+ {false, _} ->
+ ?line {ok,{absolute,
+ B,join([TP,D,EP,EBe])}};
+ {true, "absolute"} ->
+ ?line {ok,{absolute,
+ B,join([TP,EP,EBe])}};
+ {true, _} ->
+ ?line {ok,{relative,B,RP}}
+ end,
+ expect(Expct, Res)
+ end,
+ install_bin(Config, #inst{exec_prefix = E,
+ bindir = Bs,
+ erlang_bindir = EBs}, ChkRes).
+
+
+bin_outside_eprfx(Config) when is_list(Config) ->
+ ?line E = "/usr/local",
+ ?line Bs = "/usr/bin",
+ ?line Be = Bs,
+ ?line EBs = "/usr/local/lib/erlang/bin",
+ ?line EBe = EBs,
+ ?line RP = "../local/lib/erlang/bin",
+ ChkRes = fun (Res, #inst{test_prefix = TP,
+ destdir = D,
+ extra_prefix = EP,
+ bindir_symlinks = BSL,
+ symlinks = SL}) ->
+ ?line B = join([TP, D, EP, Be]),
+ Expct = case {SL, BSL} of
+ {false, _} when BSL == "relative";
+ BSL == "absolute" ->
+ ?line {error, no_ln_s};
+ {false, _} ->
+ ?line {ok,{absolute,
+ B,join([TP,D,EP,EBe])}};
+ {true, "relative"} ->
+ ?line {ok,{relative,B,RP}};
+ {true, _} ->
+ ?line {ok,{absolute,B,join([TP,EP,EBe])}}
+ end,
+ expect(Expct, Res)
+ end,
+ install_bin(Config, #inst{exec_prefix = E,
+ bindir = Bs,
+ erlang_bindir = EBs}, ChkRes).
+
+
+bin_outside_eprfx_dirty(Config) when is_list(Config) ->
+ ?line E = "/usr/local/lib/..",
+ ?line Bs = "/usr/local/lib/../../bin",
+ ?line Be = Bs,
+ ?line EBs = "/usr/local/lib/erlang/bin",
+ ?line EBe = EBs,
+ ?line RP = "../local/lib/erlang/bin",
+ ChkRes = fun (Res, #inst{test_prefix = TP,
+ destdir = D,
+ extra_prefix = EP,
+ bindir_symlinks = BSL,
+ symlinks = SL}) ->
+ ?line B = join([TP, D, EP, Be]),
+ Expct = case {SL, BSL} of
+ {false, _} when BSL == "relative";
+ BSL == "absolute" ->
+ ?line {error, no_ln_s};
+ {false, _} ->
+ ?line {ok,{absolute,
+ B,join([TP,D,EP,EBe])}};
+ {true, "relative"} ->
+ ?line {ok,{relative,B,RP}};
+ {true, _} ->
+ ?line {ok,{absolute,B,join([TP,EP,EBe])}}
+ end,
+ expect(Expct, Res)
+ end,
+ install_bin(Config, #inst{exec_prefix = E,
+ bindir = Bs,
+ erlang_bindir = EBs}, ChkRes).
+
+bin_unreasonable_path(Config) when is_list(Config) ->
+ ?line E = "/usr/local/../../..",
+ ?line Bs = "/usr/local/../../../bin",
+ ?line Be = Bs,
+ ?line EBs = "/usr/local/../../../bin_unreasonable_path/usr/local/lib/erlang/bin",
+ ?line EBe = EBs,
+ ?line RP = "../bin_unreasonable_path/usr/local/lib/erlang/bin",
+ ChkRes = fun (Res, #inst{test_prefix = TP,
+ destdir = D,
+ extra_prefix = EP,
+ bindir_symlinks = BSL,
+ symlinks = SL}) ->
+ ?line B = join([TP, D, EP, Be]),
+ Expct = case {TP, SL, BSL} of
+ {_, false, _} when BSL == "relative";
+ BSL == "absolute" ->
+ ?line {error, no_ln_s};
+ {_, false, _} ->
+ ?line {ok,{absolute,
+ B,join([TP,D,EP,EBe])}};
+ {"", true, "relative"} ->
+ {error, unreasonable_path};
+ {"", true, _} ->
+ ?line {ok,{absolute,B,join([TP,EP,EBe])}};
+ {_, true, "absolute"} ->
+ ?line {ok,{absolute,B,join([TP,EP,EBe])}};
+ _ ->
+ ?line {ok,{relative,B,RP}}
+ end,
+ expect(Expct, Res)
+ end,
+ install_bin(Config, #inst{exec_prefix = E,
+ bindir = Bs,
+ erlang_bindir = EBs}, ChkRes).
+
+bin_unreachable_absolute(Config) when is_list(Config) ->
+ TDir = ?config(test_dir, Config),
+ make_dirs(TDir, "/opt/local/lib/erlang/usr/bin"),
+ make_dirs(TDir, "/opt/local/lib/erlang/bin"),
+ Erl = join([TDir, "/opt/local/lib/erlang/bin/erl"]),
+ Erlc = join([TDir, "/opt/local/lib/erlang/bin/erlc"]),
+ make_dirs(TDir, "/usr/local/lib"),
+ make_dirs(TDir, "/usr/local/bin"),
+ ok = file:write_file(Erl, "erl"),
+ ok = file:write_file(Erlc, "erlc"),
+ ok = file:make_symlink("../../../opt/local/lib/erlang/usr",
+ join([TDir, "/usr/local/lib/erlang"])),
+ ?line E = "/usr/local",
+ ?line Bs = "/usr/local/bin",
+ ?line Be = Bs,
+ ?line EBs = "/usr/local/lib/erlang/../bin",
+ ?line EBe = EBs,
+ ChkRes = fun (Res, #inst{test_prefix = TP,
+ destdir = D,
+ extra_prefix = EP,
+ bindir_symlinks = BSL,
+ symlinks = SL}) ->
+ ?line B = join([TP, D, EP, Be]),
+ Expct = case {SL, BSL} of
+ {false, _} when BSL == "relative";
+ BSL == "absolute" ->
+ ?line {error, no_ln_s};
+ {false, _} ->
+ ?line {ok,{absolute,
+ B,join([TP,D,EP,EBe])}};
+ {true, "relative"} ->
+ {error, unreachable_absolute};
+ {true, _} ->
+ ?line {ok,{absolute,B,join([TP,EP,EBe])}}
+ end,
+ expect(Expct, Res)
+ end,
+ install_bin(Config, #inst{exec_prefix = E,
+ bindir = Bs,
+ erlang_bindir = EBs}, ChkRes).
+
+bin_unreachable_relative(Config) when is_list(Config) ->
+ TDir = ?config(test_dir, Config),
+ make_dirs(TDir, "/opt/local/lib/erlang/bin"),
+ make_dirs(TDir, "/opt/local/bin"),
+ make_dirs(TDir, "/usr/local/lib/erlang/bin"),
+ Erl = join([TDir, "/usr/local/lib/erlang/bin/erl"]),
+ Erlc = join([TDir, "/usr/local/lib/erlang/bin/erlc"]),
+ ok = file:write_file(Erl, "erl"),
+ ok = file:write_file(Erlc, "erlc"),
+ ok = file:make_symlink("../../opt/local/bin",
+ join([TDir, "/usr/local/bin"])),
+
+ ?line E = "/usr/local",
+ ?line Bs = "/usr/local/bin",
+ ?line Be = Bs,
+ ?line EBs = "/usr/local/lib/erlang/bin",
+ ?line EBe = EBs,
+ ChkRes = fun (Res, #inst{test_prefix = TP,
+ destdir = D,
+ extra_prefix = EP,
+ bindir_symlinks = BSL,
+ symlinks = SL}) ->
+ ?line B = join([TP, D, EP, Be]),
+ Expct = case {SL, BSL} of
+ {false, _} when BSL == "relative";
+ BSL == "absolute" ->
+ ?line {error, no_ln_s};
+ {false, _} ->
+ ?line {ok,{absolute,
+ B,join([TP,D,EP,EBe])}};
+ {true, "relative"} ->
+ {error, unreachable_relative};
+ {true, _} ->
+ ?line {ok,{absolute,B,join([TP,EP,EBe])}}
+ end,
+ expect(Expct, Res)
+ end,
+ install_bin(Config, #inst{exec_prefix = E,
+ bindir = Bs,
+ erlang_bindir = EBs}, ChkRes).
+
+bin_ok_symlink(Config) when is_list(Config) ->
+ TDir = ?config(test_dir, Config),
+ make_dirs(TDir, "/usr/local/bin"),
+ make_dirs(TDir, "/opt/local/lib/erlang/bin"),
+ Erl = join([TDir, "/opt/local/lib/erlang/bin/erl"]),
+ Erlc = join([TDir, "/opt/local/lib/erlang/bin/erlc"]),
+ ok = file:write_file(Erl, "erl"),
+ ok = file:write_file(Erlc, "erlc"),
+ ok = file:make_symlink("../../opt/local/lib",
+ join([TDir, "/usr/local/lib"])),
+ ?line E = "/usr/local",
+ ?line Bs = "/usr/local/bin",
+ ?line Be = Bs,
+ ?line EBs = "/usr/local/lib/erlang/bin",
+ ?line EBe = EBs,
+ ?line RP = "../lib/erlang/bin",
+ ChkRes = fun (Res, #inst{test_prefix = TP,
+ destdir = D,
+ extra_prefix = EP,
+ bindir_symlinks = BSL,
+ symlinks = SL}) ->
+ ?line B = join([TP, D, EP, Be]),
+ Expct = case {SL, BSL} of
+ {false, _} when BSL == "relative";
+ BSL == "absolute" ->
+ ?line {error, no_ln_s};
+ {false, _} ->
+ ?line {ok,{absolute,
+ B,join([TP,D,EP,EBe])}};
+ {true, "absolute"} ->
+ ?line {ok,{absolute,B,join([TP,EP,EBe])}};
+ {true, _} ->
+ ?line {ok,{relative,B,RP}}
+ end,
+ expect(Expct, Res)
+ end,
+ install_bin(Config, #inst{exec_prefix = E,
+ bindir = Bs,
+ erlang_bindir = EBs}, ChkRes).
+
+bin_same_dir(Config) when is_list(Config) ->
+ TDir = ?config(test_dir, Config),
+ make_dirs(TDir, "/usr/local/bin"),
+ make_dirs(TDir, "/usr/local/lib"),
+ ok = file:make_symlink("..", join([TDir, "/usr/local/lib/erlang"])),
+ Erl = join([TDir, "/usr/local/lib/erlang/bin/erl"]),
+ Erlc = join([TDir, "/usr/local/lib/erlang/bin/erlc"]),
+ ok = file:write_file(Erl, "erl"),
+ ok = file:write_file(Erlc, "erlc"),
+ ChkRes = fun (Res, _) ->
+ expect({error, target_and_source_same_dir}, Res)
+ end,
+ install_bin(Config,
+ #inst{mkdirs = false,
+ exec_prefix = "/usr/local",
+ bindir = "/usr/local/bin",
+ erlang_bindir = "/usr/local/lib/erlang/bin"},
+ ChkRes).
+
+bin_not_abs(Config) when is_list(Config) ->
+ ChkRes = fun (Res, #inst{test_prefix = TP}) ->
+ case TP of
+ "" ->
+ expect({error, {not_abs, 'bindir'}}, Res);
+ _ ->
+ B = join([TP, "/usr/local/bin"]),
+ {ok, {relative, B, "../lib/erlang/bin"}}
+ end
+ end,
+ install_bin(Config,
+ #inst{exec_prefix = "/usr/local",
+ bindir = "usr/local/bin",
+ erlang_bindir = "/usr/local/lib/erlang/bin"},
+ ChkRes).
+
+
+'bin white space'(Config) when is_list(Config) ->
+ ?line E = "/u s r/local",
+ ?line Bs = "/u s r/local/b i n",
+ ?line Be = Bs,
+ ?line EBs = "/u s r/local/lib/erl ang/bin",
+ ?line EBe = EBs,
+ ?line RP = "../lib/erl ang/bin",
+ ChkRes = fun (Res, #inst{test_prefix = TP,
+ destdir = D,
+ extra_prefix = EP,
+ bindir_symlinks = BSL,
+ symlinks = SL}) ->
+ ?line B = join([TP, D, EP, Be]),
+ Expct = case {SL, BSL} of
+ {false, _} when BSL == "relative";
+ BSL == "absolute" ->
+ ?line {error, no_ln_s};
+ {false, _} ->
+ ?line {ok,{absolute,
+ B,join([TP,D,EP,EBe])}};
+ {true, "absolute"} ->
+ ?line {ok,{absolute,B,join([TP,EP,EBe])}};
+ {true, _} ->
+ ?line {ok,{relative,B,RP}}
+ end,
+ expect(Expct, Res)
+ end,
+ install_bin(Config, #inst{exec_prefix = E,
+ bindir = Bs,
+ erlang_bindir = EBs}, ChkRes).
+
+bin_dirname_fail(Config) when is_list(Config) ->
+ ?line E = "/opt",
+ ?line Bs = "/opt/lib/../bin",
+ ?line Be = Bs,
+ ?line EBs = "/opt/lib/erlang/otp/bin",
+ ?line EBe = EBs,
+ ?line CMDPRFX = "PATH="++?config(data_dir,Config)++":"++os:getenv("PATH"),
+ ChkRes = fun (Res, #inst{test_prefix = TP,
+ destdir = D,
+ extra_prefix = EP,
+ bindir_symlinks = BSL,
+ symlinks = SL}) ->
+ ?line B = join([TP, D, EP, Be]),
+ Expct = case {SL, BSL} of
+ {false, _} when BSL == "relative";
+ BSL == "absolute" ->
+ ?line {error, no_ln_s};
+ {false, _} ->
+ ?line {ok,{absolute,
+ B,join([TP,D,EP,EBe])}};
+ {true, "relative"} ->
+ ?line {error, dirname_failed};
+ {true, _} ->
+ ?line {ok,{absolute,B,join([TP,EP,EBe])}}
+ end,
+ expect(Expct, Res)
+ end,
+ install_bin(Config, #inst{cmd_prefix = CMDPRFX,
+ exec_prefix = E,
+ bindir = Bs,
+ erlang_bindir = EBs}, ChkRes).
+
+bin_no_use_dirname_fail(Config) when is_list(Config) ->
+ ?line E = "/opt",
+ ?line Bs = "/opt/bin",
+ ?line Be = Bs,
+ ?line EBs = "/opt/lib/erlang/otp/bin",
+ ?line EBe = EBs,
+ ?line RP = "../lib/erlang/otp/bin",
+ ?line CMDPRFX = "PATH="++?config(data_dir,Config)++":"++os:getenv("PATH"),
+ ChkRes = fun (Res, #inst{test_prefix = TP,
+ destdir = D,
+ extra_prefix = EP,
+ bindir_symlinks = BSL,
+ symlinks = SL}) ->
+ ?line B = join([TP, D, EP, Be]),
+ Expct = case {SL, BSL} of
+ {false, _} when BSL == "relative";
+ BSL == "absolute" ->
+ ?line {error, no_ln_s};
+ {false, _} ->
+ ?line {ok,{absolute,
+ B,join([TP,D,EP,EBe])}};
+ {true, "absolute"} ->
+ ?line {ok,{absolute,B,join([TP,EP,EBe])}};
+ {true, _} ->
+ ?line {ok,{relative,B,RP}}
+ end,
+ expect(Expct, Res)
+ end,
+ install_bin(Config, #inst{cmd_prefix = CMDPRFX,
+ exec_prefix = E,
+ bindir = Bs,
+ erlang_bindir = EBs}, ChkRes).
+
+bin_no_srcfile(Config) when is_list(Config) ->
+ TDir = ?config(test_dir, Config),
+ make_dirs(TDir, "/opt/local/bin"),
+ make_dirs(TDir, "/opt/local/lib/erlang/bin"),
+ Erl = join([TDir, "/opt/local/lib/erlang/bin/erl"]),
+ ok = file:write_file(Erl, "erl"),
+ Erlc = join([TDir, "/opt/local/lib/erlang/bin/erlc"]),
+ RP_Erlc = "../lib/erlang/bin/erlc",
+ ChkRes = fun (Res, #inst{bindir_symlinks = BSL,
+ symlinks = SL}) ->
+ Expct = case {SL, BSL} of
+ {false, _} when BSL == "relative";
+ BSL == "absolute" ->
+ ?line {error, no_ln_s};
+ {false,_} ->
+ ?line {error,{no_srcfile, Erlc}};
+ {true, "absolute"} ->
+ ?line {error,{no_srcfile, Erlc}};
+ {true, _} ->
+ ?line {error,{no_srcfile, RP_Erlc}}
+ end,
+ expect(Expct, Res)
+ end,
+ install_bin(Config,
+ #inst{mkdirs = false,
+ exec_prefix = "/opt/local",
+ bindir = "/opt/local/bin",
+ erlang_bindir = "/opt/local/lib/erlang/bin"},
+ ChkRes).
+
+%%
+%%
+%% Auxiliary functions
+%%
+%%
+
+expect(X, X) ->
+ ?t:format("result: ~p~n", [X]),
+ ?t:format("-----------------------------------------------~n", []),
+ ok;
+expect(X, Y) ->
+ ?t:format("expected: ~p~n", [X]),
+ ?t:format("got : ~p~n", [Y]),
+ ?t:format("-----------------------------------------------~n", []),
+ ?t:fail({X,Y}).
+
+init_per_suite(Config) ->
+ PD = ?config(priv_dir, Config),
+ SymLinks = case ?t:os_type() of
+ {win32, _} -> false;
+ _ ->
+ case file:make_symlink("nothing",
+ filename:join(PD,
+ "symlink_test")) of
+ ok -> true;
+ _ -> false
+ end
+ end,
+ [{symlinks, SymLinks} | Config].
+
+end_per_suite(_Config) ->
+ ok.
+
+init_per_testcase(Case, Config) ->
+ init_per_testcase_aux(?config(symlinks,Config),?t:os_type(),Case,Config).
+
+init_per_testcase_aux(_, {win32, _}, _Case, _Config) ->
+ {skip, "Not on windows"};
+init_per_testcase_aux(false, OsType, Case, Config) ->
+ case lists:member(Case, need_symlink_cases()) of
+ false -> init_per_testcase_aux(true, OsType, Case, Config);
+ true -> {skip, "Cannot create symbolic links"}
+ end;
+init_per_testcase_aux(true, _OsType, Case, Config) ->
+ Dog = ?t:timetrap(?DEFAULT_TIMEOUT),
+ [{watchdog, Dog},
+ {testcase, Case},
+ {test_dir, make_dirs(?config(priv_dir, Config), atom_to_list(Case))}
+ | Config].
+
+fin_per_testcase(_Case, Config) ->
+ Dog = ?config(watchdog, Config),
+ ?t:timetrap_cancel(Dog),
+ ok.
+
+
+make_dirs(Root, Suffix) ->
+ do_make_dirs(Root, string:tokens(Suffix, [$/])).
+
+do_make_dirs(_Root, []) ->
+ "";
+do_make_dirs(Root, [D|Ds]) ->
+ Dir = filename:join(Root, D),
+ case file:make_dir(Dir) of
+ {error, eexist} -> ok;
+ ok -> ok;
+ Err -> exit({make_dir, Err})
+ end,
+ filename:join(Dir, do_make_dirs(Dir, Ds)).
+
+install_bin(Config, #inst{mkdirs = MkDirs,
+ exec_prefix = EXEC_PREFIX,
+ bindir = BINDIR,
+ erlang_bindir = ERLANG_BINDIR} = Inst, ChkRes) ->
+ PDir = ?config(priv_dir, Config),
+ TDir = ?config(test_dir, Config),
+ TD = atom_to_list(?config(testcase, Config)),
+ case MkDirs of
+ false -> ok;
+ true ->
+ make_dirs(TDir, EXEC_PREFIX),
+ make_dirs(TDir, BINDIR),
+ make_dirs(TDir, ERLANG_BINDIR),
+ Erl = join([TDir, ERLANG_BINDIR, "/erl"]),
+ Erlc = join([TDir, ERLANG_BINDIR, "/erlc"]),
+ ok = file:write_file(Erl, "erl"),
+ ok = file:write_file(Erlc, "erlc")
+ end,
+
+ install_bin2(Config, Inst#inst{destdir = TDir}, ChkRes),
+ install_bin2(Config, Inst#inst{extra_prefix = TDir}, ChkRes),
+ install_bin2(Config, Inst#inst{destdir = PDir,
+ extra_prefix = "/"++TD}, ChkRes),
+ install_bin2(Config,
+ Inst#inst{test_prefix = TDir,
+ exec_prefix = join([TDir, EXEC_PREFIX]),
+ bindir = join([TDir, BINDIR]),
+ erlang_bindir = join([TDir, ERLANG_BINDIR])},
+ ChkRes),
+ case ?config(symlinks, Config) of
+ true -> ok;
+ false -> {comment, "No symlink tests run, since symlinks not working"}
+ end.
+
+
+install_bin2(Config, Inst, ChkRes) ->
+ install_bin3(Config, Inst#inst{symlinks = false,
+ ln_s = "ln"}, ChkRes),
+ install_bin3(Config, Inst#inst{symlinks = false,
+ ln_s = "ln",
+ bindir_symlinks = "relative"}, ChkRes),
+ install_bin3(Config, Inst#inst{symlinks = false,
+ ln_s = "ln",
+ bindir_symlinks = "absolute"}, ChkRes),
+ install_bin3(Config, Inst#inst{symlinks = false,
+ ln_s = "cp -p"}, ChkRes),
+ install_bin3(Config, Inst#inst{symlinks = false,
+ ln_s = "cp -p",
+ bindir_symlinks = "relative"}, ChkRes),
+ install_bin3(Config, Inst#inst{symlinks = false,
+ ln_s = "cp -p",
+ bindir_symlinks = "absolute"}, ChkRes),
+ case ?config(symlinks, Config) of
+ true ->
+ install_bin3(Config, Inst#inst{symlinks = true,
+ ln_s = "ln -s"}, ChkRes),
+ install_bin3(Config, Inst#inst{symlinks = true,
+ ln_s = "ln -s",
+ bindir_symlinks = "relative"}, ChkRes),
+ install_bin3(Config, Inst#inst{symlinks = true,
+ ln_s = "ln -s",
+ bindir_symlinks = "absolute"}, ChkRes);
+ false ->
+ ok
+ end.
+
+
+
+install_bin3(Config,
+ #inst{cmd_prefix = CMD_PRFX,
+ ln_s = LN_S,
+ destdir = DESTDIR,
+ extra_prefix = EXTRA_PREFIX,
+ exec_prefix = EXEC_PREFIX,
+ bindir = BINDIR,
+ erlang_bindir = ERLANG_BINDIR,
+ bindir_symlinks = BINDIR_SYMLINKS} = Inst,
+ ChkRes) ->
+ Test = ?config(testcase, Config),
+ DDir = ?config(data_dir, Config),
+ TDir = ?config(test_dir, Config),
+ InstallBin = filename:join(DDir, "install_bin"),
+ ResFile = filename:join(TDir, atom_to_list(Test) ++ "-result.txt"),
+ Cmd = CMD_PRFX ++ " "
+ ++ InstallBin ++ " --ln_s \"" ++ LN_S
+ ++ "\" --destdir \"" ++ DESTDIR
+ ++ "\" --extra-prefix \"" ++ EXTRA_PREFIX
+ ++ "\" --bindir-symlinks \"" ++ BINDIR_SYMLINKS
+ ++ "\" --bindir \"" ++ BINDIR
+ ++ "\" --erlang-bindir \"" ++ ERLANG_BINDIR
+ ++ "\" --exec-prefix \"" ++ EXEC_PREFIX
+ ++ "\" --test-file \"" ++ ResFile ++ "\" erl erlc",
+
+ ?t:format("CMD_PRFX = \"~s\"~n"
+ "LN_S = \"~s\"~n"
+ "BINDIR_SYMLINKS = \"~s\"~n"
+ "exec_prefix = \"~s\"~n"
+ "bindir = \"~s\"~n"
+ "erlang_bindir = \"~s\"~n"
+ "EXTRA_PREFIX = \"~s\"~n"
+ "DESTDIR = \"~s\"~n",
+ [CMD_PRFX, LN_S, BINDIR_SYMLINKS, EXEC_PREFIX, BINDIR,
+ ERLANG_BINDIR, EXTRA_PREFIX, DESTDIR]),
+
+ ?t:format("$ ~s~n", [Cmd]),
+ CmdOutput = os:cmd(Cmd),
+ ?t:format("~s~n", [CmdOutput]),
+ ChkRes(case file:consult(ResFile) of
+ {ok, [Res]} -> Res;
+ Err -> exit({result, Err})
+ end,
+ Inst).
+
+join("") ->
+ "";
+join([""|Ds]) ->
+ join(Ds);
+join([D|Ds]) ->
+ "/" ++ string:strip(D, both, $/) ++ join(Ds).
+
diff --git a/erts/test/install_SUITE_data/dirname b/erts/test/install_SUITE_data/dirname
new file mode 100755
index 0000000000..ecdbef95dd
--- /dev/null
+++ b/erts/test/install_SUITE_data/dirname
@@ -0,0 +1,2 @@
+#!/bin/sh
+exit 1
diff --git a/lib/Makefile b/lib/Makefile
index 66062068b2..f5ffc6f166 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -1,19 +1,19 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 1996-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 1996-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
include $(ERL_TOP)/make/target.mk
@@ -51,7 +51,7 @@ else
# --------------
#
ERTS_SUB_DIRECTORIES = stdlib sasl kernel compiler
- OTHER_SUB_DIRECTORIES = tools
+ OTHER_SUB_DIRECTORIES = tools test_server
ifdef BUILD_ALL
ifeq ($(findstring win32,$(TARGET)),win32) # BUILD_ALL on win32
OTHER_SUB_DIRECTORIES += \
@@ -60,7 +60,7 @@ else
public_key ssl toolbar tv observer debugger reltool odbc runtime_tools \
cosTransactions cosEvent cosTime cosNotification cosProperty \
cosFileTransfer cosEventDomain et megaco webtool \
- xmerl edoc eunit ssh inviso typer docbuilder erl_docgen test_server common_test percept
+ xmerl edoc eunit ssh inviso typer docbuilder erl_docgen common_test percept
# dialyzer
OTHER_SUB_DIRECTORIES += hipe
else # BUILD_ALL on unix
@@ -70,7 +70,7 @@ else
pman public_key ssl toolbar tv observer odbc \
runtime_tools cosTransactions cosEvent cosTime cosNotification \
cosProperty cosFileTransfer cosEventDomain et megaco webtool \
- xmerl edoc eunit ssh inviso typer docbuilder erl_docgen test_server common_test percept
+ xmerl edoc eunit ssh inviso typer docbuilder erl_docgen common_test percept
# dialyzer
OTHER_SUB_DIRECTORIES += hipe $(TSP_APP)
endif
diff --git a/lib/asn1/c_src/Makefile b/lib/asn1/c_src/Makefile
index 53da8fd035..906c513fad 100644
--- a/lib/asn1/c_src/Makefile
+++ b/lib/asn1/c_src/Makefile
@@ -1,20 +1,132 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 2002-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 2002-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
#
#
-include $(ERL_TOP)/make/run_make.mk
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp.mk
+include $(ERL_TOP)/make/$(TARGET)/otp_ded.mk
+
+CC = $(DED_CC)
+LD = $(DED_LD)
+LIBS = $(DED_LIBS)
+
+# ----------------------------------------------------
+# Application version
+# ----------------------------------------------------
+include ../vsn.mk
+VSN=$(ASN1_VSN)
+
+# ----------------------------------------------------
+# Release directory specification
+# ----------------------------------------------------
+RELSYSDIR = $(RELEASE_PATH)/lib/asn1-$(VSN)
+
+
+# ----------------------------------------------------
+# FLAGS misc
+# ----------------------------------------------------
+ifeq ($(TYPE),debug)
+TYPEMARKER = .debug
+else
+TYPEMARKER =
+endif
+
+EI_LIBDIR = $(ERL_TOP)/lib/erl_interface/obj$(TYPEMARKER)/$(TARGET)
+
+# ----------------------------------------------------
+# FLAGS
+# ----------------------------------------------------
+EI_INCLUDES = -I$(ERL_TOP)/lib/erl_interface/include
+CFLAGS = $(DED_INCLUDES) $(EI_INCLUDES) $(DED_CFLAGS)
+LDFLAGS += $(DED_LDFLAGS)
+
+LD_INCL_EI = -L$(EI_LIBDIR)
+
+# ----------------------------------------------------
+# Target Specs
+# ----------------------------------------------------
+
+C_FILES = asn1_erl_driver.c
+
+
+ifeq ($(TARGET),win32)
+LD_EI = -lei_md
+SHARED_OBJ_FILES = $(LIBDIR)/asn1_erl_drv.dll
+OBJ_FILES = $(OBJDIR)/asn1_erl_drv.o
+CLIB_FLAGS =
+LN=cp
+else
+LD_EI = -lei
+OBJ_FILES = $(OBJDIR)/asn1_erl_drv.o
+ifeq ($(findstring vxworks,$(TARGET)),vxworks)
+SHARED_OBJ_FILES = $(LIBDIR)/asn1_erl_drv.eld
+CLIB_FLAGS =
+else
+SHARED_OBJ_FILES = $(LIBDIR)/asn1_erl_drv.so
+CLIB_FLAGS = -lc
+endif
+LN= ln -s
+endif
+
+# ----------------------------------------------------
+# Targets
+# ----------------------------------------------------
+
+opt: $(OBJDIR) $(LIBDIR) $(SHARED_OBJ_FILES)
+
+debug: opt
+
+clean:
+ rm -f core *~
+ rm -f $(LIBDIR)/*
+ rm -f $(OBJDIR)/*
+
+docs:
+
+# ----------------------------------------------------
+# Special Build Targets
+# ----------------------------------------------------
+
+
+$(OBJ_FILES): $(C_FILES)
+ $(CC) -c $(CFLAGS) -o $(OBJ_FILES) $(C_FILES)
+
+$(SHARED_OBJ_FILES): $(OBJ_FILES)
+ $(LD) $(LDFLAGS) $(LD_INCL_EI) -o $(SHARED_OBJ_FILES) $(OBJ_FILES) $(LD_EI) $(CLIB_FLAGS) $(LIBS)
+
+$(LIBDIR):
+ -mkdir -p $(LIBDIR)
+
+$(OBJDIR):
+ -mkdir -p $(OBJDIR)
+
+
+
+# ----------------------------------------------------
+# Release Target
+# ----------------------------------------------------
+include $(ERL_TOP)/make/otp_release_targets.mk
+
+release_spec: opt
+ $(INSTALL_DIR) $(RELSYSDIR)/priv/lib
+ $(INSTALL_DATA) $(SHARED_OBJ_FILES) $(RELSYSDIR)/priv/lib
+ $(INSTALL_DIR) $(RELSYSDIR)/c_src
+ $(INSTALL_DATA) $(C_FILES) $(RELSYSDIR)/c_src
+
+release_docs_spec:
+
diff --git a/lib/asn1/c_src/Makefile.in b/lib/asn1/c_src/Makefile.in
deleted file mode 100644
index b4a0cddba1..0000000000
--- a/lib/asn1/c_src/Makefile.in
+++ /dev/null
@@ -1,139 +0,0 @@
-#
-# %CopyrightBegin%
-#
-# Copyright Ericsson AB 2002-2009. All Rights Reserved.
-#
-# The contents of this file are subject to the Erlang Public License,
-# Version 1.1, (the "License"); you may not use this file except in
-# compliance with the License. You should have received a copy of the
-# Erlang Public License along with this software. If not, it can be
-# retrieved online at http://www.erlang.org/.
-#
-# Software distributed under the License is distributed on an "AS IS"
-# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
-# the License for the specific language governing rights and limitations
-# under the License.
-#
-# %CopyrightEnd%
-#
-#
-include $(ERL_TOP)/make/target.mk
-include $(ERL_TOP)/make/$(TARGET)/otp.mk
-
-ERLANG_OSTYPE = @ERLANG_OSTYPE@
-
-CC = @CC@
-
-LD = @DED_LD@
-LIBS = @LIBS@
-
-LIBDIR = $(ERL_TOP)/lib/asn1/priv/lib/$(TARGET)
-OBJDIR = $(ERL_TOP)/lib/asn1/priv/obj/$(TARGET)
-
-# ----------------------------------------------------
-# Application version
-# ----------------------------------------------------
-include ../vsn.mk
-VSN=$(ASN1_VSN)
-
-# ----------------------------------------------------
-# Release directory specification
-# ----------------------------------------------------
-RELSYSDIR = $(RELEASE_PATH)/lib/asn1-$(VSN)
-
-
-# ----------------------------------------------------
-# FLAGS misc
-# ----------------------------------------------------
-ifeq ($(TYPE),debug)
-TYPEMARKER = .debug
-else
-TYPEMARKER =
-endif
-
-EI_LIBDIR = $(ERL_TOP)/lib/erl_interface/obj$(TYPEMARKER)/$(TARGET)
-
-# ----------------------------------------------------
-# FLAGS
-# ----------------------------------------------------
-EI_INCLUDES = -I$(ERL_TOP)/lib/erl_interface/include
-DRIVER_INCLUDES = -I$(ERL_TOP)/erts/emulator/beam \
- -I$(ERL_TOP)/erts/emulator/sys/$(ERLANG_OSTYPE)
-CFLAGS = $(DRIVER_INCLUDES) $(EI_INCLUDES) @DED_CFLAGS@
-LDFLAGS += @DED_LDFLAGS@
-
-LD_INCL_EI = -L$(EI_LIBDIR)
-
-# ----------------------------------------------------
-# Target Specs
-# ----------------------------------------------------
-
-C_FILES = asn1_erl_driver.c
-
-
-ifeq ($(TARGET),win32)
-LD_EI = -lei_md
-SHARED_OBJ_FILES = $(LIBDIR)/asn1_erl_drv.dll
-OBJ_FILES = $(OBJDIR)/asn1_erl_drv.o
-CLIB_FLAGS =
-LN=cp
-else
-LD_EI = -lei
-OBJ_FILES = $(OBJDIR)/asn1_erl_drv.o
-ifeq ($(findstring vxworks,$(TARGET)),vxworks)
-SHARED_OBJ_FILES = $(LIBDIR)/asn1_erl_drv.eld
-CLIB_FLAGS =
-else
-SHARED_OBJ_FILES = $(LIBDIR)/asn1_erl_drv.so
-CLIB_FLAGS = -lc
-endif
-LN= ln -s
-endif
-
-# ----------------------------------------------------
-# Targets
-# ----------------------------------------------------
-
-opt: $(OBJDIR) $(LIBDIR) $(SHARED_OBJ_FILES)
-
-debug: opt
-
-clean:
- rm -f core *~
- rm -f $(LIBDIR)/*
- rm -f $(OBJDIR)/*
-
-docs:
-
-# ----------------------------------------------------
-# Special Build Targets
-# ----------------------------------------------------
-
-
-$(OBJ_FILES): $(C_FILES) $(OBJDIR)
- $(CC) -c $(CFLAGS) -o $(OBJ_FILES) $(C_FILES)
-
-$(SHARED_OBJ_FILES): $(OBJ_FILES) $(LIBDIR)
- $(LD) $(LDFLAGS) $(LD_INCL_EI) -o $(SHARED_OBJ_FILES) $(OBJ_FILES) $(LD_EI) $(CLIB_FLAGS) $(LIBS)
-
-$(LIBDIR):
- -mkdir -p $(LIBDIR)
-
-$(OBJDIR):
- -mkdir -p $(OBJDIR)
-
-
-
-# ----------------------------------------------------
-# Release Target
-# ----------------------------------------------------
-include $(ERL_TOP)/make/otp_release_targets.mk
-
-release_spec: opt
- $(INSTALL_DIR) $(RELSYSDIR)/priv/lib
- $(INSTALL_DATA) $(SHARED_OBJ_FILES) $(RELSYSDIR)/priv/lib
- $(INSTALL_DIR) $(RELSYSDIR)/c_src
- $(INSTALL_DATA) $(C_FILES) $(RELSYSDIR)/c_src
-
-release_docs_spec:
-
diff --git a/lib/compiler/doc/src/compile.xml b/lib/compiler/doc/src/compile.xml
index daa686bc56..bbd3f1043d 100644
--- a/lib/compiler/doc/src/compile.xml
+++ b/lib/compiler/doc/src/compile.xml
@@ -732,7 +732,7 @@ pi() -> 3.1416.
<p>A string describing the error is obtained with the following
call:</p>
<code>
-apply(Module, format_error, ErrorDescriptor)
+Module:format_error(ErrorDescriptor)
</code>
</section>
diff --git a/lib/configure.in b/lib/configure.in
deleted file mode 100644
index 7732556c46..0000000000
--- a/lib/configure.in
+++ /dev/null
@@ -1,37 +0,0 @@
-dnl Turn of caching
-define([AC_CACHE_LOAD], )dnl
-define([AC_CACHE_SAVE], )dnl
-
-dnl Process this file with autoconf to produce a configure script.
-AC_INIT
-
-dnl
-dnl This is just to run configure in all applications that need it.
-dnl
-
-if test -z "$ERL_TOP" || test ! -d $ERL_TOP ; then
- AC_MSG_ERROR(You need to set the environment variable ERL_TOP!)
-fi
-erl_top=${ERL_TOP}
-AC_CONFIG_AUX_DIRS($erl_top/erts/autoconf)
-
-dnl Version 2.55 of autoconf generate code that assume a
-dnl sub directory isn't a link. Internally at Ericsson
-dnl some OTP application directories are soft links.
-dnl An added "/." solves this problem.
-dnl
-dnl The arguments to AC_CONFIG_SUBDIRS should be literals
-dnl but a bug in autoconf 2.13 breaks conditional use
-dnl of multiple AC_CONFIG_SUBDIRS so we do it the "wrong"
-dnl way to force correct code.
-
-appdirs=""
-for d in * ; do
- if test -f "$d/configure" ; then
- appdirs="$appdirs $d/."
- fi
-done
-
-AC_CONFIG_SUBDIRS($appdirs)
-
-AC_OUTPUT
diff --git a/lib/configure.in.src b/lib/configure.in.src
new file mode 100644
index 0000000000..792a7f932a
--- /dev/null
+++ b/lib/configure.in.src
@@ -0,0 +1,61 @@
+dnl
+dnl %CopyrightBegin%
+dnl
+dnl Copyright Ericsson AB 1999-2010. All Rights Reserved.
+dnl
+dnl The contents of this file are subject to the Erlang Public License,
+dnl Version 1.1, (the "License"); you may not use this file except in
+dnl compliance with the License. You should have received a copy of the
+dnl Erlang Public License along with this software. If not, it can be
+dnl retrieved online at http://www.erlang.org/.
+dnl
+dnl Software distributed under the License is distributed on an "AS IS"
+dnl basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+dnl the License for the specific language governing rights and limitations
+dnl under the License.
+dnl
+dnl %CopyrightEnd%
+dnl
+
+dnl Turn of caching
+define([AC_CACHE_LOAD], )dnl
+define([AC_CACHE_SAVE], )dnl
+
+dnl Process this file with autoconf to produce a configure script.
+AC_INIT
+
+dnl
+dnl This is just to run configure in all applications that need it.
+dnl
+
+if test -z "$ERL_TOP" || test ! -d $ERL_TOP ; then
+ AC_MSG_ERROR(You need to set the environment variable ERL_TOP!)
+fi
+erl_top=${ERL_TOP}
+AC_CONFIG_AUX_DIRS($erl_top/erts/autoconf)
+
+AC_ARG_ENABLE(bootstrap-only,
+[ --enable-bootstrap-only enable bootstrap only configuration],
+[ if test "X$enableval" = "Xyes"; then
+ bootstrap_only=yes
+ else
+ bootstrap_only=no
+ fi
+],
+bootstrap_only=no)
+
+# Multiple versions of autoconf generates code that
+# don't work on all platforms (e.g. SunOS 5.8) if
+# sub directories are soft links. Internally at Ericsson
+# some OTP application directories are soft links.
+# An added "/." solves this problem.
+
+@BOOTSTRAP_CONFIGURE_APPS@
+
+if test $bootstrap_only = no; then
+
+@NON_BOOTSTRAP_CONFIGURE_APPS@
+
+fi
+
+AC_OUTPUT
diff --git a/lib/cosEvent/doc/src/CosEventChannelAdmin.xml b/lib/cosEvent/doc/src/CosEventChannelAdmin.xml
index 25f2dc805b..c599a92ff1 100644
--- a/lib/cosEvent/doc/src/CosEventChannelAdmin.xml
+++ b/lib/cosEvent/doc/src/CosEventChannelAdmin.xml
@@ -4,23 +4,21 @@
<erlref>
<header>
<copyright>
- <year>1997</year>
- <year>2007</year>
- <holder>Ericsson AB, All Rights Reserved</holder>
+ <year>1997</year><year>2010</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
- The contents of this file are subject to the Erlang Public License,
- Version 1.1, (the "License"); you may not use this file except in
- compliance with the License. You should have received a copy of the
- Erlang Public License along with this software. If not, it can be
- retrieved online at http://www.erlang.org/.
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and limitations
- under the License.
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
- The Initial Developer of the Original Code is Ericsson AB.
</legalnotice>
<title>CosEventChannelAdmin</title>
@@ -73,8 +71,6 @@
<item>SupplierAdmin</item>
<item>EventChannel</item>
</list>
- <p>IDL specification for CosEventChannelAdmin:</p>
- <codeinclude file="../../src/CosEventChannelAdmin.idl" tag="" type="c"></codeinclude>
</description>
</erlref>
diff --git a/lib/cosEvent/doc/src/notes.xml b/lib/cosEvent/doc/src/notes.xml
index 8cd7b9dd48..78299a38dc 100644
--- a/lib/cosEvent/doc/src/notes.xml
+++ b/lib/cosEvent/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>1999</year><year>2009</year>
+ <year>1999</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>cosEvent Release Notes</title>
@@ -36,6 +36,18 @@
<title>cosEvent 2.1.8</title>
<section>
+ <title>Improvements and New Features</title>
+ <list type="bulleted">
+ <item>
+ <p>
+ Removed the usage of the codeinclude tag in the documentation.</p>
+ <p>
+ Own Id: OTP-8409 Aux Id:</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
<title>Fixed Bugs and Malfunctions</title>
<list type="bulleted">
<item>
diff --git a/lib/cosEvent/vsn.mk b/lib/cosEvent/vsn.mk
index 7c908d1c5d..8915903bbe 100644
--- a/lib/cosEvent/vsn.mk
+++ b/lib/cosEvent/vsn.mk
@@ -1,7 +1,8 @@
COSEVENT_VSN = 2.1.8
-TICKETS = OTP-8355
+TICKETS = OTP-8355 \
+ OTP-8409
TICKETS_2.1.7 = OTP-8201
diff --git a/lib/crypto/c_src/Makefile.in b/lib/crypto/c_src/Makefile.in
index 29263d7ac7..c62ebde27b 100644
--- a/lib/crypto/c_src/Makefile.in
+++ b/lib/crypto/c_src/Makefile.in
@@ -1,19 +1,19 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 1999-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 1999-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
#
include $(ERL_TOP)/make/target.mk
@@ -81,20 +81,12 @@ ifeq ($(HOST_OS),)
HOST_OS := $(shell $(ERL_TOP)/erts/autoconf/config.guess)
endif
DYNAMIC_CRYPTO_LIB=@SSL_DYNAMIC_ONLY@
-LD_R_FLAG=@DED_LD_FLAG_RUNTIME_LIBRARY_PATH@
-ifeq ($(strip $(LD_R_FLAG)),)
-LD_R_OPT =
-else
-ifeq ($(DYNAMIC_CRYPTO_LIB),yes)
-LD_R_OPT = $(LD_R_FLAG)$(SSL_LIBDIR)
-else
-LD_R_OPT =
-endif
-endif
ifeq ($(DYNAMIC_CRYPTO_LIB),yes)
-CRYPTO_LINK_LIB=-L$(SSL_LIBDIR) -lcrypto
+SSL_DED_LD_RUNTIME_LIBRARY_PATH = @SSL_DED_LD_RUNTIME_LIBRARY_PATH@
+CRYPTO_LINK_LIB=$(SSL_DED_LD_RUNTIME_LIBRARY_PATH) -L$(SSL_LIBDIR) -lcrypto
else
+SSL_DED_LD_RUNTIME_LIBRARY_PATH=
CRYPTO_LINK_LIB=$(SSL_LIBDIR)/libcrypto.a
endif
@@ -116,11 +108,11 @@ $(OBJDIR)/%.o: %.c
$(LIBDIR)/crypto_drv.so: $(OBJS)
$(INSTALL_DIR) $(LIBDIR)
- $(LD) $(LDFLAGS) $(LD_R_OPT) -o $@ $^ $(LDLIBS) $(CRYPTO_LINK_LIB)
+ $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS) $(CRYPTO_LINK_LIB)
$(LIBDIR)/crypto_drv.dll: $(OBJS)
$(INSTALL_DIR) $(LIBDIR)
- $(LD) $(LDFLAGS) -o $@ -L$(SSL_LIBDIR) $(OBJS) -llibeay32
+ $(LD) $(LDFLAGS) -o $@ $(SSL_DED_LD_RUNTIME_LIBRARY_PATH) -L$(SSL_LIBDIR) $(OBJS) -llibeay32
clean:
rm -f $(DYN_DRIVER) $(OBJS)
diff --git a/lib/erl_interface/configure.in b/lib/erl_interface/configure.in
index 2f5b5673bb..7728cb97be 100644
--- a/lib/erl_interface/configure.in
+++ b/lib/erl_interface/configure.in
@@ -1,19 +1,19 @@
# -*- Autoconf -*-
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 2000-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 2000-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
#
# Process this file with autoconf to produce a configure script.
@@ -65,18 +65,12 @@ fi
TARGET=$host
AC_SUBST(TARGET)
-AC_CONFIG_HEADER([src/$host/config.h:src/auxdir/config.h.in])
+AC_CONFIG_HEADER([src/$host/config.h:config.h.in])
dnl ----------------------------------------------------------------------
dnl Optional features
dnl ----------------------------------------------------------------------
-AC_ARG_WITH(xcomp-conf,
-[ --with-xcompconf=PATH path to cross compilation configuration])
-if test "x$with_xcompconf" != "xno" -a "x$with_xcompconf" != "x" ; then
- . $with_xcompconf
-fi
-
# Use --disable-threads to force building single threaded libs even
# if pthreads exists (for test purposes).
AC_ARG_ENABLE(threads,
@@ -95,9 +89,8 @@ AC_PROG_CC
AC_PROG_CPP
dnl AC_PROG_LIBTOOL
AC_PROG_RANLIB
-if test "x$LD" = "x"; then
- AC_CHECK_TOOL([LD],[ld],[ld])
-fi
+AC_CHECK_PROG(LD, ld.sh)
+AC_CHECK_TOOL(LD, ld, '$(CC)')
AC_SUBST(LD)
AC_CHECK_SIZEOF(short)
@@ -110,8 +103,8 @@ if test $ac_cv_sizeof_void_p = 8; then
CFLAGS="$CFLAGS -DEI_64BIT"
fi
-AC_CHECK_PROG(AR, ar, ar, false)
-if test "$ac_cv_prog_AR" = false; then
+AC_CHECK_TOOL(AR, ar, false)
+if test "$AR" = false; then
AC_MSG_ERROR([No 'ar' command found in PATH])
fi
@@ -164,7 +157,7 @@ AC_TRY_COMPILE([#include <sys/types.h>
#include <sys/socket.h>],
[socklen_t mylen;],
[AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_SOCKLEN_T)],
+ AC_DEFINE(HAVE_SOCKLEN_T, [], [Define if you have the `socklen_t' type])],
[AC_MSG_RESULT(no)])
# Checks for library functions.
@@ -209,7 +202,7 @@ if test "x$with_gmp" = "xyes" ;then
AC_CHECK_HEADER($dir/include/gmp.h, ac_cv_gmp=yes, ac_cv_gmp=no)
if test $ac_cv_gmp = yes ; then
CFLAGS="$CFLAGS -I$dir/include -L$dir/lib"
- AC_DEFINE(HAVE_GMP_H)
+ AC_DEFINE(HAVE_GMP_H, [], [Define if you have "gmp.h"])
break
fi
done
@@ -226,7 +219,7 @@ elif test "x$with_gmp" != "xno" -a -n "$with_gmp" ;then
fi
AC_MSG_RESULT(yes)
CFLAGS="$CFLAGS -I$with_gmp/include -L$with_gmp/lib"
- AC_DEFINE(HAVE_GMP_H)
+ AC_DEFINE(HAVE_GMP_H, [], [Define if you have "gmp.h"])
AC_CHECK_LIB(gmp, __gmpz_export)
# FIXME return ERROR if no lib
fi
@@ -279,110 +272,43 @@ AC_SUBST(MIXED_CYGWIN)
dnl
dnl Threads
dnl
-found_threads=no
THR_LIBS=
THR_DEFS=
-EI_THREADS="false"
AC_SUBST(THR_LIBS)
AC_SUBST(THR_DEFS)
AC_SUBST(EI_THREADS)
case "$threads_disabled" in
- no)
- AC_MSG_CHECKING([for native win32 threads])
- if test "X$host_os" = "Xwin32"; then
- THR_DEFS="-DWIN32_THREADS"
- found_threads=yes
- EI_THREADS="true"
- AC_MSG_RESULT([yes])
- AC_MSG_CHECKING([for __declspec(thread) usability])
- if test "X$GCC" = "Xyes"; then
- AC_MSG_RESULT([no])
- else
- THR_DEFS="$THR_DEFS -DUSE_DECLSPEC_THREAD"
- AC_MSG_RESULT([yes])
- fi
+ no)
+ LM_CHECK_THR_LIB
+
+ case "$THR_LIB_NAME" in
+ "")
+ EI_THREADS="false"
+ ;;
+ win32_threads)
+ EI_THREADS="true"
+ AC_MSG_CHECKING([for __declspec(thread) usability])
+ if test "X$GCC" = "Xyes"; then
+ AC_MSG_RESULT([no])
else
- AC_MSG_RESULT(no)
-
- dnl Check for POSIX threads
-
- pthread_lib=""
- AC_CHECK_LIB(pthread,
- pthread_create,
- [found_threads=yes
- EI_THREADS="true"
- THR_LIBS="-lpthread"
- THR_DEFS="-D_REENTRANT -D_THREAD_SAFE -DPOSIX_THREADS"
- pthread_lib=pthread])
-
- # FreeBSD has pthreads in special c library, c_r
- if test $found_threads = no; then
- AC_CHECK_LIB(c_r,
- pthread_create,
- [found_threads=yes
- EI_THREADS="true"
- THR_LIBS="-lc_r"
- THR_DEFS="-D_REENTRANT -D_THREAD_SAFE -DPOSIX_THREADS"
- pthread_lib=c_r])
- fi
-
- if test "x$pthread_lib" != "x"; then
- AC_CHECK_LIB($pthread_lib,pthread_atfork,AC_DEFINE(HAVE_PTHREAD_ATFORK))
- AC_CHECK_HEADER(pthread.h, AC_DEFINE(HAVE_PTHREAD_H))
- dnl Some Linuxes have <pthread/mit/pthread.h> instead of <pthread.h>
- AC_CHECK_HEADER(pthread/mit/pthread.h, AC_DEFINE(HAVE_MIT_PTHREAD_H))
- case $host_os in
- solaris*)
- THR_DEFS="$THR_DEFS -D_POSIX_PTHREAD_SEMANTICS";;
- linux*)
- dnl NPTL test stolen from $ERL_TOP/erts/aclocal.m4
- AC_MSG_CHECKING(for Native POSIX Thread Library)
- case `getconf GNU_LIBPTHREAD_VERSION 2>/dev/null` in
- nptl*) nptl=yes;;
- NPTL*) nptl=yes;;
- *) nptl=no;;
- esac
- AC_MSG_RESULT($nptl)
- if test $nptl = yes; then
- need_nptl_incldir=no
- AC_CHECK_HEADER(nptl/pthread.h, need_nptl_incldir=yes)
- if test $need_nptl_incldir = yes; then
- # Ahh...
- nptl_path="$C_INCLUDE_PATH:$CPATH:/usr/local/include:/usr/include"
- nptl_ws_path=
- save_ifs="$IFS"; IFS=":"
- for dir in $nptl_path; do
- if test "x$dir" != "x"; then
- nptl_ws_path="$nptl_ws_path $dir"
- fi
- done
- IFS=$save_ifs
- nptl_incldir=
- for dir in $nptl_ws_path; do
- AC_CHECK_HEADER($dir/nptl/pthread.h,
- nptl_incldir=$dir/nptl)
- if test "x$nptl_incldir" != "x"; then
- THR_DEFS="$THR_DEFS -isystem $nptl_incldir"
- break
- fi
- done
- if test "x$nptl_incldir" = "x"; then
- AC_MSG_ERROR(Failed to locate nptl system include directory)
- fi
- fi
- fi
-
- ;;
- *)
- ;;
- esac
- fi
+ THR_DEFS="$THR_DEFS -DUSE_DECLSPEC_THREAD"
+ AC_MSG_RESULT([yes])
fi
;;
- yes)
- # Threads disabled
- ;;
+ pthread)
+ EI_THREADS="true"
+ ;;
+ *)
+ EI_THREADS="true"
+ AC_MSG_WARN([Unexpected thread library: $THR_LIB_NAME])
+ ;;
+ esac
+ ;;
+ yes)
+ # Threads disabled
+ EI_THREADS="false"
+ ;;
esac
# ---------------------------------------------------------------------------
@@ -413,12 +339,10 @@ fi
# FIXME We want to use libtool but until then....
# ---------------------------------------------------------------------------
-AC_SUBST(DED_CFLAGS)
-dnl AC_SUBST(DED_LD)
-dnl AC_SUBST(DED_LDFLAGS)
+AC_SUBST(LIB_CFLAGS)
if test "X$host" = "Xwin32"; then
- DED_CFLAGS="$CFLAGS"
+ LIB_CFLAGS="$CFLAGS"
else
case $host_os in
darwin*)
@@ -427,9 +351,9 @@ else
esac
if test "x$GCC" = xyes; then
- DED_CFLAGS="$CFLAGS -fPIC"
+ LIB_CFLAGS="$CFLAGS -fPIC"
else
- DED_CFLAGS="$CFLAGS"
+ LIB_CFLAGS="$CFLAGS"
fi
fi
diff --git a/lib/erl_interface/src/Makefile.in b/lib/erl_interface/src/Makefile.in
index b8ee5c83c7..ec094789ce 100644
--- a/lib/erl_interface/src/Makefile.in
+++ b/lib/erl_interface/src/Makefile.in
@@ -1,19 +1,19 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 1997-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 1997-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
#
@@ -106,7 +106,7 @@ WARNFLAGS = @WFLAGS@
endif
ifneq ($(findstring ose,$(TARGET)),ose)
-CFLAGS = @DED_CFLAGS@ $(WARNFLAGS) $(INCFLAGS) $(TYPE_FLAGS)
+CFLAGS = @LIB_CFLAGS@ $(WARNFLAGS) $(INCFLAGS) $(TYPE_FLAGS)
else
CFLAGS = @CFLAGS@ $(INCFLAGS)
endif
diff --git a/lib/erl_interface/src/auxdir/config.h.in b/lib/erl_interface/src/auxdir/config.h.in
deleted file mode 100644
index 523c766993..0000000000
--- a/lib/erl_interface/src/auxdir/config.h.in
+++ /dev/null
@@ -1,277 +0,0 @@
-/* config.h.in. Generated from configure.in by autoheader. */
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
- systems. This function is required for `alloca.c' support on those systems.
- */
-#undef CRAY_STACKSEG_END
-
-/* Define to 1 if using `alloca.c'. */
-#undef C_ALLOCA
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-#undef HAVE_ALLOCA
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
- */
-#undef HAVE_ALLOCA_H
-
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#undef HAVE_ARPA_INET_H
-
-/* Define to 1 if you have the `clock_gettime' function. */
-#undef HAVE_CLOCK_GETTIME
-
-/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
- don't. */
-#undef HAVE_DECL_STRERROR_R
-
-/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-#undef HAVE_DOPRNT
-
-/* Define to 1 if you have the `dup2' function. */
-#undef HAVE_DUP2
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if you have the `fork' function. */
-#undef HAVE_FORK
-
-/* Define to 1 if you have the `gethostbyaddr' function. */
-#undef HAVE_GETHOSTBYADDR
-
-/* Define to 1 if you have the `gethostbyname' function. */
-#undef HAVE_GETHOSTBYNAME
-
-/* Define to 1 if you have the `gethostbyname_r' function. */
-#undef HAVE_GETHOSTBYNAME_R
-
-/* Define to 1 if you have the `gethostname' function. */
-#undef HAVE_GETHOSTNAME
-
-/* Define to 1 if you have the `gethrtime' function. */
-#undef HAVE_GETHRTIME
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#undef HAVE_GETTIMEOFDAY
-
-/* Define to 1 if you have the <gmp.h> header file. */
-#undef HAVE_GMP_H
-
-/* Define to 1 if you have the `inet_ntoa' function. */
-#undef HAVE_INET_NTOA
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the `gmp' library (-lgmp). */
-#undef HAVE_LIBGMP
-
-/* Define to 1 if you have the `m' library (-lm). */
-#undef HAVE_LIBM
-
-/* Define to 1 if you have the `nsl' library (-lnsl). */
-#undef HAVE_LIBNSL
-
-/* Define to 1 if you have the `resolv' library (-lresolv). */
-#undef HAVE_LIBRESOLV
-
-/* Define to 1 if you have the `socket' library (-lsocket). */
-#undef HAVE_LIBSOCKET
-
-/* Define to 1 if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
-
-/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
- to 0 otherwise. */
-#undef HAVE_MALLOC
-
-/* Define to 1 if you have the <malloc.h> header file. */
-#undef HAVE_MALLOC_H
-
-/* Define to 1 if you have the `memchr' function. */
-#undef HAVE_MEMCHR
-
-/* Define to 1 if you have the `memmove' function. */
-#undef HAVE_MEMMOVE
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the `memset' function. */
-#undef HAVE_MEMSET
-
-/* Define to 1 if you have the <netdb.h> header file. */
-#undef HAVE_NETDB_H
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#undef HAVE_NETINET_IN_H
-
-/* Define to 1 if you have the <pthread/mit/pthread.h> header file. */
-#undef HAVE_MIT_PTHREAD_H
-
-/* Define to 1 if you have the <pthread.h> header file. */
-#undef HAVE_PTHREAD_H
-
-/* Define to 1 if your system has a GNU libc compatible `realloc' function,
- and to 0 otherwise. */
-#undef HAVE_REALLOC
-
-/* Define if you have the res_gethostbyname function. */
-#undef HAVE_RES_GETHOSTBYNAME
-
-/* Define to 1 if you have the `select' function. */
-#undef HAVE_SELECT
-
-/* Define to 1 if you have the `socket' function. */
-#undef HAVE_SOCKET
-
-/* Define to 1 if you have the <stddef.h> header file. */
-#undef HAVE_STDDEF_H
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the `strchr' function. */
-#undef HAVE_STRCHR
-
-/* Define to 1 if you have the `strerror' function. */
-#undef HAVE_STRERROR
-
-/* Define to 1 if you have the `strerror_r' function. */
-#undef HAVE_STRERROR_R
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the `strrchr' function. */
-#undef HAVE_STRRCHR
-
-/* Define to 1 if you have the `strstr' function. */
-#undef HAVE_STRSTR
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#undef HAVE_SYS_PARAM_H
-
-/* Define to 1 if you have the <sys/select.h> header file. */
-#undef HAVE_SYS_SELECT_H
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#undef HAVE_SYS_SOCKET_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
-#undef HAVE_SYS_WAIT_H
-
-/* Define to 1 if you have the `uname' function. */
-#undef HAVE_UNAME
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the `vfork' function. */
-#undef HAVE_VFORK
-
-/* Define to 1 if you have the <vfork.h> header file. */
-#undef HAVE_VFORK_H
-
-/* Define to 1 if you have the `vprintf' function. */
-#undef HAVE_VPRINTF
-
-/* Define to 1 if `fork' works. */
-#undef HAVE_WORKING_FORK
-
-/* Define to 1 if `vfork' works. */
-#undef HAVE_WORKING_VFORK
-
-/* Define if you have the writev function. */
-#undef HAVE_WRITEV
-
-/* Define if you have the socklen_t datatype */
-#undef HAVE_SOCKLEN_T
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#undef RETSIGTYPE
-
-/* Define to the type of arg 1 for `select'. */
-#undef SELECT_TYPE_ARG1
-
-/* Define to the type of args 2, 3 and 4 for `select'. */
-#undef SELECT_TYPE_ARG234
-
-/* Define to the type of arg 5 for `select'. */
-#undef SELECT_TYPE_ARG5
-
-/* If using the C implementation of alloca, define if you know the
- direction of stack growth for your system; otherwise it will be
- automatically deduced at run-time.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown */
-#undef STACK_DIRECTION
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define to 1 if strerror_r returns char *. */
-#undef STRERROR_R_CHAR_P
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef gid_t
-
-/* Define to rpl_malloc if the replacement function should be used. */
-#undef malloc
-
-/* Define to `int' if <sys/types.h> does not define. */
-#undef pid_t
-
-/* Define to rpl_realloc if the replacement function should be used. */
-#undef realloc
-
-/* Define to `unsigned' if <sys/types.h> does not define. */
-#undef size_t
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef uid_t
-
-/* Define as `fork' if `vfork' does not work. */
-#undef vfork
-
-/* Define to empty if the keyword `volatile' does not work. Warning: valid
- code using `volatile' can become incorrect without. Disable with care. */
-#undef volatile
diff --git a/lib/erl_interface/src/legacy/erl_eterm.c b/lib/erl_interface/src/legacy/erl_eterm.c
index b685709c02..8d559f0f55 100644
--- a/lib/erl_interface/src/legacy/erl_eterm.c
+++ b/lib/erl_interface/src/legacy/erl_eterm.c
@@ -1,19 +1,19 @@
/*
* %CopyrightBegin%
- *
- * Copyright Ericsson AB 1996-2009. All Rights Reserved.
- *
+ *
+ * Copyright Ericsson AB 1996-2010. All Rights Reserved.
+ *
* The contents of this file are subject to the Erlang Public License,
* Version 1.1, (the "License"); you may not use this file except in
* compliance with the License. You should have received a copy of the
* Erlang Public License along with this software. If not, it can be
* retrieved online at http://www.erlang.org/.
- *
+ *
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
- *
+ *
* %CopyrightEnd%
*/
/*
@@ -786,6 +786,12 @@ ETERM *erl_copy_term(const ETERM *ep)
case ERL_U_SMALL_BIG:
ERL_INT_UVALUE(cp) = ERL_INT_UVALUE(ep);
break;
+ case ERL_LONGLONG:
+ ERL_LL_VALUE(cp) = ERL_LL_VALUE(ep);
+ break;
+ case ERL_U_LONGLONG:
+ ERL_LL_UVALUE(cp) = ERL_LL_UVALUE(ep);
+ break;
case ERL_FLOAT:
ERL_FLOAT_VALUE(cp) = ERL_FLOAT_VALUE(ep);
break;
diff --git a/lib/et/doc/src/book.gif b/lib/et/doc/src/book.gif
deleted file mode 100644
index 94b3868792..0000000000
--- a/lib/et/doc/src/book.gif
+++ /dev/null
Binary files differ
diff --git a/lib/et/doc/src/coffee_order.png b/lib/et/doc/src/coffee_order.png
new file mode 100644
index 0000000000..b3f17e7ead
--- /dev/null
+++ b/lib/et/doc/src/coffee_order.png
Binary files differ
diff --git a/lib/et/doc/src/et.xml b/lib/et/doc/src/et.xml
index 27cc47a4b4..9b170dd7d9 100644
--- a/lib/et/doc/src/et.xml
+++ b/lib/et/doc/src/et.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2002</year><year>2009</year>
+ <year>2002</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>et</title>
@@ -37,30 +37,28 @@
</description>
<funcs>
<func>
- <name>report_event(DetailLevel, FromTo, Label, Contents) -> hopefully_traced</name>
- <name>report_event(DetailLevel, From, To, Label, Contents) -> hopefully_traced</name>
- <name>phone_home(DetailLevel, FromTo, Label, Contents) -> hopefully_traced</name>
- <name>phone_home(DetailLevel, From, To, Label, Contents) -> hopefully_traced</name>
- <fsummary>Reports an event, such as a message</fsummary>
+ <name>trace_me(DetailLevel, From, To, Label, Contents) -> hopefully_traced</name>
+ <fsummary>A function that is intended to be traced.</fsummary>
<type>
<v>DetailLevel = integer(X) when X =&lt; 0, X >= 100</v>
<v>From = actor()</v>
<v>To = actor()</v>
- <v>FromTo = actor()</v>
<v>Label = atom() | string() | term()</v>
<v>Contents = [{Key, Value}] | term()</v>
- <v>actor() = term()</v>
+ <v>actor() = term()</v>
</type>
<desc>
- <p>Reports an event, such as a message.</p>
- <p>These functions are intended to be invoked at strategic places
- in user applications in order to enable simplified tracing.
- The functions are extremely light weight as they do nothing
- besides returning an atom. These functions are designed for
- being traced. The global tracing mechanism in et_collector
- defaults to set its trace pattern to these functions.</p>
- <p>The label is intended to provide a brief summary of the event.
- A simple tag would do.</p>
+ <p>A function that is intended to be traced.</p>
+ <p>This function is intended to be invoked at strategic places
+ in user applications in order to enable simplified
+ tracing. The functions are extremely light weight as they do
+ nothing besides returning an atom. The functions are designed
+ for being traced. The global tracing mechanism in
+ <c>et_collector</c> defaults to set its trace pattern to these
+ functions.</p>
+ <p>The label is intended to provide a brief summary of the
+ event. It is preferred to use an atom but a string would also
+ do.</p>
<p>The contents can be any term but in order to simplify
post processing of the traced events, a plain list
of {Key, Value} tuples is preferred.</p>
@@ -68,6 +66,37 @@
Other events (termed actions) may be undirected and only have one actor.</p>
</desc>
</func>
+
+ <func>
+ <name>trace_me(DetailLevel, FromTo, Label, Contents) -> hopefully_traced</name>
+ <fsummary>A function that is intended to be traced.</fsummary>
+ <desc>
+ <p>Invokes <c>et:trace_me/5</c> with both <c>From</c> and <c>To</c>
+ set to <c>FromTo</c>.</p>
+ </desc>
+ </func>
+
+ <func>
+ <name>phone_home(DetailLevel, FromTo, Label, Contents) -> hopefully_traced</name>
+ <name>phone_home(DetailLevel, From, To, Label, Contents) -> hopefully_traced</name>
+ <fsummary>Send a signal to the outer space</fsummary>
+ <desc>
+ <p>These functions sends a signal to the outer space and the
+ caller hopes that someone is listening. In other words, they
+ invoke <c>et:trace_me/4</c> and <c>et:trace_me/5</c>
+ respectively.</p>
+ </desc>
+ </func>
+ <func>
+ <name>report_event(DetailLevel, FromTo, Label, Contents) -> hopefully_traced</name>
+ <name>report_event(DetailLevel, From, To, Label, Contents) -> hopefully_traced</name>
+ <fsummary>Deprecated functions</fsummary>
+ <desc>
+ <p>Deprecated functions which for the time being are kept for
+ backwards compatibility. Invokes <c>et:trace_me/4</c> and
+ <c>et:trace_me/5</c> respectively.</p>
+ </desc>
+ </func>
</funcs>
</erlref>
diff --git a/lib/et/doc/src/et_architecture.xml b/lib/et/doc/src/et_architecture.xml
deleted file mode 100644
index 44e262db96..0000000000
--- a/lib/et/doc/src/et_architecture.xml
+++ /dev/null
@@ -1,554 +0,0 @@
-<?xml version="1.0" encoding="latin1" ?>
-<!DOCTYPE chapter SYSTEM "chapter.dtd">
-
-<chapter>
- <header>
- <copyright>
- <year>2002</year><year>2009</year>
- <holder>Ericsson AB. All Rights Reserved.</holder>
- </copyright>
- <legalnotice>
- The contents of this file are subject to the Erlang Public License,
- Version 1.1, (the "License"); you may not use this file except in
- compliance with the License. You should have received a copy of the
- Erlang Public License along with this software. If not, it can be
- retrieved online at http://www.erlang.org/.
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and limitations
- under the License.
-
- </legalnotice>
-
- <title>Usage</title>
- <prepared>H&aring;kan Mattsson</prepared>
- <responsible>H&aring;kan Mattsson</responsible>
- <docno></docno>
- <approved>H&aring;kan Mattsson</approved>
- <checked></checked>
- <date></date>
- <rev>%VSN%</rev>
- <file>et_architecture.xml</file>
- </header>
-
- <section>
- <title>Overview</title>
- <p>The two major components of the Event Tracer (ET)
- tool is a graphical sequence chart viewer (<c>et_viewer</c>)
- and its backing storage (<c>et_collector</c>). One collector
- may be used as backing storage for several simultaneous
- viewers where each one may display a different view of
- the same trace data.</p>
- <p>The interface between the collector and its viewers
- is public in order to enable other types of viewers.
- However in the following text we will focus on usage
- of the <c>et_viewer</c>.</p>
- <p>The main start function is <c>et_viewer:start/1</c>.
- It will by default start both an <c>et_collector</c> and
- an <c>et_viewer</c>:</p>
- <p></p>
- <code type="none"><![CDATA[
- % erl -pa et/examples
- Erlang (BEAM) emulator version 2002.10.08 [source]
-
- Eshell V2002.10.08 (abort with ^G)
- 1> {ok, Viewer} = et_viewer:start([]).
- {ok,<0.31.0>}
- ]]></code>
- <p>A viewer gets trace events from its collector
- by polling it regularly for more events to display.
- Trace events are for example reported to the collector with
- <c>et_collector:report_event/6</c>:</p>
- <code type="none"><![CDATA[
- 2> Collector = et_viewer:get_collector_pid(Viewer).
- <0.30.0>
- 3> et_collector:report_event(Collector, 60, my_shell, mnesia_tm, start_outer,
- "Start outer transaction"),
- 3> et_collector:report_event(Collector, 40, mnesia_tm, my_shell, new_tid,
- "New transaction id is 4711"),
- 3> et_collector:report_event(Collector, 20, my_shell, mnesia_locker, try_write_lock,
- "Acquire write lock for {my_tab, key}"),
- 3> et_collector:report_event(Collector, 10, mnesia_locker, my_shell, granted,
- "You got the write lock for {my_tab, key}"),
- 3> et_collector:report_event(Collector, 60, my_shell, do_commit,
- "Perform transaction commit"),
- 3> et_collector:report_event(Collector, 40, my_shell, mnesia_locker, release_tid,
- "Release all locks for transaction 4711"),
- 3> et_collector:report_event(Collector, 60, my_shell, mnesia_tm, delete_transaction,
- "End of outer transaction"),
- 3> et_collector:report_event(Collector, 20, my_shell, end_outer,
- "Transaction returned {atomic, ok}").
- {ok,{table_handle,<0.30.0>,11,trace_ts,#Fun<et_collector.0.83904657>}}
- 4>
- ]]></code>
- <p>This is a simulation of the process events caused by a Mnesia
- transaction that writes a record in a local table:</p>
- <code type="none">
- mnesia:transaction(fun() -> mnesia:write({my_tab, key, val}) end).
- </code>
- <p>At this stage when we have a couple of events, it is time to
- show how it looks like in the graphical interface of
- <c>et_viewer</c>:</p>
- <p></p>
- <image file="sim_trans.gif">
- <icaption>A simulated Mnesia transaction which writes one record</icaption>
- </image>
- <p>In the sequence chart, the actors (which symbolically has performed the
- traced event) are shown as named vertical bars. The order of the
- actors may be altered by dragging (hold mouse button 1 pressed during
- the operation) the name tag of an actor and drop it elsewhere:</p>
- <image file="sim_trans_move_actor.gif">
- <icaption>Two actors has switched places</icaption>
- </image>
- <p>An event may be an action performed by one single actor (blue
- text label) or it may involve two actors and is then depicted as an
- arrow directed from one actor to another (red text label). Details of
- an event can be shown by clicking (press and release the mouse button 1)
- on the event label text or on the arrow:</p>
- <p></p>
- <image file="sim_trans_write_lock.gif">
- <icaption>Details of a write lock message</icaption>
- </image>
- </section>
-
- <section>
- <title>Filters and dictionary</title>
- <p>The Event Tracer (ET) uses named filters in various
- contexts. An Event Trace filter is an <c>Erlang fun</c>
- that takes some trace data as input and returns a possibly
- modified version of it:
- </p>
- <p></p>
- <code type="none">
- filter(TraceData) -> true | {true, NewEvent} | false
-
- TraceData = NewEvent | term()
- NewEvent = record(event)
- </code>
- <p>The interface of the filter function is the same as the the
- filter functions for the good old <c>lists:zf/2</c>. If the filter
- returns <c>false</c> it means that the <c>TraceData</c> should be
- dropped. <c>{true, NewEvent}</c> means that the <c>TraceData</c>
- should be replaced with <c>NewEvent</c>. And <c>true</c> means that the
- <c>TraceData</c> data already is an event record and that it
- should be kept as it is.
- </p>
- <p>The first filter that the trace data is exposed for is
- the collector filter. When a trace event is reported with
- <c>et_collector:report/2</c> (or <c>et_collector:report_event/5,6</c>)
- the first thing that
- happens, is that a message is sent to the collector process
- to fetch a handle that contains some useful stuff, such as
- the collector filter fun and an ets table identifier.
- Then the collector filter fun is applied and if it returns
- <c>true</c> (or <c>{true, NewEvent}</c>), the event will
- be stored in an ets table. As an optimization, subsequent
- calls to <c>et_collector:report</c>-functions can use the handle
- directly instead of the collector pid.
- </p>
- <p>The collector filter (that is the filter named
- <c>collector</c>) is a little bit special, as its input
- may be any Erlang term and is not limited to take an event
- record as the other filter functions.
- </p>
- <p>The collector manages a key/value based dictionary, where
- the filters are stored. Updates of the dictionary is
- propagated to all subscribing processes. When a viewer is
- started it is registered as a subscriber of dictionary updates.
- </p>
- <p>In a viewer there is only one filter that is active
- and all trace events that the viewer gets from the
- collector will pass thru that filter. By writing clever
- filters it is possible to customize how the events
- looks like in the viewer. The following filter replaces
- the actor names <c>mnesia_tm</c> and <c>mnesia_locker</c>
- and leaves everything else in the record as it was:
- </p>
- <p></p>
- <codeinclude file="../../examples/et_demo.erl" tag="%mgr_actors" type="erl"></codeinclude>
- <p>If we now add the filter to the running collector:
- </p>
- <p></p>
- <code type="none"><![CDATA[
- 4> Fun = fun(E) -> et_demo:mgr_actors(E) end.
- #Fun<erl_eval.5.123085357>
- 5> et_collector:dict_insert(Collector, {filter, mgr_actors}, Fun).
- ok
- 6>
- ]]></code>
- <p>you will see that the <c>Filter</c> menu in all viewers have
- got a new entry called <c>mgr_actors</c>. Select it, and a new
- viewer window will pop up:</p>
- <p></p>
- <image file="sim_trans_mgr_actors.gif">
- <icaption>The same trace data in a different view</icaption>
- </image>
- <p>In order to see the nitty gritty details of an event
- you may click on the event in order to start a contents
- viewer for that event. In the contents viewer there is
- also a filter menu in order to enable inspection of the
- event from other views than the one selected in the viewer.
- A click on the <c>new_tid</c> event will cause a contents
- viewer window to pop up, showing the event in the
- <c>mgr_actors</c> view:</p>
- <p></p>
- <image file="sim_trans_contents_viewer_mgr_actors.gif">
- <icaption>The trace event in the mgr_actors view</icaption>
- </image>
- <p>Select the <c>collector</c> entry in the <c>Filters</c>
- menu and a new contents viewer window will pop up
- showing the same trace event in the collectors view:</p>
- <p></p>
- <image file="sim_trans_contents_viewer_collector.gif">
- <icaption>The same trace event in the collectors view</icaption>
- </image>
- </section>
-
- <section>
- <title>Trace clients</title>
- <p>As you have seen it is possible to use the
- <c>et_collector:report</c>-functions explicitly. By using those functions
- you can write your own trace client that reads trace data from any
- source stored in any format and just feed the collector with it. You
- may replace the default collector filter with a filter that converts
- new exciting trace data formats to event-records or you may convert it
- to an event-record before you invoke <c>et_collector:report/2</c> and
- then rely on the default collector filter to handle the new
- format.</p>
- <p>There are also existing functions in the API that reads from
- various sources and calls <c>et_collector:report/2</c>:</p>
- <list type="bulleted">
- <item>
- <p>The trace events that are hosted by the collector may be
- stored to file and later be loaded by selecting <c>save</c>
- and <c>load</c> entries in the viewers <c>File</c>-menu or
- via the <c>et_collector</c> API.</p>
- </item>
- <item>
- <p>It is also possible to perform live tracing of a running
- system by making use of the built-in trace support in
- the Erlang emulator. These Erlang traces can be directed
- to files or to ports. See the reference manual for
- <c>erlang:trace/4</c>, <c>erlang:trace_pattern/3</c>,
- <c>dbg</c> and <c>ttb</c> for more info.</p>
- <p>There are also corresponding trace client types that can
- read the Erlang trace data format from such files or ports.
- The <c>et_collector:start_trace_client/3</c> function makes
- use of these Erlang trace clients and redirects the trace
- data to the collector.</p>
- <p>The default collector filter converts the Erlang trace data
- format into event-records.If you want to perform this
- differently you can of course write your own collector
- filter from scratch. But it may probably save you some
- efforts if you first apply the default filter in
- <c>et_selector:parse_event/2</c> before you apply your
- own conversions of its output.</p>
- </item>
- </list>
- </section>
-
- <section>
- <title>Global tracing and phone home</title>
- <p>Setting up an Erlang tracer on a set of nodes and connecting
- trace clients to the ports of these tracers is not intuitive. In order
- to make this it easier the Event Tracer as a notion of global
- tracing. When used, the <c>et_collector</c> process will monitor
- Erlang nodes and when one connects, an Erlang tracer will
- automatically be started on the other node. A corresponding trace
- client will also be started on the collector node in order to
- automatically forward the trace events to the collector. Set the
- boolean parameter <c>trace_global</c> to <c>true</c> for either the
- <c>et_collector</c> or <c>et_viewer</c> in order to activate the
- global tracing. There is no restriction on how many concurrent
- (anonymous) collectors you can have, but you can only have one global
- collector as its name is registered in <c>global</c>.</p>
- <p>In order to further simplify the tracing you can make use of the
- <c>et:report_event/4,5</c> (or its equivalents
- <c>et:phone_home/4,5</c> :-). These functions are intended to be
- invoked from other applications when there are interesting events,
- in your application that needs to be highlighted. The functions are
- extremely light weight as they do nothing besides returning an atom.
- These functions are
- specifically designed to be traced for. As the caller explicitly
- provides the values for the event-record fields, the default collector
- filter is able to automatically provide a customized event-record
- without any user defined filter functions.</p>
- <p>In normal operation the <c>et:report_event/4,5</c> calls are
- almost for free. When tracing is needed you can either activate
- tracing on these functions explicitly. Or you can combine the usage of
- <c>trace_global</c> with the usage of <c>trace_pattern</c>. When set,
- the <c>trace_pattern</c> will automatically be activated on all
- connected nodes. </p>
- <p>One nice thing with the <c>trace_pattern</c> is that it provides
- a very simple way of minimizing the amount of generated trace data by
- allowing you to explicitly control the detail level of the tracing. As
- you may have seen the <c>et_viewer</c> have a slider called
- <c>"Detail Level"</c> that allows you to control the detail level of the
- trace events displayed in the viewer. On the other hand if you set a
- low detail level in the <c>trace_pattern</c>, lots of the trace data
- will never be generated and thus not sent over the socket to the trace
- client and stored in the collector.</p>
- </section>
-
- <section>
- <title>Viewer window</title>
- <p>Almost all functionality available in the <c>et_viewer</c> is
- also available via shortcuts. Which key that has the same
- effect as selecting a menu entry is shown enclosed in
- parentheses. For example pressing the key <c>r</c> is
- equivalent to selecting the menu entry
- <c>Viewer->Refresh</c>.
- </p>
- <p>File menu:</p>
- <list type="bulleted">
- <item>
- <p>Close Collector and all Viewers - Close the collector
- and all viewers connected to that collector.</p>
- </item>
- <item>
- <p>Close other Viewers, but keep Collector - Keep this viewer
- and its collector, but close all other viewers connected
- to this collector.</p>
- </item>
- <item>
- <p>Close this Viewer, but keep Collector - Close this viewer,
- but all other viewers and the collector.</p>
- </item>
- <item>
- <p>Save Collector to file - Save all events stored in the
- collector to file.</p>
- </item>
- <item>
- <p>Load Collector from file - Load the collector with
- events from a file.</p>
- </item>
- </list>
- <p>Viewer menu:</p>
- <list type="bulleted">
- <item>
- <p>First - Scroll <c>this</c> viewer to the first collector
- event.</p>
- </item>
- <item>
- <p>Prev - Scroll <c>this</c> viewer one "page" backwards.
- Normally this means that the first event displayed in the
- viewer will be the last one and the previous <c>max_events</c>
- events will be read from the collector.</p>
- </item>
- <item>
- <p>Next - Scroll <c>this</c> viewer one "page" forward.
- Normally this means that the last event displayed in the
- viewer will be the first one and <c>max_events</c> more
- events will be read from the collector.</p>
- </item>
- <item>
- <p>Last - Scroll <c>this</c> viewer to the last collector event.</p>
- </item>
- <item>
- <p>Refresh - Clear <c>this</c> viewer and re-read its events
- from the collector.</p>
- </item>
- <item>
- <p>Up 5 - Scroll 5 events backwards.</p>
- </item>
- <item>
- <p>Down 5 - Scroll 5 events forward.</p>
- </item>
- <item>
- <p>Abort search. Display all. - Switch the display mode to
- show all events regardless of any ongoing searches.
- Abort the searches.</p>
- </item>
- </list>
- <p>Collector menu:</p>
- <list type="bulleted">
- <item>
- <p>First - Scroll <c>all</c> viewers to the first collector
- event.</p>
- </item>
- <item>
- <p>Prev - Scroll <c>all</c> viewers one "page" backwards.
- Normally this means that the first event displayed in the
- viewer will be the last one and the previous <c>max_events</c>
- events will be read from the collector.</p>
- </item>
- <item>
- <p>Next - Scroll <c>all</c> viewers one "page" forward.
- Normally this means that the last event displayed in the
- viewer will be the first one and <c>max_events</c> more
- events will be read from the collector.</p>
- </item>
- <item>
- <p>Last - Scroll <c>all</c> viewers to the last collector event.</p>
- </item>
- <item>
- <p>Refresh - Clear <c>all</c> viewers and re-read their
- events from the collector.</p>
- </item>
- </list>
- <p>Filters menu:</p>
- <list type="bulleted">
- <item>
- <p>ActiveFilter (=) - Start a new viewer window with the
- same active filter and scale as the current one.</p>
- </item>
- <item>
- <p>ActiveFilter (+) - Start a new viewer window with
- the same active filter but a larger scale than the
- current one.</p>
- </item>
- <item>
- <p>ActiveFilter (-) - Start a new viewer window with
- the same active filter but a smaller scale than the
- current one.</p>
- </item>
- <item>
- <p>collector (0) - Start a new viewer with the collector
- filter as active filter.</p>
- </item>
- <item>
- <p>AnotherFilter (2) - If more filters are inserted into
- the dictionary, these will turn up here as entries
- in the <c>Filters</c> menu. The second filter will be
- number 2, the next one number 3 etc. The names are sorted.</p>
- </item>
- </list>
- <p>Slider and radio buttons:</p>
- <list type="bulleted">
- <item>
- <p>Freeze - When true, this means that the viewer
- will not read more events from the collector
- until set to false.</p>
- </item>
- <item>
- <p>Hide From=To - When true, this means that the viewer
- will hide all events where the from-actor equals
- to its to-actor.</p>
- </item>
- <item>
- <p>Hide Unknown - When true, this means that the viewer
- will hide all events where either of the from-actor or
- to-actor is <c>UNKNOWN</c>.</p>
- </item>
- <item>
- <p>Detail level - This slider controls the resolution
- of the viewer. Only events with a detail level <c>smaller</c>
- than the selected one (default=100=max) are displayed.</p>
- </item>
- </list>
- <p>Other features:</p>
- <list type="bulleted">
- <item>
- <p>Display details of an event - Click on the event name
- and a new window will pop up, displaying the contents
- of an event.</p>
- </item>
- <item>
- <p>Toggle actor search - Normally the viewer will be in a
- display mode where all events are shown. By clicking
- on an actor name the tool will switch display mode
- to only show events with selected actors.
- </p>
- <p>Click on an actor and only events with that actor
- will be displayed. Click on another actor to include
- that actor to the selected ones. Clicking on an already
- selected actor will remove it from the collections of
- selected actors. When the collection of selected actors
- becomes empty the normal mode where all actors are shown
- will be entered again.</p>
- <p>Abort actor search with the <c>a</c> key or with the
- <c>Viewer->Abort search</c> menu choice.
- </p>
- </item>
- <item>
- <p>Move actor - Drag and drop an actor by first clicking on
- the actor name, keeping the button pressed while moving
- the cursor to a new location and release the button where
- the actor should be moved to.</p>
- </item>
- </list>
- </section>
-
- <section>
- <title>Configuration</title>
- <p>The event-records in the ets-table are ordered by their timestamp.
- Which timestamp that should be used is controlled via the
- <c>event_order</c> parameter. Default is <c>trace_ts</c> which means
- the time when the trace data was generated. <c>event_ts</c> means
- the time when the trace data was parsed (transformed into an
- event-record).</p>
- </section>
-
- <section>
- <title>Contents viewer window</title>
- <p>File menu:</p>
- <list type="bulleted">
- <item>
- <p>Close - Close this window.</p>
- </item>
- <item>
- <p>Save - Save the contents of this window to file.</p>
- </item>
- </list>
- <p>Filters menu:</p>
- <list type="bulleted">
- <item>
- <p>ActiveFilter - Start a new contents viewer window
- with the same active filter.</p>
- </item>
- <item>
- <p>AnotherFilter (2) - If more filters are inserted into
- the dictionary, these will turn up here as entries
- in the <c>Filters</c> menu. The second filter will be
- number 2, the next one number 3 etc. The names are sorted.</p>
- </item>
- </list>
- <p>Hide menu:</p>
- <list type="bulleted">
- <item>
- <p>Hide actor in viewer - Known actors are shown as a
- named vertical bars in the viewer window. By hiding the
- actor, its vertical bar will be removed and the viewer
- will be refreshed.</p>
- <p>Hiding the actor is only useful if the <c>max_actors</c>
- threshold has been reached, as it then will imply that
- the "hidden" actor will be displayed as if it were <c>"UNKNOWN"</c>.
- If the <c>max_actors</c> threshold not have been reached,
- the actor will re-appear as a vertical bar in the viewer.
- </p>
- </item>
- <item>
- <p>Show actor in viewer - This implies that the actor
- will be added as a known actor in the viewer with
- its own vertical bar.</p>
- </item>
- </list>
- <p>Search menu:</p>
- <list type="bulleted">
- <item>
- <p>Forward from this event - Set this event to be the first
- event in the viewer and change its display mode to be
- enter forward search mode. The actor of this event
- (from, to or both) will be added to the list of selected
- actors.
- </p>
- </item>
- <item>
- <p>Reverse from this event - Set this event to be the first
- event in the viewer and change its display mode to be
- enter reverse search mode. The actor of this event
- (from, to or both) will be added to the list of selected
- actors. Observe, that the events will be shown in reverse
- order.
- </p>
- </item>
- <item>
- <p>Abort search. Display all - Switch the display mode
- of the viewer to show all events regardless of any
- ongoing searches. Abort the searches.</p>
- </item>
- </list>
- </section>
-</chapter>
-
diff --git a/lib/et/doc/src/et_collector.xml b/lib/et/doc/src/et_collector.xml
index 01ca7caa5b..88c478c89a 100644
--- a/lib/et/doc/src/et_collector.xml
+++ b/lib/et/doc/src/et_collector.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2002</year><year>2009</year>
+ <year>2002</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>et_collector</title>
@@ -84,11 +84,12 @@
dictionary updates will be propagated to the subscriber processes
matching the pattern {{subscriber, '_'}, '_'} where the first '_'
is interpreted as a pid().</p>
- <p>In global trace mode, the collector will automatically start
- tracing on all connected Erlang nodes. When a node connects, a port
- tracer will be started on that node and a corresponding trace
- client on the collector node. By default the global trace pattern
- is 'max'.</p>
+
+ <p>In global trace mode, the collector will automatically
+ start tracing on all connected Erlang nodes. When a node
+ connects, a port tracer will be started on that node and a
+ corresponding trace client on the collector node.</p>
+
<p>Default values:</p>
<list type="bulleted">
<item>parent_pid - self().</item>
@@ -349,7 +350,7 @@
</type>
<desc>
<p>Iterate over the currently stored events.</p>
- <p>Iterates over the currently stored eventsand applies
+ <p>Iterates over the currently stored events and applies
a function for each event. The iteration may be performed
forwards or backwards and may be limited to a maximum
number of events (abs(Limit)).</p>
diff --git a/lib/et/doc/src/et_desc.xmlsrc b/lib/et/doc/src/et_desc.xmlsrc
new file mode 100644
index 0000000000..c02517ae01
--- /dev/null
+++ b/lib/et/doc/src/et_desc.xmlsrc
@@ -0,0 +1,683 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>2002</year><year>2010</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>Description</title>
+ <prepared>H&aring;kan Mattsson</prepared>
+ <responsible>H&aring;kan Mattsson</responsible>
+ <docno></docno>
+ <approved>H&aring;kan Mattsson</approved>
+ <checked></checked>
+ <date></date>
+ <rev>%VSN%</rev>
+ <file>et_desc.xml</file>
+ </header>
+
+ <section>
+ <title>Overview</title>
+
+ <p>The two major components of the <c>Event Tracer (ET)</c> tool
+ is a graphical sequence chart viewer (<c>et_viewer</c>) and its
+ backing storage (<c>et_collector</c>). One <c>Collector</c> may be
+ used as backing storage for several simultaneous <c>Viewers</c>
+ where each one may display a different view of the same trace
+ data.</p>
+
+ <p>The interface between the <c>Collector</c> and its
+ <c>Viewers</c> is public in order to enable other types of
+ <c>Viewers</c>. However in the following text we will focus on
+ usage of the <c>et_viewer</c>.</p>
+
+ <p>The main start function is <c>et_viewer:start/1</c>. By
+ default it will start both an <c>et_collector</c> and an
+ <c>et_viewer</c>:</p>
+
+ <p></p>
+
+ <code type="none"><![CDATA[
+ % erl -pa et/examples
+ Erlang R13B03 (erts-5.7.4) [64-bit] [smp:4:4] [rq:4]
+ [async-threads:0] [kernel-poll:false]
+
+ Eshell V5.7.4 (abort with ^G)
+ 1> {ok, Viewer} = et_viewer:start([]).
+ {ok,<0.40.0>}]]></code>
+
+ <p>A <c>Viewer</c> gets trace <c>Events</c> from its
+ <c>Collector</c> by polling it regularly for more <c>Events</c> to
+ display. <c>Events</c> are for example reported to the
+ <c>Collector</c> with <c>et_collector:report_event/6</c>:</p>
+
+ <code type="none"><![CDATA[
+ 2> Collector = et_viewer:get_collector_pid(Viewer).
+ <0.39.0>
+ 3> et_collector:report_event(Collector, 60, my_shell, mnesia_tm, start_outer,
+ 3> "Start outer transaction"),
+ 3> et_collector:report_event(Collector, 40, mnesia_tm, my_shell, new_tid,
+ 3> "New transaction id is 4711"),
+ 3> et_collector:report_event(Collector, 20, my_shell, mnesia_locker, try_write_lock,
+ 3> "Acquire write lock for {my_tab, key}"),
+ 3> et_collector:report_event(Collector, 10, mnesia_locker, my_shell, granted,
+ 3> "You got the write lock for {my_tab, key}"),
+ 3> et_collector:report_event(Collector, 60, my_shell, do_commit,
+ 3> "Perform transaction commit"),
+ 3> et_collector:report_event(Collector, 40, my_shell, mnesia_locker, release_tid,
+ 3> "Release all locks for transaction 4711"),
+ 3> et_collector:report_event(Collector, 60, my_shell, mnesia_tm, delete_transaction,
+ 3> "End of outer transaction"),
+ 3> et_collector:report_event(Collector, 20, my_shell, end_outer,
+ 3> "Transaction returned {atomic, ok}").
+ {ok,{table_handle,<0.39.0>,16402,trace_ts,
+ #Fun<et_collector.0.62831470>}}]]></code>
+
+ <p>This actually is a simulation of the process <c>Events</c>
+ caused by a <c>Mnesia</c> transaction that writes a record in a local
+ table:</p>
+
+ <code type="none"><![CDATA[
+ mnesia:transaction(fun() -> mnesia:write({my_tab, key, val}) end).]]></code>
+
+ <p>At this stage when we have a couple of <c>Events</c>, it is time to
+ show how it looks like in the graphical interface of
+ <c>et_viewer</c>:</p>
+
+ <p></p>
+
+ <image file="sim_trans.png">
+ <icaption>A simulated Mnesia transaction which writes one record</icaption>
+ </image>
+
+ <p>In the sequence chart, the actors (which symbolically has
+ performed the <c>Event</c>) are shown as named vertical bars. The
+ order of the actors may be altered by dragging (hold mouse button
+ 1 pressed during the operation) the name tag of an actor and drop
+ it elsewhere:</p>
+
+ <image file="sim_trans_move_actor.png">
+ <icaption>Two actors has switched places</icaption>
+ </image>
+
+ <p>An <c>Event</c> may be an action performed by one single actor
+ (blue text label) or it may involve two actors and is then
+ depicted as an arrow directed from one actor to another (red text
+ label). Details of an <c>Event</c> can be shown by clicking (press
+ and release the mouse button 1) on the event label text or on the
+ arrow. When doing that a <c>Contents Viewer</c> window pops up. It
+ may look like this:</p>
+
+ <p></p>
+
+ <image file="sim_trans_write_lock.png">
+ <icaption>Details of a write lock message</icaption>
+ </image>
+ </section>
+
+ <section>
+ <title>Filters and dictionary</title>
+
+ <p>The <c>Event Tracer (ET)</c> uses named filters in various
+ contexts. An Event Trace filter is an <c>Erlang fun</c> that takes
+ some trace data as input and returns a possibly modified version
+ of it:
+ </p>
+
+ <p></p>
+
+ <code type="none"><![CDATA[
+ filter(TraceData) -> false | true | {true, NewEvent}
+
+ TraceData = Event | erlang_trace_data()
+ Event = #event{}
+ NewEvent = #event{}]]></code>
+
+ <p>The interface of the filter function is the same as the the
+ filter functions for the good old <c>lists:zf/2</c>. If the filter
+ returns <c>false</c> it means that the trace data should silently
+ be dropped. <c>true</c> means that the trace data data already is
+ an <c>Event Record</c> and that it should be kept as it is.
+ <c>true</c> means that the <c>TraceData</c> already is an <c>Event
+ Record</c> and that it should be kept as it is. <c>{true,
+ NewEvent}</c> means that the original trace data should be
+ replaced with <c>Event</c>. This provides means to get rid of
+ unwanted <c>Events</c> as well as enabling alternate views of an
+ <c>Event</c>.</p>
+
+ <p>The first filter that the trace data is exposed for is the
+ <c>Collector Filter</c>. When a trace <c>Event</c> is reported with
+ <c>et_collector:report/2</c> (or
+ <c>et_collector:report_event/5,6</c>) the first thing that
+ happens, is that a message is sent to the <c>Collector</c> process
+ to fetch a handle that contains some useful stuff, such as the
+ <c>Collector Filter Fun</c> and an Ets table identifier. Then the
+ <c>Collector Filter Fun</c> is applied and if it returns
+ <c>true</c> (or <c>{true, NewEvent}</c>), the <c>Event</c> will be stored
+ in an Ets table. As an optimization, subsequent calls to
+ <c>et_collector:report</c>-functions can use the handle directly
+ instead of the <c>Collector Pid</c>.</p>
+
+ <p>All filters (registered in a <c>Collector</c> or in a
+ <c>Viewer</c>) must be able to handle an <c>Event record</c> as
+ input. The <c>Collector Filter</c> (that is the filter named
+ <c>all</c>) is a little bit special, as its input also may be raw
+ <c>Erlang Trace Data</c></p>
+
+ <p>The <c>Collector</c> manages a key/value based dictionary,
+ where the filters are stored. Updates of the dictionary is
+ propagated to all subscribing processes. When a <c>Viewer</c> is
+ started it is registered as a subscriber of dictionary
+ updates.</p>
+
+ <p>In each <c>Viewer</c> there is only one filter that is active
+ and all trace <c>Events</c> that the <c>Viewer</c> gets from the
+ <c>Collector</c> will pass thru that filter. By writing clever
+ filters it is possible to customize how the <c>Events</c> looks
+ like in the viewer. The following filter in
+ <c>et/examples/et_demo.erl</c> replaces the actor names
+ <c>mnesia_tm</c> and <c>mnesia_locker</c> and leaves everything
+ else in the record as it was:</p>
+
+ <p></p>
+
+ <codeinclude file="../../examples/et_demo.erl" tag="%mgr_actors" type="erl"></codeinclude>
+ <p>If we now add the filter to the running <c>Collector</c>:</p>
+
+ <p></p>
+
+ <code type="none"><![CDATA[
+ 4> Fun = fun(E) -> et_demo:mgr_actors(E) end.
+ #Fun<erl_eval.6.13229925>
+ 5> et_collector:dict_insert(Collector, {filter, mgr_actors}, Fun).
+ ok]]></code>
+
+ <p>you will see that the <c>Filter</c> menu in all viewers have
+ got a new entry called <c>mgr_actors</c>. Select it, and a new
+ <c>Viewer</c> window will pop up:</p>
+
+ <p></p>
+
+ <image file="sim_trans_mgr_actors.png">
+ <icaption>The same trace data in a different view</icaption>
+ </image>
+
+ <p>In order to see the nitty gritty details of an <c>Event</c> you
+ may click on the <c>Event</c> in order to start a <c>Contents
+ Viewer</c> for that <c>Event</c>. In the <c>Contents Viewer</c>
+ there also is a filter menu that enables inspection of the
+ <c>Event</c> from other views than the one selected in the
+ viewer. A click on the <c>new_tid</c> <c>Event</c> will cause a
+ <c>Contents Viewer</c> window to pop up, showing the <c>Event</c>
+ in the <c>mgr_actors</c> view:</p>
+
+ <p></p>
+
+ <image file="sim_trans_contents_viewer_mgr_actors.png">
+ <icaption>The trace <c>Event</c> in the mgr_actors view</icaption>
+ </image>
+
+ <p>Select the <c>all</c> entry in the <c>Filters</c> menu
+ and a new <c>Contents Viewer window</c> will pop up showing the
+ same trace <c>Event</c> in the collectors view:</p>
+
+ <p></p>
+
+ <image file="sim_trans_contents_viewer_collector.png">
+ <icaption>The same trace <c>Event</c> in the collectors
+ view</icaption>
+ </image>
+ </section>
+
+ <section>
+ <title>Trace clients</title>
+ <p>As you have seen, it is possible to use the
+ <c>et_collector:report_event/5,6</c> functions explicitly. By
+ using those functions you can write your own trace client that
+ reads trace data from any source stored in any format and just
+ feed the <c>Collector</c> with it. You may replace the default
+ <c>Collector Filter</c> with a filter that converts new exciting
+ trace data formats to <c>Event Records</c> or you may convert it
+ to an <c>Event Record</c> before you invoke
+ <c>et_collector:report/2</c> and then rely on the default
+ <c>Collector Filter</c> to handle the new format.</p>
+
+ <p>There are also existing functions in the API that reads from
+ various sources and calls <c>et_collector:report/2</c>:</p>
+
+ <list type="bulleted">
+ <item>
+ <p>The trace <c>Events</c> that are hosted by the <c>Collector</c> may be
+ stored to file and later be loaded by selecting <c>save</c>
+ and <c>load</c> entries in the <c>Viewers</c> <c>File</c> menu
+ or via the <c>et_collector</c> API.</p>
+ </item>
+
+ <item>
+ <p>It is also possible to perform live tracing of a running
+ system by making use of the built-in trace support in the
+ Erlang emulator. These Erlang traces can be directed to files
+ or to ports. See the reference manual for
+ <c>erlang:trace/4</c>, <c>erlang:trace_pattern/3</c>,
+ <c>dbg</c> and <c>ttb</c> for more info.</p>
+
+ <p>There are also corresponding trace client types that can
+ read the Erlang trace data format from such files or ports.
+ The <c>et_collector:start_trace_client/3</c> function makes
+ use of these Erlang trace clients and redirects the trace data
+ to the <c>Collector</c>.</p>
+
+ <p>The default <c>Collector Filter</c> converts the raw Erlang
+ trace data format into <c>Event Records</c>. If you want to
+ perform this differently you can of course write your own
+ <c>Collector Filter</c> from scratch. But it may probably save
+ you some efforts if you first apply the default filter in
+ <c>et_selector:parse_event/2</c> before you apply your own
+ conversions of its output.</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Global tracing</title>
+
+ <p>Setting up an Erlang tracer on a set of nodes and connecting
+ trace clients to the ports of these tracers is not intuitive. In
+ order to make this it easier the <c>Event Tracer</c> has a notion
+ of global tracing. When used, the <c>et_collector</c> process will
+ monitor Erlang nodes and when one connects, an Erlang tracer will
+ automatically be started on the newly connected node. A
+ corresponding trace client will also be started on the
+ <c>Collector</c> node in order to automatically forward the trace
+ <c>Events</c> to the <c>Collector</c>. Set the boolean parameter
+ <c>trace_global</c> to <c>true</c> for either the
+ <c>et_collector</c> or <c>et_viewer</c> in order to activate the
+ global tracing. There is no restriction on how many concurrent
+ (anonymous) collectors you can have, but you can only have one
+ <b>global</b> <c>Collector</c> as its name is registered in
+ <c>global</c>.</p>
+
+ <p>In order to further simplify the tracing, you can make use of
+ the <c>et:trace_me/4,5</c> functions. These functions are intended
+ to be invoked from other applications when there are interesting
+ <c>Events</c>, in your application that needs to be
+ highlighted. The functions are extremely light weight as they do
+ nothing besides returning an atom. These functions are
+ specifically designed to be traced for. As the caller explicitly
+ provides the values for the <c>Event Record</c> fields, the
+ default <c>Collector Filter</c> is able to automatically provide a
+ customized <c>Event Record</c> without any user defined filter
+ functions.</p>
+
+ <p>In normal operation, the <c>et:trace_me/4,5</c> calls are almost
+ for free. When tracing is needed, you can either activate tracing
+ on these functions explicitly. Or you can combine the usage of
+ <c>trace_global</c> with the usage of <c>trace_pattern</c>. When
+ set, the <c>trace_pattern</c> will automatically be activated on
+ all connected nodes. </p>
+
+ <p>One nice thing with the <c>trace_pattern</c> is that it
+ provides a very simple way of minimizing the amount of generated
+ trace data by allowing you to explicitly control the detail level
+ of the tracing. As you may have seen the <c>et_viewer</c> have a
+ slider called <c>"Detail Level"</c> that allows you to control the
+ detail level of the trace <c>Events</c> displayed in the
+ <c>Viewer</c>. On the other hand if you set a low detail level in
+ the <c>trace_pattern</c>, lots of the trace data will never be
+ generated and thus not sent over the socket to the trace client
+ and stored in the <c>Collector</c>.</p>
+ </section>
+
+ <section>
+ <title>Viewer window</title>
+
+ <p>Almost all functionality available in the <c>et_viewer</c> is
+ also available via shortcuts. Which key that has the same effect
+ as selecting a menu entry is shown enclosed in parentheses. For
+ example pressing the key <c>r</c> is equivalent to selecting the
+ menu entry <c>Viewer->Refresh</c>.</p>
+
+ <p>File menu:</p>
+
+ <list type="bulleted">
+ <item>
+ <p><c>Clear all events in the Collector</c> - Deletes all
+ <c>Events</c> stored in the <c>Collector</c> and notifies all
+ connected <c>Viewers</c> about this.</p>
+ </item>
+
+ <item>
+ <p><c>Load events to the Collector from file</c> - Loads the
+ <c>Collector</c> with <c>Events</c> from a file and notifies
+ all connected <c>Viewers</c> about this.</p>
+ </item>
+
+ <item>
+ <p><c>Save all events in the Collector to file</c> - Saves all
+ <c>Events</c> stored in the <c>Collector</c> to file.</p>
+ </item>
+
+ <item>
+ <p><c>Print setup</c> - Enables editing of printer setting,
+ such as paper and layout.</p>
+ </item>
+
+ <item>
+ <p><c>Print current page</c> - Prints the events on the
+ current page. The page size is dependent of the selected paper
+ type.</p>
+ </item>
+
+ <item>
+ <p><c>Print all pages</c> - Prints all events. The page size
+ is dependent of the selected paper type.</p>
+ </item>
+
+ <item>
+ <p><c>Close this Viewer</c> - Closes this <c>Viewer</c>
+ window, but keeps all other <c>Viewers</c> windows and the
+ <c>Collector</c> process.</p>
+ </item>
+
+ <item>
+ <p><c>Close other Viewers, but this</c> - Keeps this
+ <c>Viewer</c> window and its <c>Collector</c> process, but
+ closes all other <c>Viewers</c> windowsconnected to the same
+ <c>Collector</c>.</p>
+ </item>
+
+ <item>
+ <p><c>Close all Viewers and the Collector</c> - Closes the
+ <c>Collector</c> and all <c>Viewers</c> connected to it.</p>
+ </item>
+ </list>
+
+ <p>Viewer menu:</p>
+
+ <list type="bulleted">
+ <item>
+ <p><c>First</c> - Scrolls <c>this</c> viewer to the first
+ <c>Event</c> in the <c>Collector</c>.</p>
+ </item>
+
+ <item>
+ <p><c>Last</c> - Scrolls <c>this</c> viewer to the last
+ <c>Event</c> in the <c>Collector</c>.</p>
+ </item>
+
+ <item>
+ <p><c>Prev</c> - Scrolls <c>this</c> viewer one page
+ backwards.</p>
+ </item>
+
+ <item>
+ <p><c>Next</c> - Scrolls <c>this</c> viewer one page
+ forward.</p>
+ </item>
+
+ <item>
+ <p><c>Refresh</c> - Clears <c>this</c> viewer and re-read its
+ <c>Events</c> from the <c>Collector</c>.</p>
+ </item>
+
+ <item>
+ <p><c>Up</c> - Scrolls a few <c>Events</c> backwards.</p>
+ </item>
+
+ <item>
+ <p><c>Down</c> - Scrolls a few <c>Events</c> forward.</p>
+ </item>
+
+ <item>
+ <p><c>Display all actors.</c> - Reset the settings for hidden
+ and/or highlighted actors.</p>
+ </item>
+ </list>
+
+ <p>Collector menu:</p>
+
+ <list type="bulleted">
+ <item>
+ <p><c>First</c> - Scrolls<c>all</c> viewers to the first
+ <c>Event</c> in the <c>Collector</c>.</p>
+ </item>
+
+ <item>
+ <p><c>Last</c> - Scrolls <c>all</c> viewers to the last
+ <c>Event</c> in the <c>Collector</c>.</p>
+ </item>
+
+ <item>
+ <p><c>Prev</c> - Scrolls <c>all</c> viewers one page
+ backwards.</p>
+ </item>
+
+ <item>
+ <p><c>Next</c> - Scrolls <c>all</c> viewers one page
+ forward.</p>
+ </item>
+
+ <item>
+ <p><c>Refresh</c> - Clears <c>all</c> viewers and re-read
+ their <c>Events</c> from the <c>Collector</c>.</p>
+ </item>
+ </list>
+
+ <p>Filters and scaling menu:</p>
+
+ <list type="bulleted">
+ <item>
+ <p><c>ActiveFilter (=)</c> - Starts a new <c>Viewer</c> window
+ with the same active filter and scale as the current one.</p>
+ </item>
+
+ <item>
+ <p><c>ActiveFilter (+)</c> - Starts a new <c>Viewer</c> window
+ with the same active filter but a larger scale than the
+ current one.</p>
+ </item>
+
+ <item>
+ <p><c>ActiveFilter (-)</c> - Starts a new <c>Viewer </c>window
+ with the same active filter but a smaller scale than the
+ current one.</p>
+ </item>
+
+ <item>
+ <p><c>all (0)</c> - Starts a new <c>Viewer</c> with the
+ <c>Collector Filter</c> as active filter. It will cause all
+ events in the collector to be viewed.</p>
+ </item>
+
+ <item>
+ <p><c>AnotherFilter (2)</c> - If more filters are inserted
+ into the dictionary, these will turn up here as entries in the
+ <c>Filters</c> menu. The second filter will get the shortcut
+ number 2, the next one number 3 etc. The names are sorted.</p>
+ </item>
+ </list>
+
+ <p>Slider and radio buttons:</p>
+
+ <list type="bulleted">
+ <item>
+ <p><c>Hide From=To</c> - When true, this means that the
+ <c>Viewer</c> will hide all <c>Events</c> where the from-actor
+ equals to its to-actor. These events are sometimes called
+ actions.</p>
+ </item>
+
+ <item>
+ <p><c>Hide (excluded actors)</c> - When true, this means that
+ the <c>Viewer</c> will hide all <c>Events</c> whose actors are
+ marked as excluded. Excluded actors are normally enclosed in
+ round brackets when they are displayed inthe
+ <c>Viewer</c>.</p>
+ </item>
+
+ <item>
+ <p><c>Detail level</c> - This slider controls the resolution
+ of the <c>Viewer</c>. Only <c>Events</c> with a detail level
+ <c>smaller</c> than the selected one (default=100=max) are
+ displayed.</p>
+ </item>
+ </list>
+
+ <p>Other features:</p>
+
+ <list type="bulleted">
+ <item>
+ <p><c>Vertical scroll</c> - Use mouse wheel and up/down arrows
+ to scroll little. Use page up/down and home/end buttons to
+ scroll more.</p>
+ </item>
+
+ <item>
+ <p><c>Display details of an event</c> - Left mouse click on
+ the event label or the arrowand a new <c>Contents Viewer</c>
+ window will pop up, displaying the contents of an
+ <c>Event</c>.</p>
+ </item>
+
+ <item>
+ <p><c>Highlight actor (toggle)</c> - Left mouse click on the
+ actor name tag. The actor name will be enclosed in square
+ brackets <c>[]</c>. When one or more actors are highlighted,
+ only events related to those actors are displayed. All others
+ are hidden.</p>
+ </item>
+
+ <item>
+ <p><c>Exclude actor (toggle)</c> - Right mouse click on the
+ actor name tag. The actor name will be enclosed in round
+ brackets <c>()</c>. When an actor is excluded, all events
+ related to this actor is hidden. If the checkbox <c>Hide
+ (excluded actors)</c> is checked, even the name tags and
+ corresponding vertical line of excluded actors will be
+ hidden.</p>
+ </item>
+
+ <item>
+ <p><c>Move actor</c> - Left mouse button drag and drop on
+ actor name tag. Move the actor by first clicking on the actor
+ name, keeping the button pressed while moving the cursor to a
+ new location and release the button where the actor should be
+ moved to.</p>
+ </item>
+
+ <item>
+ <p><c>Display all actors</c> - Press the 'a' button. Reset the
+ settings for hidden and/or highlighted actors.</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Configuration</title>
+
+ <p>The <c>Event Records</c> in the Ets table are ordered by their
+ timestamp. Which timestamp that should be used is controlled via
+ the <c>event_order</c> parameter. Default is <c>trace_ts</c> which
+ means the time when the trace data was generated. <c>event_ts</c>
+ means the time when the trace data was parsed (transformed into an
+ <c>Event Record</c>).</p>
+ </section>
+
+ <section>
+ <title>Contents viewer window</title>
+
+ <p>File menu:</p>
+
+ <list type="bulleted">
+ <item>
+ <p><c>Close</c> - Close this window.</p>
+ </item>
+
+ <item>
+ <p><c>Save</c> - Save the contents of this window to file.</p>
+ </item>
+ </list>
+
+ <p>Filters menu:</p>
+
+ <list type="bulleted">
+ <item>
+ <p><c>ActiveFilter</c> - Start a new <c>Contents Viewer
+ window</c> with the same active filter.</p>
+ </item>
+
+ <item>
+ <p><c>AnotherFilter (2)</c> - If more filters are inserted
+ into the dictionary, these will turn up here as entries in the
+ <c>Filters</c> menu. The second filter will be number 2, the
+ next one number 3 etc. The names are sorted.</p>
+ </item>
+ </list>
+
+ <p>Hide menu:</p>
+
+ <list type="bulleted">
+ <item>
+ <p><c>Hide actor in viewer</c> - Known actors are shown as a
+ named vertical bars in the <c>Viewer</c> window. By hiding the
+ actor, its vertical bar will be removed and the <c>Viewer</c>
+ will be refreshed.</p>
+
+ <p><c>Hiding the actor</c> is only useful if the
+ <c>max_actors</c> threshold has been reached, as it then will
+ imply that the "hidden" actor will be displayed as if it were
+ <c>"UNKNOWN"</c>. If the <c>max_actors</c> threshold not have
+ been reached, the actor will re-appear as a vertical bar in
+ the <c>Viewer</c>.</p>
+ </item>
+ <item>
+ <p><c>Show actor in viewer</c> - This implies that the actor
+ will be added as a known actor in the <c>Viewer</c> with its
+ own vertical bar.</p>
+ </item>
+ </list>
+
+ <p>Search menu:</p>
+
+ <list type="bulleted">
+ <item>
+ <p><c>Forward from this event</c> - Set this event to be the first
+ event in the viewer and change its display mode to be enter
+ forward search mode. The actor of this event (from, to or
+ both) will be added to the list of selected actors.</p>
+ </item>
+
+ <item>
+ <p><c>Reverse from this event</c> - Set this event to be the
+ first <c>Event</c> in the <c>Viewer</c> and change its display
+ mode to be enter reverse search mode. The actor of this
+ <c>Event</c> (from, to or both) will be added to the list of
+ selected actors. Observe, that the <c>Events</c> will be shown
+ in reverse order.</p>
+ </item>
+
+ <item>
+ <p><c>Abort search. Display all</c> - Switch the display mode
+ of the <c>Viewer</c> to show all <c>Events</c> regardless of
+ any ongoing searches. Abort the searches.</p>
+ </item>
+ </list>
+ </section>
+</chapter>
+
diff --git a/lib/et/doc/src/et_examples.xml b/lib/et/doc/src/et_examples.xml
deleted file mode 100644
index 7627b191a1..0000000000
--- a/lib/et/doc/src/et_examples.xml
+++ /dev/null
@@ -1,311 +0,0 @@
-<?xml version="1.0" encoding="latin1" ?>
-<!DOCTYPE chapter SYSTEM "chapter.dtd">
-
-<chapter>
- <header>
- <copyright>
- <year>2002</year><year>2009</year>
- <holder>Ericsson AB. All Rights Reserved.</holder>
- </copyright>
- <legalnotice>
- The contents of this file are subject to the Erlang Public License,
- Version 1.1, (the "License"); you may not use this file except in
- compliance with the License. You should have received a copy of the
- Erlang Public License along with this software. If not, it can be
- retrieved online at http://www.erlang.org/.
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and limitations
- under the License.
-
- </legalnotice>
-
- <title>Examples</title>
- <prepared>H&aring;kan Mattsson</prepared>
- <responsible>H&aring;kan Mattsson</responsible>
- <docno></docno>
- <approved>H&aring;kan Mattsson</approved>
- <checked></checked>
- <date></date>
- <rev>%VSN%</rev>
- <file>et_examples.xml</file>
- </header>
-
- <section>
- <title>A simulated Mnesia transaction</title>
- <p>The Erlang code for running the simulated Mnesia transaction example
- in the previous chapter is included in the <c>et/examples/et_demo.erl</c> file:
- </p>
- <p></p>
- <codeinclude file="../../examples/et_demo.erl" tag="%sim_trans" type="erl"></codeinclude>
- <p></p>
- <codeinclude file="../../examples/et_demo.erl" tag="%mgr_actors" type="erl"></codeinclude>
- <p>If you invoke the <c>et_demo:sim_trans()</c> function a viewer
- window will pop up and the sequence trace will be almost the same as
- if the following Mnesia transaction would have been run:</p>
- <p></p>
- <code type="none">
- mnesia:transaction(fun() -> mnesia:write({my_tab, key, val}) end).
- </code>
- <p>And the viewer window will look like:</p>
- <p></p>
- <code type="none"><![CDATA[
- $ erl -pa ../examples
- Erlang (BEAM) emulator version 2002.10.08 [source]
-
- Eshell V2002.10.08 (abort with ^G)
- 1> et_demo:sim_trans().
- {ok,{table_handle,<0.30.0>,11,trace_ts,#Fun<et_collector.0.83904657>}}
- 2>
- ]]></code>
- <p></p>
- <image file="sim_trans.gif">
- <icaption>A simulated Mnesia transaction which writes one record</icaption>
- </image>
- </section>
-
- <section>
- <title>Some convenient functions used in the Mnesia transaction example</title>
- <p>The <c>module_as_actor</c> filter converts the event-records so
- the module names becomes actors and the invoked functions becomes
- labels. If the information about who the caller was it will be
- displayed as an arrow directed from the caller to the callee. The
- <c>[{message, {caller}}, {return_trace}]</c> options to <c>dbg:tpl/2</c>
- function will imply the necessary information in the Erlang traces.
- Here follows the <c>module_as_actor</c> filter:</p>
- <p></p>
- <codeinclude file="../../examples/et_demo.erl" tag="%module_as_actor" type="erl"></codeinclude>
- <p>The <c>plain_process_info</c> filter does not alter the event-records.
- It merely ensures that the event not related to processes are skipped:</p>
- <p></p>
- <codeinclude file="../../examples/et_demo.erl" tag="%plain_process_info" type="erl"></codeinclude>
- <p>The <c>plain_process_info_nolink</c> filter does not alter the
- event-records. It do makes use of the <c>plain_process_info</c> , but
- do also ensure that the process info related to linking and unlinking
- is skipped:</p>
- <p></p>
- <codeinclude file="../../examples/et_demo.erl" tag="%plain_process_info_nolink" type="erl"></codeinclude>
- <p>In order to simplify the startup of an <c>et_viewer</c> process
- with the filters mentioned above, plus some others (that also are
- found in <c>et/examples/et_demo.erl</c> src/et_collector.erl the
- <c>et_demo:start/0,1</c> functions can be used:</p>
- <p></p>
- <codeinclude file="../../examples/et_demo.erl" tag="%start" type="erl"></codeinclude>
- <p>A simple one-liner starts the tool:</p>
- <code type="none">
- erl -pa ../examples -s et_demo
- </code>
- <p>The filters are included by the following parameters:</p>
- <p></p>
- <codeinclude file="../../examples/et_demo.erl" tag="%filters" type="erl"></codeinclude>
- </section>
-
- <section>
- <title>Erlang trace of a Mnesia transaction</title>
- <p>The following piece of code <c>et_demo:trace_mnesia/0</c>
- activates call tracing of both local and external function calls for
- all modules in the Mnesia application. The call traces are configured
- cover all processes (both existing and those that are spawned in the
- future) and include timestamps for trace data. It do also activate
- tracing of process related events for Mnesia's static processes plus
- the calling process (that is your shell). Please, observe that the
- <c>whereis/1</c> call in the following code requires that both the
- traced Mnesia application and the <c>et_viewer</c>is running on the
- same node:</p>
- <p></p>
- <codeinclude file="../../examples/et_demo.erl" tag="%trace_mnesia" type="erl"></codeinclude>
- <p>The <c>et_demo:live_trans/0</c> function starts the a global
- controller, starts a viewer, starts Mnesia, creates a local table,
- activates tracing (as described above) and registers the shell
- process is as 'my_shell' for clarity. Finally the a simple Mnesia
- transaction that writes a single record is run:</p>
- <p></p>
- <codeinclude file="../../examples/et_demo.erl" tag="%live_trans" type="erl"></codeinclude>
- <p>Now we run the <c>et_demo:live_trans/0</c> function:</p>
- <p></p>
- <code type="none">
- erl -pa ../examples -s et_demo live_trans
- Erlang (BEAM) emulator version 2002.10.08 [source]
-
- Eshell V2002.10.08 (abort with ^G)
- 1>
- </code>
- <p>Please, explore the different filters in order to see how the traced
- transaction can be seen from different point of views:</p>
- <p></p>
- <image file="live_trans.gif">
- <icaption>A real Mnesia transaction which writes one record</icaption>
- </image>
- </section>
-
- <section>
- <title>Erlang trace of Megaco startup</title>
- <p>The Event Tracer (ET) tool was initially written in order to
- demonstrate how messages where sent over the Megaco protocol. This
- were back in the old days before the standard bodies of IETF and ITU
- had approved Megaco (also called H.248) as an international
- standard.</p>
- <p>In the Megaco application of Erlang/OTP, the code is carefully
- instrumented with calls to <c>et:report_event/5</c>. For call a detail
- level is set in order to dynamically control the trace level in a
- simple manner.</p>
- <p>The <c>megaco_filter</c> module implements a customized filter
- for Megaco messages. It does also make use of <c>trace_global</c>
- combined with usage of the <c>trace_pattern</c>:</p>
- <p></p>
- <code type="none">
- -module(megaco_filter).
- -export([start/0]).
-
- start() ->
- Options =
- [{event_order, event_ts},
- {scale, 3},
- {max_actors, infinity},
- {trace_pattern, {megaco, max}},
- {trace_global, true},
- {dict_insert, {filter, megaco_filter}, fun filter/1},
- {active_filter, megaco_filter},
- {title, "Megaco tracer - Erlang/OTP"}],
- et_viewer:start(Options).
- </code>
- <p>First we start an Erlang node with the a global collector and
- its viewer. The <c>et_viewer: search for: [] ++ ["gateway_tt"]</c>
- printout is caused by a click on the "gateway_tt" actor name in the
- viewer. It means that only events with that actor will be displayed
- in the viewer.</p>
- <p></p>
- <code type="none">
- erl -sname observer -s megaco_filter
- Erlang (BEAM) emulator version 2002.10.08 [source]
-
- Eshell V2002.10.08 (abort with ^G)
- (observer@amrod)1> et_viewer: search for: [] ++ ["gateway_tt"]
- </code>
- <p>Secondly we start another Erlang node which we connect the
- observer node, before we start the application that we want to
- trace. In this case we start a Media Gateway Controller that listens
- for both TCP and UDP on the text and binary ports for Megaco:</p>
- <p></p>
- <code type="none">
- erl -sname mgc -pa ../../megaco/examples/simple
- Erlang (BEAM) emulator version 2002.10.08 [source]
-
- Eshell V2002.10.08 (abort with ^G)
- (mgc@amrod)1> net:ping(observer@amrod).
- pong
- (mgc@amrod)2> megaco:start().
- ok
- (mgc@amrod)3> megaco_simple_mgc:start().
- {ok,[{ok,2944,
- {megaco_receive_handle,{deviceName,"controller"},
- megaco_pretty_text_encoder,
- [],
- megaco_tcp}},
- {ok,2944,
- {megaco_receive_handle,{deviceName,"controller"},
- megaco_pretty_text_encoder,
- [],
- megaco_udp}},
- {ok,2945,
- {megaco_receive_handle,{deviceName,"controller"},
- megaco_binary_encoder,
- [],
- megaco_tcp}},
- {ok,2945,
- {megaco_receive_handle,{deviceName,"controller"},
- megaco_binary_encoder,
- [],
- megaco_udp}}]}
- (mgc@amrod)4>
- </code>
- <p>And finally we start an Erlang node for the Media Gateways and
- connect to the observer node. Each Media Gateway connects to the
- controller and sends an initial Service Change message. The controller
- accepts the gateways and sends a reply to each one using the same
- transport mechanism and message encoding according to the preference
- of each gateway. That is all combinations of TCP/IP transport, UDP/IP
- transport, text encoding and ASN.1 BER encoding:</p>
- <p></p>
- <code type="none">
- erl -sname mg -pa ../../megaco/examples/simple
- Erlang (BEAM) emulator version 2002.10.08 [source]
-
- Eshell V2002.10.08 (abort with ^G)
- (mg@amrod)1> net:ping(observer@amrod).
- pong
- (mg@amrod)2> megaco_simple_mg:start().
- [{{deviceName,"gateway_tt"},{error,{start_user,megaco_not_started}}},
- {{deviceName,"gateway_tb"},{error,{start_user,megaco_not_started}}},
- {{deviceName,"gateway_ut"},{error,{start_user,megaco_not_started}}},
- {{deviceName,"gateway_ub"},{error,{start_user,megaco_not_started}}}]
- (mg@amrod)3> megaco:start().
- ok
- (mg@amrod)4> megaco_simple_mg:start().
- [{{deviceName,"gateway_tt"},
- {1,
- {ok,[{'ActionReply',0,
- asn1_NOVALUE,
- asn1_NOVALUE,
- [{serviceChangeReply,
- {'ServiceChangeReply',
- [{megaco_term_id,false,["root"]}],
- {serviceChangeResParms,
- {'ServiceChangeResParm',
- {deviceName|...},
- asn1_NOVALUE|...}}}}]}]}}},
- {{deviceName,"gateway_tb"},
- {1,
- {ok,[{'ActionReply',0,
- asn1_NOVALUE,
- asn1_NOVALUE,
- [{serviceChangeReply,
- {'ServiceChangeReply',
- [{megaco_term_id,false,["root"]}],
- {serviceChangeResParms,
- {'ServiceChangeResParm',
- {...}|...}}}}]}]}}},
- {{deviceName,"gateway_ut"},
- {1,
- {ok,[{'ActionReply',0,
- asn1_NOVALUE,
- asn1_NOVALUE,
- [{serviceChangeReply,
- {'ServiceChangeReply',
- [{megaco_term_id,false,["root"]}],
- {serviceChangeResParms,
- {'ServiceChangeResParm',{...}|...}}}}]}]}}},
- {{deviceName,"gateway_ub"},
- {1,
- {ok,[{'ActionReply',0,
- asn1_NOVALUE,
- asn1_NOVALUE,
- [{serviceChangeReply,
- {'ServiceChangeReply',
- [{megaco_term_id,false,["root"]}],
- {serviceChangeResParms,
- {'ServiceChangeResParm'|...}}}}]}]}}}]
- (mg@amrod)5>
- </code>
- <p>The Megaco adopted viewer looks like this, when we have clicked
- on the "gateway_tt" actor name in order to only display the events
- regarding that actor:</p>
- <p></p>
- <image file="megaco_tracer.gif">
- <icaption>The viewer adopted for Megaco</icaption>
- </image>
- <p>A pretty printed Megaco message looks like this:</p>
- <p></p>
- <image file="megaco_filter.gif">
- <icaption>A textual Megaco message</icaption>
- </image>
- <p>And the corresponding internal form for the same Megaco message
- looks like this:</p>
- <p></p>
- <image file="megaco_collector.gif">
- <icaption>The internal form of a Megaco message</icaption>
- </image>
- </section>
-</chapter>
-
diff --git a/lib/et/doc/src/et_examples.xmlsrc b/lib/et/doc/src/et_examples.xmlsrc
new file mode 100644
index 0000000000..7678184515
--- /dev/null
+++ b/lib/et/doc/src/et_examples.xmlsrc
@@ -0,0 +1,383 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>2002</year><year>2010</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>Advanced examples</title>
+ <prepared>H&aring;kan Mattsson</prepared>
+ <responsible>H&aring;kan Mattsson</responsible>
+ <docno></docno>
+ <approved>H&aring;kan Mattsson</approved>
+ <checked></checked>
+ <date></date>
+ <rev>%VSN%</rev>
+ <file>et_examples.xml</file>
+ </header>
+
+ <section>
+ <title>A simulated Mnesia transaction</title>
+ <p>The Erlang code for running the simulated <c>Mnesia</c> transaction
+ example in the previous chapter is included in the
+ <c>et/examples/et_demo.erl</c> file:</p>
+
+ <p></p>
+
+ <codeinclude file="../../examples/et_demo.erl" tag="%sim_trans" type="erl"></codeinclude>
+
+ <p></p>
+
+ <codeinclude file="../../examples/et_demo.erl" tag="%mgr_actors" type="erl"></codeinclude>
+
+ <p>If you invoke the <c>et_demo:sim_trans()</c> function, a
+ <c>Viewer</c> window will pop up and the sequence trace will be
+ almost the same as if the following <c>Mnesia</c> transaction
+ would have been run:</p>
+
+ <p></p>
+
+ <code type="none"><![CDATA[
+ mnesia:transaction(fun() -> mnesia:write({my_tab, key, val}) end).]]></code>
+
+ <p>And the viewer window will look like:</p>
+
+ <p></p>
+
+ <code type="none"><![CDATA[
+ Erlang R13B03 (erts-5.7.4) [64-bit] [smp:4:4] [rq:4]
+ [async-threads:0] [kernel-poll:false]
+
+ Eshell V5.7.4 (abort with ^G)
+ 1> {ok, Viewer} = et_viewer:start([]).
+ {ok,<0.40.0>;}
+ 2> et_demo:sim_trans().
+ {ok,{table_handle,<0.45.0>,24596,trace_ts,
+ #Fun<et_collector.0.62831470>}}]]></code>
+
+ <p></p>
+
+ <image file="sim_trans.png">
+ <icaption>A simulated <c>Mnesia</c> transaction which writes one
+ record</icaption>
+ </image>
+
+ </section>
+
+ <section>
+ <title>Some convenient functions used in the <c>Mnesia</c> transaction
+ example</title>
+
+ <p>The <c>module_as_actor</c> filter converts the <c>Event
+ Records</c> so the module names becomes actors and the invoked
+ functions becomes labels. If the information about who the caller
+ was it will be displayed as an arrow directed from the caller to
+ the callee. The <c>[{message, {caller}}, {return_trace}]</c>
+ options to <c>dbg:tpl/2</c> function will imply the necessary
+ information in the Erlang traces. Here follows the
+ <c>module_as_actor</c> filter:</p>
+
+
+ <p></p>
+
+ <codeinclude file="../../examples/et_demo.erl" tag="%module_as_actor" type="erl"></codeinclude>
+
+ <p>The <c>plain_process_info</c> filter does not alter the
+ <c>Event Records</c>. It merely ensures that the event not
+ related to processes are skipped:</p>
+
+ <p></p>
+
+ <codeinclude file="../../examples/et_demo.erl" tag="%plain_process_info" type="erl"></codeinclude>
+
+ <p>The <c>plain_process_info_nolink</c> filter does not alter the
+ <c>Event Records</c>. It do makes use of the
+ <c>plain_process_info</c> , but do also ensure that the process
+ info related to linking and unlinking is skipped:</p>
+
+ <p></p>
+
+ <codeinclude file="../../examples/et_demo.erl" tag="%plain_process_info_nolink" type="erl"></codeinclude>
+
+ <p>In order to simplify the startup of an <c>et_viewer</c> process
+ with the filters mentioned above, plus some others (that also are
+ found in <c>et/examples/et_demo.erl</c> src/et_collector.erl the
+ <c>et_demo:start/0,1</c> functions can be used:</p>
+
+ <p></p>
+
+ <codeinclude file="../../examples/et_demo.erl" tag="%start" type="erl"></codeinclude>
+
+ <p>A simple one-liner starts the tool:</p>
+
+ <code type="none"><![CDATA[
+ erl -pa ../examples -s et_demo]]></code>
+
+ <p>The filters are included by the following parameters:</p>
+
+ <p></p>
+
+ <codeinclude file="../../examples/et_demo.erl" tag="%filters" type="erl"></codeinclude>
+
+ </section>
+
+ <section>
+ <title>Erlang trace of a real Mnesia transaction</title>
+
+ <p>The following piece of code <c>et_demo:trace_mnesia/0</c>
+ activates call tracing of both local and external function calls
+ for all modules in the <c>Mnesia</c> application. The call traces
+ are configured cover all processes (both existing and those that
+ are spawned in the future) and include timestamps for trace
+ data. It do also activate tracing of process related events for
+ <c>Mnesia</c>'s static processes plus the calling process (that is
+ your shell). Please, observe that the <c>whereis/1</c> call in the
+ following code requires that both the traced <c>Mnesia</c>
+ application and the <c>et_viewer</c> is running on the same
+ node:</p>
+
+ <p></p>
+
+ <codeinclude file="../../examples/et_demo.erl" tag="%trace_mnesia" type="erl"></codeinclude>
+
+ <p>The <c>et_demo:live_trans/0</c> function starts the global
+ <c>Collector</c>, starts a <c>Viewer</c>, starts <c>Mnesia</c>,
+ creates a local table, activates tracing (as described above) and
+ registers the shell process is as 'my_shell' for clarity. Finally
+ a simple <c>Mnesia</c> transaction that writes a single record
+ is run:</p>
+
+ <p></p>
+
+ <codeinclude file="../../examples/et_demo.erl" tag="%live_trans" type="erl"></codeinclude>
+
+ <p>Now we run the <c>et_demo:live_trans/0</c> function:</p>
+
+ <p></p>
+
+ <code type="none"><![CDATA[
+ erl -pa ../examples
+ Erlang R13B03 (erts-5.7.4) [64-bit] [smp:4:4] [rq:4]
+ [async-threads:0] [kernel-poll:false]
+
+ Eshell V5.7.4 (abort with ^G)
+ 1> et_demo:live_trans().
+ {atomic,ok}]]></code>
+
+ <p>Please, explore the different filters in order to see how the traced
+ transaction can be seen from different point of views:</p>
+
+ <p></p>
+
+ <image file="live_trans.png">
+ <icaption>A real <c>Mnesia</c> transaction which writes one record</icaption>
+ </image>
+
+ </section>
+
+ <section>
+ <title>Erlang trace of Megaco startup</title>
+
+ <p>The <c>Event Tracer (ET)</c> tool was initially written in
+ order to demonstrate how messages where sent over the
+ <c>Megaco</c> protocol. This were back in the old days before the
+ standard bodies of <c>IETF</c> and <c>ITU</c> had approved
+ <c>Megaco</c> (also called <c>H.248</c>) as an international
+ standard.</p>
+
+ <p>In the <c>Megaco</c> application of Erlang/OTP, the code is
+ carefully instrumented with calls to <c>et:trace_me/5</c>. For
+ each call a detail level is given in order to enable dynamic
+ control of the trace level in a simple manner.</p>
+
+ <p>The <c>megaco_filter</c> module implements a customized filter
+ for <c>Megaco</c> messages. It does also make use of
+ <c>trace_global</c> combined with usage of the
+ <c>trace_pattern</c>:</p>
+
+ <p></p>
+
+ <code type="none"><![CDATA[
+ -module(megaco_filter).
+ -export([start/0]).
+
+ start() ->
+ Options =
+ [{event_order, event_ts},
+ {scale, 3},
+ {max_actors, infinity},
+ {trace_pattern, {megaco, max}},
+ {trace_global, true},
+ {dict_insert, {filter, megaco_filter}, fun filter/1},
+ {active_filter, megaco_filter},
+ {title, "Megaco tracer - Erlang/OTP"}],
+ et_viewer:start(Options).]]></code>
+
+ <p>First we start an Erlang node with a global <c>Collector</c>
+ and its <c>Viewer</c>.</p>
+
+ <p></p>
+
+ <code type="none"><![CDATA[
+ erl -sname observer
+ Erlang R13B03 (erts-5.7.4) [64-bit] [smp:4:4] [rq:4]
+ [async-threads:0] [kernel-poll:false]
+
+ Eshell V5.7.4 (abort with ^G)
+ (observer@falco)1> megaco_filter:start().
+ {ok,<0.48.0>}]]></code>
+
+ <p>Secondly we start another Erlang node which we connect the
+ observer node, before we start the application that we want to
+ trace. In this case we start a Media Gateway Controller that
+ listens for both TCP and UDP on the text and binary ports for
+ Megaco:</p>
+
+ <p></p>
+
+ <code type="none"><![CDATA[
+ erl -sname mgc -pa ../../megaco/examples/simple
+ Erlang R13B03 (erts-5.7.4) [64-bit] [smp:4:4] [rq:4]
+ [async-threads:0] [kernel-poll:false]
+
+ Eshell V5.7.4 (abort with ^G)
+ (mgc@falco)1> net:ping(observer@falco).
+ pong
+ (mgc@falco)2> megaco:start().
+ ok
+ (mgc@falco)3> megaco_simple_mgc:start().
+ {ok,[{ok,2944,
+ {megaco_receive_handle,{deviceName,"controller"},
+ megaco_pretty_text_encoder,[],megaco_tcp,dynamic}},
+ {ok,2944,
+ {megaco_receive_handle,{deviceName,"controller"},
+ megaco_pretty_text_encoder,[],megaco_udp,dynamic}},
+ {ok,2945,
+ {megaco_receive_handle,{deviceName,"controller"},
+ megaco_binary_encoder,[],megaco_tcp,dynamic}},
+ {ok,2945,
+ {megaco_receive_handle,{deviceName,"controller"},
+ megaco_binary_encoder,[],megaco_udp,dynamic}}]}]]></code>
+
+ <p>And finally we start an Erlang node for the Media Gateways and
+ connect to the observer node. Each Media Gateway connects to the
+ controller and sends an initial Service Change message. The
+ controller accepts the gateways and sends a reply to each one
+ using the same transport mechanism and message encoding according
+ to the preference of each gateway. That is all combinations of
+ TCP/IP transport, UDP/IP transport, text encoding and ASN.1 BER
+ encoding:</p>
+
+ <p></p>
+
+ <code type="none"><![CDATA[
+ Erlang R13B03 (erts-5.7.4) [64-bit] [smp:4:4] [rq:4]
+ [async-threads:0] [kernel-poll:false]
+
+ Eshell V5.7.4 (abort with ^G)
+ (mg@falco)1> net:ping(observer@falco).
+ pong
+ (mg@falco)2> megaco_simple_mg:start().
+ [{{deviceName,"gateway_tt"},
+ {error,{start_user,megaco_not_started}}},
+ {{deviceName,"gateway_tb"},
+ {error,{start_user,megaco_not_started}}},
+ {{deviceName,"gateway_ut"},
+ {error,{start_user,megaco_not_started}}},
+ {{deviceName,"gateway_ub"},
+ {error,{start_user,megaco_not_started}}}]
+ (mg@falco)3> megaco:start().
+ ok
+ (mg@falco)4> megaco_simple_mg:start().
+ [{{deviceName,"gateway_tt"},
+ {1,
+ {ok,[{'ActionReply',0,asn1_NOVALUE,asn1_NOVALUE,
+ [{serviceChangeReply,
+ {'ServiceChangeReply',
+ [{megaco_term_id,false,["root"]}],
+ {serviceChangeResParms,
+ {'ServiceChangeResParm',
+ {deviceName,"controller"},
+ asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE,
+ asn1_NOVALUE}}}}]}]}}},
+ {{deviceName,"gateway_tb"},
+ {1,
+ {ok,[{'ActionReply',0,asn1_NOVALUE,asn1_NOVALUE,
+ [{serviceChangeReply,
+ {'ServiceChangeReply',
+ [{megaco_term_id,false,["root"]}],
+ {serviceChangeResParms,
+ {'ServiceChangeResParm',
+ {deviceName,"controller"},
+ asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE,
+ asn1_NOVALUE}}}}]}]}}},
+ {{deviceName,"gateway_ut"},
+ {1,
+ {ok,[{'ActionReply',0,asn1_NOVALUE,asn1_NOVALUE,
+ [{serviceChangeReply,
+ {'ServiceChangeReply',
+ [{megaco_term_id,false,["root"]}],
+ {serviceChangeResParms,
+ {'ServiceChangeResParm',
+ {deviceName,"controller"},
+ asn1_NOVALUE,asn1_NOVALUE,asn1_NOVALUE,
+ asn1_NOVALUE}}}}]}]}}},
+ {{deviceName,"gateway_ub"},
+ {1,
+ {ok,[{'ActionReply',0,asn1_NOVALUE,asn1_NOVALUE,
+ [{serviceChangeReply,
+ {'ServiceChangeReply',
+ [{megaco_term_id,false,["root"]}],
+ {serviceChangeResParms,
+ {'ServiceChangeResParm',
+ {deviceName,"controller"},
+ asn1_NOVALUE,asn1_NOVALUE,
+ asn1_NOVALUE,...}}}}]}]}}}]]]></code>
+
+ <p>The <c>Megaco</c> adopted viewer looks like this, when we have clicked
+ on the <b>[gateway_tt]</b> actor name in order to only display the events
+ regarding that actor:</p>
+
+ <p></p>
+
+ <image file="megaco_tracer.png">
+ <icaption>The viewer adopted for Megaco</icaption>
+ </image>
+
+ <p>A pretty printed <c>Megaco</c> message looks like this:</p>
+
+ <p></p>
+
+ <image file="megaco_filter.png">
+ <icaption>A textual <c>Megaco</c> message</icaption>
+ </image>
+
+ <p>And the corresponding internal form for the same <c>Megaco</c> message
+ looks like this:</p>
+
+ <p></p>
+
+ <image file="megaco_collector.png">
+ <icaption>The internal form of a <c>Megaco</c> message</icaption>
+ </image>
+
+ </section>
+
+</chapter>
+
diff --git a/lib/et/doc/src/et_intro.xml b/lib/et/doc/src/et_intro.xml
index 8dfa678b11..0c5fb14d55 100644
--- a/lib/et/doc/src/et_intro.xml
+++ b/lib/et/doc/src/et_intro.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2002</year><year>2009</year>
+ <year>2002</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>Introduction</title>
@@ -31,65 +31,89 @@
<rev>%VSN%</rev>
<file>et_intro.xml</file>
</header>
- <p>The Event Tracer (ET) uses the built-in trace mechanism in Erlang
- and provides tools for collection and graphical viewing of trace
- data.</p>
- <p>The viewed trace data is normally collected from Erlang trace ports
- or files.</p>
+
+ <p>The <c>Event Tracer (ET)</c> uses the built-in trace mechanism in
+ Erlang and provides tools for collection and graphical viewing of
+ trace data.</p>
+
+ <p>The viewed trace data is normally collected from Erlang trace
+ ports or files.</p>
<section>
- <title>Scope and Purpose</title>
- <p>This manual describes the Event Tracer (ET) application, as a component
- of the Erlang/Open Telecom Platform development environment. It
- is assumed that the reader is familiar with the Erlang
- Development Environment, which is described in a separate User's
- Guide.</p>
+ <title>Scope and Purpose</title>'
+
+ <p>This manual describes the <c>Event Tracer (ET)</c> application,
+ as a component of the Erlang/Open Telecom Platform development
+ environment. It is assumed that the reader is familiar with the
+ Erlang Development Environment, which is described in a separate
+ User's Guide.</p>
</section>
<section>
<title>Prerequisites</title>
+
<p>The following prerequisites is required for understanding the
- material in the Event Tracer (ET) User's Guide:</p>
+ material in the <c>Event Tracer (ET)</c> User's Guide:</p>
+
<list type="bulleted">
<item>
- <p>familiarity with the Erlang system and Erlang programming in
- general and the especially the art of Erlang tracing.</p>
+ <p>familiarity with the Erlang system and Erlang programming
+ in general and the especially the art of Erlang tracing.</p>
</item>
</list>
- <p>The application requires Erlang/OTP release R7B or later.</p>
+
+ <p>The application requires Erlang/OTP release R13BB or later. If
+ you use the old <c>GS</c> based GUI it does suffice with R7B.</p>
+
</section>
<section>
<title>About This Manual</title>
- <p>In addition to this introductory chapter, the Megaco User's
- Guide contains the following chapters:</p>
+
+ <p>In addition to this introductory chapter, the <c>Event
+ Tracers</c> User's Guide contains the following chapters:</p>
+
<list type="bulleted">
<item>
- <p>Chapter 2: "Usage" describes the architecture
- and typical usage of the application.</p>
+ <p>Chapter 2: "Tutorial" provides a walk-through of the
+ various parts of the application. The tutorial is based on
+ <c>Jayson Vantuyl's</c> article
+ <c>http://souja.net/2009/04/making-sense-of-erlangs-event-tracer.html</c>.</p>
+ </item>
+
+ <item>
+ <p>Chapter 3: "Description" describes the architecture and typical
+ usage of the application.</p>
</item>
+
<item>
- <p>Chapter 3: "Examples" gives some usage examples</p>
+ <p>Chapter 4: "Advanced examples" gives some usage examples</p>
</item>
</list>
+
</section>
<section>
<title>Where to Find More Information</title>
+
<p>Refer to the following documentation for more information about
- Event Tracer (ET) and about the Erlang/OTP development system:</p>
+ <c>Event Tracer (ET)</c> and about the Erlang/OTP development system:</p>
+
<list type="bulleted">
<item>
<p>the Reference Manual of the <c>Event Tracer (ET)</c>.</p>
</item>
+
<item>
- <p>documentation of basic tracing in <c>erlang:trace/4</c> and
- <c>erlang:trace_pattern/3</c> and then the utilities derived from
- these: <c>dbg</c>, <c>observer</c> and <c>et</c>.</p>
+ <p>documentation of basic tracing in <c>erlang:trace/4</c> and
+ <c>erlang:trace_pattern/3</c> and then the utilities derived
+ from these: <c>dbg</c>, <c>observer</c>, <c>invisio</c> and
+ <c>et</c>.</p>
</item>
+
<item>
- <p>Concurrent Programming in Erlang, 2nd Edition (1996),
- Prentice-Hall, ISBN 0-13-508301-X.</p>
+ <p>Programming Erlang: Software for a Concurrent World by Joe
+ Armstrong; ISBN: 978-1-93435-600-5</p>
</item>
</list>
</section>
diff --git a/lib/et/doc/src/et_selector.xml b/lib/et/doc/src/et_selector.xml
index 59b1d3dea9..dd12166d85 100644
--- a/lib/et/doc/src/et_selector.xml
+++ b/lib/et/doc/src/et_selector.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2002</year><year>2009</year>
+ <year>2002</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>et_selector</title>
@@ -35,72 +35,112 @@
<description>
<p></p>
</description>
+
<funcs>
<func>
<name>make_pattern(RawPattern) -> TracePattern</name>
<fsummary>Makes a trace pattern suitable to feed change_pattern/1</fsummary>
+
<type>
<v>RawPattern = detail_level()</v>
<v>TracePattern = erlang_trace_pattern_match_spec()</v>
- <v>detail_level() = min | max | integer(X) when X =&lt; 0, X >= 100</v>
+ <v>detail_level() = min | max | integer(X) when X &gt;= 0, X =&lt; 100</v>
</type>
+
<desc>
<p>Makes a trace pattern suitable to feed change_pattern/1</p>
- <p>Min detail level deactivates tracing of calls to phone_home/4,5</p>
- <p>Max detail level activates tracing of all calls to phone_home/4,5</p>
+ <p>Min detail level deactivates tracing of calls to <c>et:trace_me/4,5</c></p>
+ <p>Max detail level activates tracing of all calls to <c>et:trace_me/4,5</c></p>
<p>integer(X) detail level activates tracing of all calls to
- phone_home/4,5 whose detail level argument is lesser than X.</p>
- <p>See also erlang:trace_pattern/2 for more info about its match_spec()</p>
+ <c>et:trace_me/4,5</c> whose detail level argument is lesser than
+ X.</p>
+ <p>See also <c>erlang:trace_pattern/2</c> for more info about its <c>match_spec()</c></p>
</desc>
</func>
+
<func>
<name>change_pattern(Pattern) -> ok</name>
+
<fsummary>Activates/deactivates tracing by changing the current trace pattern</fsummary>
+
<type>
<v>Pattern = detail_level() | empty_match_spec() | erlang_trace_pattern_match_spec()</v>
- <v>detail_level() = min | max | integer(X) when X =&lt;0, X >= 100</v>
+ <v>detail_level() = min | max | integer(X) when X &gt;= 0, X =&lt; 100</v>
<v>empty_match_spec() = [] </v>
</type>
+
<desc>
<p>Activates/deactivates tracing by changing the current trace pattern.</p>
- <p>Min detail level deactivates tracing of calls to phone_home/4,5</p>
- <p>Max detail level activates tracing of all calls to phone_home/4,5</p>
- <p>integer(X) detail level activates tracing of all calls to
- phone_home/4,5 whose detail level argument is lesser than X.</p>
- <p>An empty match spec deactivates tracing of calls to phone_home/4,5</p>
- <p>Other match specs activates tracing of calls to phone_home/4,5
- accordingly with erlang:trace_pattern/2.</p>
+ <p><c>min</c> detail level deactivates tracing of calls to <c>et:trace_me/4,5</c></p>
+ <p><c>max</c> detail level activates tracing of all calls to <c>et:trace_me/4,5</c></p>
+ <p><c>integer(X)</c> detail level activates tracing of all
+ calls to <c>et:trace_me/4,5</c> whose detail level argument is
+ lesser than <c>X</c>.</p>
+ <p>An empty match spec deactivates tracing of calls to <c>et:trace_me/4,5</c></p>
+ <p>Other match specs activates tracing of calls to
+ <c>et:trace_me/4,5</c> accordingly with
+ <c>erlang:trace_pattern/2</c>.</p>
</desc>
</func>
<func>
<name>parse_event(Mod, ValidTraceData) -> false | true | {true, Event}</name>
+
<fsummary>Transforms trace data and makes an event record out of it</fsummary>
+
<type>
<v>Mod = module_name() | undefined &lt;v>module_name() = atom() &lt;v>ValidTraceData = erlang_trace_data() | record(event)</v>
<v>erlang_trace_data() = {trace, Pid, Label, Info} | {trace, Pid, Label, Info, Extra} | {trace_ts, Pid, Label, Info, ReportedTS} | {trace_ts, Pid, Label, Info, Extra, ReportedTS} | {seq_trace, Label, Info} | {seq_trace, Label, Info, ReportedTS} | {drop, NumberOfDroppedItems}</v>
</type>
+
<desc>
<p>Transforms trace data and makes an event record out of it.</p>
- <p>See erlang:trace/3 for more info about the semantics of
- the trace data.</p>
- <p>An event record consists of the following fields:
- detail_level - Noise has a high level as opposed to essentials.
- trace_ts - Time when the trace was generated.
- Same as event_ts if omitted in trace data.
- event_ts - Time when the event record was created.
- from - From actor, such as sender of a message.
- to - To actor, such as receiver of message.
- label - Label intended to provide a brief event summary.
- contents - All nitty gritty details of the event.</p>
- <p>See et:phone_home/4 and et:phone_home/5 for details.</p>
- <p>Returns:
- {true, Event} - where Event is an #event{} record representing the
- trace data
- true - means that the trace data already is an event
- record and that it is valid as it is.
- No transformation is needed.
- false - means that the trace data is uninteresting and
- should be dropped</p>
+
+ <p>See <c>erlang:trace/3</c> for more info about the semantics of the
+ trace data.</p>
+
+ <p>An event record consists of the following fields:</p>
+ <taglist>
+ <tag><em>detail_level</em></tag>
+ <item><p>Noise has a high level as opposed to essentials.</p></item>
+
+
+ <tag><em>trace_ts</em></tag>
+ <item><p>Time when the trace was generated. Same as
+ event_ts if omitted in trace data.</p></item>
+
+ <tag><em>event_ts</em></tag>
+ <item><p>Time when the event record was created.</p></item>
+
+ <tag><em>from</em></tag>
+ <item><p>From actor, such as sender of a message.</p></item>
+
+ <tag><em>to</em></tag>
+ <item><p>To actor, such as receiver of message.</p></item>
+
+ <tag><em>label</em></tag>
+ <item><p>Label intended to provide a brief event summary.</p></item>
+
+ <tag><em>contents</em></tag>
+ <item><p>All nitty gritty details of the event.</p></item>
+ </taglist>
+
+ <p>See <c>et:trace_me/4</c>and <c>et:trace_me/5</c> for details.</p>
+
+ <p>Returns:</p>
+ <taglist>
+ <tag><em>{true, Event}</em></tag>
+ <item><p>where Event is an #event{} record representing the
+ trace data</p></item>
+
+ <tag><em>true</em></tag>
+ <item><p>means that the trace data already is an event
+ record and that it is valid as it is. No transformation is
+ needed.</p></item>
+
+ <tag><em>false</em></tag>
+ <item><p>means that the trace data is uninteresting and
+ should be dropped</p></item>
+ </taglist>
</desc>
</func>
</funcs>
diff --git a/lib/et/doc/src/et_tutorial.xmlsrc b/lib/et/doc/src/et_tutorial.xmlsrc
new file mode 100644
index 0000000000..c72234a587
--- /dev/null
+++ b/lib/et/doc/src/et_tutorial.xmlsrc
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>2009</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>Tutorial</title>
+ <prepared>H&aring;kan Mattsson</prepared>
+ <responsible>H&aring;kan Mattsson</responsible>
+ <docno></docno>
+ <approved>H&aring;kan Mattsson</approved>
+ <checked></checked>
+ <date></date>
+ <rev>%VSN%</rev>
+ </header>
+
+ <section>
+ <title>Visualizing Message Sequence Charts</title>
+
+ <p>The easiest way of using <c>ET</c>, is to just use it as a
+ graphical tool for displaying message sequence charts. In order to
+ do that you need to first start a <c>Viewer</c> (which by default
+ starts a <c>Collector</c>):</p>
+
+ <code type="none"><![CDATA[
+ {ok, ViewerPid} = et_viewer:start([{title,"Coffee Order"}]),
+ CollectorPid = et_viewer:get_collector_pid(ViewerPid).]]></code>
+
+ <marker id="report_event"></marker>
+ <p>Then you send events to the <c>Collector</c>
+ with the function <c>et_collector:report_event/6</c> like this:</p>
+
+ <code type="none"><![CDATA[
+ et_collector:report_event(CollectorPid,85,from,to,message,extra_stuff).]]></code>
+
+ <p>The <c>Viewer</c> will automatically pull events from the
+ <c>Collector</c> and display them on the screen.</p>
+
+ <p>The number (in this case 85) is an integer from 1 to 100 that
+ specifies the "detail level" of the message. The higher the
+ number, the more important it is. This provides a crude form of
+ priority filtering.</p>
+
+ <p>The <c>from</c>, <c>to</c>, and <c>message</c> parameters are
+ exactly what they sound like. <c>from</c> and <c>to</c> are
+ visualized in the <c>Viewer</c> as "lifelines", with the message
+ passing from one to the other. If <c>from</c> and <c>to</c> are
+ the same value, then it is displayed next to the lifeline as an
+ "action". The <c>extra_stuff </c>value is simply data that you can
+ attach that will be displayed when someone actually clicks on the
+ action or message in the <c>Viewer</c> window.</p>
+
+ <p>The module <c>et/examples/et_display_demo.erl</c> illustrates
+ how it can be used:</p>
+
+ <codeinclude file="../../examples/et_display_demo.erl" tag="%module" type="erl"></codeinclude>
+
+ <p>When you run the <c>et_display_demo:test().</c> function in the
+ example above, the <c>Viewer</c> window will look like this:</p>.
+
+ <p></p>
+
+ <image file="coffee_order.png">
+ <icaption>Screenshot of the <c>Viewer</c> window</icaption>
+ </image>
+
+ </section>
+
+ <section>
+ <title>Four Modules</title>
+
+ <p>The event tracer framework is made up of four modules:</p>
+
+ <list type="bulleted">
+ <item><p><c>et</c></p></item>
+ <item><p><c>et_collector</c></p></item>
+ <item><p><c>et_viewer</c></p></item>
+ <item><p><c>et_selector</c></p></item>
+ </list>
+
+ <p>In addition, you'll probably want to familiarize yourself with
+ the <c>dbg</c> module and possibly <c>seq_trace</c> module as
+ well.</p>
+ </section>
+
+ <section>
+ <title>The Event Tracer Interface</title>
+
+ <p>The <c>et</c> module is not like other modules. It contains a
+ function called <c>et:trace_me/5</c>. Which is a function that
+ does not do any useful stuff at all. Its sole purpose is to be a
+ function that is easy to trace. A call to it may be something
+ like:</p>
+
+ <code type="none"><![CDATA[
+ et:trace_me(85,from,to,message,extra_stuff).]]></code>
+
+ <p>The parameters to <c>et:trace_me/5</c> are the same as to
+ <seealso
+ marker="#report_event"><c>et_collector:report_event/6</c></seealso>
+ in the previous chapter. The big difference between the two is in
+ the semantics of the two functions. The second actually reports an
+ <c>Event</c> to the <c>Collector</c> while the first does nothing,
+ it just returns the atom <c>hopefully_traced</c>. In order to make
+ the parameters to <c>et:trace_me/5</c> turn up in the
+ <c>Collector</c>, tracing of that function must be activated and
+ the <c>Collector</c> must be registered as a <c>Tracer</c> of the
+ <c>Raw Trace Data</c>.</p>
+
+ <p>Erlang tracing is a seething pile of pain that involves
+ reasonably complex knowledge of clever ports, tracing return
+ formats, and specialized tracing <c>MatchSpecs</c> (which are
+ really their own special kind of hell). The tracing mechanism is
+ very powerful indeed, but it can be hard to grasp.</p>
+
+ <p>Luckily there is a simplified way to start tracing of
+ <c>et:trace_me/5</c> function calls. The idea is that you should
+ instrument your code with calls to <c>et:trace_me/5</c> in
+ strategic places where you have interesting information available
+ in your program. Then you just start the <c>Collector</c> with
+ global tracing enabled:</p>
+
+ <code type="none"><![CDATA[
+ et_viewer:start([{trace_global, true}, {trace_pattern, {et,max}}]).]]></code>
+
+ <p>This will start a <c>Collector</c>, a <c>Viewer</c> and also
+ start the tracing of <c>et:trace_me/5</c> function calls. The
+ <c>Raw Trace Data</c> is collected by the <c>Collector</c> and a
+ view of it is displayed on the screen by the <c>Viewer</c>. You
+ can define your own "views" of the data by implementing your own
+ <c>Filter</c> functions and register them in the
+ <c>Viewer</c>.</p>
+ </section>
+
+ <section>
+ <title>The Collector and Viewer</title>
+
+ <p>These two pieces work in concert. Basically, the
+ <c>Collector</c> receives <c>Raw Trace Data</c> and processes it
+ into <c>Events</c> in a <c>et</c> specific format (defined in
+ <c>et/include/et.hrl</c>). The <c>Viewer</c> interrogates the
+ <c>Collector</c> and displays an interactive representation of the
+ data.</p>
+
+ <p>You might wonder why these aren't just one module. The
+ <c>Collector</c> is a generic full-fledged framework that allows
+ processes to "subscribe" to the <c>Events</c> that it
+ collects. One <c>Collector</c> can serve several
+ <c>Viewers</c>. The typical case is that you have one
+ <c>Viewer</c> that visualizes <c>Events</c> in one flavor and
+ another <c>Viewer</c> that visualizes them in another flavor. If
+ you for example are tracing a text based protocol like <c>HTML</c>
+ (or <c>Megaco/H.248</c>) it would be useful to be able to display
+ the <c>Events</c> as plain text as well as the internal
+ representation of the message. The architecture does also allow
+ you to implement your own <c>Viewer</c> program as long as it
+ complies to the protocol between the <c>Collector/Viewer</c>
+ protocol. Currently two kinds of <c>Viewers</c> exists. That is
+ the old <c>GS</c> based one and the new based on
+ <c>wxWidgets</c>. But if you feel for it you may implement your
+ own <c>Viewer</c>, which for example could display the
+ <c>Events</c> as ASCII art or whatever you feel useful.</p>
+
+ <p>The <c>Viewer</c> will by default create a <c>Collector</c> for
+ you. With a few options and some configuration settings you can
+ start collecting <c>Events</c>.</p>
+
+ <p>The <c>Collector</c> API does also allow you to save the
+ collected <c>Events</c> to file and later load them in a later
+ session.</p>
+
+ </section>
+
+ <section>
+ <title>The Selector</title>
+
+ <p>This is perhaps the most central module in the entirety of the
+ <c>et</c> suite. The <c>Collector</c> needs "filters" to convert
+ the <c>Raw Trace Data</c> into "events" that it can display. The
+ <c>et_selector</c> module provides the default <c>Filter</c> and
+ some API calls to manage the <c>Trace Pattern</c>. The
+ <c>Selector</c> provides various functions that achieve the
+ following:</p>
+
+ <list type="bulleted">
+ <item><p>Convert <c>Raw Trace Data</c> into an appropriate
+ <c>Event</c></p></item>
+ <item><p>Magically notice traces of the <c>et:trace_me/5</c>
+ function and make appropriate <c>Events</c></p></item>
+ <item><p>Carefully prevent translating the <c>Raw Trace Data</c>
+ twice</p></item>
+ <item><p>Manage a <c>Trace Pattern</c></p></item>
+ </list>
+
+ <p>The <c>Trace Pattern</c> is basically a tuple of a
+ <c>module</c> and a <c>detail level</c> (either an integer or the
+ atom max for full detail). In most cases the <c>Trace Pattern</c>
+ <c>{et,max}</c> does suffice. But if you do not want any runtime
+ dependency of <c>et</c> you can implement your own
+ <c>trace_me/5</c> function in some module and refer to that module
+ in the <c>Trace Pattern</c>.</p>
+
+ <p>The specified module flows from your instantiation of the
+ <c>Viewer</c>, to the <c>Collector</c> that it automatically
+ creates, gets stashed in as the <c>Trace Pattern</c>, and
+ eventually goes down into the bowels of the <c>Selector</c>.</p>
+
+ <p>The module that you specify gets passed down (eventually) into
+ <c>Selector</c>'s default <c>Filter</c>. The format of the
+ <c>et:trace_me/5</c> function call is hardcoded in that
+ <c>Filter</c>.</p>
+
+ </section>
+
+ <section>
+ <title>How To Put It Together</title>
+
+ <p>The <c>Collector</c> automatically registers itself to listen
+ for trace <c>Events</c>, so all you have to do is enable them.</p>
+
+ <p>For those people who want to do general tracing, consult the
+ <c>dbg</c> module on how to trace whatever you're interested in
+ and let it work its magic. If you just want <c>et:trace_me/5</c>
+ to work, do the following:</p>
+
+ <list type="ordered">
+ <item><p>Create a <c>Collector</c></p></item>
+ <item><p>Create a <c>Viewer</c> (this can do step #1 for you)</p></item>
+ <item><p>Turn on and pare down debugging</p></item>
+ </list>
+
+ <p>The module <c>et/examples/et_trace_demo.erl</c> achieves this.</p>
+
+ <codeinclude file="../../examples/et_trace_demo.erl" tag="%module" type="erl"></codeinclude>
+
+ <p>Running through the above, the most important points are:</p>
+
+ <list type="bulleted">
+ <item><p>Turn on global tracing</p></item>
+ <item><p>Set a <c>Trace Pattern</c></p></item>
+ <item><p>Tell <c>dbg</c> to trace function Calls</p></item>
+ <item><p>Tell it specifically to trace the <c>et:trace_me/5</c> function</p></item>
+ </list>
+
+ <p>When you run the <c>et_trace_demo:test()</c> function above, the
+ <c>Viewer</c> window will look like this screenshot:</p>.
+
+ <p></p>
+
+ <image file="coffee_order.png">
+ <icaption>Screenshot of the <c>Viewer</c> window</icaption>
+ </image>
+
+ </section>
+
+</chapter>
diff --git a/lib/et/doc/src/et_viewer.xml b/lib/et/doc/src/et_viewer.xml
index a3e34ac06e..c16e5b8869 100644
--- a/lib/et/doc/src/et_viewer.xml
+++ b/lib/et/doc/src/et_viewer.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2002</year><year>2009</year>
+ <year>2002</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>et_viewer</title>
@@ -72,7 +72,7 @@
<fsummary>Start a sequence chart viewer for trace events (messages/actions)</fsummary>
<type>
<v>Options = [option() | collector_option()]</v>
- <v>option() = {parent_pid, extended_pid()} | {title, term()} | {detail_level, detail_level()} | {is_suspended, boolean()} | {scale, integer()} | {width, integer()} | {height, integer()} | {collector_pid, extended_pid()} | {event_order, event_order()} | {active_filter, atom()} | {max_events, extended_integer()} | {max_actors, extended_integer()} | {trace_pattern, et_collector_trace_pattern()} | {trace_port, et_collector_trace_port()} | {trace_global, et_collector_trace_global()} | {trace_client, et_collector_trace_client()} | {dict_insert, {filter, filter_name()}, event_filter_fun()} | {dict_insert, et_collector_dict_key(), et_collector_dict_val()} | {dict_delete, {filter, filter_name()}} | {dict_delete, et_collector_dict_key()} | {actors, actors()} | {first_event, first_key()} | {hide_unknown, boolean()} | {hide_actions, boolean()} | {display_mode, display_mode()}</v>
+ <v>option() = {parent_pid, extended_pid()} | {title, term()} | {detail_level, detail_level()} | {is_suspended, boolean()} | {scale, integer()} | {width, integer()} | {height, integer()} | {collector_pid, extended_pid()} | {event_order, event_order()} | {active_filter, atom()} | {max_actors, extended_integer()} | {trace_pattern, et_collector_trace_pattern()} | {trace_port, et_collector_trace_port()} | {trace_global, et_collector_trace_global()} | {trace_client, et_collector_trace_client()} | {dict_insert, {filter, filter_name()}, event_filter_fun()} | {dict_insert, et_collector_dict_key(), et_collector_dict_val()} | {dict_delete, {filter, filter_name()}} | {dict_delete, et_collector_dict_key()} | {actors, actors()} | {first_event, first_key()} | {hide_unknown, boolean()} | {hide_actions, boolean()} | {display_mode, display_mode()}</v>
<v>extended_pid() = pid() | undefined</v>
<v>detail_level() = min | max | integer(X) when X >=0, X =&lt; 100</v>
<v>event_order() = trace_ts | event_ts</v>
@@ -113,7 +113,6 @@
<item>collector_pid - undefined.</item>
<item>event_order - trace_ts.</item>
<item>active_filter - collector.</item>
- <item>max_events - 100.</item>
<item>max_actors - 5.</item>
<item>actors - ["UNKNOWN"].</item>
<item>first_event - first.</item>
diff --git a/lib/et/doc/src/files.mk b/lib/et/doc/src/files.mk
index 13d6cf4d74..41964de892 100644
--- a/lib/et/doc/src/files.mk
+++ b/lib/et/doc/src/files.mk
@@ -1,19 +1,19 @@
#-*-makefile-*- ; force emacs to enter makefile-mode
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 2002-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 2002-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
XML_APPLICATION_FILES = \
@@ -31,27 +31,23 @@ XML_PART_FILES = \
XML_CHAPTER_FILES = \
et_intro.xml \
- et_architecture.xml \
+ et_tutorial.xml \
+ et_desc.xml \
et_examples.xml \
notes.xml
BOOK_FILES = book.xml
-GIF_FILES = \
- book.gif \
- live_trans.gif \
- megaco_collector.gif \
- megaco_filter.gif \
- megaco_tracer.gif \
- note.gif \
- notes.gif \
- ref_man.gif \
- sim_trans.gif \
- sim_trans_contents_viewer_collector.gif \
- sim_trans_contents_viewer_mgr_actors.gif \
- sim_trans_mgr_actors.gif \
- sim_trans_move_actor.gif \
- sim_trans_write_lock.gif \
- user_guide.gif \
- warning.gif
+IMAGE_FILES = \
+ coffee_order.png \
+ live_trans.png \
+ megaco_collector.png \
+ megaco_filter.png \
+ megaco_tracer.png \
+ sim_trans.png \
+ sim_trans_contents_viewer_collector.png \
+ sim_trans_contents_viewer_mgr_actors.png \
+ sim_trans_mgr_actors.png \
+ sim_trans_move_actor.png \
+ sim_trans_write_lock.png
diff --git a/lib/et/doc/src/live_trans.gif b/lib/et/doc/src/live_trans.gif
deleted file mode 100644
index e2070f89e9..0000000000
--- a/lib/et/doc/src/live_trans.gif
+++ /dev/null
Binary files differ
diff --git a/lib/et/doc/src/live_trans.png b/lib/et/doc/src/live_trans.png
new file mode 100644
index 0000000000..94192697d2
--- /dev/null
+++ b/lib/et/doc/src/live_trans.png
Binary files differ
diff --git a/lib/et/doc/src/live_trans.ps b/lib/et/doc/src/live_trans.ps
deleted file mode 100644
index 8855f2694b..0000000000
--- a/lib/et/doc/src/live_trans.ps
+++ /dev/null
@@ -1,1559 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: GIMP PostScript file plugin V 1.12 by Peter Kirchgessner
-%%Title: /home/hakan/picts/live_trans.ps
-%%CreationDate: Mon Oct 14 17:29:47 2002
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%Pages: 1
-%%BoundingBox: 14 14 429 326
-%%EndComments
-%%BeginProlog
-% Use own dictionary to avoid conflicts
-10 dict begin
-%%EndProlog
-%%Page: 1 1
-% Translate for offset
-14.173228 14.173228 translate
-% Translate to begin of first scanline
-0.000000 310.991634 translate
-414.655512 -310.991634 scale
-% Image geometry
-496 372 8
-% Transformation matrix
-[ 496 0 0 372 0 0 ]
-% Strings to hold RGB-samples per scanline
-/rstr 496 string def
-/gstr 496 string def
-/bstr 496 string def
-{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
-true 3
-%%BeginData: 85402 ASCII Bytes
-colorimage
-!AQV60nB=U!.b->!<4eQ3Ih~>
-r'Z)9JH16$RfN@SJ,~>
-"DW"!C3+q+JH16$RfEJ1CAr:)~>
-r]0uYnc&U&JcC<$JcFp5!56GQrr<*\0faa~>
-r^?bdnc&U'JcC<$JcFp5!5?MRrrE$dJ,~>
-rcA)>nc&U&JcC<$JcFp5!56GQrrE%>J,~>
-s"OQTs8VWG!53s6J^o>%kLBRGa56ja!WY5@J,~>
-s$Qngs8VWC!5=$8J_#D'kLKXIa4gR]!WYVVJ,~>
-s)S5As8VWG!53s6J^o>%kLBRGa56ja!W[:_J,~>
-!]^8\n(n&XJ^o>%J^rr6!56A.!lY-oJ,~>
-!^m%gn(IcUJ_#D'J_'#8!5?G+!l=q*J,~>
-!cnAAn(n&XJ^o>%J^rr6!56A.!lY.\J,~>
-!\j]Tn(n&XT%*h[J^s#8!6'N>jOF7D`SL[8!&9!~>
-!^m%gn(IcUT%3qbdXg!7ecEqAdanHHQIZ&M`S(C1!(;>~>
-!cnAAn(n&XT%*h[J^s#8!6'N>jOF7D`SL[8!-<Y~>
-!<E/fh>k7Cec1lXeHNpfe\-<VrfmH5!J>a8eH(S\^t&ILpXKAZH[D":eHLSPe^]nKpXK:sHi;Iq
-UqN;K!57RPpRLp5s.'&Es.'#D!NZ9O~>
-!<E/fg&Sk@f)LlVedTEhf"Q]`R?<W_eq&Cgf)LTBf)Lm,ecWX;I@9*Gs+14$s,m',s+1."!MR5t
-ec<GIg@q$.gAdT>gAdT=g&\>VJ,~>
-!<E/fh>k7Cec1lXeHNpfe\-<VrfmH5!J>a8eH(S\^t&ILpXKAZH[D":eHLSPe^]nKpXK:sHi;Iq
-UqN;K!57RPpRLp5s.'&Es.'#D!NZ9O~>
-!<E/thZ',ChZ',Eh>k7dec0srMuM6.UjIaYec1m+eH*Y&gsm"UHaM=]Hc=O"Ph"<:He$Zc]uAM&
-K6tDas-39.!fMEEiRJ*aHe$Z2PkW]/K7!RI!jm<nS^d_RkMGs'p>5b<s5*^ErS@RV!.Y~>
-!<E/tf)M08f)M0:ec<G]df4^qNW.?-Tm_XZdf5I%dK.4ngsQeOJ[X!dIE'QpOj_[/J^Vu`[`-\p
-J\]_6On[9+NIAglimRjXs3gq0pX9(mrR(bUID29#!5@XIpR1a+rL*]:rL*W8!NlEQ~>
-!<E/thZ',ChZ',Eh>k7dec0srMuM6.UjIaYec1m+eH*Y&gsm"UHaM=]Hc=O"Ph"<:He$Zc]uAM&
-K6tDas-39.!fMEEiRJ*aHe$Z2PkW]/K7!RI!jm<nS^d_RkMGs'p>5b<s5*^ErS@RV!.Y~>
-!<E/uhYiuChYiuDh>k7dec'n!c.1?sH\:&&!J>aSeHLkqe^];!qpbk&He$Z!Hc=M9K6suU!J>aW
-eH(;Lo@3koHi2CpP`)*_!57RPpRLs6pRM3=!NZ9O~>
-!<E/uf);$8f);$9ec<G]df+Xub0n^lI>-D's+/tR"c8MmdXcuHdf4mudf4m;df4m*df4mVdf4mi
-df4mrdK,ViS^IMPkLTBqp=Au+rRM"P!.Y~>
-!<E/uhYiuChYiuDh>k7dec'n!c.1?sH\:&&!J>aSeHLkqe^];!qpbk&He$Z!Hc=M9K6suU!J>aW
-eH(;Lo@3koHi2CpP`)*_!57RPpRLs6pRM3=!NZ9O~>
-!<E/uhY`oDhY`oCh>k7deL>itHaM>BH\6t$eVf@!K6suUe]!GnK='1Z`J](iK>#ffHe$*"H[C[i
-r7(eCrd,^*Mi4Zp`KY^rMoF5sXG_FPMp9ekMgL)`e^]S9XGd&-"MK/qeXZVc#gJ!Ke^];!eYN1k
-s2>D)H\8]UeVf?eMq*H,qpk_)*PI)P[+3-[H[C[ie^]S9]n:[=["E_4e^_WsH\8^)eHDChK6qt?
-ec1O<["F:]e^]S9XGbW1MgLA`rm_pgMgKf/c.0dkH\8]Ue]!GnH\9#^`J](iK>%*2$\NfVeVf@!
-K6suUSGmj=c)chMMlc['s,.5tK6suUeZ=[UMlcp.)2!:deUr5!eVf@!K6suUeUr5!c$QPB]mIGa
-eH!;GhY3Q5hYE]>h>s\XJ,~>
-!<E/uf)1s9f)1s8ec<G]dOBTuIBq;<JUrO'dZ'6tKn6PXd__,pKsK.T_NBCtKsoE\J^VQ#JUNNl
-r6bS=rd>j)NK'co`fYh#NP<ihY).RTM9=8`OaVqhdaF,7V2bH%"M0#md[C)_#g.^LdaE\td\6Yg
-s2#2,I>+uTdZ'6_NREB/qpPM(*P-rUZI6aTJUNNldaF,7[Y9:8[Y9:<daH!pI>,!+dKH+lJUN+E
-df5:;[Xj:TdaF,7V2`p+M1(5`rmD^fM1'f/b0n.hI>+uTd__,tI>,,X_NBCtKspg*s+13us,@2n
-Kn6PXRJqU<b-$SLM6?U$s,@AsKn6PXd]SFTM6?j+s+13us+13us,@Q#Kn6PXdXcttb(6S@[XG`Y
-dK%#Ef(YU*f(ka3ecDoRJ,~>
-!<E/uhY`oDhY`oCh>k7deL>itHaM>BH\6t$eVf@!K6suUe]!GnK='1Z`J](iK>#ffHe$*"H[C[i
-r7(eCrd,^*Mi4Zp`KY^rMoF5sXG_FPMp9ekMgL)`e^]S9XGd&-"MK/qeXZVc#gJ!Ke^];!eYN1k
-s2>D)H\8]UeVf?eMq*H,qpk_)*PI)P[+3-[H[C[ie^]S9]n:[=["E_4e^_WsH\8^)eHDChK6qt?
-ec1O<["F:]e^]S9XGbW1MgLA`rm_pgMgKf/c.0dkH\8]Ue]!GnH\9#^`J](iK>%*2$\NfVeVf@!
-K6suUSGmj=c)chMMlc['s,.5tK6suUeZ=[UMlcp.)2!:deUr5!eVf@!K6suUeUr5!c$QPB]mIGa
-eH!;GhY3Q5hYE]>h>s\XJ,~>
-!<E/teb>U4eH!;[bpe"0H^)dNP_4V5c%CA$S9on5`IifVP^CBoMgMhE[(X_:Hd07*]sN-Er66G)
-H[EHNK6rNP]r\oSH]-.EH],8<UrC<*K>!Lr`Qa$^Mkp<r,+O#!c,G$V^!21Vc-:lfc,G$V]u>VV
-]p*l_c%CA$Us4gMqopL@H]+D@K?_*2]sN-Ec-:lfMk#-@Mk#-Hc,G<f]p*l_c(o]^]mG,$bqF]r
-Pa$NZc-:lfMkmG$PeE<.XNdPfMmTje`PmI^]p*l_c&6qU]sPJtMgMhE[(Z:['n^kXc%CA$S9on5
-`HusFXF$2FP^BM,bpe9lMk#-Hc)c8V]p*lFc-:lfc-:lfc-:lfMk#-Hc-:lfc'4.2c,G%"T$78K
-kLBR&q:,J8o[Wi/qpb_K!.Y~>
-!<E/tdeB1.dK%#Yc7+14I?i*SR>$@?c@LD#Tm_X?b(58XQ$pZtM1)hH[_C%<J^2!4^:&HHr6?M+
-JUPD\JUNBO^952YI>Q7GI>P8<WlE24Kt<Ot`m0-`M5C0r,,'G)cGkE`_Tm^`cH^ulcGkE`_T%.\
-\s7]`c@LD#V9XpSqp$R?I>OYGL!IE8^:&HHcH^uhNM1cKNM1cScH:]l\s7]`cCoZ[^4Ck1c7a`s
-Od1?[cH^uhM5@5#Q+iN3Wm7GhM6aRi`l`jd\s7]`cA?tX^:(c$M1)hH[_DR_s+13q&V5@eTm_X?
-`drQTWdU/HQ$o\-c7+<mM4o?OcDl;X^6O,HcH^ulcH^ulcH^uhM4o?OcH^ulcB4+3cGk:+T$@>M
-kL'?uq9f82o[<W)qpGMJ!.Y~>
-!<E/teb>U4eH!;[bpe"0H^)dNP_4V5c%CA$S9on5`IifVP^CBoMgMhE[(X_:Hd07*]sN-Er66G)
-H[EHNK6rNP]r\oSH]-.EH],8<UrC<*K>!Lr`Qa$^Mkp<r,+O#!c,G$V^!21Vc-:lfc,G$V]u>VV
-]p*l_c%CA$Us4gMqopL@H]+D@K?_*2]sN-Ec-:lfMk#-@Mk#-Hc,G<f]p*l_c(o]^]mG,$bqF]r
-Pa$NZc-:lfMkmG$PeE<.XNdPfMmTje`PmI^]p*l_c&6qU]sPJtMgMhE[(Z:['n^kXc%CA$S9on5
-`HusFXF$2FP^BM,bpe9lMk#-Hc)c8V]p*lFc-:lfc-:lfc-:lfMk#-Hc-:lfc'4.2c,G%"T$78K
-kLBR&q:,J8o[Wi/qpb_K!.Y~>
-!<E/sebPa5eH!;[boM/,P^CZ5["F"Uc%CA^c$Of^XF$J^XF%%nMgLu-rlkIrHiD7l`P$nVqoo:s
-Hd0ffHi;1o`P$nVc%CA^rQPYMH^r?^H`YJEHi)%gP^EDS(k[1[c%CAfc%CAfc%CAfXF$J^XF%%n
-K7!=:"bV0@c$Og:boXj;K7hFnK6tS^H[E`VH[F#=H^r?^H`YJEHc=6^Hhbi$K6tk^H\9SfK6tkf
-K6tS^`I!6^K6tT9bmUV"SB\-^XNcZMSA"pH",hMr^%]bdK6tkfK6tS^H[F#^K6tjqHc=7KH\;+<
-,_LH_c$Of^K6tS^`I!6^c%CAfc%CAfc%CA^c$Of^c%CAEHbKF'!IL'&blGH?eGu-8eGu-3ebbm6
-eH)`OJ,~>
-!<E/sdeT=/dK%#Yc5h>0Ob(Z3ZA""Xc@LD`c@LPlY'm"dY'mIuM1(r3rm(OprltV_^4D"8cMrIq
-c2rQFb5TZk_S1STc@p\`rQYbQIA+fdIBLkHIEMK5!L8*4cMrIqcMrIqcMrIqcMrG'cE;Shb-$/q
-c@LDdpW`qnIE'Q`Jc<q9_S1STcH^uhb0GQdb0GQhcE;Shb-$/qc@p\hc@LQAc5(tZb/Sj\cH^uh
-b0Gil`m2SPM9^g'_YqafY'm"dY'mIuM1(r3rltV&I@\7LcMrIqc4PVU`m0-dcH^ulcA?thcGk9h
-ps(.9IE'Q`J^0+#`m2SPM9aCtJ^2PlJ^2PlIE'Q`J^2PlJZaF<rltOmQ(H8$^?<oERJG82RInr)
-RJYD5XoNt~>
-!<E/sebPa5eH!;[boM/,P^CZ5["F"Uc%CA^c$Of^XF$J^XF%%nMgLu-rlkIrHiD7l`P$nVqoo:s
-Hd0ffHi;1o`P$nVc%CA^rQPYMH^r?^H`YJEHi)%gP^EDS(k[1[c%CAfc%CAfc%CAfXF$J^XF%%n
-K7!=:"bV0@c$Og:boXj;K7hFnK6tS^H[E`VH[F#=H^r?^H`YJEHc=6^Hhbi$K6tk^H\9SfK6tkf
-K6tS^`I!6^K6tT9bmUV"SB\-^XNcZMSA"pH",hMr^%]bdK6tkfK6tS^H[F#^K6tjqHc=7KH\;+<
-,_LH_c$Of^K6tS^`I!6^c%CAfc%CAfc%CA^c$Of^c%CAEHbKF'!IL'&blGH?eGu-8eGu-3ebbm6
-eH)`OJ,~>
-!<E/rebbm6eH!;[bn>B!XF$aic%CYnc%CAfc%CAfV#5QOUs6lCH[C[ac%CAf]n:rqH\;4?&;,>S
-c%CAfc+Sa^MgL*$H[G\8!2TO>"/O1oHi)%gP^EDS%tf5Rc%CAfc%CAfc%CAfV#5QAUs4O=p<=M.
-Hd0ffHd06VK8Y)/c-:lfc-:lfc-:lfc(t8a#GfUkHd0ffHhbhpK6tkfH[F#^K6tkfH[Gb:s*Fgl
-H[G\8!2TO>%]%@gP^@b8^!4N\H[C[aq99J'Hd0ffHd0ffHd0ffHd-narltIiprs(sHd0ffHd-na
-rltIis3271Hd0ffHd0ffHd0ffHd0ffH\6[arlkIjPb-,"^&6C\^%n/u^%TtVSGC\8SFtG.SG^n<
-X8mb~>
-!<E/rdefI0dK%#Yc4YQ%Y'm<ub(YPpc@LPlc@LPlV>P`RV9ZrCI=7*hc@LPl\qP]pI>.RDs+13q
-s+13q#eG_@NI?N+I=;%=!2]UA"/X:oJc!^nQ$rYWs+13qs+13qs+13qs+(3rV>P`DV9XXCp<N\h
-s3CXq'[F:DJW5)3cH^ulcH^ulcH^ulcDCGe#Go^oIEp,hJb[OjJcF$qIK.UmJcF!rJUROCs*Xso
-I=;%=!2]UA%].IfQ$n(?^<XT\I=7*hq9K"ks3CXqs3CXqs3CXq!mZ@Frm(Olps/njs3CXq!mZ@F
-rm(Ols3CXqs3CXqs3CXqs3CXqs3:auI>NNprltOmQ(H8$^AQCZ](q`o](XPPRJG82RJ##(RJbJ6
-XoNt~>
-!<E/rebbm6eH!;[bn>B!XF$aic%CYnc%CAfc%CAfV#5QOUs6lCH[C[ac%CAf]n:rqH\;4?&;,>S
-c%CAfc+Sa^MgL*$H[G\8!2TO>"/O1oHi)%gP^EDS%tf5Rc%CAfc%CAfc%CAfV#5QAUs4O=p<=M.
-Hd0ffHd06VK8Y)/c-:lfc-:lfc-:lfc(t8a#GfUkHd0ffHhbhpK6tkfH[F#^K6tkfH[Gb:s*Fgl
-H[G\8!2TO>%]%@gP^@b8^!4N\H[C[aq99J'Hd0ffHd0ffHd0ffHd-narltIiprs(sHd0ffHd-na
-rltIis3271Hd0ffHd0ffHd0ffHd0ffH\6[arlkIjPb-,"^&6C\^%n/u^%TtVSGC\8SFtG.SG^n<
-X8mb~>
-!<E/qebu$7eH!;[bnPN#`Hurrc%CYnc%CAfc%CAfXF$K6bmhXfH\9RqHd.Iqc-:lnqoo_*Hd0ff
-Hd0fnHd0ffK?]$q^&?1WXF$K8blNHDqoonPHc=7SK6tkfK6tkfK6tkfK6tkEH^t#Y!J>amboD@_
-c-:lfc&6qnc%CYnc%CAfc%CAfc%CAfXF$K8blr`H`Q`aVprsS,Hd0NVK?_YnHd0ffHc=7KH\9Rq
-HbKC&!j$a=qTT,]UjIanblbq\H\;.='n^kXc%CAfc%CAfc%CAfK6tS^`I!74bpe9lc-:lfc%CA^
-c,G$^c-:lfc-:lfc-:lfc-:lfc-:lf[!S%^c,G%"T$78Kr71P3p=0/5q:,J8p=8o-rRCqM!.Y~>
-!<E/qdf#U1dK%#Yc4k]'`dN9#c@pttc@LPlc@LPlY'm#?c4.deI>,stJ^07+b0G]pqp,4ms3CXq
-s3:q1J]c8lL!GC#^AZ=YY'm#AcMrImc5*+%`m2k\J^2PlJ^2PlJ^2PlJ^1EHU&<49JbIChJcF$q
-JJQOjJ]c8lL!ItpJ^2PlJ^2PlJ^1EHU&<1>JUP\`JV!UAs+(m0b'euhc@LPlcA?thcGk9hc@p\\
-rQYJIIA-M_"3.$_L&T@"`h@g7q9K"ks3CXqs3CXqs3CXq#L80S`m2SPM>5BrJcF$qJKrHsIE'RP
-I>Q7pJUu+lJUu+lJUu+lJUu+lJUt7XQ-R[pIA*7X!5ABZpR1a'!1EZ2!1EQ/pR2!.!NlEQ~>
-!<E/qebu$7eH!;[bnPN#`Hurrc%CYnc%CAfc%CAfXF$K6bmhXfH\9RqHd.Iqc-:lnqoo_*Hd0ff
-Hd0fnHd0ffK?]$q^&?1WXF$K8blNHDqoonPHc=7SK6tkfK6tkfK6tkfK6tkEH^t#Y!J>amboD@_
-c-:lfc&6qnc%CYnc%CAfc%CAfc%CAfXF$K8blr`H`Q`aVprsS,Hd0NVK?_YnHd0ffHc=7KH\9Rq
-HbKC&!j$a=qTT,]UjIanblbq\H\;.='n^kXc%CAfc%CAfc%CAfK6tS^`I!74bpe9lc-:lfc%CA^
-c,G$^c-:lfc-:lfc-:lfc-:lfc-:lf[!S%^c,G%"T$78Kr71P3p=0/5q:,J8p=8o-rRCqM!.Y~>
-!<E/pec208eH!;[bpn(9c&6qMc%CYnc%CAfc%CAfc%CA=[&gXZUpRhBH]-.$Hd.IqXK6bq^&6+s
-K6suMK6tkfMgMP,H[EH-H\8E5XMrG:H_e$M[*=5Mqop.pHaM&BK6tkfK6tkfK6tkfK6suEK6sE$
-XL-6)HiD7jMhCoO-\Hcjc%CAfMgMP,H[EHNK6tkfK6tkfK6tkfK6sE$XL-6:H^'bAHhbi=K6t;-
-H_ep2K6tkfXF$2FP^BLVXF#T$]r]2tK6sE$XL-6J[(WhnMp8')]sN-Eq99Y,Hd0ffHd0ffHd0ff
-Hd/X=PeE<.XSC$hK6tkfK6tkEH^)4.H`YK:K6tkfK6tkfK6tkfK6tkfK6tk-HaM&)HbH#q!58<\
-pRLs-!1`l8!1`c5rLEo<rLEi:!NZ9O~>
-!<E/pcMs1*c2bTUasqh5b)(PLb(YPlb(5,db(5,d`eAi;[]ZpYTsDD<I>Q*tJ]`gtWiCJq^AQ+q
-M1)hPJUttdM1)D(I=8i0I>+i4Wkuc0IAOBTZH@`LqoTqjIBL`8JUttdJUttdJUttdM1)hLKmff+
-Y-Q3$Jc<glM>PHqJcEmmJK`0mIB';qID3jTJ]c,dJ]c,dJ]budIAOBTZHAG\Q'$KGpr`Vf/\[p,
-TutN/J]c-8I?hC/IAP)dI>+i4Wkuc0IAOBTZHAlH^9W0Db+Z,[email protected]*b5[%mb5[%mb5[%mb5["t
-b,TlT\s7]?pr`Vfs2t@m,Kd$7Q+E6/V96r3J]c,dJ]c,dJ]c,dJ]c,dJ]a7+Y0*nq[[tVA^AQ:N
-Q1iK'Q2/]*Q1iN%Q2f/.Q2Su/XoNt~>
-!<E/pec208eH!;[bpn(9c&6qMc%CYnc%CAfc%CAfc%CA=[&gXZUpRhBH]-.$Hd.IqXK6bq^&6+s
-K6suMK6tkfMgMP,H[EH-H\8E5XMrG:H_e$M[*=5Mqop.pHaM&BK6tkfK6tkfK6tkfK6suEK6sE$
-XL-6)HiD7jMhCoO-\Hcjc%CAfMgMP,H[EHNK6tkfK6tkfK6tkfK6sE$XL-6:H^'bAHhbi=K6t;-
-H_ep2K6tkfXF$2FP^BLVXF#T$]r]2tK6sE$XL-6J[(WhnMp8')]sN-Eq99Y,Hd0ffHd0ffHd0ff
-Hd/X=PeE<.XSC$hK6tkfK6tkEH^)4.H`YK:K6tkfK6tkfK6tkfK6tkfK6tk-HaM&)HbH#q!58<\
-pRLs-!1`l8!1`c5rLEo<rLEi:!NZ9O~>
-!<E/feH!;[bpn(9c+U4'c%CYnc%CAfc%CAfc,GooH\8EEP_4=0Pf:n"Hd/pMH^pmYSG^VR["E_=
-K6tkf["E^qUjJWVXG_FPMoEr[P^@b0XNcBEqT]%us32C5Hd0ffHd0ffHd0gBK6t;NP^@b0XNcBE
-rlkIrHi)&8K6tkfK6tkMK6s,aH^r?5Hd0ffHd0ffHd0gSP^@b0XNe_BK=$8Xprrekrd+X8rlkIr
-HiD7mXFkkPXT$H_XG_FPMoEr[P^@b0XNcu^H[D!rc'3j-H^)MFbnPeWc-:lfc-:lfc-:lfc-<>B
-H\8Eobm]5Oc-:lfc-<>BH\8F!bnu([c-:lfc-:lfc-:lfc-:lfc,G<f`J]YFblGHTeH!;YS,g7r
-eb>U,ec20<ec20;eH)`OJ,~>
-!<E/fc2bTUasqh5b.=Umb(YPlb(5,db(5,db/0EpI>+iHQ%=@7Q+kClJ]bETI@['[RJb2LZ@RS<
-JUttd[Y9.#Tm`?OWel.PM8%-LQ%=@;Y0)<HqTAhts2t@ms2t@ms2t@ms2kbUJUtDLQ%=@;Y0)<H
-rlY7lqo\qis2t@m+j.6II@['[REC)3b0#9db0#9db0%SdJUN6Tb/0!dY(;0!aom9DI=[gcb5[%l
-aonPpI>+^#ar7::I=6sdb/0EpI>+iHQ%=@7Q+kD+JUN*7^A5qOJcEmmJcEmmJcEmmJcEjqV1j>O
-WqX[9JcEmmJcEjqV1j>OWrC0@JcEmmJcEmmJcEmmJcEmmJHj9:JUth#NLe2l^AQ7V[eZ0g[eA#@
-Q1`H&Q2T#.Q2Jo.XoNt~>
-!<E/feH!;[bpn(9c+U4'c%CYnc%CAfc%CAfc,GooH\8EEP_4=0Pf:n"Hd/pMH^pmYSG^VR["E_=
-K6tkf["E^qUjJWVXG_FPMoEr[P^@b0XNcBEqT]%us32C5Hd0ffHd0ffHd0gBK6t;NP^@b0XNcBE
-rlkIrHi)&8K6tkfK6tkMK6s,aH^r?5Hd0ffHd0ffHd0gSP^@b0XNe_BK=$8Xprrekrd+X8rlkIr
-HiD7mXFkkPXT$H_XG_FPMoEr[P^@b0XNcu^H[D!rc'3j-H^)MFbnPeWc-:lfc-:lfc-:lfc-<>B
-H\8Eobm]5Oc-:lfc-<>BH\8F!bnu([c-:lfc-:lfc-:lfc-:lfc,G<f`J]YFblGHTeH!;YS,g7r
-eb>U,ec20<ec20;eH)`OJ,~>
-!<E/feH!:YblYk:XL$1JHNLm5Hdg79HN:bEc2)be^"^d5XFnK_blGGqeH)`OJ,~>
-!<E/fc2bSSao]G2V6e>@I0.!2J^_d<I/pkDb5-Md]%b@/We&$XaoK/oc2k'JJ,~>
-!<E/feH!:YblYk:XL$1JHNLm5Hdg79HN:bEc2)be^"^d5XFnK_blGGqeH)`OJ,~>
-!<E/fblGGP`<!ZJX2P*lH\TK?UqN;;!56=q!NZ9O~>
-!<E/faoK/N`W<fIX2b0jL;j7f^7<1C^;S.pXoNt~>
-!<E/fblGGP`<!ZJX2P*lH\TK?UqN;;!56=q!NZ9O~>
-!<E/fblGG.`QQ7#XF\?_`;mTiblOmGJ,~>
-!<E/faoK/,`llC%Y(=Tb`W3`kaoSXFJ,~>
-!<E/fblGG.`QQ7#XF\?_`;mTiblOmGJ,~>
-!<E/fblGG.`IZ!Z`TP2?]u8.rX8mb~>
-!<E/faoK/,`du-\`ok>A^;S.pXoNt~>
-!<E/fblGG.`IZ!Z`TP2?]u8.rX8mb~>
-!!%S&JV/N+PCii8J,~>
-!!%S$JUrB'PCW]6J,~>
-!!%S&JV/N+PCii8J,~>
-!<E0!joD3.s+13$s.0/nV#TT>]`<Q~>
-!<E0!joD*+s+13$s.0/nU&X9;\c@6~>
-!<E0!joD3.s+13$s.0/nV#TT>]`<Q~>
-!<E0!joD3.s+13$s.95pK;AP0k.LbF~>
-!<E0!joD*+s+13$s.95pJYE,+k.1PC~>
-!<E0!joD3.s+13$s.95pK;AP0k.LbF~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tOgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tOgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tOgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tOgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tOgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tOgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tOgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV@Ys8(:A!!:[N!:A>:!<(IH!7TKs!;Y1F!!:[N!:eV>!9Vi-!!^sR!7fU"!9Vi3!<1OK
-!;Y1F!.i[OebI\pK*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IF!!:jS!:AM?!<(XM!7T[#!;Y@K!!:jS!:eeC!9W#2!!_-W!8?-,!9W#8!<1^P
-!;Y@K!.ijTgA'D%JH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:A!!:[N!:A>:!<(IH!7TKs!;Y1F!!:[N!:eV>!9Vi-!!^sR!7fU"!9Vi3!<1OK
-!;Y1F!.i[OebI\pK*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!;b7G!:A>:!<(IJ!7KEt!<:UL!;b7G!!:[N!:eV>!9Vi3!;b7G!<:UL!9Vi3
-!<1OK!;Y1F!.i[OebI\pK*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IL!;bFL!:AM?!<(XO!7KU$!<:dQ!;bFL!!:jS!:eeC!9W#8!;bFL!<:dQ!9W#8
-!<1^P!;Y@K!.ijTgA'D%JH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:G!;b7G!:A>:!<(IJ!7KEt!<:UL!;b7G!!:[N!:eV>!9Vi3!;b7G!<:UL!9Vi3
-!<1OK!;Y1F!.i[OebI\pK*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<:UL!!LgP!7fWu!<:UL!<:UL!<:UL!<:UJ!<:UL
-!!:[N!;+hA!;k=F!<:UL!!LgP!7fWu!<1OI!<:UJ!<:UJ!<:UL!!:[N!;+hA!<(IJ!!CaO!7h#J
-s4.&Js4.,L!n@8No[WsArmh#Ks4.&Js4.,L"k<SQeGoT#eUc9Mec17*V#TT>]`<Q~>
-!<E0!joV7Vs8(IL!<(XO!!M!U!8?0*!:nkD!<:dQ!!M!U!8?0*!<:dQ!<:dQ!<:dQ!<:dO!<:dQ
-!!:jS!;,"F!;kLK!<:dQ!!M!U!8?0*!<1^N!<:dO!<:dO!<:dQ!!:jS!;,"F!<(XO!!CpT!8@AO
-s4[DOs4[JQ!nmVSo\0<Frn@APs4[DOs4[JQ"kiqVg&M,(g4@uWgAc^-U&X9;\c@6~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<:UL!!LgP!7fWu!<:UL!<:UL!<:UL!<:UJ!<:UL
-!!:[N!;+hA!;k=F!<:UL!!LgP!7fWu!<1OI!<:UJ!<:UJ!<:UL!!:[N!;+hA!<(IJ!!CaO!7h#J
-s4.&Js4.,L!n@8No[WsArmh#Ks4.&Js4.,L"k<SQeGoT#eUc9Mec17*V#TT>]`<Q~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@s4.,L*7Y#heGoU"eGoU"!!(R"!!(R"!!(OL
-!7fU"!7guIo[WsAr71fIs4.,L+OpGleGoU"!!(R"!!(OL!7fU"!7fU"!7fU"!7fU"!7guIo[WsA
-rRLoJ&(LX[e^XX"e^XX"e^XX"ebfF>ec,XKec,UVeGoU"eGoU"!!(RK!!:[N!.i[Oec42"K*A(N
-k2s>WJ,~>
-!<E0!joV7Vs8(IL!<(XO!"%?Z!87DQg=cN,o@j3Es4[JQ*81Amg&M-,g&M-,!!(a,!!(a,!!(^Q
-!8?-,!8@>No\0<Fr7_/Ns4[JQ+PHeqg&M-,!!(a,!!(^Q!8?-,!8?-,!8?-,!8?-,!8@>No\0<F
-rS%8O&)%!`g=cN,g=cN,g=cN,gACsCgA_0PgA_-[g&M-,g&M-,!!(aP!!:jS!.ijTgAfn,JH_bI
-k2s5TJ,~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@s4.,L*7Y#heGoU"eGoU"!!(R"!!(R"!!(OL
-!7fU"!7guIo[WsAr71fIs4.,L+OpGleGoU"!!(R"!!(OL!7fU"!7fU"!7fU"!7fU"!7guIo[WsA
-rRLoJ&(LX[e^XX"e^XX"e^XX"ebfF>ec,XKec,UVeGoU"eGoU"!!(RK!!:[N!.i[Oec42"K*A(N
-k2s>WJ,~>
-!<E0!joV@Ys8(:D!"@BX!7_&LeGoU"eGoU@ec,XLec,UheGoU"!!(R"!!(R"!!(OL!7_&Le^XX"
-e^XX"ec#R>ec,XIec,XLec,U[eGoU"!!(OL!7fU"!7_&Lqpk]Hs4.,Ls4.,L!7h&Ko%!X<'%Hs^
-eGoU"eGoU"eGoU"eGoU"rW)N>q>_)W!!(R"!!(OL!7_&Le^XX"J^o>%s4..%"f21\k.LbF~>
-!<E0!joV7Vs8(II!"@Q]!87DQg&M-,g&M-EgA_0QgA_-mg&M-,!!(a,!!(a,!!(^Q!87DQg=cN,
-g=cN,gAV*CgA_0NgA_0QgA_-`g&M-,!!(^Q!8?-,!87DQqqD&Ms4[JQs4[JQ!8@DPo%O!A'&!<c
-g&M-,g&M-,g&M-,g&M-,rW)NCq>_)\!!(a,!!(^Q!87DQg=cN,J_G\/s4[L("ektYk.1PC~>
-!<E0!joV@Ys8(:D!"@BX!7_&LeGoU"eGoU@ec,XLec,UheGoU"!!(R"!!(R"!!(OL!7_&Le^XX"
-e^XX"ec#R>ec,XIec,XLec,U[eGoU"!!(OL!7fU"!7_&Lqpk]Hs4.,Ls4.,L!7h&Ko%!X<'%Hs^
-eGoU"eGoU"eGoU"eGoU"rW)N>q>_)W!!(R"!!(OL!7_&Le^XX"J^o>%s4..%"f21\k.LbF~>
-!<E0!joV@Ys8(:G!<(IJ!!CaO!7grHo$n!Ge^XZMeGoU"qZ-ZHrr<;S!!(OL!7fWs!!:[N!:eV>
-!;tCI!<:UL!!^sR!7_&Leb]=JeGoUHec,XLec,XLec,UNeGoU>ec,XJec,UTeGoU"eGoU"eb]=J
-eGoU>ec,XKec,ULeb]=QeGoU"!!(R"!!%T#J^seNs+:KNs5rIW!.Y~>
-!<E0!joV7Vs8(IL!<(XO!!CpT!8@;Mo%F?Lg=cP\g&M-,qZ-ZMrr<;X!!(^Q!8?0(!!:jS!:eeC
-!;tRN!<:dQ!!_-W!87DQgA:jOg&M-MgA_0QgA_0QgA_-Sg&M-CgA_0OgA_-Yg&M-,g&M-,gA:jO
-g&M-CgA_0PgA_-QgA:jVg&M-,!!(a,!!%T(J_L.Xs+(?Is5rIT!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!!CaO!7grHo$n!Ge^XZMeGoU"qZ-ZHrr<;S!!(OL!7fWs!!:[N!:eV>
-!;tCI!<:UL!!^sR!7_&Leb]=JeGoUHec,XLec,XLec,UNeGoU>ec,XJec,UTeGoU"eGoU"eb]=J
-eGoU>ec,XKec,ULeb]=QeGoU"!!(R"!!%T#J^seNs+:KNs5rIW!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!!UmQ!7_&Lma_79s4.,L!n@8Nqpk]H$.T"UeGoU"eGoUIec,X>ec,XI
-ec,XLec,UTeGoU"!!(OL!;tCI!;k=H!<:UL!<:UL!!:[N!:eV>!<(IJ!".6V!7fU"!7fU"!;tCI
-!:eV>!<1OK!!:[N!;tCI!!^sR!7fU"!.i[Oec42"K*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IL!<(XO!!V'V!87DQmb7U>s4[JQ!nmVSqqD&M$/,@Zg&M-,g&M-NgA_0CgA_0N
-gA_0QgA_-Yg&M-,!!(^Q!;tRN!;kLM!<:dQ!<:dQ!!:jS!:eeC!<(XO!".E[!8?-,!8?-,!;tRN
-!:eeC!<1^P!!:jS!;tRN!!_-W!8?-,!.ijTgAfn,JH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:G!<(IJ!!UmQ!7_&Lma_79s4.,L!n@8Nqpk]H$.T"UeGoU"eGoUIec,X>ec,XI
-ec,XLec,UTeGoU"!!(OL!;tCI!;k=H!<:UL!<:UL!!:[N!:eV>!<(IJ!".6V!7fU"!7fU"!;tCI
-!:eV>!<1OK!!:[N!;tCI!!^sR!7fU"!.i[Oec42"K*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"n^[X>rmh#K#1W\Re^XX"rmh#Ks4.,Lrmh#Ks4.,L
-!n@8NnC@O=s4.&Js4.,L(tATdeGoU"!!(R"!!(OL!7fU"!7fU"!7h&Ks4.,L!n@8Nn^[X>rRLoJ
-#LreSe^XX"ec#RKec,UNeGoU>ec,XKec,UVeGoU"eGoU"!!(RK!!:[N!.i[Oec42"K*A(Nk2s>W
-J,~>
-!<E0!joV7Vs8(IL!<(XO!"%?Z!87DQg=cN,n_4!Crn@AP#20%Wg=cN,rn@APs4[JQrn@APs4[JQ
-!nmVSnCmmBs4[DOs4[JQ(tnrig&M-,!!(a,!!(^Q!8?-,!8?-,!8@DPs4[JQ!nmVSn_4!CrS%8O
-#MK.Xg=cN,gAV*PgA_-Sg&M-CgA_0PgA_-[g&M-,g&M-,!!(aP!!:jS!.ijTgAfn,JH_bIk2s5T
-J,~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"n^[X>rmh#K#1W\Re^XX"rmh#Ks4.,Lrmh#Ks4.,L
-!n@8NnC@O=s4.&Js4.,L(tATdeGoU"!!(R"!!(OL!7fU"!7fU"!7h&Ks4.,L!n@8Nn^[X>rRLoJ
-#LreSe^XX"ec#RKec,UNeGoU>ec,XKec,UVeGoU"eGoU"!!(RK!!:[N!.i[Oec42"K*A(Nk2s>W
-J,~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:\P=!<1OK!<:UJ!<(IJ!<:UL!<(IH!<:UL!:SJ:!<:UJ
-!<:UL!!LgP!7fWu!<1OI!<(IJ!<:UJ!<:UL!:eV>!<(IJ!!:[N!<1OK!<:UJ!<:UL!:eV>!<1OK
-!<:UJ!<:UL!!UmQ!7_&LJ^o>%rmh%$"f21\k.LbF~>
-!<E0!joV7Vs8(IL!<(XO!!M!U!8?0*!:\_B!<1^P!<:dO!<(XO!<:dQ!<(XM!<:dQ!:SY?!<:dO
-!<:dQ!!M!U!8?0*!<1^N!<(XO!<:dO!<:dQ!:eeC!<(XO!!:jS!<1^P!<:dO!<:dQ!:eeC!<1^P
-!<:dO!<:dQ!!V'V!87DQJ_G\/rn@C'"ektYk.1PC~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:\P=!<1OK!<:UJ!<(IJ!<:UL!<(IH!<:UL!:SJ:!<:UJ
-!<:UL!!LgP!7fWu!<1OI!<(IJ!<:UJ!<:UL!:eV>!<(IJ!!:[N!<1OK!<:UJ!<:UL!:eV>!<1OK
-!<:UJ!<:UL!!UmQ!7_&LJ^o>%rmh%$"f21\k.LbF~>
-!<E0!joV@Ys+/_"ec,W#eUc9Jec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/n'gA_/(g4@uTgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/_"ec,W#eUc9Jec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/_"ec,W#eUc9Jec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/n'gA_/(g4@uTgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/_"ec,W#eUc9Jec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/_"ec,W#eUc9Jec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/n'gA_/(g4@uTgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/_"ec,W#eUc9Jec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tOgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tOgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tOgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tOgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tOgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8Eec17*V#TT>]`<Q~>
-!<E0!joV@Ys+,fRK7SZIK*A(Nk2s>WJ,~>
-!<E0!joV7Vs+,`PJUrBEJH_bIk2s5TJ,~>
-!<E0!joV@Ys+,fRK7SZIK*A(Nk2s>WJ,~>
-!<E0!joM:XJV/N+JV0PH"f21\k.LbF~>
-!<E0!joM1UJUrB'JUsDD"ektYk.1PC~>
-!<E0!joM:XJV/N+JV0PH"f21\k.LbF~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD*+g4@t/g7?q$U&X9;\c@6~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD*+g4@t/g7?q$U&X9;\c@6~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD*+g4@t/g7?q$U&X9;\c@6~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD*+g4@t/g7?q$U&X9;\c@6~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD*+g4@t/g7?q$U&X9;\c@6~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD*+g4@t/g7?q$U&X9;\c@6~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD*+g4@t/g7?q$U&X9;\c@6~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD*+g4@t/g7?q$U&X9;\c@6~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD*+g4@t/g7?q$U&X9;\c@6~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD*+g4@t/g7?q$U&X9;\c@6~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD3.e`#'V!;=tC!;P+E!!:[N!;k=H!9_o4!.i[OeHMcKk2s>WJ,~>
-!<E0!joD*+g>Uc`!;>.H!;P:J!!:jS!;kLM!9`)9!.ijTg'+2Mk2s5TJ,~>
-!<E0!joD3.e`#'V!;=tC!;P+E!!:[N!;k=H!9_o4!.i[OeHMcKk2s>WJ,~>
-!<E0!joD3.e`#'Y!<:UL!;G%D!;4nB!;k=H!9_o4!.i[OeHMcKk2s>WJ,~>
-!<E0!joD*+g>Ucc!<:dQ!;G4I!;5(G!;kLM!9`)9!.ijTg'+2Mk2s5TJ,~>
-!<E0!joD3.e`#'Y!<:UL!;G%D!;4nB!;k=H!9_o4!.i[OeHMcKk2s>WJ,~>
-!<E0!joD4Keb9%=eb]?&ec,XKec,XLeboLJeboLJeboLJec,UNeGoUHec,XIeboLJec,XKec,XL
-eboLJec,W#eUc6SV#TT>]`<Q~>
-!<E0!joD+Hg@kRBgA:l+gA_0PgA_0QgAM$OgAM$OgAM$OgA_-Sg&M-MgA_0NgAM$OgA_0PgA_0Q
-gAM$OgA_/(g4@r]U&X9;\c@6~>
-!<E0!joD4Keb9%=eb]?&ec,XKec,XLeboLJeboLJeboLJec,UNeGoUHec,XIeboLJec,XKec,XL
-eboLJec,W#eUc6SV#TT>]`<Q~>
-!<E0!joD4KebB(DKDF't!//o&!<1OK!#X5d!7fU"!7fU"!7fU"!7fU"!7_&LeGoUHec,XJec,XL
-ec,UNeGoUKec,UUeGoU"eGoU"!!%T#J^jq"s5rIW!.Y~>
-!<E0!joD+Hg@tUIJbe%"!/0)+!<1^P!#XDi!8?-,!8?-,!8?-,!8?-,!87DQg&M-MgA_0OgA_0Q
-gA_-Sg&M-PgA_-Zg&M-,g&M-,!!%T(J_C:$s5rIT!.Y~>
-!<E0!joD4KebB(DKDF't!//o&!<1OK!#X5d!7fU"!7fU"!7fU"!7fU"!7_&LeGoUHec,XJec,XL
-ec,UNeGoUKec,UUeGoU"eGoU"!!%T#J^jq"s5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tec,XJec,UOeGoU"r;ciIr;clJquHcIr;`_FrrE&Krr<DV!!(R"!!(R"
-!!)oHrr<5Q!!(OL!;k=H!<(IJ!<:UL!<:UL!"IHY!7fU"!7fU"!7_&LJ^o>%"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA_0OgA_-Tg&M-,r;ciNr;clOquHcNr;`_KrrE&Prr<D[!!(a,!!(a,
-!!)oMrr<5V!!(^Q!;kLM!<(XO!<:dQ!<:dQ!"IW^!8?-,!8?-,!87DQJ_G\/"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tec,XJec,UOeGoU"r;ciIr;clJquHcIr;`_FrrE&Krr<DV!!(R"!!(R"
-!!)oHrr<5Q!!(OL!;k=H!<(IJ!<:UL!<:UL!"IHY!7fU"!7fU"!7_&LJ^o>%"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XJebT:Gec,UReGoU"eGoUJec,UReGoU"eGoTIec,XKec,ULeb]@H
-ec,XKebfCNeGoU"!!)oHrrE#JqZ-ZHrr<2P!!(R"qZ$]J!!%T#J^jq"s5rIW!.Y~>
-!<E0!joD+HgAh3LgAca"gA_0OgA1gLgA_-Wg&M-,g&M-OgA_-Wg&M-,g&M,NgA_0PgA_-QgA:mM
-gA_0PgACpSg&M-,!!)oMrrE#OqZ-ZMrr<2U!!(a,qZ$]O!!%T(J_C:$s5rIT!.Y~>
-!<E0!joD4Kec5[Gec19tec,XJebT:Gec,UReGoU"eGoUJec,UReGoU"eGoTIec,XKec,ULeb]@H
-ec,XKebfCNeGoU"!!)oHrrE#JqZ-ZHrr<2P!!(R"qZ$]J!!%T#J^jq"s5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tebfCIec#RKec,XLec,UReGoU"eGoUKec,XLec,XLec,WIec,XKec,UN
-eGoUHec,XLec,XLec,UQeGoU"!!)oHrrE#JrrDoGrW)rJrrDuIrr@W#J^jq"s5rIW!.Y~>
-!<E0!joD+HgAh3LgAca"gACpNgAV*PgA_0QgA_-Wg&M-,g&M-PgA_0QgA_0QgA_/NgA_0PgA_-S
-g&M-MgA_0QgA_0QgA_-Vg&M-,!!)oMrrE#OrrDoLrW)rOrrDuNrr@W(J_C:$s5rIT!.Y~>
-!<E0!joD4Kec5[Gec19tebfCIec#RKec,XLec,UReGoU"eGoUKec,XLec,XLec,WIec,XKec,UN
-eGoUHec,XLec,XLec,UQeGoU"!!)oHrrE#JrrDoGrW)rJrrDuIrr@W#J^jq"s5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKeb]=Heb]@GeGoUKeb]?Eec,XLec,XLec,XLec,XLec,UL
-ec#RKec,UQeGoU"!!)oHrrE#JrrE)LrrE&KrW)rJrrE)Lrr<,N!!%T#J^jq"s5rIW!.Y~>
-!<E0!joD+HgAh3LgAca"gA_0OgA_0PgA:jMgA:mLg&M-PgA:lJgA_0QgA_0QgA_0QgA_0QgA_-Q
-gAV*PgA_-Vg&M-,!!)oMrrE#OrrE)QrrE&PrW)rOrrE)Qrr<,S!!%T(J_C:$s5rIT!.Y~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKeb]=Heb]@GeGoUKeb]?Eec,XLec,XLec,XLec,XLec,UL
-ec#RKec,UQeGoU"!!)oHrrE#JrrE)LrrE&KrW)rJrrE)Lrr<,N!!%T#J^jq"s5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKec,XIec,XHec,XKec,WEebfFGeboLHec,XLec#OKeboIL
-eGoUHeb]=HeboLGeGoUIeboLJec,W#eUc6SV#TT>]`<Q~>
-!<E0!joD+HgAh3LgAca"gA_0OgA_0PgA_0NgA_0MgA_0PgA_/JgACsLgAM$MgA_0QgAV'PgAM!Q
-g&M-MgA:jMgAM$Lg&M-NgAM$OgA_/(g4@r]U&X9;\c@6~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKec,XIec,XHec,XKec,WEebfFGeboLHec,XLec#OKeboIL
-eGoUHeb]=HeboLGeGoUIeboLJec,W#eUc6SV#TT>]`<Q~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKec,XLec,UUeGoU"eGoU"!!)uJrrE)Lrr@W#J^o>%j4+=/
-s5rIW!.Y~>
-!<E0!joD+HgAh3LgAca"gA_0OgA_0PgA_0QgA_-Zg&M-,g&M-,!!)uOrrE)Qrr@W(J_G\/j4X[1
-s5rIT!.Y~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKec,XLec,UUeGoU"eGoU"!!)uJrrE)Lrr@W#J^o>%j4+=/
-s5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tec,XJec,XJeboLIeboLJebfFIeboK!eUc8%e`,*_V#TT>]`<Q~>
-!<E0!joD+HgAh3LgAca"gA_0OgA_0OgAM$NgAM$OgACsNgAM#&g4@t/g>^fiU&X9;\c@6~>
-!<E0!joD4Kec5[Gec19tec,XJec,XJeboLIeboLJebfFIeboK!eUc8%e`,*_V#TT>]`<Q~>
-!<E0!joD4Kec5[EK7VR(eUc8ZeHMcKk2s>WJ,~>
-!<E0!joD+HgAh3JJUuO+g4@tdg'+2Mk2s5TJ,~>
-!<E0!joD4Kec5[EK7VR(eUc8ZeHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD*+g4@t/g7?q$U&X9;\c@6~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD*+g4@t/g7?q$U&X9;\c@6~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD*+g4@t/g7?q$U&X9;\c@6~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD*+g4@t/g7?q$U&X9;\c@6~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD3.eUc8dec,XJeboLIeboK!eaM#lV#TT>]`<Q~>
-!<E0!joD*+g4@tngA_0OgAM$NgAM#&g@*`!U&X9;\c@6~>
-!<E0!joD3.eUc8dec,XJeboLIeboK!eaM#lV#TT>]`<Q~>
-!<E0!joD3.eUc8feboLIec,XLec,UReGoU"eGoT#eaV)mV#TT>]`<Q~>
-!<E0!joD*+g4@tpgAM$NgA_0QgA_-Wg&M-,g&M,(g@3f"U&X9;\c@6~>
-!<E0!joD3.eUc8feboLIec,XLec,UReGoU"eGoT#eaV)mV#TT>]`<Q~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#eaV)mV#TT>]`<Q~>
-!<E0!joD*+g4@tngA_0PgA_0QgA_-Wg&M-,g&M,(g@3f"U&X9;\c@6~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#eaV)mV#TT>]`<Q~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#eaV)mV#TT>]`<Q~>
-!<E0!joD*+g4@tngA_0PgA_0QgA_-Wg&M-,g&M,(g@3f"U&X9;\c@6~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#eaV)mV#TT>]`<Q~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#eaV)mV#TT>]`<Q~>
-!<E0!joD*+g4@tngA_0PgA_0QgA_-Wg&M-,g&M,(g@3f"U&X9;\c@6~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#eaV)mV#TT>]`<Q~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#eaV)mV#TT>]`<Q~>
-!<E0!joD*+g4@tngA_0PgA_0QgA_-Wg&M-,g&M,(g@3f"U&X9;\c@6~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#eaV)mV#TT>]`<Q~>
-!<E0!joD4Keb4Xkec,XKec,UNeGoUIec,XAeb]@,ebK2reZ77#!<1OK!<:UL!!^sR!7fU"!.i\i
-eHMcKk2s>WJ,~>
-!<E0!joD+Hg@g*ngA_0PgA_-Sg&M-NgA_0FgA:m1gA(`"g8is-!<1^P!<:dQ!!_-W!8?-,!.ikn
-g'+2Mk2s5TJ,~>
-!<E0!joD4Keb4Xkec,XKec,UNeGoUIec,XAeb]@,ebK2reZ77#!<1OK!<:UL!!^sR!7fU"!.i\i
-eHMcKk2s>WJ,~>
-!<E0!joD4Keb=[rs7t4F!<1OK!;Y1F!;+hA!8Q-)!.i\!ec,XKec,XLec,UReGoU"eGoT#eaV)m
-V#TT>]`<Q~>
-!<E0!joD+Hg@p-us7tCK!<1^P!;Y@K!;,"F!8Q<.!.ik&gA_0PgA_0QgA_-Wg&M-,g&M,(g@3f"
-U&X9;\c@6~>
-!<E0!joD4Keb=[rs7t4F!<1OK!;Y1F!;+hA!8Q-)!.i\!ec,XKec,XLec,UReGoU"eGoT#eaV)m
-V#TT>]`<Q~>
-!<E0!joD4Kec19uXT/=rec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE#Jrr</O!!(RJ!<:RM!7h&K
-!7h&Kp!s'BrRLiHJ^q!TrrE#Jr;ciIr;_E!n'qT;s5rIW!.Y~>
-!<E0!joD+HgAca#0`V1KgA_0PgA_-\g&M-,g&M-,!!(a,r;c]JrrE#Orr</T!!(aO!<:aR!8@DP
-!8@DPp"KEGrS%2MJ_I?^rrE#Or;ciNr;_E&n(Ir=s5rIT!.Y~>
-!<E0!joD4Kec19u@fQK(ec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE#Jrr</O!!(RJ!<:RM!7h&K
-!7h&Kp!s'BrRLiHJ^q!TrrE#Jr;ciIr;_E!n'qT;s5rIW!.Y~>
-!<E0!joD4Kec19uXT/=rec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<(IE!<:UL!".6V!7fU"
-!7fU"!;=tC!<1OK!<:UL!.i[OeW//`V#TT>]`<Q~>
-!<E0!joD+HgAca#0`V1KgA_0PgA_-Wg&M-,!!(aP!!_-W!8?-,!;kLM!<(XJ!<:dQ!".E[!8?-,
-!8?-,!;>.H!<1^P!<:dQ!.ijTg5akjU&X9;\c@6~>
-!<E0!joD4Kec19u@fQK(ec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<(IE!<:UL!".6V!7fU"
-!7fU"!;=tC!<1OK!<:UL!.i[OeW//`V#TT>]`<Q~>
-!<E0!joD4Kec19uXT/=rebT7WeGoU"!!(R"!!(OL!7fU"!;k=E!!(RK!<:UL!<:UL!"7<W!7fU"
-!7fU"!7grHrRLoJrmh#Ks4.,LJ^o>%Nn"</s5rIW!.Y~>
-!<E0!joD+HgAca#0`V1KgA1d\g&M-,!!(a,!!(^Q!8?-,!;kLJ!!(aP!<:dQ!<:dQ!"7K\!8?-,
-!8?-,!8@;MrS%8Orn@APs4[JQJ_G\/NnOZ1s5rIT!.Y~>
-!<E0!joD4Kec19u@fQK(ebT7WeGoU"!!(R"!!(OL!7fU"!;k=E!!(RK!<:UL!<:UL!"7<W!7fU"
-!7fU"!7grHrRLoJrmh#Ks4.,LJ^o>%Nn"</s5rIW!.Y~>
-!<E0!joD4Kec19uXT/=rec,XKec,UVeGoU"!!(R"!!(RH!;k=H!<(IJ!<1OK!<:UL!".6V!7fU"
-!7fU"!;=tC!<1OK!<:UL!.i[OeW//`V#TT>]`<Q~>
-!<E0!joD+HgAca#0`V1KgA_0PgA_-[g&M-,!!(a,!!(aM!;kLM!<(XO!<1^P!<:dQ!".E[!8?-,
-!8?-,!;>.H!<1^P!<:dQ!.ijTg5akjU&X9;\c@6~>
-!<E0!joD4Kec19u@fQK(ec,XKec,UVeGoU"!!(R"!!(RH!;k=H!<(IJ!<1OK!<:UL!".6V!7fU"
-!7fU"!;=tC!<1OK!<:UL!.i[OeW//`V#TT>]`<Q~>
-!<E0!joD4Kec19uXT/=rec,XKec,UXeGoU"!!(R"!!(OL!;G%D!<(IJ!<1OK!<:UL!"7<W!7fU"
-!7fU"!7grHrRLoJrmh#Ks4.,LJ^o>%Nn"</s5rIW!.Y~>
-!<E0!joD+HgAca#0`V1KgA_0PgA_-]g&M-,!!(a,!!(^Q!;G4I!<(XO!<1^P!<:dQ!"7K\!8?-,
-!8?-,!8@;MrS%8Orn@APs4[JQJ_G\/NnOZ1s5rIT!.Y~>
-!<E0!joD4Kec19u@fQK(ec,XKec,UXeGoU"!!(R"!!(OL!;G%D!<(IJ!<1OK!<:UL!"7<W!7fU"
-!7fU"!7grHrRLoJrmh#Ks4.,LJ^o>%Nn"</s5rIW!.Y~>
-!<E0!joD4Kec19uXT/=rec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<(IJ!<1OK!<:UL!".6V
-!7fU"!7fU"!;=tC!<1OK!<:UL!.i[OeW//`V#TT>]`<Q~>
-!<E0!joD+HgAca#0`V1KgA_0PgA_-Wg&M-,!!(aP!!_-W!8?-,!;kLM!<(XO!<1^P!<:dQ!".E[
-!8?-,!8?-,!;>.H!<1^P!<:dQ!.ijTg5akjU&X9;\c@6~>
-!<E0!joD4Kec19u@fQK(ec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<(IJ!<1OK!<:UL!".6V
-!7fU"!7fU"!;=tC!<1OK!<:UL!.i[OeW//`V#TT>]`<Q~>
-!<E0!joD4Kec19uXT/=rec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE#JrrE#Jr;clJrrE)LrrE)L
-rrDcCrrE#Jr;bI"JV1dkJ^sMF"f21\k.LbF~>
-!<E0!joD+HgAca#0`V1KgA_0PgA_-\g&M-,g&M-,!!(a,r;c]JrrE#OrrE#Or;clOrrE)QrrE)Q
-rrDcHrrE#Or;bI'JUtXgJ_KkP"ektYk.1PC~>
-!<E0!joD4Kec19u@fQK(ec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE#JrrE#Jr;clJrrE)LrrE)L
-rrDcCrrE#Jr;bI"JV1dkJ^sMF"f21\k.LbF~>
-!<E0!joD4Kec19ss+/]#eU`@iK)kq&eb@StV#TT>]`<Q~>
-!<E0!joD+HgAca!s+/l(g4=glJH5_$g@s;)U&X9;\c@6~>
-!<E0!joD4Kec19ss+/]#eU`@iK)kq&eb@StV#TT>]`<Q~>
-!<E0!joD3.e`YK_K7U_r^#B!Beb@StV#TT>]`<Q~>
-!<E0!joD*+g?72iJUt\u_VtNGg@s;)U&X9;\c@6~>
-!<E0!joD3.e`YK_K7U_r^#B!Beb@StV#TT>]`<Q~>
-!<E0!joD3.e`YK_K7U_r^#]1pKE(t&eb@StV#TT>]`<Q~>
-!<E0!joD*+g?72iJUt\u_W:^uJcGb$g@s;)U&X9;\c@6~>
-!<E0!joD3.e`YK_K7U_r^#]1pKE(t&eb@StV#TT>]`<Q~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#pXKGCs5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(pY#eEs5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#pXKGCs5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#pXKGCs5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(pY#eEs5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#pXKGCs5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#pXKGCs5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(pY#eEs5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#pXKGCs5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#pXKGCs5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(pY#eEs5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#pXKGCs5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#pXKGCs5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(pY#eEs5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#pXKGCs5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#pXKGCs5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(pY#eEs5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#pXKGCs5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#pXKGCs5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(pY#eEs5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#pXKGCs5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#pXKGCs5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(pY#eEs5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#pXKGCs5rIW!.Y~>
-!<E0!joD4Keb9%=ec,XKec,UNeGoUIec,XAec,XKec,XFec,WYec18Q^#Qg+s7OnCKE(Vps+C@O
-J^sMF"f21\k.LbF~>
-!<E0!joD+Hg@kRBgA_0PgA_-Sg&M-NgA_0FgA_0PgA_0KgA_/^gAc_T_W/N5s7P(HJcGDss+14M
-J_KkP"ektYk.1PC~>
-!<E0!joD4Keb9%=ec,XKec,UNeGoUIec,XAec,XKec,XFec,WYec18Q^#Qg+s7OnCKE(Vps+C@O
-J^sMF"f21\k.LbF~>
-!<E0!joD4KebB(DKDF't!<1OK!;Y1F!;+hA!<1OK!;Y1F!4UMYK7U_r^&S-*eH(=&p!s(ps8RZ#
-pXKGCs5rIW!.Y~>
-!<E0!joD+Hg@tUIJbe%"!<1^P!;Y@K!;,"F!<1^P!;Y@K!4U\^JUt\u_Z0Z/g&Zd)p"KFss8RZ(
-pY#eEs5rIT!.Y~>
-!<E0!joD4KebB(DKDF't!<1OK!;Y1F!;+hA!<1OK!;Y1F!4UMYK7U_r^&S-*eH(=&p!s(ps8RZ#
-pXKGCs5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE&Krr<__!!(OL!7fU"!7fU"
-!7_&LeGoUKeboLJec,XLec,XLec,UQeGoU"!!(a's+>m9j1YKmp!j(qs7OqBKE(t&eb@StV#TT>
-]`<Q~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-\g&M-,g&M-,!!(a,r;c]JrrE&Prr<_d!!(^Q!8?-,!8?-,
-!87DQg&M-PgAM$OgA_0QgA_0QgA_-Vg&M-,!!(a,s+,a<j21irp"BFts7P+GJcGb$g@s;)U&X9;
-\c@6~>
-!<E0!joD4Kec5[Gec19tec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE&Krr<__!!(OL!7fU"!7fU"
-!7_&LeGoUKeboLJec,XLec,XLec,UQeGoU"!!(a's+>m9j1YKmp!j(qs7OqBKE(t&eb@StV#TT>
-]`<Q~>
-!<E0!joD4Kec5[Gec19tec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<1OK!!(RK!".6V!7_&L
-eGoU"ec#O`eGoU"!!(R"!!(OL!7fU"!7fU"!7h&K!n@8NgXZ=VJ\C*Ws8V_D!<;YCs8RZ#pXKGC
-s5rIW!.Y~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-Wg&M-,!!(aP!!_-W!8?-,!;kLM!<1^P!!(aP!".E[!87DQ
-g&M-,gAV'eg&M-,!!(a,!!(^Q!8?-,!8?-,!8@DP!nmVSgY2[YJ\pHas8V_B!<;YAs8RZ(pY#eE
-s5rIT!.Y~>
-!<E0!joD4Kec5[Gec19tec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<1OK!!(RK!".6V!7_&L
-eGoU"ec#O`eGoU"!!(R"!!(OL!7fU"!7fU"!7h&K!n@8NgXZ=VJ\C*Ws8V_D!<;YCs8RZ#pXKGC
-s5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tebT7WeGoU"!!(R"!!(OL!7fU"!;k=H!<1OK!!h$S!7fU"!7h#Jrmh#K
-s4.,L(tATde^XX"e^XX"eGoU"!!(R"!!(R"!!(d(s+>m9j1PHmjFdL4J^sMF"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA1d\g&M-,!!(a,!!(^Q!8?-,!;kLM!<1^P!!h3X!8?-,!8@AOrn@AP
-s4[JQ(tnrig=cN,g=cN,g&M-,!!(a,!!(a,!!(d-s+,a<j2(frjFR@2J_KkP"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tebT7WeGoU"!!(R"!!(OL!7fU"!;k=H!<1OK!!h$S!7fU"!7h#Jrmh#K
-s4.,L(tATde^XX"e^XX"eGoU"!!(R"!!(R"!!(d(s+>m9j1PHmjFdL4J^sMF"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XKec,UVeGoU"!!(R"!!(RH!;k=H!<1OK!!h$S!7fU"!7h#Jrmh#K
-s4.,L(tATde^XX"e^XX"eGoU"!!(R"!!(R"!!(d(s+>n&_uG;<pXKGCs5rIW!.Y~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-[g&M-,!!(a,!!(aM!;kLM!<1^P!!h3X!8?-,!8@AOrn@AP
-s4[JQ(tnrig=cN,g=cN,g&M-,!!(a,!!(a,!!(d-s+,b$_uG;ApY#eEs5rIT!.Y~>
-!<E0!joD4Kec5[Gec19tec,XKec,UVeGoU"!!(R"!!(RH!;k=H!<1OK!!h$S!7fU"!7h#Jrmh#K
-s4.,L(tATde^XX"e^XX"eGoU"!!(R"!!(R"!!(d(s+>n&_uG;<pXKGCs5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tec,XKec,UXeGoU"!!(R"!!(OL!;G%D!<1OK!%l_$!7fU"!7_&LeGoU"
-eGoU"eGoU"!!(R"!!(R"!!(OL!7_&Le^XX"e^XX"gXQ:VJcEUeJ^sMF"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-]g&M-,!!(a,!!(^Q!;G4I!<1^P!%ln)!8?-,!87DQg&M-,
-g&M-,g&M-,!!(a,!!(a,!!(^Q!87DQg=cN,g=cN,gY)XYJcEUeJ_KkP"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tec,XKec,UXeGoU"!!(R"!!(OL!;G%D!<1OK!%l_$!7fU"!7_&LeGoU"
-eGoU"eGoU"!!(R"!!(R"!!(OL!7_&Le^XX"e^XX"gXQ:VJcEUeJ^sMF"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XKec,UReGoU"!!(RK!!^sR!7fU"!;b7G!$B_k!7fU"!7fU"!7_&L
-e^XX"eGoU"eGoU"!!(R"!!*#KrrE)LrrE&KrrE)Lrr@W#J^on5"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-Wg&M-,!!(aP!!_-W!8?-,!;bFL!$Bnp!8?-,!8?-,!87DQ
-g=cN,g&M-,g&M-,!!(a,!!*#PrrE)QrrE&PrrE)Qrr@W(J_H7?"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tec,XKec,UReGoU"!!(RK!!^sR!7fU"!;b7G!$B_k!7fU"!7fU"!7_&L
-e^XX"eGoU"eGoU"!!(R"!!*#KrrE)LrrE&KrrE)Lrr@W#J^on5"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XKec,UWeGoU"eGoU"!!(R"r;cZDquHcIrrE)Lrr<,N!!*#Kr;clJ
-rrE)Lr;cfHrrE)LrrE&KrrE)Lrr@W#J^on5"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-\g&M-,g&M-,!!(a,r;cZIquHcNrrE)Qrr<,S!!*#Pr;clO
-rrE)Qr;cfMrrE)QrrE&PrrE)Qrr@W(J_H7?"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tec,XKec,UWeGoU"eGoU"!!(R"r;cZDquHcIrrE)Lrr<,N!!*#Kr;clJ
-rrE)Lr;cfHrrE)LrrE&KrrE)Lrr@W#J^on5"f21\k.LbF~>
-!<E0!joD4Kec5[EK7VR(eUc8ZeHMcKk2s>WJ,~>
-!<E0!joD+HgAh3JJUuO+g4@tdg'+2Mk2s5TJ,~>
-!<E0!joD4Kec5[EK7VR(eUc8ZeHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD*+g4@t/g7?q$U&X9;\c@6~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F#rKDX1&V#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`'Jc".)U&X9;\c@6~>
-!<E0!joD3.eUc8%e[F#rKDX1&V#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F#sK)krKeHMcKk2s>WJ,~>
-!<E0!joD*+g4@t/g:#`(JH5`Ig'+2Mk2s5TJ,~>
-!<E0!joD3.eUc8%e[F#sK)krKeHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%e[F$.KDN7]KDN:]s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jbm4`Jbm7`s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KDN7]KDN:]s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KDW=_s+C0]s8VuH"f21\k.LbF~>
-!<E0!joD*+g4@t/g:#`8Jc!:bs+1$`s8VuM"ektYk.1PC~>
-!<E0!joD3.eUc8%e[F$.KDW=_s+C0]s8VuH"f21\k.LbF~>
-!<E0!joD3.eUc8%e[F$.KDW=`s+>t$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD*+g4@t/g:#`8Jc!:cs+,au_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD3.eUc8%e[F$.KDW=`s+>t$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%e[F$.KD`F_s8R`K^&S-0eHMcKk2s>WJ,~>
-!<E0!joD*+g4@t/g:#`8Jc*Cbs8RZI_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD3.eUc8%e[F$.KD`F_s8R`K^&S-0eHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%e[F$.KD`F_rrU`'KD`F_s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jc*CbrrUo*Jc*Cbs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KD`F_rrU`'KD`F_s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KDiL`s8UXLKD`F_s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jc3Ics8UgQJc*Cbs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KDiL`s8UXLKD`F_s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KDiL`s8LRKKDiL`s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jc3Ics8LaPJc3Ics81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KDiL`s8LRKKDiL`s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KDrRas8CLJKDiL`s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jc<Ods8C[OJc3Ics81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KDrRas8CLJKDiL`s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KDrRas8:FIKDrRas81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jc<Ods8:UNJc<Ods81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KDrRas8:FIKDrRas81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KE&Xbs81@HKDrRas81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8JcEUes81OMJc<Ods81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KE&Xbs81@HKDrRas81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KE&Xbs8(:GKE&Xbs81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8JcEUes8(ILJcEUes81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KE&Xbs8(:GKE&Xbs81=MV#TT>]`<Q~>
-!<E0!joD3.e`>9\s7OqBs8CLJs.%U>s7+V>s-qO=s7+Y>s7=e@s68)6K*&ads7t4FKE&Xbs81=M
-V#TT>]`<Q~>
-!<E0!joD*+g>puf!;5(G!<(XO!1_aC!:ebC!1V[B!:eeC!;"qE!9r5;JHE^gs7tCKJcEUes81LR
-U&X9;\c@6~>
-!<E0!joD3.e`>9\!;4nB!<(IJ!1_R>!:eS>!1VL=!:eV>!;"b@!9r&6K*&ads7t4FKE&Xbs81=M
-V#TT>]`<Q~>
-!<E0!joD4Lec5[Lec#LJeboFOec5["s8UXKs8UXLs8UXLrrCUIrrCUKs-hI<s7FhAs8:CIs,5D-
-s,#8+s74\?s68)6K*&ads7k.EK*&ads81=MV#TT>]`<Q~>
-!<E0!joD+IgAe#LgARiJgAIcOg81Y"V5;oFV>o9LV>o9LV#]6IV#]6KV4-*<!;+tF!;tON!/oP2
-!/]D0!:nhD!9r5;JHE^gs7k=JJHE^gs81LRU&X9;\c@6~>
-!<E0!joD4Lec,XLeboIJebfCOeGoU"!!(RK!<:UL!<:UL!!(RI!!(RK!1MF<!;+eA!;t@I!/oA-
-!/]5+!:nY?!9r&6K*&ads7k.EK*&ads81=MV#TT>]`<Q~>
-!<E0!joD4KeIMW0ec41Ms4,["e^a]Ms8LOVs4,["e^a]Mec42"rm_5Qe^a]Mec2r*s8NATs4,["
-s4./LpsoBDs4.,KrRLrJr7(fIr7(fI\(1NY#M&k)ec42"s8CLJs8CLIs8LRKs8LRKs7b(BrrgmP
-s4.._ec5XSec41Ms4./LrRLrJrRLoIrmh&Krmh&Kp!j'BrRLrJrRLrJrm_,Nec5[Kec5[KeH,^#
-rr;fEs+C@Oon*=Zs8VuH"f21\k.LbF~>
-!<E0!joD+Hg('t5g83NWV:sY"g=iCWV>f0VV:sY"g=iCWg83N"rn7RQg=iCWg82+/rr<>Y!8?-,
-!87DQptG]Is4[GPrS%8Or7V,Nr7V,N\(^i^#MK13g&Th,!<(XO!<(XN!<1^P!<1^P!;G4G!!M!U
-!87FdgA_-Xg&Tj\!87DQrS%8OrS%5Nrn@APrn@APp"BBGrS%8OrS%8Orn7GSg&M-PgA_0Pg&V3-
-rW)cJs+14Momm1]s8VuM"ektYk.1PC~>
-!<E0!joD4KeIDT0eH".M!7fU"e^XZM!<1LV!7fU"e^XZMeH","rm_2Qe^XZMeGuo*rr<>T!7fU"
-!7_&Lpso?Ds4.)KrRLoJr7(cIr7(cI\(1KY#Lrh)eH","!<(IJ!<(II!<1OK!<1OK!;G%B!!LgP
-!7_(_ec,USeH".M!7_&LrRLoJrRLlIrmh#Krmh#Kp!j$BrRLoJrRLoJrm_)NeGoUKec,XKeH#[#
-rW)cEs+C@Oon*=Zs8VuH"f21\k.LbF~>
-!<E0!joD4KeIDQ/ec41Ms8UXLe^a^"rRLrJ'@m-5ec41Ms4./"s4./"ec5["s0C/^s4./"s4,["
-e^a]qeH#XIeHu9+ec41Ms4,["rRCoJr7(fI\()/lec42"e^a]Mec41Ms4,["e^a]reH#XIeH#XD
-eH#XKeHGp&s4..`eJ%u5s4./"ec41Ms4,["e^a]Mec5Kr!<;uI!<;cC!<<&K%fb)0s4,["e^a]M
-ec42"rm_,Ne^a^!eH#XCec17%s7:mCs81=MV#TT>]`<Q~>
-!<E0!joD+Hg'sn4g83NWV5;nBg=iC"rS%:J'AB;:g83NWV:qd"V:qd"g81Y"V6\e^!87G,!8?-,
-g=cQ&g&M-Ng'Ic5g&Tj\!8?-,rRq5Or7V,N\(VJqg&Th,g=cP\g&Tj\!8?-,g=cQ'g&M-Ng&M-I
-g&M-Pg&qE0!87Feg(OJ?!87G,g&Tj\!8?-,g=cP\g&V!'!!)rN!!)`H!!*#P%KP5:!8?-,g=cP\
-g&Th,rn7GSg=cQ+g&M-HgAc^(s7:gAs81LRU&X9;\c@6~>
-!<E0!joD4KeI;N/eH".M!!(OLe^XX"rRLoJ'@d*5eH".M!7_)"!7_)"eGoU"!4(,^!7_)"!7fU"
-e^XZqeGoUIeHl6+eH".M!7fU"rRClJr7(cI\(),leH","e^XZMeH".M!7fU"e^XZreGoUIeGoUD
-eGoUKeH>m&!7_(`eIqr5!7_)"eH".M!7fU"e^XZMeH#Hr!!)rI!!)`C!!*#K%KP&0!7fU"e^XZM
-eH","rm_)Ne^X[!eGoUCec17%s7:mCs81=MV#TT>]`<Q~>
-!<E0!joD4KeIMW0ec41Ms4./Le^a]Ms8LO`s4./Le^a]Mec42"ec42"e^a]Ms8TCT$NJZVec41M
-s4,["psoEErm_2Pe^a]Mec,UHeH#XIeH#WYeI;K.s4./"ec41Ms4,[!s8CLJs8:CIs8LRJs7b%D
-s8LOOs4./"s1["ls4./"s4,["e^a]Mec,UIec5[IeH#XKec,UBeH#XKeHZ'(ec41Ms8:FIs8CLI
-s8CIJs7Y"CKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+Hg('t5g83NWV:qcBg=iCWV>f0`V:qcBg=iCWg83N"g83N"g=iCWV5:KO$38c[g&Tj\
-!8?-,ptG`Jrn7MUg=cP\gAV*Mg&M-Ng&M,^g'du8!87G,g&Tj\!8?0+!<(XO!;tON!<1^O!;G1I
-!<1[T!87G,[email protected]!87G,!8?-,g=cP\gAV*NgA_0Ng&M-PgAV*Gg&M-Pg'.Q2g&Tj\!;tRN!<(XN
-!<(UO!;>.HJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4KeIDT0eH".M!7_&Le^XZM!<1L`!7_&Le^XZMeH","eH","e^XZM!!'=T$38TVeH".M
-!7fU"psoBErm_/Pe^XZMec#RHeGoUIeGoTYeI2H.!7_)"eH".M!7fX!!<(IJ!;t@I!<1OJ!;G"D
-!<1LO!7_)"!5?tl!7_)"!7fU"e^XZMec#RIec,XIeGoUKec#RBeGoUKeHQ$(eH".M!;tCI!<(II
-!<(FJ!;=tCKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4KeKFnBec41Ms4,["e^a]Mec41Ms4,["e^a]Mec41Ms4./KeH>j%ec2r*$NJZVec41M
-s4,["p=0TOe^a]Mec41Ms4,["rRCoJr7(fI\()&iec42"e^a]Mec41Ms4,["r7(fIrRD,Pe^a]M
-ec5Bo#liH*s8UXLec3A6&HC;\ec41Ms4,["e^a]Mec5Qt!<<#J#636(s4,["p=00Crm_MYe^a]M
-ec41Ms4,["ec5X!"96p%s8LOKs7Y"CKCJp<eHMcKk2s>WJ,~>
-!<E0!joD+Hg*!6Gg83NWV:sY"g=iCWg83NWV:sY"g=iCWg83NWV:qdFg&n2*g82+/$38c[g&Tj\
-!8?-,p=]oTg=cP\g&Tj\!8?-,rRq5Or7V,N\(VAng&Th,g=cP\g&Tj\!8?-,r7V,NrRqGUg=cP\
-g&Um$#QWT4!!(^Qg&Sk@&-1Dag&Tj\!8?-,g=cP\g&V')!!)uO"p!B2!8?-,p=]KHrn7h^g=cP\
-g&Tj\!8?-,g&V-+!s%'/!<1[P!;>.HJai^:g'+2Mk2s5TJ,~>
-!<E0!joD4KeK=kBeH".M!7fU"e^XZMeH".M!7fU"e^XZMeH".M!7_)KeH5g%eGuo*$38TVeH".M
-!7fU"p=0QOe^XZMeH".M!7fU"rRClJr7(cI\()#ieH","e^XZMeH".M!7fU"r7(cIrRD)Pe^XZM
-eH#?o#QWE*!!(OLeH!>6&-15\eH".M!7fU"e^XZMeH#Nt!!)uJ"p!3(!7fU"p=0-Crm_JYe^XZM
-eH".M!7fU"eH#U!!s$m%!<1LK!;=tCKCJp<eHMcKk2s>WJ,~>
-!<E0!joD4Jec5[Lec5[LeH,^#rr<#Krr<#K!<<&Ks8W)K$3/QUe^a^"e^a]*eHu9+s4./Le^a^"
-psoBDs4.,K#1`bRe^a^"rmgrH!7h#I\^^f^ec41trs%$Rs4,["s8LRJs8LRHrrgmPs4./Dec5XR
-ec42"ec5ZaeH>j%s4.&I#1`bRe^a^"rmh#JrmgrH"P*PPec5Hqr;ZfIs8W&Js8W,Ls8N/Ns8W)K
-s8W)KrVuZCs+BqC!e^OQqpbkGs5rIW!.Y~>
-!<E0!joD+GgAe#LgAe#Lg&\&(rh]YKrh]YK!2]\Ks/#_K$)Q@Pg=iC"g=iC/g'Ic5!87DQg=cN,
-ptG]Is4[GP#20%Wg=cN,rn@8M!8@>N\_7,cg&Tk)!!_-W!8?-,!<1^O!<1^M!!M!U!87GIgA_-W
-g&Th,g&M,fg&h?/!8@>N#20%Wg=cN,rn@>Orn@8M"PNhUg&Us&quHcNrrE#OrrE)Qrr<,S!!*#P
-rrE&Pr;cWHs+0eA!eLCOqq;4Is5rIT!.Y~>
-!<E0!joD4Jec,XLec,XLeH#[#rW)uKrW)uK!!*#KrrE&K#lrKUe^XX"e^XZ*eHl6+!7_&Le^XX"
-pso?Ds4.)K#1W\Re^XX"rmgoH!7guI\^^c^eH".t!!^sR!7fU"!<1OJ!<1OH!!LgP!7_)Dec,UR
-eH","eGoTaeH5g%!7guI#1W\Re^XX"rmguJrmgoH"P!JPeH#EqquHcIrrE#JrrE)Lrr<,N!!*#K
-rrE&Kr;cWCs+BqC!e^OQqpbkGs5rIW!.Y~>
-!<E0!joD3.eb%Als+/^Oe\p#<KE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g@X)!!.ijTg;M_FJcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eb%Al!.i[Oe\p#<KE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eb7Pns8CLFs+/_pebfB-ebfBsec1:%s7CsDs81=MV#TT>]`<Q~>
-!<E0!joD*+g@j8#!<(XK!.ikugA:l2gA:m#gAca(s7CmBs81LRU&X9;\c@6~>
-!<E0!joD3.eb7Pn!<(IF!.i\peb]?-eb]?sec1:%s7CsDs81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.K)krCKE(uKeHMcKk2s>WJ,~>
-!<E0!joD*+g4@t/g:#`8JH5`AJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD3.eUc8%e[F$.K)krCKE(uKeHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g:#`8Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%e[F$.KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X;eH#X=eH#X7eH#WjeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-@g&M-Bg&M-<g&M,og&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU;eGoU=eGoU7eGoTjeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X;eH#X=eH#X7eH#WjeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-@g&M-Bg&M-<g&M,og&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU;eGoU=eGoU7eGoTjeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XAec,UKec#OJec5[JeH,^#rr2uKrVuZCs8W,Ls8N5Ps8UX"rVulIs8W)K
-!WU^Ls4>d$s,,>,s0gJXKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M-FgAV*PgAM$OgA_0Og&V3-rVurPr;cWHrrE)Qrr<2U!!(a,r;ciNrrE&P
-!<CjQ!8#p)!/fJ1!4LV]Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoUAec#RKeboLJec,XJeH#[#rVurKr;cWCrrE)Lrr<2P!!(R"r;ciIrrE&K
-!<C[L!8#a$!/f;,!4LGXKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#XBeH#XHeH#XHeH#XJeH#XIeH#XDeHu9+ec41Ms4,["rm_#KrRD#Me^a^!
-eH#X!eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-Gg&M-Mg&M-Mg&M-Og&M-Ng&M-Ig'Ic5g&Tj\!8?-,rn7>PrRq>Rg=cQ+
-g&M-&g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUBeGoUHeGoUHeGoUJeGoUIeGoUDeHl6+eH".M!7fU"rm^uKrRCuMe^X[!
-eGoU!eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XAec5[JeH#XJec,UIeH#XIeH#XDeHu9+ec41Ms4,["rm_#KrRLoIrRCoJ
-eC=R!MU__,[akD1o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-FgA_0Og&M-OgAV*Ng&M-Ng&M-Ig'Ic5g&Tj\!8?-,rn7>PrS%5NrRq5O
-eCjm&MV8%1[bCb4o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUAec,XJeGoUJec#RIeGoUIeGoUDeHl6+eH".M!7fU"rm^uKrRLlIrRClJ
-eC=O!MU_\,[akD1o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#X?eH#XKeHc-)ec5["ec5Tu!<;uI"96p%s8(7Ps4,["e^a]Mec5X!#liH*
-s4./"ec5X!!<:R!!<7r,!<9LXs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-Dg&M-Pg'7W3g&M-,g&V**!!)rN!s%'/!;bCU!8?-,g=cP\g&V-+#QWT4
-!87G,g&V-+!!(O&!!%o1!!'I]s+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoU?eGoUKeHZ*)eGoU"eH#Qu!!)rI!s$m%!;b4P!7fU"e^XZMeH#U!#QWE*
-!7_)"eH#U!!!(O!!!%o,!!'IXs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#XBec,UHec5[Lec5XOec41MrVuiHs8VlEs8W&Js8N,Ms8LRKs8LRKs8LRI
-s45^#s,,>,s0gJXKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M-GgAV*MgA_0QgA_-Tg&Tj\r;cfMrrDiJrrE#Orr<)R!<1^P!<1^P!<1^N
-!7oj(!/fJ1!4LV]Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoUBec#RHec,XLec,UOeH".Mr;cfHrrDiErrE#Jrr<)M!<1OK!<1OK!<1OI
-!7o[#!/f;,!4LGXKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X%ebfBWeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-*gA:l\g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU%eb]?WeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5ec,XGeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,:gA_0Lg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5ec,XGeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5eboLGeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,:gAM$Lg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5eboLGeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W4eb]@HeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,9gA:mMg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4eb]@HeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eVO8+s,,>,s0gJXKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g5#`dg&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eVF3_eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W4eb]@HeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,9gA:mMg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4eb]@HeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W4ec#RHeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,9gAV*Mg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4ec#RHeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5ec,XGeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,:gA_0Lg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5ec,XGeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X)eH#XHeH#XIec5Z`eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-.g&M-Mg&M-NgA_/eg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU)eGoUHeGoUIec,W`eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X)eH#XAeH#W`eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-.g&M-Fg&M,eg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU)eGoUAeGoT`eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XCeH>j%s8W&Js8W,L"om-Qec5[Gec#OIec5[Jec,T_eH#W,eH#WXec19m
-^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-Hg&h?/!!)uOrrE)Q"T[6Vg&M-LgAM$NgA_0OgAV)dg&M,1g&M,]gAc`p
-_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUCeH5g%!!)uJrrE)L"T['QeGoUGeboLIec,XJec#Q_eGoT,eGoTXec19m
-^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XBeIV]1ec41Ms4,["ec42"ec5Ep!<;rH!<<&K"96p%s1["`s,,>,s0gJX
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M-Gg(+2;g&Tj\!8?-,g&Th,g&Up%!!)oM!!*#P!s%'/[email protected]!/fJ1!4LV]
-Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoUBeIMZ1eH".M!7fU"eH","eH#Bp!!)oH!!*#K!s$m%!5?t`!/f;,!4LGX
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#XBeHQ!'ec41Mrr<#K"TR$Pec5Ep!<;rH!<<&K"96p%s1["`s,,>,s0gJX
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M-Gg'%K1g&Tj\rW)uP"9@-Ug&Up%!!)oM!!*#P!s%'/[email protected]!/fJ1!4LV]
-Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoUBeHGs'eH".MrW)uK"9?sPeH#Bp!!)oH!!*#K!s$m%!5?t`!/f;,!4LGX
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#XBeIMW0ec41Ms4,["e^a]Ms7b%Gs4,["rm_#Krm_,Ne^a]6eH#W,eH#WX
-ec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-Gg(",:g&Tj\!8?-,g=cP\!;G1L!8?-,rn7>Prn7GSg=cP@g&M,1g&M,]
-gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUBeIDT0eH".M!7fU"e^XZM!;G"G!7fU"rm^uKrm_)Ne^XZ6eGoT,eGoTX
-ec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XCec,RQec5["ec5[KeH5d$s7Y"Cs8UXIs8UXLrrL[M^XW>aMU__,[akD1
-o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-HgAV'Vg&M-,g&M-Pg&_9.!;>.H!<:dN!<:dQ!!1dR^Y/YfMV8%1[bCb4
-o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUCec#OQeGoU"eGoUKeH,a$!;=tC!<:UI!<:UL!!1UM^XW;aMU_\,[akD1
-o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X1ebfBKeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-6gA:lPg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU1eb]?KeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XGec,W5eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-LgA_/:g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUGec,W5eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XJeboK2eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-OgAM#7g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUJeboK2eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH5d$eb]?0eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&_9.gA:l5g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eH,a$eb]?0eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eVO8+s,,>,s0gJXKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g5#`dg&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eVF3_eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH5d$ebfE0eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&_9.gACr5g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eH,a$ebfE0eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XJeboK2eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-OgAM#7g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUJeboK2eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XGec,W5eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-LgA_/:g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUGec,W5eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XAeH#X*eH#XJeH#X=ec5[@ec5[2eH#W,eH#WXec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD+?g&Rt,g&M-Fg&M-/g&M-Og&M-BgA_0EgA_07g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5T
-J,~>
-!<E0!joD4BeGoT,eGoUAeGoU*eGoUJeGoU=ec,X@ec,X2eGoT,eGoTXec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD4BeH#W,eH#XAeH#X%eH#X<eH#X?eH#X2eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-Fg&M-*g&M-Ag&M-Dg&M-7g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUAeGoU%eGoU<eGoU?eGoU2eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XBec#OJeH,^#r;QiKs8VrG#liHTec5["s4.,Ks4./LrmguIrmh&Kp=00C
-rRLrJrRLrJrm_,Nec5[5eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-GgAM$Og&V3-qu?fP!!)lL#QWQYg&M-,!8@DPs4[JQrn@;Nrn@APp=]KH
-rS%8OrS%8Orn7GSg&M-:g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUBeboLJeH#[#qu?fK!!)lG#QWBTeGoU"!7h&Ks4.,LrmgrIrmh#Kp=0-C
-rRLoJrRLoJrm_)NeGoU5eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XAeH#XIeH#XJeH>j%ec5Kr"TR$Pec5X!!<;rH!<<#J!<<#J"96p%s7b%D
-s8LOYs4,["e^a]Mec41Ms4./4eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-Fg&M-Ng&M-Og&h?/g&V!'"9@-Ug&V-+!!)oM!!)uO!!)uO!s%'/!;G1I
-!<1[^!8?-,g=cP\g&Tj\!87G9g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUAeGoUIeGoUJeH5g%eH#Hr"9?sPeH#U!!!)oH!!)uJ!!)uJ!s$m%!;G"D
-!<1LY!7fU"e^XZMeH".M!7_)4eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XAeH#XIeH#XJeH>j%ec5Kr"TR$Pec5X!!<;rH!<<#J!<<#Jrr;]B!<<&K
-#636(s4,["r71iIk1'J3MU__,[akD1o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-Fg&M-Ng&M-Og&h?/g&V!'"9@-Ug&V-+!!)oM!!)uO!!)uOrW)ZG!!*#P
-"p!B2!8?-,r7_/Nk1Te8MV8%1[bCb4o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUAeGoUIeGoUJeH5g%eH#Hr"9?sPeH#U!!!)oH!!)uJ!!)uJrW)ZB!!*#K
-"p!3(!7fU"r71fIk1'G3MU_\,[akD1o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#XAeHZ'(ec41Ms8CIMs4,["q:,QHec5Tu!<;rH!<<#J#liH*s4./"ec5Bo
-!<<&K%fb)0s4,["e^a]Mec42"kLBS4MU__,[akD1o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-Fg'.Q2g&Tj\!<(UR!8?-,q:YlMg&V**!!)oM!!)uO#QWT4!87G,g&Um$
-!!*#P%KP5:!8?-,g=cP\g&Th,kLon9MV8%1[bCb4o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUAeHQ$(eH".M!<(FM!7fU"q:,NHeH#Qu!!)oH!!)uJ#QWE*!7_)"eH#?o
-!!*#K%KP&0!7fU"e^XZMeH","kLBP4MU_\,[akD1o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#X@ec5[Lec#OIec5[EeH5d$s8LRIs8UXIs8LRKs8LRKs7k.Bs8UXLs8CLJ
-s8UXLrrUaNs6.u5s,,>,s0gJXKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M-EgA_0QgAM$NgA_0Jg&_9.!<1^N!<:dN!<1^P!<1^P!;P:G!<:dQ!<(XO
-!<:dQ!!:jS!9i,:!/fJ1!4LV]Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoU@ec,XLeboLIec,XEeH,a$!<1OI!<:UI!<1OK!<1OK!;P+B!<:UL!<(IJ
-!<:UL!!:[N!9hr5!/f;,!4LGXKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#X5eH#WFeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-:g&M,Kg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU5eGoTFeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X7ec5[JebfC,ebfBoeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-<gA_0OgA:m1gA:ltg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU7ec,XJeb]@,eb]?oeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5ec,XGeH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,:gA_0Lg&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5ec,XGeGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5eboLGeH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,:gAM$Lg&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5eboLGeGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W4eb]@HeH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,9gA:mMg&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4eb]@HeGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eU[^_!!*&-ec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g496c!4LV]Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eU[^^!4LGXKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W4eb]@HeH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,9gA:mMg&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4eb]@HeGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W4ec#RHeH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,9gAV*Mg&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4ec#RHeGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5ec,XGeH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,:gA_0Lg&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5ec,XGeGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X)eH#XBec5Z`eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-.g&M-GgA_/eg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU)eGoUBec,W`eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X)eH#XAeH#W`eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-.g&M-Fg&M,eg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU)eGoUAeGoT`eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XAec5XPec42"ec,RMec5[KeH>j%s8W)KrVulIs8W&Jrr9^_!<7r,!<9LX
-s+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-FgA_-Ug&Th,gAV'Rg&M-Pg&h?/!!*#Pr;ciNrrE#OrW'[d!!%o1!!'I]
-s+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoUAec,UPeH","ec#OMeGoUKeH5g%!!*#Kr;ciIrrE#JrW'[_!!%o,!!'IX
-s+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#XBeH>j%ec5X!!<;rH!<<&K"96p%s8LOKs8CISs4,["e^a]Mec3A6!<7r,
-!<9LXs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-Gg&h?/g&V-+!!)oM!!*#P!s%'/!<1[P!<(UX!8?-,g=cP\g&Sk@!!%o1
-!!'I]s+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoUBeH5g%eH#U!!!)oH!!*#K!s$m%!<1LK!<(FS!7fU"e^XZMeH!>6!!%o,
-!!'IXs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#XBeH>j%ec5X!!<<#Jrr;uJ"96p%s8LOKs8CLIs8LONs4,["^=<5`MU__,
-[akD1o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-Gg&h?/g&V-+!!)uOrW)rO!s%'/!<1[P!<(XN!<1[S!8?-,^=iPeMV8%1
-[bCb4o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUBeH5g%eH#U!!!)uJrW)rJ!s$m%!<1LK!<(II!<1LN!7fU"^=<2`MU_\,
-[akD1o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#XBeH>j%ec5X!!<<&K"96p%s8LONs4,["rm_MYe^a]Ms4,["e^a]Mec3A6
-!<7r,!<9LXs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-Gg&h?/g&V-+!!*#P!s%'/!<1[S!8?-,rn7h^g=cP\!8?-,g=cP\g&Sk@
-!!%o1!!'I]s+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoUBeH5g%eH#U!!!*#K!s$m%!<1LN!7fU"rm_JYe^XZM!7fU"e^XZMeH!>6
-!!%o,!!'IXs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#XAec,UKec#OJec5XNec42!rrUaNs8LRKs8LRKs8CLJrrL[M^XW>aMU__,
-[akD1o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-FgAV*PgAM$OgA_-Sg&Tk+!!:jS!<1^P!<1^P!<(XO!!1dR^Y/YfMV8%1
-[bCb4o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUAec#RKeboLJec,UNeH"/!!!:[N!<1OK!<1OK!<(IJ!!1UM^XW;aMU_\,
-[akD1o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#X?eH#W<eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-Dg&M,Ag&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU?eGoT<eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XBec,T:eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-GgAV)?g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUBec#Q:eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XGec,W5eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-LgA_/:g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUGec,W5eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XJeboK2eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-OgAM#7g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUJeboK2eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH5d$eb]?0eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&_9.gA:l5g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eH,a$eb]?0eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eU[^_!!*&-ec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g496c!4LV]Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eU[^^!4LGXKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH5d$ebfE0eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&_9.gACr5g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eH,a$ebfE0eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XJeboK2eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-OgAM#7g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUJeboK2eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XGec,W5eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-LgA_/:g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUGec,W5eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X5ec5[,eH#XHeH#XIec5[#eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-:gA_01g&M-Mg&M-NgA_0(g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU5ec,X,eGoUHeGoUIec,X#eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X4eH#X,eH#XAeH#X#eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-9g&M-1g&M-Fg&M-(g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU4eGoU,eGoUAeGoU#eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XBeH,^#rr<#Ks8W#I!<<#Js8W)Ks8W#Irr;uJs8VlErVulIs8W&Jrr:R"
-!<7r,!<9LXs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-Gg&V3-rW)uPrrDuN!!)uOrrE&PrrDuNrW)rOrrDiJr;ciNrrE#OrW(O'
-!!%o1!!'I]s+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoUBeH#[#rW)uKrrDuI!!)uJrrE&KrrDuIrW)rJrrDiEr;ciIrrE#JrW(O"
-!!%o,!!'IXs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#XAeH#XJeH>j%ec5Tu!<<&K"96p%s8CIJs8LOKs8:CLs4,["psfBEqpb]H
-rm_,Ne^a]NeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-Fg&M-Og&h?/g&V**!!*#P!s%'/!<(UO!<1[P!;tOQ!8?-,pt>]Jqq;#M
-rn7GSg=cPXg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUAeGoUJeH5g%eH#Qu!!*#K!s$m%!<(FJ!<1LK!;t@L!7fU"psf?EqpbZH
-rm_)Ne^XZNeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XAeH#XJec,UHeH#XKec,UJec,UIec5[Kec,UCeH#XHeH#XKeH>j%ec44N
-!<7r,!<9LXs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-Fg&M-OgAV*Mg&M-PgAV*OgAV*NgA_0PgAV*Hg&M-Mg&M-Pg&h?/g&T^X
-!!%o1!!'I]s+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoUAeGoUJec#RHeGoUKec#RJec#RIec,XKec#RCeGoUHeGoUKeH5g%eH"1N
-!!%o,!!'IXs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#XAeH#XJeH>j%ec5Tu!<<&K#liH*s4./"ec5Ns#636(s4,["psfKHe^a^!
-eH#XKeH>j%ec44N!<7r,!<9LXs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-Fg&M-Og&h?/g&V**!!*#P#QWT4!87G,g&V$("p!B2!8?-,pt>fMg=cQ+
-g&M-Pg&h?/g&T^X!!%o1!!'I]s+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoUAeGoUJeH5g%eH#Qu!!*#K#QWE*!7_)"eH#Ks"p!3(!7fU"psfHHe^X[!
-eGoUKeH5g%eH"1N!!%o,!!'IXs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#XBec#OIec5[KeboIIec5[Kec5XOec41Mrr;rIs8VfCs8W,Lr;ZfIs8N,M
-s4>d$s,,>,s0gJXKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M-GgAM$NgA_0PgACsNgA_0PgA_-Tg&Tj\rW)oNrrDcHrrE)QquHcNrr<)R
-!8#p)!/fJ1!4LV]Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoUBeboLIec,XKebfFIec,XKec,UOeH".MrW)oIrrDcCrrE)LquHcIrr<)M
-!8#a$!/f;,!4LGXKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#WnebfBceH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,sgA:lhg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoTneb]?ceGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5ec,XGeH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,:gA_0Lg&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5ec,XGeGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5eboLGeH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,:gAM$Lg&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5eboLGeGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W4eb]@HeH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,9gA:mMg&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4eb]@HeGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eU[^_!!*&-ec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g496c!4LV]Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eU[^^!4LGXKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W4eb]@HeH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,9gA:mMg&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4eb]@HeGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W4ec#RHeH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,9gAV*Mg&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4ec#RHeGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5ec,XGeH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,:gA_0Lg&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5ec,XGeGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X@ec5[Eec5[DeH#X=eH#X%eH#XHeH#X@eH#W,eH#WXec19m^&S-0eHMcK
-k2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-EgA_0JgA_0Ig&M-Bg&M-*g&M-Mg&M-Eg&M,1g&M,]gAc`p_Z0Z5g'+2M
-k2s5TJ,~>
-!<E0!joD4BeGoT,eGoU@ec,XEec,XDeGoU=eGoU%eGoUHeGoU@eGoT,eGoTXec19m^&S-0eHMcK
-k2s>WJ,~>
-!<E0!joD4BeH#W,eH#X?eH#XDeH#XDeH#X=eH#X%eH#X9eH#W,eH#WXec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD+?g&Rt,g&M-Dg&M-Ig&M-Ig&M-Bg&M-*g&M->g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5T
-J,~>
-!<E0!joD4BeGoT,eGoU?eGoUDeGoUDeGoU=eGoU%eGoU9eGoT,eGoTXec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD4BeH#W,eH#XAec,UJec5[IeH#XJec5[Kec#OIec5[Eec#OJeH,^#rr3&Ms8W)K"96pO
-s8CLIs8UXLs8:FIs8LRIs8LRKs8CLJs8UURs4./Le^a\WeH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-FgAV*OgA_0Ng&M-OgA_0PgAM$NgA_0JgAM$Og&V3-rW!#R!!*#P!s%$T
-!<(XN!<:dQ!;tRN!<1^N!<1^P!<(XO!<:aW!87DQg=cOag&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUAec#RJec,XIeGoUJec,XKeboLIec,XEeboLJeH#[#rW!#M!!*#K!s$jO
-!<(II!<:UL!;tCI!<1OI!<1OK!<(IJ!<:RR!7_&Le^XYWeGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XBeHu9+ec41Ms4,["rRCoJrm_,Ne^a^!eH#XJeH>j%ec5Ep!<;uI!<;rH
-!<<&K#636(s4,["qUGTGrm_,Ne^a^!eH#XHeH#XKeI2E-ec41Ms4,["ec1NW!<9LXs+BmUs8VuH
-"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-Gg'Ic5g&Tj\!8?-,rRq5Orn7GSg=cQ+g&M-Og&h?/g&Up%!!)rN!!)oM
-!!*#P"p!B2!8?-,qUtoLrn7GSg=cQ+g&M-Mg&M-Pg'[o7g&Tj\!8?-,g&R#a!!'I]s+0aXs8VuM
-"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoUBeHl6+eH".M!7fU"rRClJrm_)Ne^X[!eGoUJeH5g%eH#Bp!!)rI!!)oH
-!!*#K"p!3(!7fU"qUGQGrm_)Ne^X[!eGoUHeGoUKeI)B-eH".M!7fU"eGtKW!!'IXs+BmUs8VuH
-"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#XBeHQ!'ec41Mrr;oH!<<&Krr;rI!<<#Jrr;`C!<;uI!<<#Jrr;uJ"96p%
-s8LRKs8LRJs8LOKs81=Hs81=Hs8LOVs4,["e^a]Mec42"MU__,[akD1o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-Gg'%K1g&Tj\rW)lM!!*#PrW)oN!!)uOrW)]H!!)rN!!)uOrW)rO!s%'/
-!<1^P!<1^O!<1[P!;kIM!;kIM!<1[[!8?-,g=cP\g&Th,MV8%1[bCb4o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUBeHGs'eH".MrW)lH!!*#KrW)oI!!)uJrW)]C!!)rI!!)uJrW)rJ!s$m%
-!<1OK!<1OJ!<1LK!;k:H!;k:H!<1LV!7fU"e^XZMeH","MU_\,[akD1o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#XBeHu9+ec41Ms4,["rRCoJrm_,Ne^a^!eHl3*ec42"e^a]peHZ'(ec41M
-s8LONs4,["rm_,Ne^a]teHQ!'s4,["rm_,Ne^a^!eH>j%ec5X!!<<&K$iec-s4,["e^a]Ms,,>,
-s0gJXKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M-Gg'Ic5g&Tj\!8?-,rRq5Orn7GSg=cQ+g'@]4g&Th,g=cQ%g'.Q2g&Tj\
-!<1[S!8?-,rn7GSg=cQ)g'%K1!8?-,rn7GSg=cQ+g&h?/g&V-+!!*#P$NSo7!8?-,g=cP\!/fJ1
-!4LV]Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoUBeHl6+eH".M!7fU"rRClJrm_)Ne^X[!eHc0*eH","e^XZpeHQ$(eH".M
-!<1LN!7fU"rm_)Ne^XZteHGs'!7fU"rm_)Ne^X[!eH5g%eH#U!!!*#K$NS`-!7fU"e^XZM!/f;,
-!4LGXKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#XAec5XQec41Ms8W)Kr;ZfIs8W#Is8W)Ks8VfCs8W,LrVuoJs8N/Ns4.,K
-"4dGOec,UJec5XMec5X!s8W#Is8W,Lr;ZfIs8W,Lrr2uKrr7l+!<9LXs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-FgA_-Vg&Tj\!!*#PquHcNrrDuNrrE&PrrDcHrrE)Qr;clOrr<,S!8@DP
-"53_TgAV*OgA_-Rg&V-+rrDuNrrE)QquHcNrrE)QrVurPrW%i0!!'I]s+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoUAec,UQeH".M!!*#KquHcIrrDuIrrE&KrrDcCrrE)Lr;clJrr<,N!7h&K
-"4[AOec#RJec,UMeH#U!rrDuIrrE)LquHcIrrE)LrVurKrW%i+!!'IXs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#WtebfB]eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-$gA:lbg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoTteb]?]eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5ec,XGeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,:gA_0Lg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5ec,XGeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5eboLGeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,:gAM$Lg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5eboLGeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W4eb]@HeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,9gA:mMg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4eb]@HeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eVO8+s,,>,s0gJXKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g5#`dg&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eVF3_eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W4eb]@HeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,9gA:mMg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4eb]@HeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W4ec#RHeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,9gAV*Mg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4ec#RHeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5ec,XGeH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,:gA_0Lg&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5ec,XGeGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19ks81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`ns81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19ks81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec17%^%D=+KE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc^(_Y!j0JcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec17%^%D=+KE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec17'^&S--ec17'^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc^*_Z0Z2gAc^*_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec17'^&S--ec17'^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec1:%^&S-.ec17'^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAca(_Z0Z3gAc^*_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec1:%^&S-.ec17'^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec1:%^&S-/ec1:%^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAca(_Z0Z4gAca(_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec1:%^&S-/ec1:%^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec1:$^&S-0ec1:%^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAca'_Z0Z5gAca(_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec1:$^&S-0ec1:%^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec1:$^&S-1ec1:$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAca'_Z0Z6gAca'_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec1:$^&S-1ec1:$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec1:#^&S-2ec1:$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAca&_Z0Z7gAca'_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec1:#^&S-2ec1:$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec1:#^&S-3ec1:#^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAca&_Z0Z8gAca&_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec1:#^&S-3ec1:#^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec1:"^&S-4ec1:#^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAca%_Z0Z9gAca&_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec1:"^&S-4ec1:#^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec1:"^&S*6eUrMP^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAca%_Z0W;g4=hQ_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec1:"^&S*6eUrMP^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec1:!]`A*3KD`F_s81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAca$_>sW8Jc*Cbs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec1:!]`A*3KD`F_s81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec1:!]`S4dKDW@^s81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAca$_?0agJc!=as81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec1:!]`S4dKDW@^s81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19u^&N`^^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAca#_Z,2a_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19u^&N`^^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19u]`<]]^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAca#_>o/`_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19u]`<]]^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXec19ks81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]gAc`ns81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXec19ks81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WXeGt6js81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,]g&Q]ms81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTXeGt6js81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#W?eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,Dg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoT?eHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD*+g4@t/g7?q$U&X9;\c@6~>
-!<E0!joD3.eUc8%eXb4oV#TT>]`<Q~>
-!<E0!joD4SeU`@(K7SZhKBC\fV#TT>]`<Q~>
-!<E0!joD+Pg4=g+JUrBdJ`bYiU&X9;\c@6~>
-!<E0!joD4SeU`@(K7SZhKBC\fV#TT>]`<Q~>
-!<E0!joD4SeU`@(K7SZiK)kr6eHMcKk2s>WJ,~>
-!<E0!joD+Pg4=g+JUrBeJH5`4g'+2Mk2s5TJ,~>
-!<E0!joD4SeU`@(K7SZiK)kr6eHMcKk2s>WJ,~>
-!<E0!joD4Sec19n]`J/HK)^D8J\C!Ts8V`)s8V63"f21\k.LbF~>
-!<E0!joD+PgAc`q_?'\RK)^D=J\p?^s8V`.s8V68"ektYk.1PC~>
-!<E0!joD4Sec19n]`J/HK)^D8J\C!Ts8V`)s8V63"f21\k.LbF~>
-!<E0!joD4Sec19p^&S*5K=up;!/#j9J\C!TrVuT)s8V63"f21\k.LbF~>
-!<E0!joD+PgAc`s_Z0W:J\m'>!.f^<J\p?^rVuT.s8V68"ektYk.1PC~>
-!<E0!joD4Sec19p^&S*5K=up;!/#j9J\C!TrVuT)s8V63"f21\k.LbF~>
-!<Bh3SGUk:KD3(Ys8R]Q^&S+eec18Q]n*lT^&.j)^&S,peHMJVS=BQZJ,~>
-!<B_0RJY_<JbR%\s8RWO_Z0XjgAc_T_L]S^_YaB._Z0Yug'*nUR@+$TJ,~>
-!<Bh3SGUk:KD3(Ys8R]Q^&S+eec18Q]n*lT^&.j)^&S,peHMJVS=BQZJ,~>
-!!)uB!1`r:s+C-\rVm&OK7gl;s+])(K7U^e^#6U(s8UXJs8'G/s5qi8SB\a\S,e'~>
-!!)u?!1E`<s+1!_rVm&TJUt]<s+]8-JUt[h_Vi<2s8UgOs8'V4s5r#=REE+PR/ha~>
-!!)uB!1`r:s+C-\rVm&OK7gl;s+])(K7U^e^#6U(s8UXJs8'G/s5qi8SB\a\S,e'~>
-!<CCD]`=T"ec1:!^&A!1ec17'^&S+eec18Q]n*lT^&S-2ec#OG^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca$_YsN6gAc^*_Z0XjgAc_T_L]S^_Z0Z7gAV'L_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:!^&A!1ec17'^&S+eec18Q]n*lT^&S-2ec#OG^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec1:#^&A!/ec17'^&S+eec18Q]n*lT^&S-0ec#OI^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca&_YsN4gAc^*_Z0XjgAc_T_L]S^_Z0Z5gAV'N_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:#^&A!/ec17'^&S+eec18Q]n*lT^&S-0ec#OI^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec1:%^&A!-ec17'^&S+eec18Q]n*lT^&S-.ec#LL^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca(_YsN2gAc^*_Z0XjgAc_T_L]S^_Z0Z3gAV$Q_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:%^&A!-ec17'^&S+eec18Q]n*lT^&S-.ec#LL^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ebb!oec17'^&S+eec18Q]n*lT^&S--ebt.#s5qi8SB\a\S,e'~>
-!<C:A\cA/qgA?HrgAc^*_Z0XjgAc_T_L]S^_Z0Z2gAQU&s5r#=REE+PR/ha~>
-!<CCD]`=T"ebb!oec17'^&S+eec18Q]n*lT^&S--ebt.#s5qi8SB\a\S,e'~>
-!<CCD]`=T"ec1:%^&<T[ec17'^&S+eec18Q]n*lT^&S-.ebt+%^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca(_Yo&^gAc^*_Z0XjgAc_T_L]S^_Z0Z3gAQR(_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:%^&<T[ec17'^&S+eec18Q]n*lT^&S-.ebt+%^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec1:#^&<T]ec17'^&S+eec18Q]n*lT^&S-0ebt."^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca&_Yo&`gAc^*_Z0XjgAc_T_L]S^_Z0Z5gAQU%_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:#^&<T]ec17'^&S+eec18Q]n*lT^&S-0ebt."^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec1:!^&<T_ec17'^&S+eec18Q]n*lT^&S-2ebt-u^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca$_Yo&bgAc^*_Z0XjgAc_T_L]S^_Z0Z7gAQU#_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:!^&<T_ec17'^&S+eec18Q]n*lT^&S-2ebt-u^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec19t^&<QeeUrLfs8Ri(s+>m9J\C!Ts8W,LrIas[s8V63"e<iN]po(Q~>
-!<C:A\cA/qgAca"_Yo#hg4=gls8Ri-s+,a<J\p?^s8W,QrIOg^s8V68"e!NE\sWPK~>
-!<CCD]`=T"ec19t^&<QeeUrLfs8Ri(s+>m9J\C!Ts8W,LrIas[s8V63"e<iN]po(Q~>
-!<CCD]`=T"ec19r^&3Ka^&S+eec18Q]n*lT^&S-2KD<.[s5qi8SB\a\S,e'~>
-!<C:A\cA/qgAc`u_Yerd_Z0XjgAc_T_L]S^_Z0Z7Jb[+^s5r#=REE+PR/ha~>
-!<CCD]`=T"ec19r^&3Ka^&S+eec18Q]n*lT^&S-2KD<.[s5qi8SB\a\S,e'~>
-!<CCD]`=T"ec19p^&EWc^&S+cK7U^e^#6U(s8R`F^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAc`s_Z#)f_Z0XhJUt[h_Vi<2s8RZD_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec19p^&EWc^&S+cK7U^e^#6U(s8R`F^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec19n]`Ni"s+>rT]n*lT]`J.coY(;)k1'X*c+Uf\!.Y~>
-!<C:A\cA/qgAc`q_?,;*s+>lR_L]S^_?'[foYUY.k1U!,b.>0P!.Y~>
-!<CCD]`=T"ec19n]`Ni"s+>rT]n*lT]`J.coY(;)k1'X*c+Uf\!.Y~>
-!<CCD]`=T"ec18Qs+13$s1nZseHMJf]tKp9J,~>
-!<C:A\cA/qgAc_Ts+13$s1nZsg'*ne]"4:0J,~>
-!<CCD]`=T"ec18Qs+13$s1nZseHMJf]tKp9J,~>
-!<CCD]`=T"eGt5Qs+13$s1eTreHMJf]tKp9J,~>
-!<C:A\cA/qg&Q\Ts+13$s1eTrg'*ne]"4:0J,~>
-!<CCD]`=T"eGt5Qs+13$s1eTreHMJf]tKp9J,~>
-!<CCD]`=RReUc8%eXb4oSB\a\S,e'~>
-!<C:A\cA.Lg4@t/g7?q$REE+PR/ha~>
-!<CCD]`=RReUc8%eXb4oSB\a\S,e'~>
-!<CCC^%%VDUk,=mUqNQ(^%.Znc2PBWS,e'~>
-!<C:@]()2>Tn/ngTtR-"](26hb5SsQR/ha~>
-!<CCC^%%VDUk,=mUqNQ(^%.Znc2PBWS,e'~>
-!\j]"rOqgI!53s`JcC<$^&RWIrk/B'!',Q~>
-!^m%2rOVUC!4ma]JcC<$^&RWFrji0!!(;>~>
-!cn@drOqgI!53s`JcC<$^&RWIrk/B'!-<Y~>
-!]^8*n%A^kJ`_OGJ`aZ.!6suG!h96FJ,~>
-!^m%2n%&LeJ`_OGJ`aZ.!6XcA!gs$VJ,~>
-!cn@dn%A^kJ`_OGJ`aZ.!6suG!h973J,~>
-">Mn:S=K,_!1\W&J`_OG^#f=>n\+sm!WY5@J,~>
-s$QngR@3TV!1AE#J`_OG^#f=;n[eag!WYVVJ,~>
-"DVuXS=K,_!1\W&J`_OG^#f=>n\+sm!W[:_J,~>
-">Mns!!)MYJ\?WJJ\A_0nXTUZ!]_tqJ,~>
-r^?bdn<nj=J\$ED]XmX$rrE$dJ,~>
-rcA)>n=5'CJ\?WJ]Y3j*rr<+AC3+n~>
-!BDn63Iq0]!.b->!!G#:0f^t=~>
-r'Z)9JH16$RfN@SJ,~>
-!HW#TF+F=B!.b->!;png~>
-%%EndData
-showpage
-%%Trailer
-end
-%%EOF
diff --git a/lib/et/doc/src/megaco_collector.gif b/lib/et/doc/src/megaco_collector.gif
deleted file mode 100644
index 56a2c5891e..0000000000
--- a/lib/et/doc/src/megaco_collector.gif
+++ /dev/null
Binary files differ
diff --git a/lib/et/doc/src/megaco_collector.png b/lib/et/doc/src/megaco_collector.png
new file mode 100644
index 0000000000..d5c2cde7e4
--- /dev/null
+++ b/lib/et/doc/src/megaco_collector.png
Binary files differ
diff --git a/lib/et/doc/src/megaco_collector.ps b/lib/et/doc/src/megaco_collector.ps
deleted file mode 100644
index bdc603f087..0000000000
--- a/lib/et/doc/src/megaco_collector.ps
+++ /dev/null
@@ -1,3247 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: GIMP PostScript file plugin V 1.12 by Peter Kirchgessner
-%%Title: /home/hakan/picts/megaco_collector.ps
-%%CreationDate: Mon Oct 14 18:04:40 2002
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%Pages: 1
-%%BoundingBox: 14 14 433 458
-%%EndComments
-%%BeginProlog
-% Use own dictionary to avoid conflicts
-10 dict begin
-%%EndProlog
-%%Page: 1 1
-% Translate for offset
-14.173228 14.173228 translate
-% Translate to begin of first scanline
-0.000000 443.079478 translate
-417.999508 -443.079478 scale
-% Image geometry
-500 530 8
-% Transformation matrix
-[ 500 0 0 530 0 0 ]
-% Strings to hold RGB-samples per scanline
-/rstr 500 string def
-/gstr 500 string def
-/bstr 500 string def
-{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
-true 3
-%%BeginData: 194862 ASCII Bytes
-colorimage
-"4bhXB)#L068!gRJNn]M`]jGHoiV;t7J0da:/CXf"%jdo1k5~>
-"5;@eBD>U16Sa3Zq*KWuJO.RI!$q5?!E_b_=TM8npfR\n/42gU~>
-"4bhXB)#L084%l+JQ%+u`_ujnoiV;t7J0da:/CXf"'&!2F+=~>
-"k%V!e`,ckkQ'lHmK'S4JX5tp<L9#;Q^3u(QC!o(QBml'QC!o(QBml'Q^3r(QBml'Q^3r(QC!r(
-Q^3r(QC!o'Q^3u)QC!o'Q^3u)QC!o(Q^3u(QC!o(Q^3u(Q^=#)QBml'Q^=$:QNNP?Q^7T:!1*SM
-J!QFaOckiiP*(oiOckiiP*(oiP*1rjOcbfhP*1rjOckliP*(liOckliP*(liOckihP*(ojOckih
-P*(ojOckiiP*(oiOckiiP*(oiP*1rjOcbfhP*1rjOckliP*(liOckliP*(ojOckihP*(ojOckih
-P*(oiOckiiP"Lk"OcbfhP*1rjOckliP*(liOckliP*(ojOckihP*(ojOckiiP*(oiOckiiP*(oi
-P*1rjOcbfhP*1rjOcbfhP*1rjOc`Z6iVqg:kPjZKlL+*+a6*B\!9=%A"mk[FeD]<aiW/*=kQBYF
--oQS~>
-%bH$2e`5cQk32'qm-_6-MP'sAnXb<&hOOY<qOIVXrLEq[qOIVXrLEq[qOIVXrLF%^SXlANSH,8X
-SH,8[SH,8XSH,8[SH,8XSH,8[SH,8XSH,8[SHGISSY#eN!1s%X!1s.[!1s%X!1s.[!1s%X/=rE'
-?h*%3ioB.^k32'qm-DXRi8EVTjlP[hlKdidiSNMOioK4_kigd*0116~>
-"k%V!e`,ckkQ'lHmK(25J`<$U($"<5j5T+YioB%Yio9"XioB%Yio9"siX"T(ioB%Yio9"si]#oW
-ioB%Yio9"XioB%Yio9"Xj5T(Yio9"Xj5T(YioB%Xj5T(YioB%Xj5T+YioB%Xj5T+YioC!s#ijq(
-j5T+YioC!s2rioWj5T+YioB%Xj5T+YioB%Yio9"XioB%Yio9"Xj5T(Yio9"Xj5T(YioB%Xj5T(Y
-ioB%Xj8IsCj5T(YioB%Xj8IsUj5T(YioB%Xj5T(YioB%Xj5T+YioB%XOn%E0iW/0@kQU8>md%pU
-ro*q<rTFFOmdAT`hu;U8jo+BFh69@gJ,~>
-"H0M7e_C)[#2nV*k3/jIX)J#\d;Nc=EGoi<Df]o;FDu8AE--)>F)Q,?E--&>F)Z8AEcc5BEcH>C
-F*;JGEcQDCF`h\KEH?;AH?=4TDg-DFHZF7SDg?JHIrBOWE.)eLI;aLWF+A4SI<'g]FanFYH?4RX
-G^XR\G]eLVH[A;)Jou9gEI`@WK5uBhF+e^^JoQ?gFbFd_Irg6dG_0sdI!(-aH[p-hG^"d\Isc?k
-FF&IXK6_ZnEdiFYKQMNkEIrL[K5uEiF*!"WH%BseH?Fm]I=H<lG'\a[K6qcqF+/U[Km.fpEe8[]
-L3%cnEeSa`K5uNkFbOpbJT?HiG_C*fI<:0cH\$0iH?Y$_IsuKnG'eg\KR7lrEdiLZKm.ipEeA^^
-Kl_]mF+ng`K5uQkFbXscJ9$?gGS#LJJUMZpFF8X[HqWkWe^iLSh>lL4jorf`e^`:-rn[Y7roO70
-iVq@-f`'_2hrNq^O<oD~>
-%Z[dDf%Jd3hV[>Qk3&pXX*XksJC]'EI"$EjI=-HjI!p?iI!gBiIXQTnI=6TlIXZ]qI"$QmJUMrt
-H[pWoJp`'"H\6itK7/<%I>!'!KRAH(IYE3%K7/H'J:r<(JprN(Jq\W.J:N-(I>*<'MLC,4I>NN*
-M1(,3IYiN+LOG&3JVnl1Kmnu1K8P&6K7Jo/L515:J:`Z+MM-M>I>*K+N.HV>I#<W.NI?M;I>i`/
-Mg^G:IuSo2M1(A9JrP28LOY>6KSt5;KS#54M26YBJ;&r0NJ)kDI>E`/O+;nCI>ir4O+)k1Mgg\=
-K8k><Lk(S:L5UM@KS,;6MMQeDJ;0#3NeN(FIYio2O+E"DI>rr4O+)qCIuf/6NI?e@JWG89MLUY<
-KT1D=LOkM9LPpVAK7f25MhlnEItio2NeE%FIYrr3O+;qCI>(_gdacq%g=tKAioB1_`ST(of@npm
-gtpuKjQ=eHdaQe"g=kB>iSrs\/:[~>
-"H0M7e_C)[#2nV*k30LUX31Iee&m0ab0%rNbKe8Tbfe;Sbg";UbKJ2Rc-4AVb08,QcHFDVb0A/R
-cH=AUb0J2RcH=DWb0\>UccXPXbL"DVcH=JVbg4GYc-4SXcI'k`ccsk]d*U"ac-F_\dEg(bbg4Y[
-dE^%ebgXt`e]cChbgaq`eBH@gbgjtbe'-=fc.'u;dW<X_c-On`eBcCibgFk_e]lFibgXq`e]cFh
-bgk"aeBHCgc.1%be'-=ecIC(edEL.cd*p4gcd(%ada?:hc-Ok_eBcChbgOq`e]lFibgXq`e]cFh
-bgjt`eBHCgc.1%ce'-=ecIC(edEU4cd*p4gcH\i-bgXt`e]lIibgat`[email protected]%d
-d`g7dcd^1fd*:+bdF-7hc-Fh_e'Q@ibgFn`eBZ@hbg)+5e^`7*rn[Y5rT4:(i76B0h>Z72ir8'@
-dc(2U!8.;-"lJD'k)`5d~>
-%VF8Ag=Xj1i8s"NkO#?LqIp"GD//HP!GuWHB`W!co4\8\]P$SF$u19WJCM'BJWe5iCi&BN"cpuB
-\YNp6Bf'aEC2Rg&D/*p'OH"$lD/*p'C2Rd'Chds)DJs90Chn'+E,KE2CMn6/Ec>f=CiXW4GA_;J
-G&)5ACjBr>G&2ABDg6,CFDQ>CF*MMIEGp2@GBReME-$>AIWKFWDL$JCIrTRYCjgACJ8]^XD1?PH
-I;OCSDLcYMHYn7REdqtSG&;hMGC47[F)lkMIX#^`EHltLJol!bDLHeIKQ23dD1ZkKKPu6aD1lqQ
-JSfs\DhN%UG^O@\EclqMJTbpbE-cqLK626lDh<@RMfX5uD23=VM/RroD2NF]L2DZiEf"acIr1$a
-G_^-iH#SX\It2BmFa&UXKmIZqEd`OVLj!rtDM*:RMfO2tD23=WM/RuoD2WI^Kl)TiF,=jeIVjsa
-H%p0jG]AU[It%lDM04&uD2!4,mFBbArn\"?jlY^hlc7r6aD(Tf&o=u<lIFkDe^Au:gt-eLjlX]H
-J,~>
-%VO>Cf[S7'hr<SGk3B-WqK2j_H$8Rt!I8n`FTH]2o5t+r^iSjb%!IJuMq,MXMjr"5G^/Lr"dm\Y
-^8c;PF`2GIG'\CUGBS.RG'S:uQ$7ItG'S:UH$4L[G'nOZI!0j^GCFa_HZsp`H%'scH?XmaI!p3h
-H$XsaJ9uKmG^Y'cJpMcqG_(9eKmA-!GD(?iL3S<#G_^WpKm/<#HAHj!JU!#uItr6'IsQrtK7c71
-M1'l0H&-rqMgL)1G`$ouM0Xl,H&R*%L3ST)I>W?*JpE<&Jr"Z0IXI*#LP'l3I"@-!Mh-58H\R8G
-H&[9'Mg:22H]WW0Lj>&2J;ni4K6iZ-Ko()8J:ET*MM-8:I>!K'NduS>HAR?$OF;b?G`@9&O*c\;
-H&mE+NHpM7I#r]1LM_<tIY!K(N.QD<I"mH&NdlS>HAdE$OaMk?H&dE)Nd?S9H'!H-Mg:;4IZJi4
-KmAc.K8b&7JUNT+Lkg8:IY*Q)N.FsneCN=,gYUiIj6#Of_qrqcB4tsmCMgKAkgA89f$]#7g=LYK
-jQ=NFJ,~>
-%VF8Ag=Xj1i8s"NkO#sXqSWHS`l7>`!QN+Q_u[iso>C^WkJ?N'%)pNDbjOEQbgl$q`l75]"k;qT
-jk7QH`;do.`5op;aMl3>f%%aZa2Q-=`Q6$=`l6$<`lH'>`l6$<a3)BCaMuEBaN;EE`lH9Bb/q]I
-a2lECcH+/P`m)WHc,\#O`m;cKcGn,Oa3VfLbf7rMaj.oNbK%rMbK\&PaiViKbfe&QaNMiJcH=8S
-a3;`IccF8R`m)ZIcH"/QI`B^Ub0J#Ob/hoLbKRuOair,OdE9PYaNi&Md`K\Z`mDoMd`B_Z`mVuO
-dDsVWa3r&RcGn8Sb0e8VbfA2Rc-ODWb/r&OccjDWair)NdE9SYa3W#Md`K\Z`mMuNd`B_Y`mVuP
-d)OGUaO8/ScGn;Tb0e8VbK&&Pc-F>Vs2m:Ja3`&Me&fh[`mMrNdDsSW`mVuQcc4ATajS8Uc,S2R
-bL"8VbK/,QcHXAWaii&Od)q13e^`FRh?r3&k2tmna5GLhC&McZCpiEje`#'/dX[eAf6F7Uk/p)B~>
-%U%fGfQ0d"jlV^nZ0n\eqHj;A]OpS=!arT_pKmueT3V"q!d'MolsC3@ctf]!8!?o@j@,l*?0bi$
-Q0LcbSQ5Jm&n&Cs@UNSQ?XdGNG0tPC?XdDNIpubr@piqV@qB"Z@UWtXAS>Ic@qBIaCM70p@:s=`
-D.R6o?ts@bDdd?t@;ogiE+*U!@rc$lDIIQuAoV6tD.@]uC3!^)C1_ZuEH#E5ASZErG&(];@;p<u
-HY7)=@!?L#Hspr9@X;^%H!ti9AUS-/G[l,<C4'N7F(Tl5DgZh>Hu<\HA9E!*I;!MG@XW61J7NbH
-AUeH3I:@PDBRjW7H";D?Cjol?F(^&8FF%JJD/Fc4HZ`tQAo`6.J8T1Q@sN61JnK(N@Xi?4J7NnK
-Aq=Z8I:@\GC4To=G\)G@Dgc)CF(p5:Fa7MKCi4]3Hus%RATN0.J8K-QIq*eIB7a`9HXhSECOfo?
-G%Q>>EI;5FE,'o6GB[YMBlAE/IWAdcmFBtjh>lL5jp(&;m)S&9b54I:V!II!iRQSL5s^BE5sa/i
-ha2h~>
-%U%iFe8\0oio?7kXm<&jqJ-.Y_/esZ!c>]&pM0i%V.oR;!e?\<lt[&Vd;uS4;4V*hj\`(FC?oX=
-T'K2%U14%9<GZMfDSL^=Ci!s(DJa3>dt2LREGfW6CiFB2Ec,f9CiaQ5FDZ#<D09`8F_l2?DKfr=
-F_uDCEHl;DF)QDCFEqbNEcQMDH$4+TDfpDDIWTUZDL-VMDh2kNIVjUYEe81UI;jg[GCaX_H#eOU
-H[TjcFEW7RJ9l6iDgHnOKQVHjDLd(SLN%QjDhWCXKl;KjEJSU[KPlKhFbamcIrU9cH%^'iH?=s]
-It2KoFEiLWKm[s!Dh!@XMKO0!DM<L[Mf=)sDi&[^Iu%uqIWLKfI"lQsH$>-aK7J!$EdNRZM0a?'
-Dh3L[N,s<$DMW[_Mf4,uEJnsbLi.urFGt-fKQ)flG_p<lIWLKfI>)TsG^#$_KRe*%EI<LZM0X9%
-Dh<O\N,j9#DM`^_Mf4/uEJnpbLi/#rCJjEKg"P3;hr<\YkN_<LhuVHMr]h/a6q!m8lI+M>f9efg
-MJbgMf]h-VJ,~>
-%U%fGfQ0d"jlV^nZ0o;pqRH[Djgslj!kRI0pUL@Tf!k:^!lDd@m(!SAl`&@cMoh:8nrhbQ\Eg[/
-deAjk^oR:AICeLV]=GPe\\5Vd`p(@Q\\5Sd]t(ef]"P\e]Xb_e]>1tj^:M(j]>(nj]Y)(n^VIIt
-]tM=q_83e&]YD@r_nWn']>;=q`4Wh%]>MCr`4Nh%]Z%S"_n3n'^;[b%_S!k$^W*n*_S+%'_Ss1.
-^V@h$`PT=0]YVS!a1oAha1K=.]u[k&`k0:,^;mk(_n=((^rF",_7mt%_o04/]thY"`kf@0]Yh\#
-a1f=/]?%k'ah5R2]ZIq)a1KC/^<+%+`Os=-^rX.._nF1)_oB=1^qaR']>hb%ah>R2]?.n(aLfF0
-]ue"*a1KF/^WF.-`4X4+_8j1/_S4.)`5TC2^VRt&a2>X5]Yh_$ahY^5]>hb%ah>U3]?.k(aLfI1
-]udt)`k0@/^W=(,`4a:,_T0:0_RYBfe_C)[!9!k=#3bLAa5GRlq`tgilgE<^e_$<V6&KJE6.kP]
-6@]~>
-)-Q.ZdS3#*^6hG_K^Pm0<)ckE`PH_hrj5o/<$PYKai/ON^W2XBDT/0rK7X!GEjWoR<4&F>Zt\+W
-KUg-#Ki@tMBS!s2CUef=9mO^pGEJ_;b'/l&DoK_E?,`n#;cK$i>1`"fdrUc7?0:*mUW9H>RC]YP
-cV[Y@A[':qCk9OFLf]Z&5L,g"TuX9AK#Pj,LAfDN]uQUHCrNH&XeA]r<E<:&>$+d1=BILg<Er[,
-?<:<8<af-7@96f@<ao09?WLT=>@^fE>utW@?=R#I>?YW@@U`GU>[V8IBjb.]>%M8p=);/ND-(O^
->B!eZBj#@]?uB+`@p3kWAnkIh?t"%YDIm!n?"[tVEa`?r>A[tUF^8Tt=`RtXFB`Qq=a"4bFBNWr
-?$BRiDHV*kAp7F$B3fjjD/`['@q9ggFD4s+?YjadG[t</>B4I^HXCN1=a+IdH<bH,>'j[lG$0!$
-B4#sjDf8g*@V9pgG%b3/?>a^cH"1E1>'4OaHs^`2>'ORgH!>?)>C9dnFBNj"@X24!Cg)0nC3<['
-Amp!kE,Jj+@;'jfG%Y0/?#OXbH=CN3>'4LaHX:T0>'XUhGZo3'>]E-rg]$%=i8s+`l0[p*`8KIp
-932$n#u[_ima^.Gh9Tj85m9`Bl0dFqJ,~>
-%U%oIcV-W(]U;;YJF9L<rac=ka2Nb2rOQeDAKu'!bK5Ho_oe]fIESM<NK3qaJ[rpsB"P1d\9Qco
-OJBt<O(A6$FcOLcHG59a?AQYAL7PJnc@VLLJ&fZhDTfGOA7_IGB%uU-epa4PB^+N5XN@eaUVXHt
-d:-ZuFh,]9HB6.iQ=u]P:"#bHWl_YeON>YFPl/pl_TJ]kIET!S[&IVPBP2-oC2.?sBPD<qD/!X$
-BP_R!E,',YE+a**B6.a'E+a3,CNF00DJ40-DffZ9D/4B1F)kr=CN+K2G].ADC3=W4HYmbLBmF`7
-Ir':QBmsu?I;4.NCOp>GH>.kJE.<@PI!'1UD0C8?IrTCWCO:5>K5Pj_C4LDEK5>m\C4gJJJSK^W
-DM2kQHtn:RFG"=ZG&;tOH@9O]EcZnLJ9PgbDgHnJKQD0gCk6kIM/R]lC5$bLLM_QgCPZqSK5-'^
-E//:ZHu"LWGD'^aG&E+RI=>seEcm(OK6M0gDL?DQCPHnPKkl9bCl*(WJ80g\Ee\C]H>A=UH%Kdb
-FE*(QIsYseE-R"MKQV3gD16nKLN.KjC4pbJLi.WiCPQqQKkl<bD1>@Gg"P3;hr<\YkN_C!_Vj.h
-8l\qq>#_Ebm*seBg<=7r6UXM2k3CbgJ,~>
-%U%uOdS3#*^6hG_K^QO?rj)jLj5Io)s4F^XZQls5jl*tmiSr4k_!0D8a2\/?^YIksZJjKth7N+H
-`7!]&`NoKLCrbSI^>HiiW5[fU`6m/LkJ5?a^uOIp\*;\iZEr!+S*][WlaG43S+Z3df&PJleDoE(
-lE7J"]A;Q+]#`mjbI#UiNU4H\f&PMoaQ;F/a8b5BiT&Cs_!0Xlg;pS/['[?M\$iWR[^E]R\@?pn
-]!f)Z[CNfU]!]/\[D',\]sYPa\%];_]=#A^\\5D`\[K5\]">Aa\@K;\]XbMc\%[email protected][_TMa
-_RI4m[_]Mb_7%+j[_fPe^UCth\\Y_h]XG\e]YCki]"#Sc^V%"l\@fVc^q.(n\%fVb_R[:p[_]Sc
-_RI7nGIGB!]>:ql]=>ki^qdCt\\#eg_nEP"\A,nh`O`\#\&5qga18q$[`,ki`OE_$[`H(pa0rt$
-\]D:s_m[Ut]uRS"^UV@q^r3\%]Y):n`5&k(\\Q.l`kB"*\&6"iah#7+[`6"laLB%&[`H%o`jWk#
-\]D:t_Bu_4]=l7n`P8t)\\Z1la1T++[`#qjaLT+)[`?%na1'"&\&*d_g]$%=i8s+`l0[p*`8KIp
-932$n#u[_ima^.Gh9Tj85m9`Bl0dFqJ,~>
-)-Q1[hS)lR6:FIikjkW;:/53IQ(tj3pfBl_:*ZFdCL:,tQttW-Fo.?D[SZaEW6'A<>i*DdohE*5
-6gq$\:eL^^FC+']N2Usi:"5N&]781UpQi:(aeFs=@eus"8l!-^8[uW"p25uQ6.M]ZiH<jn[,$"1
-N]g-4[a&>k@H;u]k&$%A4jBOHj*'%<k`8eM9_a(gT5!28DYo\oLsejj;-6Rn<DQ^q;HQas<Dcmr
-='&7(<)cCm:g-pu>u=X+;-m4%?Vk$3;diR+>u4s2=(G39?;tQ<>%CKA>ZPK9?XZoJ='TE9BO=hV
-;dj38C0=hV;JBN?D,XnV;fGuHIrA5"A63eN@;AbZ?!D5FBOt4b=C>uEDdcgh<G,uGF'<!i;fQ;N
-E`Hdf<c_MRE`6si=a!hYD,k[a?ZT.aB39@YAT(Oi?s[nRD/!-t=CuMOG%"^"<,QGQGZeTt;g)YV
-G#`Bp=*IkYE`7*l>^'1`CfYac@WPIhAm0F[Bk2*]G@"^!<,lSSGZJHq<H_bWFB!0m=a4%\E)_!i
-??K7cC05^aA8tOjA6j@YCi!0s>[qeQFCe[#<GHAOG?n[!;fZMSGZI/thVR/LjlYakmdBQ4_r]au
-N8s'_keXChnCQIph>kh"5m:rgmdB($J,~>
-"^0sBhRlhd6k=A%n>]5f>AMl\VnIZU@8[#.,H'@>Bk?.nG2e7+qjG[=>k`cLb^eD]i5hP_=MV^J
-n#g>0<rQ<QCZL;7Y(?(Det&VPM:77PS@imdVO,JEq5I_&>Jle.]u3S;G*qAcf;=8^I,'([gjs%$
-8m>N4dVN];jbeNNH'@Pcd%Z9UIG(+TQ=FT7pP%:sFQ&.'qO(NNdoTm^@U*;K?"@8KA6`YR?=mMQ
-AR/qV?tWbXA7'(X@qT(_s'f,H?"dkYD.$pk?>X7`DI.*n?uTOdDd@?r@[email protected]#CL_Nq
-DK0'/AnZ?pFDYN5?uC$nG\Li8@!$?tHX^f7@!QL"H!k]5@XDX%G@,Z4B7+-/F(Sm0ASZQuHZ!GE
-@<-L"IV3GC?[?[&IpmA@@=N!+I:.>AAV"?1H=;8=C49T:FC]r5E-u)EDJ=W0G]mVLAo<$)IrK(P
-@Wm!+JnT"M@"**.JmrhI@Y&91IUIPEAqFN6H=DD?CM\K/HZWhO@rZj(J8K%O@<m!+Jn8kJ@"3*/
-J73YGA:eH3I:.PDBRsW9G[l;<D15lAEb9o4FEq>HC2AB-HuikO@nc1AgtpuKjQ>[km-j>XinMS5
-i8`n]^8^Mge_Ag4h985S6tbcNmGC3[~>
-)-Q1[hS)lR6:FIikjl6FW2R#g]u\a6s,i`KW$B^RTq.Y?]Vb,,]DoM#e"Zl>akj2aVX`BUqO-<m
-MYY;`R%jSYGd$\Ha3:[^OR'[$f"BtOqnLp[il/XfXoH>)U8[%YT\nCTs.IO*N:"H`m],QTgutf1
-\r3Mcgu"WoU@PFgnZg10M<_mfn#PZfoXC0WT`;"R_kc_5\Gs.&`S[5cWirJ)Y,\Y+WirG)Y,SV*
-Y-4k2XfSh.Ycr2LZ`C77Wj8e/ZDt.5X0\k/ZDt45XgG+6YcG15YdLL>[email protected][BQdB
-X0T(4\?<*HWjo@:];r<IX1GL=\Z30GXh1X?\#R$DYdpdD[]R6EZF['JZELsD\%/WSYd1pB]=+lU
-XgYdA]s4hk]WA]QY.h$G\u`QMZ+R0K\#mBI[(EEPZ`q-E\@A]VYI2!D^9k/ZXh)$F^Tb,YX1l!G
-^9+rVXhV*I]W8`SYeI6L\ui]OZb3BP\$*QL\%8]UZEh0F]=4uYY-tsD^9b,YXLbpE^TY&WXM2'H
-^9+uVY.q3J]W8cSYeI7>\MUG'Z*_0E]sb,ZXgksE^9Y)YXLu$G^TN+RhVR/LjlYakmdBQ4_r]au
-N8s'_keXChnCQIph>kh"5m:rgmdB($J,~>
-)-Q1\j6"3U84n6hp%G:J8kO!_cH!2+p.e3Y8gD'\5Y,&S@nG[>E;)i/[RKn/alC.Y@bZl[p-cBt
-6B0.4M+IS;J%W8&E.7:^jNkiOB&]i0be@B?d_iV(pL-N_9#$?UZarHrDN<d?d?gQp_:!V5\j/eV
-7nQD)Tg;4fqasNUFGT3Dbak3k_9o7[9LVKJp3-:I9\kqLpJ+;2ej2r*9i4e^<)67g9N"\\<)$1f
-9ik.f=%u[m9it.h<D6Ik;-@*u=B&%#:K:Ol>ZFX.:g@4#@T-?9:LI4#@o6H8:M!L-A5Hc<;.id4
-?Vb65=_LWD?;YQ=?tN8N>$,Q<ARJDQ<aKH9C0FYS;e0<6CfanV:ha-6D,b"TIo1#a?>WPU>ublE
-AS+hY=^5fACL:"\<F]]>DH^7^;ef]=EE6O_;/TT@Dc:=Y;fu/ODGbFZ=`dVYAQ*\Q@W54c>uu/K
-C1gIf=^Z5IEF2^h<G6)EFBW!k;fH,DG?/?l;KQ,JF&Qsc<-D>SD,PF[>BEh\A5dYQ@rG4b>uXsL
-<,6)EF]`'k;K?)FG#`6i;fu5NEDgd`<HhJWC/T.W??/t_@8qGO;F'U*hk+1[?=[ZTn+H:ijke4A
-k2tmp`NA\(g>(QAeT!l@7SoiGoAr;h~>
-(g6(ZiSq^Q6pu=[na`VP=BKh1d`Sn>p0%>r,K%5l<bD,C=QG`opJJK4;YG@Yjho;Xh33'V:qX>8
-QHdg?=8l<2=i.bbG_tp$jjM;ZDr[t@cGX>Qf#PF=p1[H-=N6V,\@kZ2G*_5\e=<?(`RTIG]h;C+
-<`iJVVbpK@qGpbnIZ`qec_@'%`RM!e=]JO.p3l^W>Mtuqp/kFVfM,OV>$YE`>%(W@@U!8J>@UoG
-@U!AL?"@/M?s@5J@:WSU?X@GPARo%]?XmeTC11Ib?"dhUD-pgj?#4%YEF3Ep?>s@bE*dHp?ZTUk
-DdINsAoqC"BjZ$mCiNd(An?-nEGJp+@V^$kF_50.?u^$jG[kN3??^'mH!t]2?[?9uG[GW/'k2N!
-E,o?5B5)["GAL]:@rQQtH>$uAH=:u7@=;[)G$fQ/B7"'1E++6-Dg>];C1_p(G&h#?Ao<!(HYd5C
-@ruj$IV<PG@!Z["J7N_F@")g)I:7D>@Y&*2G[Pr7BmsK8EFFB/E-bo>CM/-+G&h#@AoE$'Hu*DE
-@s)m%IqNVG@!c^#J7E\D@")d*I:.A=@Y&'2/U(TOBki')H#I,BARJ0qh;4]0?XR8MZgRDR^u=.o
-NoT9blG9Rjo%2OLhUHTF6j62Um-rt"J,~>
-)-Q1\j6"3U84n6hp%GnTUSG6ehqQ;Ss,NiQUEeXBOJ&QNR%NlV[/Z$;dZsj+j6bFQT^T7ls,,X[
-PJc8=`M*7*Eo57#U:^8gn_i0FVXM[\hV+:`in;\Qs-T@OUZ&MNgXMAcTZ?VZlat71fA`g\e;g2n
-Sti(G^QbCuremKHVo8=akeP11fAagLNLZW=s.oU`U@,V!s,N_dj,^"7V5C2eVl-AjUo1/eWMZYq
-V6$SmGH@X@WMQ_oWN2ksW2?\nWiDntVl6\mXJi&!VQHqrZ)=V*V6HqsZ)4Y*V6Qu!YbeP'VQm&$
-XerD'XL>(6YG\n1YI(49XfJq0Z`p@:Wirh-[B6I<W3W\+\#Z[?VR<S+\#HX<Vmi_/[\pL8W48h2
-Z_t75XF@UU['-C;Wj/q/[]HR>W3ie-\>ld?Vm`_.\#?X<W4T+8\>Qm?X1P@=Z`(L:YdgUAYH#46
-['ZdCXKT14\?DmEWjB+2\ui-GW40"0]W/9GVn0"4\u<'BW4T(8\#6d>XLbC>ZDbC9Z+-^BY,f16
-[BlgDXK]75\Z`$FWW0=lW4K(6\Z!$BWP#7;[AUU<Y.CR@Z)G=8Vge!hhk+1[?=[ZTn+H:ijke4A
-k2tmp`NA\(g>(QAeT!l@7SoiGoAr;h~>
-)-Q1ak2tjI=a0!"p@bCK8kN:7V-RMAoj^\p8gBh^Htd9LR!@S-E:uc0[RKb=XjCKb:YUeIp-c4'
-:ip-]fKoI.(kM2%7YL8&c_auV<6EpCmB0+&Y?k[?p0dkl(7qEqZarKsDN<d?bc$BZF'htQ\Nskq
-r^p>!dWB8FjF`!E?ARl.baj"?G@,IQRV->5nqZ"mGi*RUp.S)NY<boU:f9td:JOk_;Gg.g9i+b^
-=AVgq9NG(e=A;[o9NY.h>>/.!:0^On>>&7&;-m"&>\6cA;H@1"@9?E;:Kq+#@oHK>9k.C*B2;f@
-:M<d3CJSSO;f5K>B2<>J=DL`E@T%)C?"cuL>ZY`<A7JMS<Es65CL1"X;.='5D-("Z:MjN@ED^7[
-;/o`DD,4tW<H:rGBi&bQ><?^uC1C4`;djE:E*QOa:hXB<FB)df:39iHFAQ^c;g;APF&6si=EmbY
-D,YX`?Z]+bB30@WB5UUk?=%u#;/g2LGuS?o;0H;OF]!$j<I%VTEDUge>BWn\CK5U]@WG7e@p+"R
-CMZsp>$uDJFCeR!;e^)IG?eKs:i^2MGuSEp;KlGQF]!*k<d@\VCI%7CjBt8?84lL$p%J!pjl"OH
-k324#`NT"/g>(QDT0Yc%F%T'cp>nVk~>
-)-Q1^ioT=?;g%0koC]%S<E3SZW+K^^okmn2<?n-oK5khbT7Q$HGkOtF\kqsTZI3H#>2><dp.r-9
->^^J+fM2<E(l@\-;iC-Ed]-nm?d7>Zn$Z<@ZY*r\p1XG*(8S$3\%PN0Fd1uXc`N;jH"UKm]M*:8
-r`(GUeU)@_jG\lWB92@Jc_?!QI;"#jTPnjUnrM_*KAq<#p/Y4h[7jh+>$?DV?<C?;=']'5@9?cA
-=(,<:?rpcC=^tQ>@om8K>@puH@9I8J?Y*;O?X.;IAS,+]?!qAKCL^Xe>%MANDdQpi=D_\VF'E9o
->&n(^E`m<p?$0CcDcq0m@WP^jC0bsfAoLmoARTacDf/j*?tXO`F_P6->]"CaG@G-*>'4U:@!Z'p
-EEmd"ATh7!CgVNoCiWa*ARp!gF`(Q6?>F[eHY?r:>B=aiI:6l8>'k$pHsC`6FC'H,C3j'2D.8!#
-EcbT9ASHKpH>d5A?#XslIV*5>>Bk*pJ6m,;>CL6tHs:c6?[uO#G[#T2AURg+EaO<*CO'*3Ch%p!
-F*(`<@qp<nHYm5A?#b!mIV!2>>Bt-qJ6d):>^g<uHs:i7@";U$E_>WRiF;dS+[nnHnal@fj581D
-k3)$q`3&V%g">0>SjYu*DFR1Vo&;rc~>
-)-Q1ak2tjI=a0!"p@c"PS=HG<`LEBorLBJYS0Q2@Z`L:q]smF&YQ'F4dZFC/e)?gfQ0tu^s+f7Z
-RC&gFk)oV4(q]M!NP51Iji3d[S)ib7oZr]ZbaY,ms-N_T(<aU`f[Pr]T>U5RkJk1&VOX%'duLKM
-rg[TPiioPkn?KXoQ,*-IkJ4@kW19pZ_5aW2r35S)\F$&ks,<Jkb);p_T:VRGSXuUJTqS$PT:_sO
-VP0Z[Str-QVOsQYSu/6TVOjTZSu/-RV4FKXTrO]]VOsl]USs`_UnOf[VP\R0WhH2eSuJNYWh-2k
-T<P2hYb/%tTsCAjY+MqrUp-MnX.cemVllYrW2$VjX/r#"USb5eYGe5$TW5)dZ)"8#T<G5gZ(\/!
-TWt>iYb/(uU9^JnYb8A$VR)r"XJ3+sWj/2'W2?qpYH=P,UT(Mj[&Kn/TWYGCTs^\qZCeJ'UpZkt
-YG&A#W3W&$X/!(rXKS;(VPgbmZ)j_/TrYDj[&9e-TWkMl[A'\+T<tPn[%OV)U:$bqZ(JD&V6lnu
-Y+`8!W3W&%Whd%rXfnG+V5U\lZE'b.TrbJk[&0b-T<YJm[\9b(I-f_N?pR+M8kL1Pp%J!pjl"OH
-k324#`NT"/g>(QDT0Yc%F%T'cp>nVk~>
-%U&2]k3)+!h<">'p@kFKr^mE2[(r&2Y-`QTE[,.c^q4H!Zb1rSB[&o9R7!^^@@Y0<>e,&lbsHEk
-IBgMoE+o5k).?peM`l:)4))(;R893V6HFC>@^3_@>g?CL8q1Kq>b%<Nc=)4:4G:anMS?`@R@?Kf
-_ECL`>,&jE@!&rlF?Oug40O?2N4llGEOruP9VT4DZ+PoVABdYJb%XF>:f9td:/4b^;G^(e9i+b^
-=&2Xo9ib.d=ADdp9ik+e>>A=#:0^Rp=AE+#:gQt&>>J^+=("g3<`*@'>[1l:@T-B=:h*U*B2MuB
-:hE[.BMrJL;f,KAB2NGI=DLfH?rCiA?YE;O=]T?;ARSJQ<aBE:C0FVS;e'<8CfanY;Jf]=EE$L]
-;K#ZBD,P.U<,klJBMrbO>AdAS?rV,G@VSbY=]mh);e]]>E)pLe;KH&FFB!$e<-;ARF&R-f=*Rb]
-CK,I]@!#@f@TI_TBl-dk>[DPPE+Dsn=(lMNF^89UF]E?l<HhPWEDgmb>BX"`BN97ZA9(Uj?WhSR
-Chcpm>%2POF(&-p<bcGMG$A?r<,lDKGZSTs;fu>OF]<<k<HqVYE(rU^jQ<CQD/O60_=mTq^uXV/
-DghV;&q@akp=n3Yk1tKWlJm;ro_.B5J,~>
-%U&)VjlYgmguS"sp%P@Sr_Wo?\AF\@YI8u\G9^mu_n0o0[_[ejDU2"MSkGimCSSeQ@_@/,cV&E%
-K<i>(GB!P*)/!NrO@Xc@6u]WQS5u/f9uqiYBXPaO@aAE\;0$NsA"TGectS-K7>Jp-PJFnRSY/T(
-`C<^%@&V#TAUD)+H:NJ)7'VYKOhe\VHG.4`<2I<W[)%eoC<oacb]-Q[<`W+#<)m.$>$"X-<*<F(
->uk!3<*`X+?WC98<+/p2@T?`?<Ff09@T6i?=(YKA@7XF3=^5Q>B3eVS=(5Z?CKb%Y<bYrDDcpXb
-=)D5LD-1R`=`IVVCKGF\?#Wq^Am'1ZAT(Xi?sRhVCM6jl?"@nVEFE'n>&%ea=`n%\E`d<k>'=+c
-Cfkdd@WP[kAQj7]C2[3t?X\.^EG8U%?"n@^G%+j(>B"@]G[>*,=a4F`H<Y?*>'aOgG$0$#?$fgp
-Dd%EoATq=#B3]ghDK/g)@:XUdFD+m*?#4RbG[b-#H!59(>C0[kFBEct@!Z$sCg)-lBQ[I&A6sUe
-E,Jj*?Y=ObG%Fp*>]4RaH!k3->'4I_HX(E-=a=FcGZo3'>C0XlF&PZoiSpbKBk_C#^@V'j^>n5&
-EIE:cJpk?)p=e*UinJsQk2CZgnFYd-J,~>
-%U&2]k3)+!h<">'p@l%Jrf[Sbcdodsc-EWoXWsXXf@-CgcIT(JV;d-J]nseYT>T7)RFe:1ie+;c
-XjGVHTq_Og)5<eTY_TF=J>UWC^6?FXLYS_bU!;0*RcBJ.PA[2QS]/@"j-?t'J[X7/\^]0)_nLr2
-gOk]RSAj+.RAnWcTn9Q(JC1Q^\^T*,VUX5/O2o_Kc.94PU>gs#i1#jmQ^3l(QBdo(R$a2.QC=;.
-SX>b7QCF>/SX5b7Q(=;/SX,b6QCXA3SsH%:Qm&/hSt)+?Q^aV5TUD.?Q_0h8U6qIDQDC+>W0j9S
-Q_p:CJ#A[0TU;[HTV\!PS=?FEUnO3TR\6LEVOa3SRA6IDVjj<UR&6FDX-of[R&c^LWL0ZWR]MpQ
-V3n<RT;e3VTUDmLUo'N[SXujLVkKN[R\QgKWh#Z\RAZdJXIGu`R&cgLX-ol]R]N!QWL0]XS?/-U
-V4"BSTrFH[TUW$OV/)rrX.5i_RAlmKXI>u`RB)mNWgTf[R]MsRW0jWVSZA0VURJ9RU8XH[St)mM
-Vkf`^S"ZgLWh5c^R\lpLX.5i_RAljKXI>u_RB)jMWgTi[R]MsRVj)JkjQ<CQD/O60_=mTq^uXV/
-DghV;&q@akp=n3Yk1tKWlJm;ro_.B5J,~>
-%U&5^k3VO(n+?>Ip\pjJrC$oT4$#Yp:QGF3,@Neu3]f\n3]fVr5<VFr5smat5s.1l697M!4[hRr
-5W_"sO8b"SBL>'I6:F(%76ipq5Xde#697M'5W_"l5Wes6(Irk)6T[S"4%2:s6p<[u4ZY\m4$c:u
-55mu>5s%+i6TmIl6:F%$6om\&4ZY\m4ZY\m6U*^u4Zc&&5='UE4[i"77o2fL:Ie/R85MiM:.A,R
-92e>X:.S>U9i4AY9MBq87oW;V=@uCk7T`M\>"Map8mY7i>=_st9OC@l=@lps;dW(&<_['r=Be@-
-;H.1!@U)ZB:0M*uBNJ,F8mkq!Bi%oA8S;.&BM2]=9l!U0A4^K<;JJj4?VG66=Ck';>Z#?3?Xl`F
-<EEm,B3e>N9jV@&CfXPN8nD=*Dbj^rAP$fB<c:WD@SUr@?#3)P>Z>c;An=\X;d=35DdZLc:1S$4
-F')Ua95S-9FAH@\9QO?>C2cj^@o7>E?u&DU>?>f<Bk1%^;I403Ea;[c9kS'6F&ZF^8oS-:F%p4Y
-:30H?DG+kU;fkcEBh`YN>&R&M@T%;D@;8GV>$,`;C1C(^;.+03?U!f<k3)+!mdKiBpA"O#kiV$k
-mI'E4rq6Ehi7Itj!:'RO!;$3`!U)k#~>
-%U&,Zk3;0umd]oAp\CXTrD3\l84Q?K>aGAN,ABkD7n?EK7n?BO91i#O9i">Q:.RlI:.J)Q8l//O
-9LqZOR/W0bE)02!:/FPU:eXDM9Me;S:.J,W9h7cI9M#.Z(K,pA:.S)R85MoO:eF;S8Ol?J852oQ
-9E%a):.RlH:J+,J:/FPU:Ie/U8kDTM:.RoN:]=%291Vl[9MU7r92S\i;-6ar=]&=(;d31&>>ea-
-<ErF,>#\j.=^4g5>#o*2?!UE><a0!1@p<#F;da!4B3AGM;eKH>C/n\P<,5]DBN&SR=Dh2MBN/kU
-?#3MUAQWqS@qnt^?sR\NBkUUi>@VPMEar?q<bcB!=*._WDcC^f>BEq[CKGXb@W>CfB3TO\BPgdm
-?t"(UE+iEu=_DVPG@Fs(<cDkYH!G!&<Hr(^G?8^"=a=:cFB*Qu?@#[jDch?nAT_!sBjH'fD/`R&
-@:XO^F_Y0/=_i"XH=LE.<c`%\HWt3*<I/1aGZSm%>'jLfFB!QuA7'U`E,Jg*?=n=[G\CE0=Di%Z
-HXLE.<H`(^HWY*(=*e=cG?/g$>^T[hE`RKr@X(ppCg26jBld9g8a56rk3;0un+$#Bp\2D`j6#Oi
-lgF64oChq6f&GcQkj%O&nFH8Gj["C~>
-%U&5^k3VO(n+?>Ip\qLIrJLl9JUrT5O1"tj,F+%:JV8r:JV&`:KnPA8Ll-h<M1^A4Lk1G;KStP8
-L4Xu6\,NQKRYZ`NM2R%@Mhlq8LPpb=Lk1GAM1U;5LP#M`(QGT$M1LG;JW#/7MhH\=KRnc5JVT/:
-L&R!2M1U;4MhZe8MMm.AMLgVBKn4i5L4Ou7MM?e>K7]&BKnlk5Jr>YMN099^P)YQcNg>]fQ&V)l
-O-YchPE(riOd1lkOcPffPEV#qOHZ&kR?N`$NL#l5Ngc&nR#RMtOID/rRZF,,Pb3u,R?=2)R%981
-QB\#&S=5P5OdDW!TU(e7O.Ml(V3@=?Nh`#,UlV(;OJJ,.ToPk8PGF;1Srfb5Q_KM6RZaM/S"Gb;
-QBlTdNhDl)V3.4=Nhi#,UQ;%;Oen5/TT5h8PbX;2S<Bk8S>2+CR['h4Tq@IHQ("M/VONgLOJ&8.
-WKrsKNhr81WK<^FO/\J5VN7ODPGs\8U5l4?Q`#n>Ss$(:S>2+CR?jb3U7[RIPaeJ/Vj`mLO.`.1
-OK"M6UlM=APc9b:Toc7>RAGq?S<Kq7StV4EQ^FY2Un*^KP+A>-STjD^k3)+!mdKiBpA"O#kiV$k
-mI'E4rq6Ehi7Itj!:'RO!;$3`!U)k#~>
-%U&5`m-a<2p%J.Trr8ZQp-\dFhF%6.j?iu;7mYWls$ZlV1.+Q"6q9X86qBO.77KX;84?6A8P2BE
-7n66@91_QK7S?EC:e+&P6r$<A<(9SW6rQWIIoSp7:./,R:/jV_9Lr8T;boea8PN2Q>"hIk7o`DS
->tRjo6s<DX@S'U%6t&eb?U\6t7Ueti=[ZXm9j^@o;FP(g;d)Rs:JG=h>uX4)9N5:d@Sf^-86f1`
-AkZ*07:B%bA4]s,6tK(i?q"I#87b@p=[Zpu;.N+*;FbLr=asgJBMqW>7q,RhCe[u>7;#OnBLlN6
-6u5Uu@mt!/95-t(>=<7&<+SL0<(^mt>[9d5:f:moA5u0993PXjBi.]>7UoIgCeRr=7;,RoBLcK5
-7;P\"@RXp.9kd1+>"!1%<FeO1<(gpt?!Kg6:K(gnAQ;<:93Y[jBi%Z>7V!uK53q@pm-a<2p%J.T
-rqsRqkNVF&n+$,Fp\OpJfB2;^mdBT9p@e:ZlU$+~>
-%U&2^l0Ia*nalJKqYR'XpJ:icrD)6H!)NPg!)M]Qs%rbjfhc9X:f1%c;G^4h:fL=i<)HRm<)6:g
-<DZ^o;-6[q<_upt<*E+$<Dcsu='/:(<)d(!>ZXd1;cm7#?rg97;-d:#@T6K;:gmI*@o?Z=:hEa2
-@8UQ<<+]'9?VtN=>%UWD>?#B;@:;i,CKObR;.j-4CK4eS;/BE=CJneP;K#WDAl3>J=DUoL?r:oG
-?YE;Q>ZYfBAn"VV=^Gi?CgC%Z<G#c=E`uad;/KW<EE-L\:iKTAIVr"u?W(rG@q\\Y>?PoCCLL%]
-=(,i?E*QLc;eol>G$&-g:iTcBF&Zja:j#oJDGY:Y<HM5RAl*SQ?#NPX?W2&IAS=n]>?c&DDI?=a
-=(>r@Ea2df;J]c<G$&3h:iTcCE`6^_:j,uLD,>1W<c_5RAPdMP?>`SX?;u#Hs(3u^FBVpg;/T]2
-l/h*mlgF64oChqTq7c"RkN_C$nFH5Gq"rjsjQGamm-jH8p%S:F6%A~>
-%U&5`m-a<2p%J.Trr9<RpP]*1rJKHjrJKZp!f`4te;XEes,LBDOH#6\NK9'[M2[IUN0'-\P)b]g
-NKoTeQ&V#jNL#TfPDtihO-P]hOc>ZfPE_&oOH>iiQBI5rO->igR$!GsNg>lgT95A.NLZ8qSrf>,
-NLl>tSW0,(O.MH%RTYWDPE_]"SsGG3OdV\uTp1b6Nh)MsUQLq6NM)N!TT>V1NMDZ'SW0;-OeIi*
-R>mr(QCa).Q&q]$R[T54PEqo%U6^n;OIVf"V3@1=NhMc"V3.7<NMMf'GG^FoRuOA1R\Ge;Q]n;.
-T:Cn>PaJ5*UmR=COIi#&Vj3UENMDo(VidOBNM_u,V2_4<O/J/2TT,h7Q)0M7RZ=>1R\>_;Q^"A.
-TUUq>PF8/)UmR=BOIr)'W0E[ENMDl'VidRBNMi&.UlD.;OJe52T8f_6Q7\qnU7$8lk321"mdToC
-p\=ac_!'tGmdBQ6p@e7Ws5;Mkkj%U(nFQAIq#'GEJ,~>
-!(-Umrji*Ark/>d,_7+i+b:fV+TaC+[/IK5\cBAA]`P7B[JmW8\Gj&D]Y2"dZ*^t=[fEu<])TGE
-[Q/j~>
-%RIM/['d<M\%&rZ]"<\JJL?!rfdD=tmNsACZa-pE[C*HP\@B,]];W$@Za@-K[^WcW]">8NZEpmF
-[C3NR\@K2W3.L~>
-!(-Umrji*Ark/>u:4Yfa7"IbG6ipc([/IK5\cBAA]`P7B[JmW8\Gj&D]Y2"dZ*^t=[fEu<])TGE
-[Q/j~>
-"'=dJ]_M@(qLS?kp4;qVp&OjCqZQ#pm+4OR~>
-"'=dJ](l.&qLS?kp4;qVp&OjCqZQ#nm++FP~>
-"'=dJ]_M@)qY,R7JbFZg`qBE-h>7?:^?jH;J,~>
-"^19U^&R>Jj+66Aj-ep2fTs);g-U;~>
-"^19U]Dq5KkCMfIkF(K:g6B)9fg1,~>
-"^19U^&R>Jj+66Aj-ep2fTs);g-U;~>
-"^19U^&Qr?eUc8%eX=qk_h5Mhg-U;~>
-"^19U]DplAg4@t/g6pXua+:_hfg1,~>
-"^19U^&Qr?eUc8%eX=qk_h5Mhg-U;~>
-"^19U^&Qr?eUc8%eX=qk_h5Mhg-U;~>
-"^19U]DplAg4@t/g6pXua+:_hfg1,~>
-"^19U^&Qr?eUc8%eX=qk_h5Mhg-U;~>
-"^19U^&Qr?eUc8%eX=qk_h5Mhg-U;~>
-"^19U]DplAg4@t/g6pXua+:_hfg1,~>
-"^19U^&Qr?eUc8%eX=qk_h5Mhg-U;~>
-"^19U^&QsgeH""p_#_iuo[O>p_U[,OcG@rZe]Gi&eH<\)_9_W$!R/ITeH!km_$.d#`RVlNJ^o>%
-J^sPG"iGu'nCg3Z~>
-"^19U]Dpmig&T\$`<"H-o\']%a4f1be&Bqmg<Rn5g&oC7`RF>1!R]!^g&TS"`<FB0b1anaJ_G\/
-J_KnQ"il2'nC^*X~>
-"^19U^&QsgeH""p_#_iuo[O>p_U[,OcG@rZe]Gi&eH<\)_9_W$!R/ITeH!km_$.d#`RVlNJ^o>%
-J^sPG"iGu'nCg3Z~>
-"^19U^&QsgeH_rO='f3?M$rt+$]#5A^As[._U[1>47q&+SK_B);t/<<H5cM-!J:[W?3PC^0%CVe
-J^o>%J^sPG"iGu'nCg3Z~>
-"^19U]Dpmig&e8S=oMh1N=5C4$]>JJ_uQ<9a4f6O4nRG2Td*u3<Ue]CI2_h5!JUmZ@0Ldf0A7(n
-J_G\/J_KnQ"il2'nC^*X~>
-"^19U^&QsgeH_rO='f3?M$rt+$]#5A^As[._U[1>47q&+SK_B);t/<<H5cM-!J:[W?3PC^0%CVe
-J^o>%J^sPG"iGu'nCg3Z~>
-"^19U^&QsgeI8;T`7:P6M$qF'8k-hreI[NFe\;*H/[]G'9fp3Q8mop>eJ`-[\!SA^<D#WtV`[@m
-W%EcVLI".hH5;0*a8+7%K+c_bKh>r0LB]?M>tR5s=D:BH8P2e"J^o>%L"-@EK=UL*6@]~>
-"^19U]Dpmig'jt]aP*FCN=4$29M!>%g(9/Og;EuV0"Gn1:-HWZ94H<Eg)=`c]UU4m=%l'*X$&q"
-X=fA_MF'[email protected](`4oLeDG8M?bcW?VEW(>&6lQ92&4-J_G\/L"Z^NJ[b.%6%A~>
-"^19U^&QsgeI8;T`7:P6M$qF'8k-hreI[NFe\;*H/[]G'9fp3Q8mop>eJ`-[\!SA^<D#WtV`[@m
-W%EcVLI".hH5;0*a8+7%K+c_bKh>r0LB]?M>tR5s=D:BH8P2e"J^o>%L"-@EK=UL*6@]~>
-"^19U^&QsgeI8;TA8RA.M$nhJeLYD0eI[[email protected]'!/giP.m$Nqd/]R/eJW9PCUAd+eM:W^T;hmL
-!$5eSP,iPJ%@\_^q:-:6$#P$.-"\d['7uGKeNd(m!)b]hUiiPceUc8)eHNjC\a\<>J,~>
-"^19U]Dpmig'jt]B5j"7N=1@Rg+@(8g(9/HE+As/!0.&W/3Qj"ec;68g)4lXDRbK5g,!;iUTOTW
-!$>qVQ*57W%A,%fq:ZX>$#k<5->>-e'8;bQg-Sh"!)kfjW-G=ng4@t3g',NJ\+&':J,~>
-"^19U^&QsgeI8;TA8RA.M$nhJeLYD0eI[[email protected]'!/giP.m$Nqd/]R/eJW9PCUAd+eM:W^T;hmL
-!$5eSP,iPJ%@\_^q:-:6$#P$.-"\d['7uGKeNd(m!)b]hUiiPceUc8)eHNjC\a\<>J,~>
-"^19U^&QsgeI8;TUU$$`M$nh=8hPMeeI[NDZCh2U!/gij=Z]Cr8LL>0eJc04^E";J"\LFmT/Sh3
-MZC'5!g;*aH5b<]D>D]uK+G8rE$]*KeJ!P!!(o"_2bqW9R3b2<J^o>%L"-@EK=UL*6@]~>
-"^19U]Dpmig'jt]Vm_ikN=1@D9J:nkg(9/L[\Nn`!0.&q><Ph$9.6_6g)@iA_]9bR"\^UrUGt@9
-NW?NA"-qToI2^ffE;A3(L(C`)E[GKRg(T1,!),1d3)J&FSL-bHJ_G\/L"Z^NJ[b.%6%A~>
-"^19U^&QsgeI8;TUU$$`M$nh=8hPMeeI[NDZCh2U!/gij=Z]Cr8LL>0eJc04^E";J"\LFmT/Sh3
-MZC'5!g;*aH5b<]D>D]uK+G8rE$]*KeJ!P!!(o"_2bqW9R3b2<J^o>%L"-@EK=UL*6@]~>
-"^19U^&QsgeI8;T`7:%PM$nhJeU*e]eI[NFe\;*B!/giO.Q^Epdq#l^eJ_LPeW0og&(Q,r-u>m`
-MZClL!g9R#H5b<]D>D]uK+c_bE$]*KeJ!O,!7cgc2dOt*Gb>OmJ^o>%L"-@EK=UL*6@]~>
-"^19U]Dpmig'jt]aP)p\N=1@Rg4#[ig(9/Og;EuO!0.&V.m6a!fOh\ig)=-Yg6)Yr&))T).;u?h
-NW@AY"-p$-I2^ffE;A3(L(`4oE[GKRg(T06!8<9o3+(C6H__.!J_G\/L"Z^NJ[b.%6%A~>
-"^19U^&QsgeI8;T`7:%PM$nhJeU*e]eI[NFe\;*B!/giO.Q^Epdq#l^eJ_LPeW0og&(Q,r-u>m`
-MZClL!g9R#H5b<]D>D]uK+c_bE$]*KeJ!O,!7cgc2dOt*Gb>OmJ^o>%L"-@EK=UL*6@]~>
-"^19U^&QsgeI8]:a46n>RlSYm8kI,"eI\01e\j/30Xbt1C0nkA8n?6CeJcFm8j\T^=\;0(W]ad/
-5qpO5NC#mtO$qMoL&'78Ps3aKLJ<7teX8\2@7ic'>C"c@9hJ@,J^o>%L"-@EK=UL*6@]~>
-"^19U]Dpmig'kAEbhApMSiY5#9M<Y+g(9f:g;u+B1:hO;D.1RN94lZKg)A.$9LG#j>>.T3Y!6E9
-6Sd'CO@2F)P"+/%M##a@R6]K[MGJh)g7:RB@n]/1?$k;M:/"[6J_G\/L"Z^NJ[b.%6%A~>
-"^19U^&QsgeI8]:a46n>RlSYm8kI,"eI\01e\j/30Xbt1C0nkA8n?6CeJcFm8j\T^=\;0(W]ad/
-5qpO5NC#mtO$qMoL&'78Ps3aKLJ<7teX8\2@7ic'>C"c@9hJ@,J^o>%L"-@EK=UL*6@]~>
-"^19U^&Qr?eUc8%eX=qk_h5Mhg-U;~>
-"^19U]DplAg4@t/g6pXua+:_hfg1,~>
-"^19U^&Qr?eUc8%eX=qk_h5Mhg-U;~>
-"^19U^&Qr?eUc8%eX=qk_h5Mhg-U;~>
-"^19U]DplAg4@t/g6pXua+:_hfg1,~>
-"^19U^&Qr?eUc8%eX=qk_h5Mhg-U;~>
-"^19U^&Qr?eUc8%eX=qk_h5Mhg-U;~>
-"^19U]DplAg4@t/g6pXua+:_hfg1,~>
-"^19U^&Qr?eUc8%eX=qk_h5Mhg-U;~>
-"^19U^&Qr?eUc8%eX=qk_h5Mhg-U;~>
-"^19U]DplAg4@t/g6pXua+:_hfg1,~>
-"^19U^&Qr?eUc8%eX=qk_h5Mhg-U;~>
-"^19U]AqOpeUc8%eYLahe-4..^@9iCJ,~>
-"^19U\`V_!g4@t/g8*Hrf`fg:]^XT?J,~>
-"^19U]AqOpeUc8%eYLahe-4..^@9iCJ,~>
-"^19U\^e0?Y(<a,Y,8?'dFF$HK*@7R_!p&EJ,~>
-"^19U\D"cM\q.GD\u*%?f@kuRJH^tP^@9fAJ,~>
-"^19U\^eKH\q.GD\u*%?daa-IK*@7R_!p&EJ,~>
-#$LBV\^c7IJSp$VJSqH)"`L*aeVBaqX9#AerN$1XkJ6T@6@]~>
-#$LBV\D!1"JVJ`1JVL+X"Ld%<L7eIK!Nq^dY6E_H^@9fAJ,~>
-#$LBV\^d1/JWPGEJWQgl"ME=9LS"LH!NVLaX9IDB_!p&EJ,~>
-#$LBV\^c7gJZOF(JZPiP"hO-ReVC+&]`R5W\Gj/Fp?06\g-U;~>
-#$LBV\D!1KJ_G\/J_I*W"lfR=g4l[-_?/e]]`,bOpZfK^fg1,~>
-#$LBV\^d1YJ`_OGJ``ro"mc3AeVC+&]`R5W\Gj/Fp?06\g-U;~>
-#$LBV\^c7gY,hr+S"$@XXJ;8SWe%7&XG3ea]'e2#LT%o"d.)pnrk/L/kJ6T@6@]~>
-#$LBV\D!1KY1a30`5L3[g<[^UfR_b-g4n;hir@lhL9&2.eFA9srk\j5lFuc@6%A~>
-#$LBV\^d1YY3$&Hcd1S4k1\/-jFQHEk(`"+li5YgLT%o"d.)pnrk/L/kJ6T@6@]~>
-#?gKW\^c7gD#RcCVQ?$\?NHOOrEff)XCYb=XK8B"?NcmR?XIgKX9NZO?\PS_RJgItO^DY#UL.ej
-rEfYh?XI75X9tq/9hf3#T2nZ\EIk3BXG3ea]'e2#LT%o#l0kp8rk/L/kJ6T@6@]~>
-#?gKW\D!1KM>h`$db;A4GQGXarHJRmg44G"g=k'UGQc$dG^,;Fg'3X`GcBEN_Yn]a\9NMWcZk8E
-rHJFSG^+T,g'ZDM@UalAa_bKrOFc,:g4n;hir@lhL9&2/lLD6<rk\j5lFuc@6%A~>
-#?gKW\^d1YOT'_2hWDiVIf[d'rI5(+k(eHHk2tV$Ig"0*It*g\jp%3&J$S5!c2E+s_LI=&g4,0h
-rI4pdIt*(AjpL*kB4m"^e8o88R"=CNk(`"+li5YgLT%o#l0kp8rk/L/kJ6T@6@]~>
--X#m"\^c7gG=[RI=e_TDM2>,\?u/;R5aSR+3gZqLWeiEdV42BqOnl'sO\9S]XK83WJVdWR<b8A2
-8p-RVM2=0YM(jhcX9"u\q5aq"6`d@OXH$GbX?;'8JZOU-'Y<_aeVC*:`r4f?PGPt+p?06\g-U;~>
--X#m"\D!1KQWpVqER)cjY-)H5H&>ae;8Cna9#007f<.6=dDV#N\G=hs\6b-4g=jkCUTS^&D1UEk
-?'N8iY-(71Xurodg&]C4q:Z2'<8-&"g9bkRg.[(OJ_Gk4']T/Lg4lZFb5L>JP,H16pZfK^fg1,~>
--X#m"\^d1YT4#.;GhL_7\$p7VJ<=0+<m'R1:<M_]j0q:_h9V<q_YN=4_dntWk2tDkXLEPGF,8u;
-@[t_/\$nuQ[m7M&joO&Uq;r%?=m"jCk.Z*&k"pWkJ`_^L'^PePeVC*:`r4f?PGPt+p?06\g-U;~>
-**M^l\^c7gN`rNcIVPrHXEBAcKpl,*I\NolCHVQs!'L7^!K17XX8uXbrN$W%TluHXMd3?X<h-6R
-XEAccX??E^!F$Q>X9tq-='&e2N`iHb4FsSbXG3ej]'e2#LT%oPn(#smOgr*ukJ6T@6@]~>
-**M^l\D!1KZZFjSTSD/og6AbSWP`\`T?Z)^LJ7[#!)3CG!O6eAg&ZE$rRqlfba,WEZ$"dGD8k4&
-g6@uSg._Fu!H]U_g'ZDJDJjdSZuOgR9S(oKg4n;qir@lhL9&2Xn_2^%OhAR*lFuc@6%A~>
-**M^l\^d1Y]m8c&WK$%:k+&p&ZHdX/W7^71O&5f;!)W[W!P3[QjoKn@rT4`!fUfdl\pWYnF3s&G
-k+&.&k"u!<!I?*gjpL'gF`i8t^3Jf&:k@b[k(`"4li5YgLT%oPn(#smOgr*ukJ6T@6@]~>
-&6\G`\^c7gN`rNcIVPrG4<+7#!EbH_X91V:<danJ!'L7^"H-QeXI&db'OHZuVOaeY3#8KpXA>7>
-@B?OV4>Hi:#<])hQ`R9\Q2.KgVFco48?@hSXK4O8XF[I-X;&86f@>YTd/)GGe]j#R^%UX)nCg3Z~>
-&6\G`\D!1KZZFjSTSD/n9HsGh!H>LHg&k*GD4U[[!)3CG"L3+'g;!L<'R-b7d`:'F7i^+6g18($
-HeR1,9KrI0#>Ek*^Y7Da^%p@hdp0Ak>M?H(g=f5Og4@t4g(`QHhV*^beGJ+Vg<ke\_Y<?0nC^*X~>
-&6\G`\^d1Y]m8c&WK$%9:a>r$!Hu9Xjo\M`F/Alu!)W[W"M0!Ck0!P_'RdOSh9tFl9-*$Sk%W)I
-K')2N:dP*C#>jRFb3%j:aSFs*hI4:<@-51Jk2oKkk(2ZLjqR.]g!tkVd/)GGe]j#R^%UX)nCg3Z~>
-*Ehgm\^c7gN`rNcIVPrHXE]McXK5NcXK6VM>[1;.X8kB^X9=GeXK4P\X:AQoXGU>c8"k6fNi\mE
-4T;Dg4KNdMVlW"^X??0W$Dg+kX?<SE=fe\eJZOF(L9(Wkmap!EW9`pNeHi=;^%UX)nCg3Z~>
-*Ehgm\D!1KZZFjSTSD/og6eqRg=gMSg=hj7F`hO"g&OhGg'"['g=f6sg(&>1g95_S>0NG@[+`]-
-9`E`P9\Pkue(RLLg._1n$IMi,g.^5-ESB,?J_G\/L=umls5)IaX6fBTg'FpA_Y<?0nC^*X~>
-*Ehgm\^d1Y]m8c&WK$%:k+T3'k2pj&k2r:^I!fu6joA6Wjoi8Ck2oM:jplgMk.,p&?J)$b^?4!S
-;#]S`;!+IAhr[btk"ta5$JekIk"t3SGin-bJ`_OGL?8a,s4PqXW9`pNeHi=;^%UX)nCg3Z~>
-.9Z*$\^c7gF%(b8>,7fDKS3-OXGfPbRA2`fSV8\ZWe<!XUmPpfKS2A_X<<KnC4p>.U,ICP=EU^G
-@=5/XQnF&F24&tKKS2(]XCX!ZX9tk!KS3($Pur]m;h;$$XG3e]]'e2#LU-TsrPAiRNhlC3_!p&E
-J,~>
-.9Z*$\D!1KP$"W[F3r&jVl+(#g9Ob<_TkZ?a/M,1f;C[-d(tK@Vl*)_g*!_+L8TcMc:+;%E0T)/
-H_&mE^cJBk7),W\Vl)`4g4)-Yg'Z;:Vl+"X]l0gHBn=uhg4n;dir@lhL:$X!rP]&XNMcI8^@9fA
-J,~>
-.9Z*$\^d1YRU*/%H/-q5YcqlDk.=f\c.Ygcd]u$Sj01\NgWPXbYcpgujrh?FNj+OlfgqsDG+@^U
-JYhMkb<<)68'.tuYcpFUk(Z"ojpL!WYcqd&aE=_kDLpr$k(`"'li5YgLU-TsrPAiRNhlC3_!p&E
-J,~>
-#?gKW\^c7gE;jALVQ?*^A.>!/F(Ag=S7H/mAn6@hraZ&#M#CiaGl+QBFo>hOMjsZU#F2BlNgm,O
-M#CiaPPo"pC94LoE;6L@OCVmlXK71fA>XpZJZOU-#.j6SeVDVNqL]!6o&mgXg-U;~>
-#?gKW\D!1KNrFM0e(VP7Igs<LP(.tb`IEBHJq'HDrdOsiXo3_LR/>S;Q2Q15Z,HTj#JJjF[)LbQ
-XSmVK])@*]L>(@bNqh<7[srnIg=iTWJ'ro%J_Gk4#3,[>g4n%OqLJj3o'3sYfg1,~>
-#?gKW\^d1YQMuU?hWDoXL(2GjRYHR-d"[:lM2&"fre:I&[f(p\U&3sPSc+9D]$L>0#KPuh^<l$)
-[Jbg[`VkMoNTTB6QMBSK_1m]lk2s%*L>ILDJ`_^L#4)<BeVDVNqL]!6o&mgXg-U;~>
-#$LBV\^c7gJZOF(JZPiP"hO-ReVCX/b6@\(_!p&EJ,~>
-#$LBV\D!1KJ_G\/J_I*W"lfR=g4m05c3=%/^@9fAJ,~>
-#$LBV\^d1YJ`_OGJ``ro"mc3AeVCX/b6@\(_!p&EJ,~>
-#$LBV\^c7gJZOF(JZPiP"hO-ReVDWLrs%*JkJ6T@6@]~>
-#$LBV\D!1KJ_G\/J_I*W"lfR=g4n&Ors%'IlFuc@6%A~>
-#$LBV\^d1YJ`_OGJ``ro"mc3AeVDWLrs%*JkJ6T@6@]~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpl"nL%"3?nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&IqqDA"KC8$=nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpl"nL%"3?nCg3Z~>
-$<cfZ\^c7g:HCRbri?cB4,U,@H9+/NG-#I?4?P]Y4??!SX9!g1cE%(_4+VsaJZQ5[#.j6SeVDWD
-qpbqlKCA!=nCg3Z~>
-$<cfZ\D!1KA4fLcrn8$59!?t&Rn6:IQ.h$c9MA*W9M&F0g&[nRcIr>T9;I-mJ_IKb#3,[>g4n&H
-qq;:uJaVg;nC^*X~>
-$<cfZ\^d1YC/.U%roOlH:UoQLUeOZ^T&l&.:f'rl:ekB>joMKqcK51g:T]31J`a?%#4)<BeVDWD
-qpbqlKCA!=nCg3Z~>
-$!H]Y\^c7gXAYA^X8uU:ri?MjXK59cX?<Sc4KP8Hr2]pVI*er0W^BU"SueW&UkjH#XFkA/XJTj#
-D0Z&]"*/6qQhmcoGE8>4VlZtOD47PRM0a$5ri?ERCoj[SENFP)TRj1qXLtV=]'e2#LXYejeHa-I
-n)qLUg-U;~>
-$!H]Y\D!1Kg1S.ug&frMIK%q/9\S34^tMK9g.^5F=T$kRYFX%o("ZGtMTFMqMU/Dsg=iE]NnVs>
-^5A<Wg&mIpMSK#A&!s]FMU^A6V2E1ET!"N>c2QE'SVc(QMN?J^MTUM(J_Icj#3,[>g4n&Hqq;:u
-JaVg;nC^*X~>
-$!H]Y\^d1Yk&&6=joXXlK`:*B;!-nVb2uO_k"t3n?2Wgc\Y[[8(#rG4P1/RFP2!FDk2rk1QKI%e
-ac`@sjo_$7P0*R_&"gVcP2PKbY*.)mVRWCag&C+?VNL$%P*b=.P1G3HJ`aW-#4)<BeVDWDqpbql
-KCA!=nCg3Z~>
-$!H]Y\^c7gXAYA_X:h<s6Dgic3h`6ERB/EB>`>bY7f9=g<ADk%*3)Y8H_IO:4*FtGJ;RobG[[O>
-3.#O`XCcU%=EXJA*,JYVHXEk*Ap[LSH5gaK=f8@&Hu,mb:0XfF321u*JZQMc#.j6SeVDWDqpbql
-KCA!=nCg3Z~>
-$!H]Y\D!1Kg1S.ug(Mb5<79LS9$GLl_:hH(FKsQE=T$kRCd-5"*8"V>SBT^599sjYU9B*;R!dCc
-7\#Bug4>KYE0U4Q*/SNLS9`haJXgN(Rj*f]ER`^rSVc(R@W^=m8'Z\>J_Icj#3,[>g4n&Hqq;:u
-JaVg;nC^*X~>
-$!H]Y\^d1Yk&&6=jq?EQ=l&6&:>"39biVUOHFr=m?2WgcE^A(7*91UUUtFha:S*)sX13q\TRu*,
-8u.Z<k(oP'G+JKl*0G;`UjqO/Lno"GUa2/"GMhQFVNL$&BR8g89A+mYJ`aW-#4)<BeVDWDqpbql
-KCA!=nCg3Z~>
-,?aHs\^c7gXAY@cR?=R4ARIs.X=d"5=/;o?7ldZPU.25cI`nenBn$#^s&8lt%Xqtt7''gPXGpGc
-Ear[-q5aXV-D:@>'d[F&?UgJZXK7=cXK6ecXK71cXE/N8XF[IbX9Q9(f@>Z*nb^iAa+NjD_!p&E
-J,~>
-,?aHs\D!1Kg1S.R_RJ5lJ9k;Ng,`D@DU7#c>"IB$bui]RTZc$iL7nM!!GQ<Ig('d+HWJjIX4jn$
-g6$f6SGCk?Z7sK$g(c8kJ9b;9@bTP?G1tZ@M;$[aHeOXIJ_G\/]@mJKs5)Iaddm:h#Kq\dlFuc@
-6%A~>
-,?aHs\^d1Yk&&6&c,/U=Lk/gnjum$WFPGq.?;0MDfj3b&W6=<(NN)m=!H)iSjpn>GJQq8f[H>/J
-k*^mYV>96T]/%t:jqTY-Lk&gWB]eHgI-0RgOlkf5K'&MmJ`_OG]B0=`s4PqXe+*=c#KMJckJ6T@
-6@]~>
--X#m"\^c7gXAY@cIVOLGK7dNhX?<Sc;4"@HXH?ScU.25c4KPWYT$OJCBn!.VXK5?cri?ZaA:nki
-XC6mcNE`KXKS*ofqQ'^V>lC`6211%-Lmgc2XFk)cXF+j`X9(n\6\2=iXLbJ;]'e2#LXYejeHa-I
-n)qLUg-U;~>
--X#m"\D!1Kg1S.RTSB@oV58F@g.^5SB#*+og:2%Sbui]R9\S4FaNrQFL7m8Dg=g8Srn7p^I\i*+
-g3]mSZZFjFW25*?qUttUFT'o'6_:-MXi+>lg80>Rg7=*"g&bHq<e8tUg:GuBir@lhL=5Yig'>fP
-mcqOUfg1,~>
--X#m"\^d1Yk&&6&WK"-:YHNGek"t4&Cs(m:k/)6&fj3b&;!-one'I.]NN)'kk2pR&roOcsKs-hI
-k(0r&]m8bmZ*0"bqW7gjHi<(:8#EJl\'A:<k-'R&k,+:?joSo7>(Pgek.9[Zli5YgLXYejeHa-I
-n)qLUg-U;~>
--X#m"\^c7gCFi@i7;>4SH$))@M'623<hY!d?="h;==.?\/?GpK.*nt6Lg"+kXIh(AMQEn?=C+cL
-OYp+>=tuaD<aJpfqQ'a$13!5o'TQ=&?$)M[>@(g@XF<MuGH@mC/q\_VJZQGa#.j6SeVDWDqpbql
-KCA!=nCg3Z~>
--X#m"\D!1KLcB'l=,'aNRZp<OXsnR=Cs8S%GBYRGE%lK[383(t1XFboXE&N/g;u?fYM.^=E-GkH
-[mOrbE^.iUD0L!*qUu!j5E>`s'XVh'G*KosF*E&dg7VG=QeL0A3i7J^J_I]h#3,[>g4n&Hqq;:u
-JaVg;nC^*X~>
--X#m"\^d1YO#q3,>`DocU7=ki\1E&VEn@<BI=3]_Fu+Pp46G[?2UCM)[<R+Jk0uM1\E;qhG("*[
-_FAP-Gs^1oF+&8EqW7j'6^@Z5'Y\a=I%8J8H$tA.k,DN[TB>:m4g0G!J`aQ+#4)<BeVDWDqpbql
-KCA!=nCg3Z~>
-#?gKW\^c7gOSt%AT8SSmP_tHkre^cIXI0!E!K3WLM?K!AXI><tX9XrHV6$POMOjaJ%[N!FMP,if
-XH8=<R>Qleq5aXZMN[q>':"H6XI;nHMPmPWR#6cdXK80kUk,UuXLbJ;]'e2#LXYejeHa-In)qLU
-g-U;~>
-#?gKW\D!1K[f*B7ag&%`]W\Z^riZCCg;3cl!O0cGY6;8eg;CJHg'>3mdG!'QYK-Xr%_f-iYKO,W
-g:"38_QU/Uq:YnYYIXVc'>:TTg;II1YLD4Z_6:&Ug=jk^d"0o%g:GuBir@lhL=5Yig'>fPmcqOU
-fg1,~>
-#?gKW\^d1Y_#:eKe[i<5`jre2rj`*Xk03e7!7q+Z"Ma*]cGRri#K=7/k2*YZdf/A=aLTm4f"&QX
-^q&CI\[fcVjoW?/_u8^2aLSqFc=k)*hra(F\[fcCk1XJ&J`_OG]&j4_s4PqXe+*=c#KMJckJ6T@
-6@]~>
-#$LBV\^c7gJZJsT@OG[\X94DX,aa.aJZQGa#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_C4[I5-0Fg&nWm/\lqkJ_I]h#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`['sK/A8Vjo`840[#%0J`aQ+#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZJsTR$*d1X952[P,<f3JZQGa#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_C4[_7@;Tg&oX2\^H&_J_I]h#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`['sbeqNsjoa;S_qot,J`aQ+#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-$<cfZ\^c7gXDp%2ri?ir4?ll#BJV%o-CU/b4Aqc(+ZqklUk,UuXF[ImX9Q9(f@>Z*nb^iAa+NjD
-_!p&EJ,~>
-$<cfZ\D!1Kg5eLRrn8*r9MfT*KL%@\0Z1P%9PDMF.SNNXc[jf$g4@ttg'6R:hV*_4o)%,GbCT*H
-^@9fAJ,~>
-$<cfZ\^d1Yk*JJrroOs3:fVSBMa]Kn1X3p@:i=de/5T/igO\L<k(2[7jp(/Og!tl,nb^iAa+NjD
-_!p&EJ,~>
--X#m"\^c7gXK5T)Uo]P[XJe:4@#.pH;1McHXHlbc4KPVkM6*e%?dPkhAo;(!?$EBO<(E^bXD17^
-8!9rY7p5hm#a%VhC94='7s'<`JZPED#.j6SeVDWDqpbqlKCA!=nCg3Z~>
--X#m"\D!1Kg=gU_ce>[Hg=8omH*)%oAts=og:h7S9\S3FY1hTpGgP.ZJW"o<G*gq:CKf'<g4ie5
->.N@0>&jPq#e4&iL>(*[>*FNkJ_H[K#3,[>g4n&Hqq;:uJaVg;nC^*X~>
--X#m"\^d1Yk2pr.gZH.pk2B1=J@9X:Cohg;k/_H&;!-ni\E;qEJ'd<mM3ER[I@oZaEF7G^k)NfX
-?c2#R?[)M3#f9r*Noo5+?^lW/J``Nc#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-)-QCi\^c7gXHHUrJuj09XK8A"VlEj\VLrCXX9q(k4KPGaPH:j#:=-'dSelYjG#G,>PbD*FC4;jY
-5H0!fTnZsVOBeK1(7S9sTlbF.XF[IEX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-)-QCi\D!1Kg:;$NV:q5sg=k'-eCSZJe#.Zog'UO-9\S!:]%YkmA'ipRa;pZlQ>"Tb]?G*.L7lb/
-:tD/Abc5sB[rooj*5lU9b`e9Bg4@tLg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-)-QCi\^d1Yk/;:rY3)@Ck2tU]hrAmqhQV_5jpFrI;!-Y[`TH<BB[GlcdiY;/So*5-`Rf.SNi:QP
-<T9gcf<^"i_0ae9*RA]Vf:/:]k(2Zdjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-%U&5^\^c7gXAUuA1TYe?qlBp&OK=.Gri?8cX>W:2M9DtAV*ghHQ;W_d5<gf84KPW[7'*Ik5;ZTG
-8tN,cK5Z&7X8kA6XF[IEX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-%U&5^\D!1Kg1NlO6/%Wdqq;0l[b@[/rn7NLg-eb<Y05N?d8\1n^1al':f'6-9\S4I<nc8F:dT6W
-?HCjSVMprBg&Oftg4@tLg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-%U&5^\^d1Yk&!^j7-:,.qrS$)^uhqVroOA\k"&KV\'*nTh-&3:a_eaC<E28B;!-oq>NY'i<CM2q
-A(0T&YEYd\joA5/k(2Zdjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
--X#m"\^c7gN`rE]I;=XHXK7\YXK5NcXHHedXI;nc4K4oPTrb>UJ^CJBV*ghHQ;X)MTrFKG:RJ55
-7''jOWFfA9C4<7cLP'0>XHQY8XF[IEX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
--X#m"\D!1KZuXaKSqsLog=j6]g=gMSg:;:Tg;@FS9\.:$bhCdWUX7^=d8\1n^1b?!bgs\EA\m)o
-<n_r#eq%nrL7d2RX/:F$g:D*Og4@tLg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
--X#m"\^d1Y^3S\rViS9:k2sb6k2pj&k/2K&k0@Z&:uTlDfB25/XO-)Rh-&3:a_f4Af\t,rC<Yh?
->NURDiJ;dANi;+&[BGAJk/;:kk(2Zdjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
--X#m"\^c7g73PZI/LIEO4?QN5XA^8uGcZih4AM;t(hp(8=KJT%/C:IB>T/,4INOr<6Te#-Rnl.Q
-7')VD4BE_uXD0j[@]Y/D4B8&*XF[IEX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
--X#m"\D!1K==S*C3AK'b9MB-@g1i'%QeJ]A9Okr;*erC[Dq`oY2pg8&FWmM*TI7R`<D6c6`+;Vd
-<nb/i9PuB%g4i9pI+kDj9Phn'g4@tLg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
--X#m"\^d1Y>V0rX4>Yp':f)&Yk&2e=T]Wje:h\+X+H>O&Flqh'3md"5HQoO<W%#s*>#8bOcY?:*
->NWn4:in;<k)E26K''44:ib0=k(2Zdjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gTWA0BCOrR<XGj4b]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KT\9F=LOn01g5O_iir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YT]Q9RO+HGEk)AF,li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gUT=QT4?RD1XF[I2X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KUY5gR9MC4mg4@t9g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YUZMZg:f*4(k(2ZQjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#?gKW\^c7gWVr4iUm[XPX-oEOrL!neR@^LJRB3"ZR/i`QXSnOjTrb#WU7^8C(9;R?4GU#;BKSDC
-XJT5b5bP3R:cqFHqQ'b!ClA:o"H,B)ENAr;!M`QjX9*o+WVNUrKlI!l"#2o#NV]^_K028?XK-J+
-4GN^6"K#Ed5bRqS!I]7mX:La^4CtIm69I@bU9(4r4H'3?#`ga-XJfVk4Igu(NN<>qmap!Ee+*=c
-#KMJckJ6T@6@]~>
-#?gKW\D!1Kf)<Did)*WQftkVQrP8`d_8t?I_V3-2_#VINg&T"h_$/$9cb[oLh:`XtPY=cOg=CpN
-9YT6/F\GZUg<X>(@F"`'!niC6rn7LZ9MCQ#qUttrB`-QcU-.$&g&\15rRq?;9MDehg'OZN9UFJd
-PY=cNqUu)$F\GZUq:Yk@RJtnN_b<aRe_3tr9Kp_TdWA0ern7Xd5el%&I8!>SJ_H+;#3,[>g4n&H
-qq;:uJaVg;nC^*X~>
-#?gKW\^d1YiVgt*gs+(*jil$(rQGN&bgY_!bi[FSbQ-#djoE[*bQZV\g<A7#h<#L7S5<%hk2M=r
-:rqeUHVdbok1aZJB%m+D!p,NTroO?o:f*P?qW7h4DZ&VuX$G\?joMcRrT42K:f+k%jpA7g:nZt4
-SPW.hqW7q;Hr*hoq;q^UU&O0bc;7>mi9"-<:dNarhKi#0roOL%6d"QLKMYLmJ`_sS#4)<BeVDWD
-qpbqlKCA!=nCg3Z~>
-,?aHs\^c7gS0g[#3bg]5XJ[a?K,dZ_-%[<oX>r2?2btDh.Jg+P*_m_J8#'-]<\W@2(8XC"X?<SE
-=fe\eXE\]cUdV:mLTHJ>qQ'a>0S05)"?`ce8Y>m]!i/mHr2]r^5cFO\!e`mHrN#u]pT+[?XK4Uc
-WH5/B4Sl,^G]0[[6i*kcIlqHEX:7:nXC-gbE3--5Suc.Ur2^/d=HKV;A?;jpJZOj4#.j6SeVDWD
-qpbqlKCA!=nCg3Z~>
-,?aHs\D!1K`@tD*8qor*g=/5cVB]Y`0;U0\g.4Wc7:d]T2#>o4-=\?.>0h(tD*?_/(=?+8g.^5-
-ESB,?g6[iRcrSkIX4jn$qUu"64JVo0"AIP'>furt!mkgAr7V3G;:YNs!iT%ArRq6FpY#q5g=f<S
-ere\?9`!HGR>oqJ<VkDNThL1>g'pa0g3TjSNS<)lakCjBr7VEMDn"H!IbNLLJ_H+;#3,[>g4n&H
-qq;:uJaVg;nC^*X~>
-,?aHs\^d1Ycn\mA:5r"=k28L/Y9dpu19N2nk"J>.8STPd2u;YC-tju<?e][;F$SRD(>W-Uk"t3S
-Gin-bk+J%&gfrol[H>/JqW7jJ5cjtI"An7C@Fb8;!o%fUr8n&W<T3f:!jPjVrT4)VpZ;dIk2oS&
-igJrk;#9;WTp=cr=o.7^W_eZRjpb/Lk(0r&Q0.4<eE2(ir8n8]Fi!4FL$%MoJ`_sS#4)<BeVDWD
-qpbqlKCA!=nCg3Z~>
-,?aHs\^c7gXAY@TK62TWXK,fcX?<SQ?^jVtGBS#.:96RZ:AV$u:8pIQ=.)gbS4W^]!@iBSX;7k(
-XIr+cN`iHb4KNdHXJA7cSu&N=BDS\2QY1mKX9:YeX@]&]X9,Ai4T2>`>E(nHqQ'agKjO_Z!],t.
-poFakO[Z:OXI,,?qQ'gEDlfd&qQ'adHtiS]"?`ce@#+`_'9-=tX?;r6Uo^Y8H<?91Un4ZW9nBC*
-X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-,?aHs\D!1Kg1S.>VN[^-g=UeSg.^5=Gf3j9Q^*]e@bON0@f"db@b+B$DSfo;`E`Dr!B$;)g(r>W
-g<3^SZuOgR9\Phng<`mSaO/_:KDO:'^Or<\g&t+'g0Detg&fjC9`<ZIF0e`oqUu"iWH\<p!^X?8
-pt?"n\6.D;g;1:'qUu(?NS;c[qUu"fSV@'s"AIP'HE@,"'=)i6g.]Dod+[33Rr>did)aq[@=d-l
-g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-,?aHs\^d1Yk&&5fYFDPNk2_0&k"t3cJ'VPWT:MD4B]`.RB_pitB]<%GFNnO^cscq9!B6b4jqd%$
-k13r&^3Jf&;!+F:k1j2'e(s/fMYcH:abm2!joeNCk$cg;joXMe;#TMYH+d5:qW7k+Z@;c7!^soO
-puVk/_Hl6bk01\MqW7pSQ0-n*qW7k(VMtN:"An7CJ[PL>'>/bRk"s@?gZIX^UNOE8gskK4B7]3)
-jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-*Ehgm\^c7gXAVY:Suf"UXJ84cX>!X,XK5!L<c`<\X8kBWX9bdiXK80t<E5[jX8uRci2dEb<gg%L
-=fe\eXE\]cUdY3`"G16eXEskG"HKRbB7^&`#s>;j8Y<(d<E36%X8kB^X9=kjVEh*UX9"2brN$*'
-=&tR]X9a)Q<i`='DHC6BX9<cdXJJ;[X9!fbri?5bXK5fbri?Q_@]ZXS<``J+UK3gcOT)<_PZFf8
-XGs:c]'e2#LXYejeHa-In)qLUg-U;~>
-*Ehgm\D!1Kg1O_EaP,?Ag<WjSg-'75g=ff5D39t[g&Oh@g'H8+g=jhhCi%5mg&Z?&i7\[gD8P#6
-ESB,?g6[iRcrU/""Jp\'g7/(X"LQn:K;8G"#u'(,>ftc=Ci".kg&OhGg'#3.do"Zkg&\C$rRq?m
-DJd&^g'F-bD;!XsMf*k;g'!h'g<iprg&[n$rn7KKg=gkSrn7g\IG3C(D/OCJcY^U=\,P(_]PZ8O
-g5Xejir@lhL=5Yig'>fPmcqOUfg1,~>
-*Ehgm\^d1Yk&"T_e)odhk1X)&k!3rMk2p*\F.&HqjoA6Pjp9sHk2tB=EcT\/joKhAi8tO)F3Wj]
-Gin-bk+J%&gfsd?"KmRCk+qus"MX$\MQHg>#uKdH@FaL_EcQI)joA6WjoikKhGrP1joMu@rT43*
-FE>Itjp7]'F62QHPB;BPjohBCk1s29joMK@roO>[k2q6&roOZqK]_DJF*)]igN1\`_>`Qu`cL0k
-k)JL-li5YgLXYejeHa-In)qLUg-U;~>
-*Ehgm\^c7gXAXRIQ_1@K9hV%YX>lD=R]&fM='K_EX8kBWX9bdiXK8@\PESPmX;@L2Suf#R=fe\e
-XE\]cUdV;cL1[BcXIfET"J`'"B7^&`#s>;j8Y<)KPEV71X8kB^X9=/PM)1:iX9"2bqlBg6I.s]C
-5-"R_!'L+Z"F+jdV*k'[!Inh_X9:YeXC-h_X:e$sXK47RX?<SR4c)XSXK7dlUOfM*X9Q9(f@>Z*
-nb^iAa+NjD_!p&EJ,~>
-*Ehgm\D!1Kg1R0p^rb<K@UI10g./_a_pr#7DKCs>g&Oh@g'H8+g=k)a]"2/%g)%kLaP,@TESB,?
-g6[iRcrSlSWe&^Sg;s9)"OGfUK;8G"#u'(,>ftd4]"5QRg&OhGg'"<cY!KSng&\C$qq;(,T(gq>
-:>#O!!)37C"IY8'd8g"r!MP5Hg&t+'g3Tk"g(IT5g=em>g.^5>:9I`gg=jA_c@O].g'6R:hV*_4
-o)%,GbCT*H^@9fAJ,~>
-*Ehgm\^d1Yk&%2<bLG\#B4THQk"EX,c/<$\FEs;RjoA6Pjp9sHk2tX9`5H*>jqlNie)of,Gin-b
-k+J%&gfrq'[#!Z&k0s=J"P`)$MQHg>#uKdH@FaMZ`5K[pjoA6Wjoho(\4"40joMu@qrRp@VYB3R
-;WRf=!)WOS"JM+Ch-'R9!NM+XjoeNCk(0r>jq;"Qk2o.fk"t3e;Rg&.k2sj3fn&:Ejp(/Og!tl,
-nb^iAa+NjD_!p&EJ,~>
-&6\G`\^c7gXAY@cIVPsb=C(p-#s>;j;3skHX9EYDX8kBWX9bdiXK7g7R]JXNX8u7ViiEoo<1'b)
-XH$GbX?<S/E3,j'XFk)cRt(78!G?u_X9:YeX@]&[X8kB^X9=u!?R'^hX9"2bri?BEWiTu`XK6qX
-ri?EDXK4UcWH,)A4T;Dk>(WiWG]0[[6`dA^9q2-`!Inh_X9:YeXC-h_X8kB^X:JQpX?<S[?XGKn
-XHlqbXDWTjNN<>qmap!Ee+*=c#KMJckJ6T@6@]~>
-&6\G`\D!1Kg1S.RTSD1RE-D67#u'(,B#%Zog'<c>g&Oh@g'H8+g=jCq_qIf`g&Yrkin>0uCV\Y_
-g9bkRg.^4eNnVi\g80>R`M*+]!J@0Hg&t+'g0Derg&OhGg'#<<GV,3Vg&\C$rn7X<f\2.Qg=i9D
-rn7[;g=f<Ser\V>9`E`TF/@UER>oqJ<SH0M@`A?#!MP5Hg&t+'g3Tk"g&OhGg(/>2g.^5IG^)Aq
-g:hLSg5LU:NS4Trs5)Iaddm:h#Kq\dlFuc@6%A~>
-&6\G`\^d1Yk&&6&WK$'%G('AP#uKdHCs$2:jp.=RjoA6Pjp9sHk2soAc/qk%joKD1ioV$8E6IC.
-k.Z*&k"t35QKHt,k-'R&c`6g'!K*uXjoeNCk$cg9joA6WjoitYIP78fjoMu@roOKPjQ;Q$k2r^l
-roONOk2oS&igAlj;#]SdH*6;lTp=cr=m"ktB[Hb@!NM+XjoeNCk(0r>joA6WjpugNk"t3qIXXP1
-k/hc&k*1GZNTLH2s4PqXe+*=c#KMJckJ6T@6@]~>
-,?aHs\^c7gQnpcc2gVR,IYFl)H8%HD1P7GcXET5sVE?OpQ27QgLcdCZXI`]m4HTQD!A]&^X;7]g
-4?Pj0WG+IWQ`R)j4@#UAF#Z9BDu-OB>r=QYXK7@C4E@M"X9>1Y0Kbg'X9+A9@/?r7F>u*YXK8*Y
-4C>"fXDgE'X9jSC4F+$/G!%mBri@##F0)I@>s(BGXK7m@Q)q'(2`4pCXID=7AZ5U0!*B0$"/fBd
-JGuVUS23pAN\ij\<.V-1X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-,?aHs\D!1K_*CRc7[r,cTW-Z!RlsG=5c-bcg6\SgdS)et^&$FhX@k`Wg;nGI9XarS!C379g(r1%
-9MA::eqHdk^Y7.Z9Ms'gP"/2:N;D68G!e`Wg=if*9Te!)g'#Sm4\Wfng&eQDH2?5)P=IrWg=jbG
-9R5.Ag5]#/g'O]O9UXVfQ:suQrn88aP1nX=G"bcWg=jM(^"V1t7RMCRg;Q`ZJ^sbR!,qkj"4MBd
-UAijP`^++gZpRM\COt3!g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-,?aHs\^d1Yb=#'$8u(P2WNt[KUd7gR7'At%k+Jg<h,$C6aSP$*[ST7nk0n`m:r*(m!CNaDjqci@
-:f(-Rif-c2b3%T/:fc62RS-INPksMLHq-emk2s9P:mpDAjoj:45u>o,joW1]JGSC<RnH1lk2t8n
-:k7Kdk*B!GjpA:h:nd%5Skr7kroP+qRc`biI8Eqrk2t#NaQDWI8k4?mk0Qq$LuJ?q!-S;'"5eH%
-X8_5ed7%a2^.(pqEIm83jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gjK&?(r&at2JZOF(JZR+t#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KjOsTur(I*eJ_G\/J_JB&#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YjQ6H4r(mBrJ`_OGJ`b5>#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#?gKW\^c7gUA]*8Q?@4gFoJHDIWD4_X9G,7Knc[]rc/!cqQ'[=rc/1"XHIUbL>ApHWa._LDQKR5
-4?S%nRSQ%0M6)n34@YJ0X9,@jJc;_RE]cHgW;<RrOtus:!bW@Kq5aU.?i@&.(d'p?qQ(!=4?QuO
-Wa7eMD>L=:Rnl.1M>=4R>&+&<)1an4<1p=oN](CKXCF@TAZVt@0K`46XG])iXGa.a]'e2#LXYej
-eHa-In)qLUg-U;~>
-#?gKW\D!1Kc2Eb-^6FbBQ2]J=TTRP!g',KYW2eRKrfI2NqUtq5rfIAfg:<?SWnlAEf60h]MqZEm
-9MD&3`+2P;Y1gHk9N\e#g&fi-V#K'NOA&>ieb[u#\Ng#G!eVQEq:Yk"Gl?=u+&#A7qUu729MB]a
-fQU"_MYc$0`+2P;XngZOEeaSI)5Kr"C<P>bZUB8rg3u^hJ_Jh(4\TJAg9=,!g5FYhir@lhL=5Yi
-g'>fPmcqOUfg1,~>
-#?gKW\^d1Yf_q3@aIJZdSc7aQWL;H=jos/#Z*`Ysrg<b^qW7dIrg<r#k/3V&[,'j[j*aa#PNLP>
-:f+(PcY63S\)tV::gLs7joXOJXo@GcQr$V*i;2R:_aF@a!fA,Zq;q^5J,SL3+AbnJqW8*E:f)Z'
-j*aa#P5=;DcY?9T\,#.eG`Mdc)6H_3E7X16]h!k>k(QW.M!!iN5Yu:Zk.+0:k)8@+li5YgLXYej
-eHa-In)qLUg-U;~>
-,?aHs\^c7gN]pZ7<bbQ-F`M&pXFNEmXK8C#F^l2gIkZ"f1&@sX.W[+X8"W_&=Y'KQ!N2sWX;7X%
-XK4OcN`[email protected]>PbE&?q,_HX9:YeX@]&]X9,%q1&\0UWBWYHqQ'a?<aPa+!'L"W
-$&G[a5,tW?XK4P\X9<cdXJJ;\X9*6:C&Y1I4KPVlLTIOREFQ#N4KPVHXK5ccri?0a>r[D:Ml[,o
-map!Ee+*=c#KMJckJ6T@6@]~>
-,?aHs\D!1KZVGUBD2)b6Q'$XOg7h9Ig=k+mQ$s_,TKJL)55Nt>2Ng"W>0:TFE&R^L!S#c]g(r+>
-g=f6SZuOgR9\Phng<`mSIBD50F8FSlH<I$Bg&t+'g0Detg&fH755j1;ekf5oqUu"7Cj5j3!)3.@
-$*Dq8:>"4&g=f6sg'!h'g<ipsg&d.FL&Td>9\S3HXP2??O+#a99\S2og=ghSrn7FaG"7,;MqSBp
-s5)Iaddm:h#Kq\dlFuc@6%A~>
-,?aHs\^d1Y]i'/ZF,b*NSXG;rk,V=lk2tZBSV8-IWBd#F62K^M31;ml?e'(cFufQa!T2qsjqccY
-k2oM&^3Jf&;!+F:k1j2'KXU$VH2?Y)J6o>VjoeNCk$cg;joX.U62fpJi`&q:qW7jKEdmuL!)WFP
-$+B!Y;WQoLk2oM:johBCk1s2:joUZ^N;hrQ;!-nk[H?RfQ\=M`;!-n:k2q0&roO:"I7o.RMrk60
-s4PqXe+*=c#KMJckJ6T@6@]~>
-,?aHs\^c7gR<aNrOFqasXJ84cXHZ[HXK5!cXK6$8U.1u8B)8S8AuS"kD4+/#XChI5!=Nc%X::7n
-XH$GbX?<S/E3,j'rN$$;H24NBB7^&`"?`ce8Y>g[!'L4]"%](MW;3LqMI-7_![_]8poFaTCJ_(5
-XF+ecqQ'gEDlfd&q5aUHC&Y1K4KPVlLTHJ>Kjq-b;JU&HXK5c/CSCa/!'Gh6Ml[,omap!Ee+*=c
-#KMJckJ6T@6@]~>
-,?aHs\D!1K_O@KP[\f@Pg<WjSg:V/og=ffSg=h/4buiDrK)41-K%<cGMS`lWg4K=X!=k"Eg'tK0
-g9bkRg.^4eNnVi\rRq:2RebY<K;8G""AIP'>fulr!)3@F"'`rGebRo"YBTs!!\oJ-pt?"QLM#5n
-g7F(<qUu(?NS;c[q:YkCL&Td@9\S3HXP1"%WI<LSBSV@Wg=gggLX#hP!).stMqSBps5)Iaddm:h
-#Kq\dlFuc@6%A~>
-,?aHs\^d1Yc(_Os^osAsk1X)&k/M@:k2p+&k2qN_fj3FBM>H?@M;hOkP0I_'k)'*"!=k:Mjpf+L
-k.Z*&k"t35QKHt,rT4-FUA<pPMQHg>"An7C@Fb29!)WXV"(9\[iVDU:\:4D=!],nApuVjfO)*k>
-k,+2^qW7pSQ0-n*q;q^XN;hrS;!-nk[H>/JZ@qB&DNBisk2q/5O4aHo!)S7/Mrk60s4PqXe+*=c
-#KMJckJ6T@6@]~>
-)HlLj\^c7gXK7.cXK6V[T3[P[XAXgiENDa(rN$*q(cG+`X9bdiXK8=,4?Si,X9!j@i2d]_=JDmW
-=fe\eXE\]cUdV;cWc*3bXDIku"GX"ZB7^&`#s>;j8Y<(K4?Pt0X8kB^X9=PhWBdEXX9"2brN$*M
-I:.p-X9ao99<5.qMLA=tX9<cdXJJ;[X9!fbri?hsXK5fbXAY@<@]ZY)I=4hkXI"?`;uWiu4FsSl
-X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-)HlLj\D!1Kg=iQSg=hjHb&t/Hg1[ODOP3s^rRq@u+%0T5g'H8+g=k&%9ME%sg&[qdi7\saE6[+D
-ESB,?g6[iRcrSlSfSuBSg55f&"KL20K;8G"#u'(,>ftbs9MAFbg&OhGg'"g+eksung&\C$rRq@G
-Sp@L7g'G-Y?eF)dYF]>%g'!h'g<iprg&[n$rn8)\g=gkSg1\4"IG3C_St9BEg:s5NC&Zfd9S(oU
-g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-)HlLj\^d1Yk2s"&k2r:peU50pk&.SgR-%i-rT448+@p/?jp9sHk2tQN:f,+0joMO/i8tg#G1brk
-Gin-bk+J%&gfrq'jHZP'k)fR="LI7QMQHg>#uKdH@FaL?:f(<ojoA6WjoiGHi`4t5joMu@rT43\
-Vgu;Qjp8c#AE;n8\>O-=johBCk1s29joMK@roOqlk2q6&k&/8GK]_E.Vl+1ik/sU"DuSl!:k@be
-jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-)HlLj\^c7gXK7.cXK6V"8RJR#N(ur9=//?ZrN$-r7\Y$Rq5ak$5HLr^KWM7;goLO<=T5B3N`iHb
-4KNdHXJA7cXD`CYX8usbri?5bXK5!cq5aQYri?6T3b'I]q5aUS?Mgf)COGlX!C!O^X8kBZX9<cd
-XJJ;[X9!fbri?VmXK5fbX=n'X3Mrl?XK4P^X8kB^X8kA6XGa.a]'e2#LXYejeHa-In)qLUg-U;~>
-)HlLj\D!1Kg=iQSg=hiU>^4uVZ"%$DDU2S1rRqD!=O!,&q:Z,*:tjXMW7os!gtDe;E;nQ$ZuOgR
-9\Phng<`mSg5VNpg&Zi$rn7KKg=ffSq:YgBrn7LQ8U`=\q:YkQGPg(pLn=@p!D_;Gg&OhCg'!h'
-g<iprg&[n$rn7lVg=gkSg,jam8CQ9dg=f6ug&OhGg&Oftg5FYhir@lhL=5Yig'>fPmcqOUfg1,~>
-)HlLj\^d1Yk2s"&k2r:$@=RG%]4k\^FP:0RrT479?.kdHq;qtB<T`GuZ0(1Fgu\XQG5gV6^3Jf&
-;!+F:k1j2'k*;Y7joL@@roO>[k2p+&q;qZRroO?f9nb<qq;q^fIf&7.OJ_d7!E/"WjoA6SjohBC
-k1s29joMK@roO_fk2q6&k!+Q49]"o.k2oM<joA6WjoA5/k)8@+li5YgLXYejeHa-In)qLUg-U;~>
-,?aHs\^c7gXJ'f<SZHO9XGpVa<-Y++7uER8Q^:sYPs(J#3;T]_V3O$.XI1#^QU^tU!AJl[X;7^%
-NL*MDP$+-<8$%/SQ]b1HEb:YjD>[email protected]=+MX9tto24(;DUP41IJblGXU3T\-XK6!!
-QY(iNXDU3#X9i4"QU@dO?^I*Jri@h8Eic?lBpXuYXK7m=Q)q'[E*T!9X@S\E?AttDKj$a>X@&>@
-6`ctmQ^:1CVjB9-X+@@3X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-,?aHs\D!1Kg<>h!a4c5sg9Q%PCREAb>-GV[^qb*H]hZAY8,CpGd_&)eg;5)6^fgZj!Bcn3g(r.<
-ZbU5-\T#@">M>^(^pn"1OFb3FMYc$6aE*Heg=fZE^gPC`g'ZHI6bq:,cD[EoU\`[Sc'i@dg=h(k
-^k/E:g5Jc*g'Mu=^fK+<Geh*rrn9(uOP8E]L;:?2g=jJ#^"V2`NciFsg0DG/GHol,W,Y\ag/Yr(
-<SGZI^qa+,eA+Gefn%k:g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-,?aHs\^d1Yk1H8HdcQODk.H9#EM1t1?b+7'bKG7pa&:+(9D[cWh8`.3k053Yb?k21!C3L@jqciX
-]ut6S_fs;I@-4DJbJS,XR#&qiP5=;Jds7>4k2osmb@T<&jpL.l8'BoSg9IY;XSV&hfV3<3k2qH?
-bDECak*/aBjp?IZb?EucJ'6#?roPq0R-*P1NQ]4Sk2suIa6)O8Q$h'Ck$cHVI_4aRZ$9=-k#omN
->3=FlbKF5Si6+X6jalQRjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-+'J$o\^c7gXF*i@Brk92XK729:f)RI:h?_l:f*.QC]7-1?M^`0N_iPQXJ1#M:nIZf!EP*;X8o3u
-:_$a3XF*i@Uo^Y::fXTuK`4dJJblGSCf!rRXK7mf:kebI!2KNi!1s1k!g6AtqQ'dJ:f(g(X9)9r
-F8i6AJRADX$'e=`Mla"::f*MXX8uU[ri?0@:fRFq%\QXgXK6YC:i*57W)-<9rN$N7:o17S:f*:U
-XFj>GSZJ1W:]RJGXGs:c]'e2#LXYejeHa-In)qLUg-U;~>
-+'J$o\D!1Kg7;hfL"^9Sg=iX6AnIZ\Aq8UHAnJC'M#LudGP^#"Zt<oeg<H+8B#su*!H#%"g&T\&
-Ae&t;g7Dngd+[36Ao$,SVuC9.U\`[NLh:7fg=jMXAuYX\!7(RU!6G/n!kDp%qUu%EAnHYog&br"
-OoF&8Uj;sn$,'q_YhIg6AnJjXg&ZAprn7F7Ao%D"%a/J(g=hp+Ar56qeRiE]rRqd(B$o>@AnJR,
-g88Ioa4e<-AcUG6g5Xejir@lhL=5Yig'>fPmcqOUfg1,~>
-+'J$o\^d1Yk,)s2N95(qk2s(`Ci$#"Ckq/lCi$fIO8`qqIJW(4^2.V,k1QM^Ct&CG!HYg2joFB>
-C^tgSk,)s2gZIXaCiSV"Yl8G=XSV&cODJa-k2t!+CpNp"!87?f!7Ur0!lSo=qW7mZCi"t-joTF:
-RJu=LXag?4$--ju]&r.aCi%8njoKk6roO9KCiKC9%b>IDk2r@RCm!lBi,!5'rT4W;Cu"0gCi$uN
-k-&T;dcS^OC]NIGk)JL-li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gjK&?Qr/^oQJZOF(JZR+t#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KjOsUTr3cUMJ_G\/J_JB&#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YjQ6Hkr4i<bJ`_OGJ`b5>#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gjK&?5r)`rYJZOF(JZR+t#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KjOsU1r,;YAJ_G\/J_JB&#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YjQ6HGr,r(QJ`_OGJ`b5>#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-)-QCi\^c7gXK5MtMheBN9Mqmd9NnN&9VHV.9EItjB`:[2>('(pQ:tqm:]=#kFKC!dHu=M:JZOF(
-f;o1fmap!Ee+*=c#KMJckJ6T@6@]~>
-)-QCi\D!1Kg=gLSYcHK8@;"<>@<1(E@EXo7@00olK`5BcEh6^6^0uZJAH$!@PM2d?SVr'QJ_G\/
-f@gGgs5)Iaddm:h#Kq\dlFuc@6%A~>
-)-QCi\^d1Yk2pi!\[CR_Ao6\aApEHbB%NRPAccZ.MuI;oH)G8TaC^=lC&V]JS*$eaVNZSnJ`_OG
-fB*;'s4PqXe+*=c#KMJckJ6T@6@]~>
-1g08/\^c7gUg9%N1hplSS!R3K="]ej;lWEN4-qk,QTpt/3M[g$UHt0H2jcUg8"3>ECb,Ld!J?nn
-XF[I(XPBl]]'e2#LXYejeHa-In)qLUg-U;~>
-1g08/\D!1Kcule96ACAf`P6?6DEGS.C"HUu9><pL^ei"h8C/i+cVhI17DVO)>/b'lLc57d!N*kf
-g4@t/g>(Bdir@lhL=5Yig'>fPmcqOUfg1,~>
-1g08/\^d1YgjHoa7?*J+d)gF\F?[dJDrY9A:WZ2jb#Ha79\V+Bg/lAX8^'lG?dEN7O?*=&!O0t&
-k(2ZGk1o)'li5YgLXYejeHa-In)qLUg-U;~>
-%9`,]\^c7gN`rNcRZT`3X<VA.?uT)(>HELU6)T46U.1kuJ#kb.Qq3mOJ#PZ2KUGT:XFL5N!=Naq
-XF[I(XPBl]]'e2#LXYejeHa-In)qLUg-U;~>
-%9`,]\D!1KZZFjS_miD>g*;6FH&cXFFP<\B;q%Gobui5RU"W1O_->+:U"3&iVnurtg7eN"!=k!<
-g4@t/g>(Bdir@lhL=5Yig'>fPmcqOUfg1,~>
-%9`,]\^d1Y]m8c&cGNKXjs,bbJ<k/eHKMKi=5U%?fj37!Wod,mb[B#aWo@%:Yg$nEk,SFC!=k9D
-k(2ZGk1o)'li5YgLXYejeHa-In)qLUg-U;~>
-#[-TX\^c7gN`uC_!'L7^#%rHoLKJS$ri?u'VlZto(cG*iX?<CH8>*&cWB[JcX)pHdHN'uHUoApH
-JZOF(goL^kmap!Ee+*=c#KMJckJ6T@6@]~>
-#[-TX\D!1KZZH*!!)3CG#(r[rX)F)Arn85ge(WO#+%0Slg.^!o>KbaSekk)Sfoo*'Rf;"Acdm[$
-J_G\/gtDtls5)Iaddm:h#Kq\dlFuc@6%A~>
-#[-TX\^d1Y]m9S=!)W[W#)]L4[!%g_roP)"hra(S+@p/-k"su:@+OK&i`5.'jdT(CU]0BVgZ!eH
-J`_OGgu\h,s4PqXe+*=c#KMJckJ6T@6@]~>
-#[-TX\^c7gN`uC_!'L7^#%rHoLlON#ri?u'VlZto7])&RX?<S!)PF15WB[JcTQ%!64FsSbXF[J)
-X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#[-TX\D!1KZZH*!!)3CG#(r[rXgC]Brn85ge(WO#=OOC%g.^4U+NrKmekk)SbDt<19S(oKg4@u0
-g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#[-TX\^d1Y]m9S=!)W[W#)]L4[_>L_roP)"hra(S?/E,Gk"t3#,1bo=i`5.'es5C[:k@b[k(2[H
-jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-1g08/\^c7gXDhrp@tBGCEGoNf5@U]\>HFoL.rL`UHnKDY0TRTDOVjamR;XQtXI1#?EEW:B!=Wgr
-XF[I(XPBl]]'e2#LXYejeHa-In)qLUg-U;~>
-1g08/\D!1Kg5h#NI\X#jOGnkA:jgtrFP>H62iGN+SN;jo4gd&T\0&oJ_MpF;g;5(dOE(9R!=t*>
-g4@t/g>(Bdir@lhL=5Yig'>fPmcqOUfg1,~>
-1g08/\^d1Yk*D'qKrh_4R$<Nc<.j=9HKO@]3g7eMVEL<65ef1n_BILmc':8Zk0530R!8Pl!>(EF
-k(2ZGk1o)'li5YgLXYejeHa-In)qLUg-U;~>
-+'J$o\^c7gXK6hnKrhA4G'U0eG(-NePH:j4G'9=ULAl?.IZel<XGs0[Rs&t$XJV&0G,5,=!IC,a
-XF[I(XPBl]]'e2#LXYejeHa-In)qLUg-U;~>
-+'J$o\D!1Kg=i0bW7ot-QC?OWQCusW]%Yl-QBoGBWrA:rTX^<"g9T8_`0Q^Xg=*I)QI,Wb!LgiU
-g4@t/g>(Bdir@lhL=5Yig'>fPmcqOUfg1,~>
-+'J$o\^d1Yk2rS5Z0(2XStbB)SuCf)`9-3XSt=6iZi6O.WPb=Hk.K[8c^p`'k2*kST%j8,!Mdki
-k(2ZGk1o)'li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-$X)o[\^c7gXK5#VU]%7oA,!&*B;g]h!/(85"`LKD9fuMVX8tLLri?-mE.P*AXNIUK]'e2#LXYej
-eHa-In)qLUg-U;~>
-$X)o[\D!1Kg=fk,cMcGsIeVOsK%>h5!2f`h"c_6i@8(V=g&XuGrn7CqNe,o8g</+Rir@lhL=5Yi
-g'>fPmcqOUfg1,~>
-$X)o[\^d1Yk2p/MgAU.6K_OU0M;a?S!3cAu"dS64B2EaMjoJC[roO73Q@\1Lk/ufjli5YgLXYej
-eHa-In)qLUg-U;~>
-$!H]Y\^c7gXK4P^X9!6bri?0"+-?H&!G89fX;$;GXI2kc<g'P9Aun4rWDK+dXB^^8XF[IrX9Q9(
-f@>Z*nb^iAa+NjD_!p&EJ,~>
-$!H]Y\D!1Kg=f6ug&[2$rn7Eg-as!-!J8m[g(^Bhg;7CSD7SAsJ_ErOen)hSg3'ZOg4@u$g'6R:
-hV*_4o)%,GbCT*H^@9fAJ,~>
-$!H]Y\^d1Yk2oM<joLaAroO9#.DYoE!K#cmjqP#2k07W&F2R.CLuq[ribHj&k'O^kk(2[<jp(/O
-g!tl,nb^iAa+NjD_!p&EJ,~>
-$!H]Y\^c7gXK4P^X9!6brN$$%OT)<l6oV'GKKXWDCTFP;Ccm!DqlCuBBMWJ;G-%W/4Jf-Y=Zh0n
-Q`*P><iN1%JNRIJXI;76Ei])=1gXQkAQ!BHW(K1CXK#Yj4CkOm;ER$^XK77@?)`K?HTZ&CXHG\F
-A6Q(7?Ta+FTK/3U:oX5k&Qk-r=cK8,BrjOuXClp^XB^^8XF[IrX9Q9(f@>Z*nb^iAa+NjD_!p&E
-J,~>
-$!H]Y\D!1Kg=f6ug&[2$rRq9k[f4tk=%:`oVbNXSLtLG6M+j>jqq<62K4KjGQ.j_e9[VSFED3&r
-^XZ[bD:[FpUeH5[g;?TXOP0Nb1j=7`J7skpeQkkhg=LXE97GUGBM;$]g=i]'Fk<NcRnSUig:Bsm
-Ira8pGYG0lb=K4*A_-Y1&TG24EO4&cL"]ASg4GpMg3'ZOg4@u$g'6R:hV*_4o)%,GbCT*H^@9fA
-J,~>
-$!H]Y\^d1Yk2oM<joL^@rT4-(_#EI,>>!l:YYq5mO6#HaO\he6qrT)DMe\AaS`\j5:u19nG>P;4
-b2Hl-F5l?EX\a^uk06_!R-"5-1k'ssLMi:;iF>^4k2V"h:ke&kDGX)sk2s-LI,hJ/Uem*4k/:)8
-Km;b?Io*N7f1a,LCZ5'N&U(tPGeMn3N94+!k)#ttk'O^kk(2[<jp(/Og!tl,nb^iAa+NjD_!p&E
-J,~>
-$!H]Y\^c7gXK4P^X8uObrN$$%OSu6j6)Ufc2K#U'M6(N@XD`C]X<O&SI3NuDS5Z8c;O(IIXAi#t
-GFbgdAupPrXFq[V=KJTIEr2ppV&Fq+Io;q>SubtUG]9a^D6.0$XI4C9L176B?*#r$XC-jB?*'81
-T<)CVXCR!c?;>^3I/'cT4KPWA8OH15XD2E^.X\>!HYe87JZR%r#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-$!H]Y\D!1Kg=f7!g&frLZi/SYE45`!%TCj1g-gkQGcobWS_B'kqq<72-_DoYGK":Eg1S'>[G#A,
-g6]k6Uk7<qK%d+N[W'sSQB;!t1smJC-)#"qCrtCJ\X/?1e;Dt,X4kF[g8TMSZ$"bhMV<?XY]ea5
-,g+hcY1e?&g3@+o_4CAT&PUp4Y?Y(9\(ZRiK/K7Sg74"Ng4@u$g'6R:hV*_4o)%,GbCT*H^@9fA
-J,~>
-$!H]Y\^d1Yk2oM=joXXj]`$snG/4(=%ThQMk"(]uJ%4X'V<4#:qrT*I.B"hoIF)ogk&&.a^ZKKM
-k+C)aXbl2AMWV/n^inl&Ss]E;1u0CZ-`V%8En'5m_k<=Xi0!/Q[H>`0k-K^&\pWX3P3.;'\pWY[
--Iq7.\)rCLk'h$:bGP's&Q%WP\RAZR_<-`8M`@Trk,"2kk(2[<jp(/Og!tl,nb^iAa+NjD_!p&E
-J,~>
-$!H]Y\^c7gXK4P^X8udbrN$$%OSu6f6)Ufc4KPVkM6&*(49.SBX<*d)P#dHHK-NK@/Tj=[XI)hc
-Ue3a$Aun1rXK7ImL&S.R4Su37V*ghHQ;W_b4?P<9Sl7a:UTBhT4ADZR8iJjp+KR],XC-idOK>NT
-T<&kl4?63=?>T>:&pJ;rXB(LcJnD*cJ:ME_XK6DcJZOF(bH(oZmap!Ee+*=c#KMJckJ6T@6@]~>
-$!H]Y\D!1Kg=f6ug&ZT$rRq9k[f+ne;q'IS9\S3FY1bW09E7ibg)e+@\S\NoV(GA73L!Fqg;.@S
-csBC+K%`uOg=ir_WW(TO9`*Nud8\1n^[email protected]_=FHcJ$*@9OcE'?:IU^.,%AKg3Kf=[bBG?
-b1[q29M&dKG_u.J&snX4g24CSV1I@SU8*O9g=hUSJ_G\/bM!0[s5)Iaddm:h#Kq\dlFuc@6%A~>
-$!H]Y\^d1Yk2oM<joL+@rT4-(_#<C&=5W0&;!-ni\E5XI:]OGkjrVc]_fNA:Y:i^K4IfI7k0.T&
-gga/CM<7ask2sF3ZMrtd;#BB0h-&3:a_eaA:f'EAe8J/ag?-Uh:[email protected]('m`_<0lg
-e`IuN:ebZdIZa?d&tkQQk&\K'Y))6&X/qD[k2r#&J`_OGbN9#ps4PqXe+*=c#KMJckJ6T@6@]~>
-$!H]Y\^c7gXK4P^X9!6brN$$%OSu7>6)Ufc4KPVkM6($?XK6cMXEo;rXI2hH<f14K=Jr6aO].UJ
-B2G[0PH7VnXDW?cXF#S2XK7.cqlDNK6_6o9;O^^]XI,'6P,tHIXG`UMNE`K,F0)HiX?<Sc@#05H
-XICZ2XAtIcW.:sUM>XFUArutm#\AXiXB(LcJnG"`#-(ggXK5ZcrN$$LGCciHXO4*R]'e2#LXYej
-eHa-In)qLUg-U;~>
-$!H]Y\D!1Kg=f6ug&[2$rRq9k[f+o=;q'IS9\S3FY1e-'g=i(Ng7"Veg;7@1D6J/rE7EUR\7rb4
-K4WbP]%UbJg5DHSg75$jg=iNSqq<dP<6/C[BZ4l7g;121\_>D2g9ATNZZFibP1nW[g.^5SH**Zo
-g;Ghjg2+@Se=tZAY5HuSK"(^4#_8f+g24CSV1JX"#1mk)g=g\SrRq:GQ\!kAg<nUYir@lhL=5Yi
-g'>fPmcqOUfg1,~>
-$!H]Y\^d1Yk2oM<joL^@rT4-(_#<CS=5W0&;!-ni\E87Mk2rN&k+ej:k07VXF1H_>G2VN%_JdTZ
-MJD9n`TCunk*)S&k,#8:k2s"'qrTWh=jpm&D:!CXk01T\_rf`Yk.8t&]m8b1Rc`b/k"t4&J@;A;
-k0H!:k&JB&i2c!h\GYIiM8B/Q#`#VGk&\K'Y)*)>#30pEk2q$&rT4-\T7Q-Uk0`;qli5YgLXYej
-eHa-In)qLUg-U;~>
-$!H]Y\^c7gXK4P^X9!6briA:^.Q2OQX@+?rL4ggdTdrR5V-Z8HN3&j2:9:Nq."<[p/"i1o4B8&G
-;*8GeXI2R@@kFRZDEL%(XG/i"@]0+)10l2X-\*V4R79;7SUN4S5F&<c1d"?uXK6S-4DoftBq[%F
-XFE?,3M3CG<BNO4TIVj?ri?0n&9[rQ%;q!'XI2R@:7\Jf5!G82X8uRbri?0u4@+P"JZR8##.j6S
-eVDWDqpbqlKCA!=nCg3Z~>
-$!H]Y\D!1Kg=f6ug&[2$rn9PN2+3ebg/fq"Wi%G'bVrVWd<J>YZ.dSi@bTOM18-Os2Trg49P_hm
-Ak[beg;7#eIQ>j1MbHg0g8[h?IFJ)I13P=I0qpJ?_,sBBaIkXh:qbS<6;1\'g=hfc9T,f#L!2JV
-g7_2L8BTZ0CeR^?b;VbNrn7Fq'pS[N%?.FCg;7#eA&m<W:/8M%g&Z?$rn7G&9N-MrJ_JN*#3,[>
-g4n&Hqq;:uJaVg;nC^*X~>
-$!H]Y\^d1Yk2oM<joL^@roQC_3(T_)k$'Q9['26Df/d1!h0r0s]B7m8B]eGq26&U63S);Q:iY(8
-Cf#q&k0770Kfn5SP>G)Hk-Il\K\u[h141j[1oiOYb["%[e#>Q.<QO<`78RI=k2r42:m8.<N7^0q
-k,M6j9\&:VEDT]Wf/cBiroO:3(7b?c%?n6_k0770B[Z&*;cCa9joKh@roO:=:fi51J`bAB#4)<B
-eVDWDqpbqlKCA!=nCg3Z~>
-$X)o[\^c7gXK3mSV>dOsN*PPI!H^?jX9!-b_lNp-<Mf>h!D$hhX9,+sS,TJjJMF'RXF[J#X9Q9(
-f@>Z*nb^iAa+NjD_!p&EJ,~>
-$X)o[\D!1Kg=eE(dJhi#Z?59`!L-.Dg&[&$_qG1/Csqt0!F(-Ag&fQ:`W"QmUd!:Zg4@u*g'6R:
-hV*_4o)%,GbCT*H^@9fAJ,~>
-$X)o[\^d1Yk2nXJh>ZO;]R/i(!LujPjoLR@_r_$FEo$BM!FU`MjoX4Wd/N//X[:ork(2[Bjp(/O
-g!tl,nb^iAa+NjD_!p&EJ,~>
-$X)o[\^c7gXK7SFWr9"!RHL[OU@PAfJil/Fm]6D*r&at9hQ-fS4AVU@X9"fjm&U5eSGfMiV4`C@
-JZR5"#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-$X)o[\D!1Kg=j*EfDXD'_WTYQcLTZkV+aRUmb.Z!r(I*nhV&'A9Ou<;g&].Dm+MKk`r4TldE@*p
-J_JK)#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-$X)o[\^d1Yk2sRqj8J*?bie-gg%+8-Y#%romcFM4r(mC'hW=oR:heJOjoNfgm,e?-dJ`2.gt%&=
-J`b>A#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gq5aUh=Pp1\F?0/u!0clQ!J,C)X9+k?QLCmZM^5=(Sq`R$X9"bpr2]oVGk8!;X%`/e
-#-3K7XH/+3l)XuYU7A"MX8nIAX9"WdrN$!_r2]s`XHWXb!EYnEXS&Y!]'e2#LXYejeHa-In)qLU
-g-U;~>
-#$LBV\D!1Kq:YkkDr97LP=bT(!5%^R!Mbpkg&f2L^$jYZYV"M]aJuuEg&]*6r7V0=R.K#4fO4@*
-#2-#Yg:"$.l.Q6\c,S*$g&SbBg&\q=rRq7`r7V4ag:R@<!H-&2g@a/(ir@lhL=5Yig'>fPmcqOU
-fg1,~>
-#$LBV\^d1Yq;q_-Fl2<^Rn`_@!6+Eh!N_j'joWjfaRA6q\hN4-e$I0djoNbSr8n#MU%@CIjCRuG
-#3E2"k.n=Yl/i)sf[8FEjoEBXjoNT`rT4+!r8n("k/I>^!HckCk4Rj@li5YgLXYejeHa-In)qLU
-g-U;~>
-#$LBV\^c7gq5aU8H/>V&4Sc&Y4R]?O4LhHn<g)mP"[8rfOBP6GX8uLbr2]pCEV$74X*jQ@#-0op
-XD0;Wl)Xu&I:S$&X8kB?X8tnbrN#u]r2]r^X??K`!HiI7XS&Y!]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1Kq:Yk/RGQWt9_mBB9^g[89XrdWD7T)g"]!_([W5[Dg&Z6$r7V1<O7V'+fq.ii#2)c]
-g4hT-l.Q5qSpmX0g&Oh(g&YL$rRq6Fr7V3Gg._M"!L/aug@a/(ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Yq;q^BU>G#4;#05R;"*NH:q5WgF2[M/"]FFD^j'>YjoK_@r8n$QQh0>?jeh\4#38\m
-k)DINl/i)/VhMDIjoA68joJr@rT4)Vr8n&Wk"u'>!M#U0k4Rj@li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gq5aU8H2al[Ilp7hR?Biu;4W@a@m!qiFXpZYA#]@,(8kP&>rA^W=$/U(XF_0L8Z]"Y
-7QaA5poGc(XK67l<\dTBXI;mHG-%KE4CKLcSl7a9OK>O54@hi,P!M3-SbfE&Ug#rj6EFrb4Dq6!
-5tO1eX?KHG4H0-<)HL0,9UVuC4Zl`:I3r>a?DX`D4ARQ/XK8$cri?3e76H7uX;G-$XK7RO4B6C&
-Wan4pU37T%P9O&/M*"6,X<Es'4C;U"P!M3gXDMWHRSKrL7QaA4N#uXSAgXUW?p%_kqQ(BHI:S#4
-V-Q2l-%DOd4?ek.Hkeb>ri?iT4A_Q%*b_X%*ccTi4CY7%*ef:hB`"k;P8ZABW2tXe4@fCP!^*PH
-ri?-CF+LFcX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1Kq:Yk/RJtnTThJZj_RWQ<B?-o#IS=e-PW!SVIFe;L(=[Y(G!k!-DbNj1g8,]]>h[oF
-=A3/@pt@#fg=hHID*Vi;g;IGoQ.jT,9RJIeaD"=E\(]Q09NtN5\Pl16`qnC(cZ;d.;qd"#9T.V=
-;I)tfg.l3W9X4HJ)Js^m@)CX*9h]BGShPF`GLG3-9P$6:g=jYSrn7Ie=%oOeg)+k;g=j)99PfdD
-f7-J6cBT`C\gqXOY"Mstg*+7;9R)!>\Pc,*g5CSo_dhE6=\N5?Z7(;QJM>g-H;&M0qUuX>SpmWl
-d</-00;6L&9M`+NSJk14rn8*K9P)5C-A1$B-BO`k9RPBC-E3pjK_sI0\faI9e_6o>9NqGL!_h<A
-rn7C;P(D?[g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Yq;q^BUAj9iWDHu*c,3UZCsoO?Ki!$JS2kjkK];mk(>j[>I7NGOF\koIk,o\#@HQ^m
->u5.XpuWl!k2qgkF$jnOk0@X:S`\^S:kCC%dr/&^_<0m[:gdJN_cKZNdJDu?gNl\L=QYZ@:m:$[
-=(5"(k#6%r:qQSd)KU@(B$KJQ;G_DaV_`j"IGO%R:hi/Sk2t0&roO='>Yq["jqr?Wk2sTa:i_ob
-j+^BSfpsO``%?&m[npH2jrqoW:k+/\_cK[Gk)tX:c=l@]?;P4X]IJafLbe,MJ5C[MqW8KQVhMD<
-gjDqL0ri`B:fG0lVArEHroOr_:i"Ia.#[5a.%$f,:kR_a.'g*+Mu2WC`$.fMiT@?a:ga4a!`8#U
-roO6ORXsVojp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gqQ(X::me>cI;>pW0n3?(XHuec3/"A?M6&@iX@T#]X:8QnXG\j8S<9nS4KPVHrN$-Z
-U9&oXq5aUDD>pU[/!26E4K)/HXE/MhN3%alXI,9SUdV;5C94'`Ip&\NQVmU\'jH[!L,WjqXK6_b
-RP:A84KO0!VlW#WX<L\XXFb&cJubtgI&o/\XAtI)G-%&XWiW:o8Z]"^=/2j/K)2Q4SlMGbQ!'uc
[email protected];X?<Sc8tN,cW]dGbU/[_c?sJq!VlX6^D0B*5:99AJXFk)c5^b\F4KMqHXGU<[X:g_c
-OI`IYMl_[kXI,6RVF%Ac4T2>rEHeLO:old\B<44sJZPqFSZFrTX??<[!D/p^X8kB\X9*sSJc;_O
-QVi=8orJA/map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KqUunAB#33TT82.C5G<)Hg:q:S8#Y-dY1c"Eg0;btg'rA0g9<fq`ja[U9\S2orRqCX
-cJ#(Gq:Yk=MuMER2RkQU9\!dog6.\BZ.c3Hg;(DUcrSknL>'g8TlAK7^h3Gs'm$_8WCDZ8g=i$S
-`&u/q9\QC>eCmUmg*1Bcg80ASUtOIXT%ZN5g2"<^QJ0//f\5'$?/"#NDU-seV>An0a_]/S]l;HS
-@#s#kVqSOug.^5S?-1gSfM:/Sc"bASH?Hi>eCo/MMjACYA(n03g89DS;4^CV9\Ofog95\rg(M!7
-[`@*EZ.c6Hg;1GUdT"rS9`<Z[O-eS:B%fr4KA'#QUY=F.aP'>Ag._=r!F<hGg&OhEg&e&'U]/sJ
-^Lr,Op"BW0s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YqW8aYCWtr'W/p)l6E57ek/qN&9<mW/\E6#hk$Zd;jpcmMk.*kAdD=u-;!-n:rT46n
-g#fDnq;q^RP5aSe3Q!_p:uH39k*hfe]B6Ikk0(g-gfrp>Nonn[Wd!@_b&$q:'mdOTZUp1Uk2rJ&
-c9TnA;!+u[i9!l4js"l'k,sO&XlSW+VWL@Vk&JA-T'"6QjQ>US@clguFP>l5Y579Ee8j.&a*->%
-AXDP6Yi`]Ek"t4&@asQ&jAP.&fPo@&JU>@[hr]EtP+Hp"B]cnYk-'R&<MrTp;!*;:k.,p:jq>VW
-^sV:l]&pCjk01j-hH8q&;#TMkQ_3E`CZ\IUMWRatXQJYUe)jKhk"tm9!FjRWjoA6UjoVXHXT%>_
-a_cUkp#ZJEs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gq5ap?H`X;VLod\VKOb"_$p:URXK5ccX?<Sc8>,j]!'L7^#s>;]<'39(XK4P_X9=YR
-4=t1@X9#:bri?JiX?<RHV&)6V4)R1[X:@@oS5;=.7''gPXK8@S@fEG/4Sl,Z4T;DoW'R>_XJ/1Q
-:9:NZXFk&bX???\,$'l.JnD*A4Zk$<X?<Sc<Kg.HXK4UcXK8$cXK7I)4?PZQqQ((*>*#b?@B?PS
-END+u4=`q'MI)'HX/rD&4fk`S9rtFsWIuKY4?A.4H@&gjXHH"7/nM+LW'%.DX=sQ8!)E3g!'L7^
-#s>;Z;*6m+XK4P_X;+De4?PR(>`:e1;lk.)4;sclF`VSHq5aTgTDbhk4SGiWGB&28orJA/map!E
-e+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1Kq:Z15SD)\BXkMLZVgeX!$r#AKg=geSg.^5S>Kcot!)3CG#u''qCJ7Dng=f7!g'"oe
-9K@_#g&]c$rn7`Rg.^3od2bnS98cLCg($g1`F_e7<n_o$g=k)UI/_h"9`!HC9`E`Xe5FcLg<Ed=
-@bTO0g8BGSg._@s,&OmEV1I@(9h[43g.^5SCV+#ng=f<Sg=jYSg=it_9MA'MqUu>1EjaW%HeR2?
-O4m&%9Ij<#YBR$pg"P04:>4F@@G9Gfeu1,n9M)1@S"4V1g::9Y3e5p]eP+[jg-#@.!+Y]U!)3CG
-#u''mB1tlrg=f7!g(e!a9M@q0Fg4WRC"ehG9HhL2P`h,oq:YjTao0on9_R0@Q]H^Op"BW0s5)Ia
-ddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Yq;r$IUupfi[cZ`2Y_E)=$rH(_k2q0'k"t4&@+P5;!)W[W#uKd7E)9A*k2oM=joiP*
-:csU1joOI@roOSbk"t2:h&fHi:QnWSjpk5MctcHO>NULEk2tX.KDt!5;#9;S;#]Shi)eguk1O(d
-B]eGRk-0U&k"tp:,'1]bY))5N;,B$Fk"t4&EQ)S:k2oS&k2t0&k2sH.:f'obqW81IGe`CJK')3g
-Qf^m=:b,l7\:1f:jlY^d;Wd,gBBJ@;iit+4:ee3XUnr?Mk/1G#4br0"iDAZ5k!/iA!,2&f!)W[W
-#uKd3Cf!i.k2oM=jqVH!:f'dHHb3+pDs!Wf:a=HOS=5h:q;q]eeG\M0;"j#PT9k,kp#ZJEs4PqX
-e+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gq5bKQH*"*1<i`9?O]%sTLg[;HX/oWaX?<Sc8"fa\)L68%F"=>EAZKB'XK4ObSoCc2
-PH-ZTXK7.@r2]l\ri@8*X?<RHWEbIaST/[nX)'PmG]9]f6`cGOX/g6&;kg=K?i$i=EHeIa@u"Kn
-X'^^P9rtEYXFk&bX$$6[-<651Jn;#JW2M"iX?<Sc<0N5GX,@^mXK8!bX/r$rS?%^$XK4L?rN$Z9
-Ni\jOU8oncXFOubX(/6)<(E/OX=C55X/r1$PcL*pSl2>aLkfhnX=?uH=-9OEA?8"o4KCTGH#Kaa
-A#ubG>ktHKF*4O#0s#\=X'J&nX?<PNG-$U-X/fa3V&*G]LTEV=P8^!nRSHVHq5alpSuZA&X?<PV
-DY^@7F`[M_!I7@iXS](']'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1Kq:ZaHRG-B*DV<^'\7j1@XErSog"LYPfhC,R>KZis)OcW<OuD$kJD#HEg=f9Sac>(k
-]%KT)g=iQ&r7WGjg=k4Rg.^3of6+IRa,lFKfnhrIR#]j@<SG!#g"DFrC!PD6H2?50O-ePQIB._J
-fm0a<@bTL/g89ARfhD7r->^6HUk%/qe^Z=Dg.^2RCV$cofruFIg=jVQg"O_g`n@bog=f3&rRqp*
-[+`Z:c.P1=g7s>SfmVT!CKe=Kg+(]Kg"Onp]\1&ea_9#RXK.5Ig,<HpDR\:kJ(d`K9\E+mR>onQ
-IG3D/FSXW<P*FXX52)Hafl^6Ig.^29Q.iHcg"Cf-d2dE\X4g8#\fo,J_dd2pq:Z-]aOu!qg.g8D
-Mtu'-P`l"!!L[>HgABS.ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Yq;rT[U?:UUFQMVM_J\)h[XdL:jlV$$j\Y($?e,&9)PWJXRQ9K5LZO:ck2oP&e<T0:
-`8sXJk2s!Lr8o;%k2tc%k"t2:j*\Q%d[-AmjcMpmTU+\b>3<_DjlMfFDqX6\JGSCCQ_3C$KXHEn
-jaXbbBBJ;PjfaF$j\Yg9-?@#dXbZ%=iScPhk"t1%E5]>8jgcDlk2t-%jlY6;d,i$Ck2oLMrT4c<
-^?3saf]>;_k,aL&jb2dKEF6Z`jsoChjlYED`oY=8e8F"%[Bu*ljuI,;FMd-7L?;Lo:utO8U6Od$
-K]_EVHMQ\NR[iK&60=r,ja:1mk#(6aS`[M3jlM0Xg`Lts[,t6I`$<^mc=gn:q;qune)c8Fk#(6k
-PPO>AS=9E=!MO+Vk549Fli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gq5aU8H2al[S39#[XK4iR@'##EC8!dbFZk#54^@ib%XC3Z:3ipU4bGtTXJA!Nri??!
-4bZ%rX@k/CX<]p0XDU1O6A7R[XBIb[XK6G*Hp"L3@m,N/O0"m84a4!/7Qk,RX;,_<4f#094["b*
-=?Vsm4aBU^Uh2cGr2^m-4]AFQ4f,5E5_;FQ4`HiQ;ll'D?"IKHJNZ.gri?>u4^"kfKb]LDX8uLb
-ri?Pu4bZ&#XFNGsPcUs+<rT0&M*4!hri?0#4]23[*^r5"W]`_NTPpp5:-F:oKfrjQAmB,QGs+<[
-XIUqGpoFsH4aK5lXCOJJ4cZV84\u'Y'9>:>Krh18Kft[%R6=Pe>-+fYAG</176RTNXJS-OpoFL=
-F8i6BVEI4rXS](']'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1Kq:Yk/RJtnT`_B0pg=fY'HJ58kL<NA$PYIRV9m$6c%[p+V@[c#+9r:ahg<`Q"rn7Tc
-9rUk8g0Zl<g*BAGg5A\"<2`Qpg2]npg=hZ`SP7bkISHe9[bAbr9paSf=A=)9g(fZC:!hUr9hhnH
-E)"'29po9]d"+omr7W./9ki<d:!qZj;5I?d9od+cC>--kG(>"pUeOQirn7Tb9l\n@W#Mr=g&Z6$
-rn7fa9rUk@g7h;9]\;)$D>r5kY"_Virn7Eg9kXIZ*`l'^fM,B"bDk60@nipsWD._dJTZb%R8$Dp
-g;c6opt?4@9q+i1g4)hr9siWr9kF=X'=LV0WS5irWD1"Y_+ea'En]6FJ+qY%=A@?"g<r]"pt>b5
-P5a/:dS3YkgABS.ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Yq;q^BUAj9id8<c6k2ooGJEF(5Nn7-@S5Gut;1&0%%\cgjBVOXL;6Ns-k1igCroOGu
-;6j'Uk%$UPjs3dck*&ZC=g:l7k'9g7k2r(/V,6=:Ki,-Q^uj'B;5!(6>u?.IjqX4[;;:6B;,Osf
-G#?>N;5.Msgk\h8r8o!F;/bT*;;LA6<N]T*;3oL)E9=u6I><I;X\hr*roOGt;0V0bYoU@QjoK_@
-roOYr;6j*^k,V?V`ocEMF8k;([o$"*roO9$;/Q<p*aDQnjAB+Ces5C[BMl'4Z;H4*LjP3FU/=e7
-k0cD:puW'T;5@%Nk(Za=;822B;/6*m'>RIBZKC(BZ;JX(bY`DDGin.mLA0g8>uBSCk2&sCpuVUI
-Rf;FNh,.7)k549Fli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gq5aUc<9UC`Vu3=jWp-Sc0V&'B!I/bZX9>T"UhPDKX8o6tU]@@YXSejoV;83R6Ak]B
-!L$^*X9+&JWVNUuX/)P+JE!X6UcG?SXJYok!3>Ri!E,EdX9+kQU4KECX9Q9(f@>Z*nb^iAa+NjD
-_!p&EJ,~>
-#$LBV\D!1Kq:YkeC?X@Oe,7MlfBLui4iR?Q!LT/Eg'$'Sc\8._g&T_%cN)M\gAK7sdG<LW<3Q5R
-!P<Bjg&e0Zf(n#&f[%luU>jl1cq)X>g=#oF!86hp!GKFNg&f2cc%4UGg'6R:hV*_4o)%,GbCT*H
-^@9fAJ,~>
-#$LBV\^d1Yq;q_'E9QEahu)4/j6>\,5g]Gk!MH"Ujojc"gPi6&joFE=gAp0sk5<s6gth)n=Le:k
-!QB<%joVeuiq_^>jP/FLX5`7FgJ$Mek2-$j!9N\3!H-6_joWk)fR`2^jp(/Og!tl,nb^iAa+NjD
-_!p&EJ,~>
-#$LBV\^c7ghQ-]mr'UOKe#WY?6puOmX8n%R6i_GsX8o9u6i^2FX94q[7"4*r"\D*rXK5e,6i`j1
-XPp5b]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KhV%scr)Wm0e(OoA=')*`g&S2O<reTQg&Tb&<rd#pg&o;q=.eI*"^G,_g=gfL<rgBo
-g>U`iir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YhW=g!r*'0?e)gbX>?e,qjoDge>6(;]joFH>>6&Z%jo`t7>H$NC"^tVok2q0k>6*3)
-k2GG,li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZQ_i!2BCm!M-+YX8nuTX8o!nX9#>rJZS^L#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_Iup!6tGq!QNUZg&TBXg&TCrg&]jPJ_KtS#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`ai3!8.53!R]fqjoF%ojoF'4joOPsJ`cgk#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZQbj!Jk.]X8t>$o;htm4nPf[X'fM?F'tR'X94NMN10.8!.+1:!gR/?ri?0Z@"n0Q
-!d^qori?-#PQ%WbU/db8XS](']'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_J#q!N^VFg&Xa*o@a5t:A!6EfQr)%Oa>(4g&ne!Z,H%`!1WN4!k`iLrn7FXHDpDg
-!h7o5rn7Bh])LCbc"tFOgABS.ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`al4!OdRWjoJ/BoB$)7;Y9)UjFE$JR=N`Mjo`EA]?fm,!2T/I!loheroO9mJ?nb.
-!i4tSroO6%`;\m#fQ,Dkk549Fli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZQbj!EtN_X:pnaG&aUbUQhCPTp27KPaebNP_T.<+.8@hTrb>]PcLic(nQ=BV6$&K
-R]N?MUm7^@XK8+[T_YYkCOK`Hri@B4Pbb%TSWoD@Wg'<DR&mB]1mFK2XIPl^Pc(U]Pa%oDXJ(D4
-ri?0kF]87?%@36ZXJD/`R\-[_4KL[EX9!HbrN$$+MLhl+X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_J#q!HPRHg(V66QB0bRcFh9QbIl'J]YrOO]W(k`+2Y\;bhCdb]\1tU+3:9RdFuFL
-_qNPOd(Rc>g=jc`bPBioLn9'orn8X5][4sXa1T+>fY#SD_:mVb6+k1jg;V.b][PTb]Y)MCg<?Tl
-rn7FnQ"p9O%DKL.g<[Le_o^Wd9\N2>g&[G$rRq9rYCYF)g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`al4!I2?XjqGkVSsSU%fuDP(f>cG"`m<f&`j>X++3hg[fB25;`oZ<(+k*Slgucf"
-cK<s&gW/$hk2t:8f(nG1O/I]:roPKL`nT2/d`0>ij2Tinbi\';7E3^:k0VT;`o#q:`l?Znk1@"<
-roO:0ST+Pi%EZWOk1du>cID"=;!(URjoM!@rT4-0\:Nf>jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZQbj(g;s$XF4&I4`RR%=&`4hJK9?0,\='=;a(,]+bs&s7pN-C<)dq?D/_t5:99%H
-<)nd=+&s=_,HRY@<*#[gX=J(7A;%%cJQ,T8B9Q=p<-Y5n6r[-=XEkmdDQKpT6Z,k4XCbF2<i)n!
-X$-E_!L-O^X:BVW<-,.",)TB$S#e`R4T;D_F`[M_!FCY7XS](']'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_J#q(im";g7E%o9on#YDJF%+Ua;kR/V)QaBhnZ]+ffBn>'8PiC2/pcMiLrXA(mbp
-C29u`-Yt)H/DABdC2M,ig+.uNI]1uSUha^DK"Gi6C73I4<bcEJg7'C'N8!!A<JtU?g4=!RD:.(k
-fhMG!!PE1Hg('ZgC6@5U/$E`*`7do=9`E`HP`l"!!I(_ugABS.ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`al4(jNdWk,30;;O?P)FDu<HXXC9p0Sef,Dc6Ss+gc6.?[Lq3E,_9.P*TG"B]cI;
-E,iD,.<6eX0BUu0E-'S+jsuLjKsBe&X`8;^MT'UTE1u)Q>B"Sdk+jADPNM"g>*EoXk(mtqF5?!@
-j\c!=!QT0Yjpn8-E1,k$/\,kBcfS'd;#]SXS=9E=!IhP0k549Fli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZQek5+YcKXGpPdXCZCQ9RDbL6EEhNV,!_cXK"FbXI`7cXFG#D9oG!3Hu4.;G>>62
-NK%^bX?`(5RQRZBI>r\FqQ(O-UnFQcPujocG'$3JXK,ib@WSW3=fe\erN$L*(OW<PB7[.cS4p#c
-X$-E_'9lFsXGfl2NE:M/2I<5PVQ?2eRJs8gR8<d_!KgH7XS](']'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_J&r50.Nag9PqSg457<@%=Ns;qbU!d::DSg=T0Sg;mjSg7a;+@^*.TSr9"_QXeaj
-Za,C;g/5RW_bAcgT<b+lqUue1d*'kk]l)BSQBGCqg=^qSI?N<lESB,?rRqb/*hD$%K;7/S`F.ER
-fhMG!'>/)6g9G(iZ>Q5e7!I&$e(V[m_Z&6i_IWW!!P!#ugABS.ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`ao551=N(k.H-&k(f;cAYm&?=QX/Bh.YF&k2]G&k0n,&k,OHQB=YZrVNRX(T4mB9
-]tBD]k#KJuc;<Y2VnB!7qW8XIgXb3Ca*$A'Ssj!<k2h<&KUV&<GNS$arT4UF+/\2FMQGt&ct;G&
-j\c!='?>(Sk.>69]QC"48:B:DhWE)Fc2Qi+b\I+=!Q&r0k549Fli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZQbj$<iIkLLI9cGB']Dr`]P<XGpG<@fEG4W]dGbRn`j_!JE?0>8*-9HAbEkXFFDX
-7V/YdW'%.DX>Bi[!,M8/!K^F^X8kB^X9iWj@YLnE=fe\erN$$r6iO.f>)rT`"?`ceX$-E_"dDre
-XG&M1>69qg4SGiWF`[M_!FCY7XS](']'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_J#q$?EN-X*`RSQ]KijrcA<pg9Yk"IK%q(fM:/S`F8`!!N8BbF;)0BS$670g7`P/
-=Ff+&eP+[jg-P^[!/U=%!Om"Gg&OhGg'NM+IAtr.ESB,?rRq;"<W:\QEjYi""AIP'fhMG!"h\U(
-g8RF<F98r*9_R0@P`l"!!I(_ugABS.ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`al4$@';I["@H&TU4e6rd"a)k.Q&GK`:*;jAP.&ctE=>!O5/oH5"/YUq1)Mk,ETO
-?&.QBiDAZ5k!]2p!0?g8!PrpWjoA6Wjp@'HKX0aTGNS$arT4.9>5mXbGeX1>"An7Cj\c!="ikTE
-k-@JUH31tG;"j#PS=9E=!IhP0k549Fli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZQbj6!B;MVdk41/Q]$A=bVQ6XJf#PUTCPiKJ81_Wc!!6GBg#pJ;%lq<FMsr:982R
-Kf2\t0onD[3L,b5KnWg6XA_C[X>m1nH\HNjI;=Og?_^;2XEI%1X@n7cKrg1hLod\P=G;H6Q)pX4
-08HX1Rr^lSXJ]QXKl2X:/qp%pX9!HbrN$$+MZ'UW;a>o8#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_J#q6#s?de:+*j3H*WgEN,pYg=9k%ce@*rV`_$6f8Q#pQ^H9NU8a'NCO=c8A(l['
-WC17<5.+%q8\MZXWMt'pg1aI\g,RZ;S#MODT89JCGgBfTg6Gagg0^h=W7nLCXkMLRE2fgY^"UZ.
-40.)h`0+$(g=1PEWJmju4/pO#g&[G$rRq9rYPm/UC/KQ9#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`al46$U-+i.\2:4E]f2GI"N"k2C2Fg?.PKYX#VYj-6.@TV14qX0RqqEJ!=VB]b>H
-Z:JZY6GH=89ut5#ZEeo@k&+5qjuD=YUp?DgW/n6fJ(eLrk+,c7k%1i_Z0&Vd[cZ`*G-\E"a6(sX
-5IBS8c^InHk2:omZBMWD5-il:joM!@rT4-0\GbOjDcMAN#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZQbj!EtN_X:8lRP@L\qO(2[iXK7+sri?3e@q00NX9*EPE;lp[BOc@h@qVm=KWM7m
-A!:Dd@s`QOGCciQ@q246PTFl>X;GeaFf_Zm@qDa=@r/5cA"p&m@sP/WH"1RfX:Lq5@uRLjQ"+<9
-XK7@j@rVFK#AI[oXHI('ReWrbF`[M_!FCZ_X9+V-EIk1q]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_J#q!HPRHg'raa\p`;d[=*JCg=iNhrn7IfI=6_Hg&d@aO8diSKRK?CI=p8#VqTj`
-ICaj<I@H_!Q_`?=I=9>n]-`X6g),]qPhOi_I=U&#I>Q[<IEgK_I@8gCRXKnhg(2>SIBqS\]mY<\
-g=if[I?+<\#D@Mog:;W[_t_pdP`l"!!I(aHg&eo6O+H!hir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`al4!I2?Xjpd<'`.[:8^P%9fk2rt<roO='KS53]joUp'QN$"fMhIkdKSnpIYib)3
-KZ&P^KVYEBTWR@eKS7t>`[I5Kjqs87S`](4KS\dIKTP>^K\>M4KVIVkU4eO*jq$!qKY6I0aFo5'
-k2s:/KU2W"#E4>2k/2k*cM6N&S=9E=!IhQXjoWONQ\"9'li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZQbj!N';DX9+B$X1,/2?`<t*!ha8,ri?0]E3"Pk#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_J#q!Rc;4g&eUAfsfZ9Ggu`H!m?;Lrn7F\NnK!;#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`al4!Sr=FjoW5_jgX@QJ)L=g!nN=iroO9rQK<\[#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\Z>gqU4KCsXF[JEX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\_7(qc%4T"g4@uLg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\`Nq2fn&::k(2[djp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\uYt(+H:rRJZOF(o;i/-map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K]%R5+.'eEXJ_G\/[email protected])Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]&j(B._L>pJ`_OGoB$8Cs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\uYsD>E+38JZOF(o;i/-map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K]%R48FL$JOJ_G\/[email protected])Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]&j'KHG"gkJ`_OGoB$8Cs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\Z>g9NIe0^XF[JEX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\_7(+Z@U_\g4@uLg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\`Np=]Rf3rk(2[djp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\Z>g9NIe0^XF[JEX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\_7(+Z@U_\g4@uLg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\`Np=]Rf3rk(2[djp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\Z>g9NW#pZU7d(=JZOF(q5ae3map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K\_7(+ZMiJXc-([lJ_G\/q:Z&4s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y\`Np=]`$snf[bW9J`_OGq;qnIs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\uZ!Q1/<W(X8t^FJZOF(JZS[K#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K]%R7I5[peng&Y8@J_G\/J_KqR#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y]&j*\6YNk+joJ[TJ`_OGJ`cdj#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\uZ1"M2@_'XGIsXJZOF(JZS[K#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K]%RG"Xf]Oqg9)a/J_G\/J_KqR#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y]&j:8\$s]Gk-l_PJ`_OGJ`cdj#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g[&a:oM1MaZXF[JJX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K[+YPpY(>;Xg4@uQg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y[,qD1\:Ndnk(2[ijp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\?#[LpT+Uq:f)P@XI+\8X9!jAJZOF(OfSbumap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K\CpqCpY#l!AS%Fdg;0]]g&[qfJ_G\/OkL$!s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y\E3dWpZ;_9CMTd/k0("'joML0J`_OGOlcl6s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\?#[2pT+TiR$aVLXH.GsX9!.'ri?)kJZOF(Q)k2$map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K\Cpq"pY#jU_84CMg:!.<g&[&Ern7?WJ_G\/Q.cH%s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y\E3d4pZ;]fbKJQ#k.mDZjoLUcroO2hJ`_OGQ0&;:s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\uZgC86N$qFCK2[M6*XH)+[c/XE[9eXK5*P859)b%p__qXK6I\88##[88t:o<e7?'
-XIcKt]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K]%S(G>B&<MPC/BpXkM<0+Br[9g6c*>g=fu<>@INb%sD0rg=h]4>D(Y3>E7!5D1UDl
-g7I"&ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y]&jp^@!CbqRt?r6\)uXW,%,HRk+Q1ak2p9c?t]K$%t.j3k2r*V@#F*T@$]JRF+NJ)
-k+:]>li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\u[KaTK90UV&jlS5c^uZ31utHXJUDSXK6@gTUAHSXJ/XSXK86XTVSZf32NZYJ:XeQ
-XIcKt]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K]%Sagb":=@d3b7';VBaG7`rs/g<uU?g=hNAb/.N>g<OE?g=jqDb0Sek7a]k-UOh-M
-g7I"&ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y]&kU*ekP;hh'erI<orGo9%MYWk1uqek2qpcf$.dgk1O[fk2tJlf%]?F9&/KOXF]Mb
-k+:]>li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\?#Zmri?>eXK4RcXK4P^X9aSiXK6YcXJA8`X8uIbri?)^rN$-LCnan$JZOF(Su`.-
-map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K\CppVrn7TNg=f9Sg=f6ug'Fa+g=hmRg<`n"g&Z3$rn7?GrRqCGLs9\VJ_G\/T%XD.
-s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y\E3cfroOG^k2oP&k2oM<jp8>Gk2r>&k1j2?joK\@roO2WrT46[OP"O%J`_OGT&p7C
-s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\?#Zmri?>eXK4RcXK4P^X9aSiXK6YcXJA8`X8uIbri?AfXIGWZVGM2Hri?-]JUsnR
-XJ2d#]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K\CppVrn7TNg=f9Sg=f6ug'Fa+g=hmRg<`n"g&Z3$rn7WOg;Lk^dUeAnrn7C\Uk.6N
-g7m:*ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y\E3cfroOG^k2oP&k2oM<jp8>Gk2r>&k1j2?joK\@roOJ_k0M<7hJ8@:roO6rXb#Vc
-k+^uBli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\u[ER4;U,ND&7\[(Lj=*(Hdn_XE$!>=fa8)XBQR'XAg;tGH@l[4AD6FXHYC;X9,Fu
-.=nROXJ2d#]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K]%S[V9H?gHM]JLq*IQ@1*DF*!g5nEJES<N2g2nIFg1i'%QeL/I9Obilg:TNHg&fr<
-1kFA3g7m:*ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y]&kNm:``H\OrgX6++rKJ*`0i<k*SCeGNM+Jk'A5dk&;h<TB>9p:hS#7k/KXbjoXXZ
-2hC+Bk+^uBli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gOK8IqJc;_PN$=mFXF[IIX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KOP0_fU]/sKZ7="Jg4@tPg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YOQHS$XT%>`].MQak(2Zhjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gOfSUi-p%@/!Mbp2XF[IHX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KOkKk[1J7Z#!RAB0g4@tOg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YOlc^m2GX86!SYSFk(2Zgjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\?#^kFk!Jm=6?RaT_kej=6HY#Kf(tS>ca_t4A;NOU-q+HVQ?7L4CtJfX93l54Fd4/
-"K5fm4Iu8K!G.ktX957n4Au0[!*Aor!KhF%X8npeX8uY(JZQkm#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K\CptiQ.4LfDW]XQbPTunDWf^hW'j<PFkY2S9OZ9$buRMWdb;W59Rt[ig&mp?9VM=:
-"P%rp9ZQq^!J/>eg&oZ29PFFZ!,hPb!P"6jg&T=ig&ZEFJ_J,t#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y\E3h*S^cd%FQV]cf)+S0FQ_d%Z:@_eHfj(!:hJGDfNV0rhWE-\:l"$+jo_MX:oaBS
-"Q4u1:t#.$!Jo5"joa@O:i?9p!-Itt!Q(6'joF!+joKqdJ`au7#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\?#Zme#WOfk,\PFqlBd9kH#G\Ml`aBXC?pcN`rMWSZI$TX?<Sc@#+T["$EZd4Sl,^
-KOh0c4SYuYH(t)8!F:W]X8m25X9"`@ri?,`WqWRqJ7sM8`iKBUmap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K\CppVe(Oe\k1Tf/qq;%/kLp][YhIK)g3fpSZuXl-a4cl@g.^5SHE?ts"&.G&9`!HG
-W.*IS9_d<BRa(W]!Ht^Fg&R*+g&]$drn7BJf_=)#U4e*O`nCXVs5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y\E3cfe)gXpk2lY?qrRmCkN3Pq]&qgOk(9u&^3JdNdcR3hk"t4&J[P@:"&S.B;#9;W
-Z%_?&;#'/RU=f8'!IVKVjoCY?joN]/roO5ZjS.d;X,DPk`o[Kks4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\?$u=XK68)?:A$pXJ/WUJukn^4Dcm)UfolGS?/fN4A/bFSO5M@U\_&-QTR^<XCat*
-4F=02TM7OeD3?K?>Zdg!X93PZ4BMN`'g=7OXF2s@3G(UZVI)H,XJdn.D+:,lX:nHtXC?pcN`rMW
-SZI$TX?<Sc@#+T[".$$`7Ja(gKOh0c4Sc'49eN!<N%B'5>c"N&+>>pIXH>V<XK5c&<'5`5XE-=<
-XK7<p4$]mB0gr*:0:f1pBS!8)X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\Cr6&g=hH_G?8iug<F>*V:sFL9Su*0cuMfW`nK.P9OD\Ua&PfNchc?2^e@h`g4EIH
-9Ushjb@4/)MRY[cF`5V'g&mNW9Q'j`'i$gDg7CZe8:jgpdWeHKg=8EdMcn0sg(S)6g3fpSZuXl-
-a4cl@g.^5SHE?ts"2<L7=Sg_SW.*IS9_mBr@QMQ`Z8[q?FOAf[.6UADg:'a`g=gd[C.tGWg6+m`
-g=ibM92XEh5$$BF4NH0MKRqjsg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\E5)6k2qh.IU%/8k1OZLY3+Yt:m"/HgNZOpdH9T':h=dqdTKCggA9qIb"u@*k)!Dg
-:o*79en7gEOi'<.HZn0@jo_(m:iu^!'iR<Yk,1_09Slm6h1&7ik2A\5P$ZZ5jqDRRk(9u&^3JdN
-dcR3hk"t4&J[P@:"3BWY>l*RcZ%_?&;#06-B0F]*]K2NYHedb*.m["Yk.sl*k2q/*E)<\!k*el+
-k2s5q:K?Q26!NJ_5LS\pMh1$1jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\Z>gbAH&YR-Aj"-4K2AHXD*/qK<0DVXHJUFUdV;=@B?"KK3"hMO]V=Z!'L7^&0R%8
-4KP;YS#fOoX@Q0HOHB=?!'L.[!'L7^&2J\eJip,AM6(i@XD0tGTmld<'0N@t@YUtE>-(AfXESZc
-4KPVlL\\"QX&bG\X9=2eXK4PZX:.mmXK4[+XDE9cXBgb^X9UkhXJ[2*X??K`!Jt1_X8tJari?E8
-Krg><XK7^gW.D%jX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\_7(^J,\.F0Wlq49\+'og4c5NVV7P,g:=TEcrSl#HeQIqVesi8\8M)q!)3CG&1P$@
-9\Rg0`7epKg080o[^Q%d!)3:D!)3CG&3ldJUeKKeY1f,'g4rLoc(Ojc'27-6I&bo-EnXm@g6[lS
-9\S3HXSLQOfkn=sg'"@'g=f6qg'hN/g=fDag52BSg30^ug':=*g=.Rag._M"!NgYHg&Xt$rn7[,
-WS4b"g=j8XeUcGpg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\`NpsLAp<Y1Uo'N:uZQ:k)?<qYNDZNk/4pqgfrpJK'(H=Y]JX__K>S8!)W[W&1bNX
-;!-JQcfT.nk$Vu:_8,p0!)WRT!)W[W&4<B[X\e/0\)s3Lk)NE:fW"Z.'2[iRK!a[SGiiPbk+J('
-;!-nk[JAqdj`AB:johrCk2oM8jpZ"Lk2o[0k)lM&k'Xc<jp+`Fk2.]/k"u'>!OmRXjoJB@roON?
-ZKAoGk2sa+iIU.3jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\Z>h)8H,[u4KLZH4J`iV4?-h5ri?SlXJ/cY3CKrWLTISKJn"_\!'L%X!'L7^%6U_n
-4KOuHXK8=mX@SEHX8kB[X8kB^X9Leg4KLZH+T=J*:onDJp8esSDQKpKL9-D=X@o+cGB']HXK5fb
-qQ'am=.B#e"GC<eX??9Z$r<:mX?`_cCj`=c?&SW^#<])hVa7Dc4T;D_M-p7`!BmI^X9kRjX@]%c
-XG:;dJZQnn#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K\_7),>lNFb9\N1o9[OkS9LsV+rn7iUg<FM/864GkX4l:KV0r9r!)31A!)3CG%8>L0
-9\REog=k'"g0:uZg&OhDg&OhGg'17)9\N1o./lmBB%i#sp=^4MMqZm4WnOh#g0_nSQ]Kiog=gkS
-qUu"qDoDJ*"K6e'g._:q$tR6/g/6DSM4NASG-Lnu#>Ek*e5G#S9`E`HXa0p"!D_;Hg'Pu,g0DeS
-g8fYSJ_J/u#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y\`NqC@K,Bs;!(U::u*3i:eZR>roO\ek1FfQ9O$Y1[H?W#Y(Q`9!)WIQ!)W[W%8c3L
-;!-&:k2tRPk$YsujoA6TjoA6Wjp"ZE;!(U:/,i?ID!$b?p?!'aPNM"Z[-#)Ik%)p&TU4e;k2q6&
-qW7k3FjKmG"L3[Ck"tj8$u4&Lk#LC&Oeq4&I(K7<#>jRFhcJt&;#]SX[t"D>!E/"XjpBXHk$cg&
-k-Tg&J`b#8#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\?#Zmri@8*X?<RHWE>@cTR1C&XEQM&G]9`s7')8PXK6c0<MZ^W=no&u4T;Dk4KPVH
-XJApcXI=^A8>,^Y"$EZMLAn7S4T;Dk4KLZH4KMtGXK6?AC4?)^!F(3TX;Gr$XK5lcXH$Jc9:`/.
-END:(XC-gbXF"LWX92OdXDe*>%:X^dXFt,cX?<ScVGEKUX:.mmXK4[cXDE9cXBgb^X9UkhXJ\@c
-X??K`!Jt1_X9^thWH,)AD,4jEX9!ibrN$$U=+RHsX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\CppVrn8Mhg.^3oeo/1SbFF9[g6Y.[Q]BdP<na^$g=i()Cs^nDEVS5f9`E`T9\S2o
-g<a`Sg;B`?>Kccp"&.F^WrC]P9`E`T9\N1o9\Olog=hP?LS+Lu!Hb4;g),m;g=gqSg9bnS?cUle
-O4m:]g3TjSg73Wkg&l6&g5Z*c%=Fc$g8KJSg.^5Sdq$/jg'hN/g=fESg52BSg30^ug':=*g=0$S
-g._M"!NgYHg'CI+ere\?MI_D>g&[q$rRq:RDLpNcg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\E3cfroPA#k"t2:icW6&etn>*k+G0*TU+_t>NWGEk2rJSEnoflGPL;#;#]Sd;!-n:
-k1b"&k0C*k@+P)7"&S.$Zi9(e;#]Sd;!(U:;!*A:k2qrkNi;m<!ICsJjqsGWk2q9&k.Z*&ACBV5
-Qf_-,k(0r&k+m_1jo]_Bk*>r.%>1P?k-9X&k"t4&heC11jpZ"Lk2o\&k)lM&k'Xc<jp+`Fk208&
-k"u'>!OmRXjp4lGigJrkP%fjRjoMN@rT4-gFFiSujp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\?$u=XK67mIl2m5M5=378><(t4E3E`VHc6.0TW;t4?RJ\TgLqFVY[A.QTQraUh2<9
-K.q#@Uea*JUQR>nK(uDbMEFe4XK4T>4H4bCE(+n7HDb164J/Q02f/Jp!gajHrN$icKWM8N:cqFH
-XJ&$E=J`*f4?R2RXJJ*Hri?ej4?PO'XI:;HXK8@14?T19XG7CHri@VE1-0lC0OUn<5-.d@3-;7'
-OZY<[Wa@H>I5#WAF#YsXXK8'X5G5*ZV,*?TX9!ibri?1$:b%$tbcD#[map!Ee+*=c#KMJckJ6T@
-6@]~>
-#$LBV\D!1K\Cr6&g=hHITgPbAY0h#Y>Kt`Q9TMg"dre?O4gj"Q9MC>qbZ.>Vde_Z3^e?jac[n9[
-VEBUecX]^ZcaZ/2V>/a^Y"WQVg=f:a9XC<QN`VHBRac^Y9ZbgP7>Urs!l#qArRr*^VqTkOAkZUY
-g<<SkE73IY9MBueg<iYorn8&[email protected];>Cog=k&*9MEI[g8bsorn8l35=qKQ4aP^I:YK\P8!DZ\
-[nJnXfQfWdSii%eP".fVg=j_E:s7SHd:Bohg&[q$rn7G+AMo%mbh<9\s5)Iaddm:h#Kq\dlFuc@
-6%A~>
-#$LBV\^d1Y\E5)6k2qglW^j<Z\D2(#@+jOu:mOl=hKr(l6,2Qu:f*>8fNM*qh>67Jb"t?"gPJ2&
-YX"31gM'Jtg;?3OY5%,s\57(uk2oT-:q`blQ<]q[UYp`#:t4Gn8W`r6!m2dVrT4rsYib*&CJ\Ws
-k1Em7G2;<,:f)r+k1im:roOn`:f'^Fk0>N;k2tTU:f,R%k-Po9roP_D6;=Dk5_.lb;s&0j9:Y/,
-_,*BnjF9G.Va-R1RS-(mk2t5l<7^3oghFe-joMN@roO:CCH-n-biT,qs4PqXe+*=c#KMJckJ6T@
-6@]~>
-#$LBV\^c7g\?#^JHh"0<F*4Ud!E3UmX9+A=U\Lnk?X!3*!B>\\X9"YbrN$$%OT)<_V'h[^XN[aM
-]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K\Cpt@SFP;6P*E*&!G[2Jg&eTKchQ2pH#iZ5!Cip8g&\s$rRq9j[f4t^d5&Rig<A7T
-ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y\E3gTV"*RJR[gMB!H<nXjoW4dgA'e2IsLeN!D9NEjoNVArT4-(_#EHtgbm?-k02rl
-li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\?#_2Vt@%nR63TSX7*+iK`!q4F6fn-Wr+sZ:#i;UVQ/d[!NN'lX9#6!pT+@ke>rb"
-3]<B)X8o*pX8o)JXNR[L]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K\Cpu9e+D>s_G!Xfg$dVpVu03gOmC^$fDJ;B@cQ/Ce(Eg:!S>fpg&]^TpY#VpeCk"q
-8jpJog&TP!g&]mSJ_J<$#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y\E3hQht6%6bYV-+jmV=3Z2@DuRHru8j8;^RBB/+ThW3h]!TW)3joOB"pZ;J2eE-k1
-:.WS-joF38joOT"J`b/<#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\?#ZopT+UK4?RVbXGCB\X8uOdri?*TJZOF(Q)k2$map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K\CppYpY#kF9MCQ%g8o_sg&Z9'rn7@RJ_G\/Q.cH%s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y\E3cipZ;^Z:f*M@k-]m:joKbCroO3gJ`_OGQ0&;:s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\Z?[IKWM8TWN)ntXK8?]W2Qf!Wgo6RXJi1uW;`k/WK!XRXK"=[WN</!WiW.uJZOF(
-Su`.-map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K]%S(UeYq3Uf@JR(f\5'09%DMHg=O?Tg=k*0e^aZQ&(\)3g=k.Ne^iI,e^rO*eq)P+
-g7I"&ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y]&jpmiN_P-j5T+XjQ>U`:>t0ok2Xh+k2tX`iSjdu&)t:Tk2t]!iSs"\iT'%YiIU-B
-k+:]>li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\u[KU5U`_8E$8(D>cakh(-kWrXE64+XK4-H5XL1+XB-R+XK6:T5[pgL(2KWh6@l4h
-XIcKt]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K]%SaX;)?q[N[e[=FkYAC*)U2!g64aJg=e_n;,jOKg28CJg=hK*;1.)s*/Mik;h<YR
-g7I"&ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y]&kTo<As"%Pq?iQI-0?e*`Zn9k*n_ik2o!:<EQQhk&`/hk2qjK<J'A>*fnr,=FoUc
-k+:]>li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\?#Zmri?>YRB/QPXK4P^X9aSiXK6YDXJA8`X8uIbri?)^rN$,hV5mp\JZOF(Su`.-
-map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K\CppVrn7T>_V.`;g=f6ug'Fa+g=hm+g<`n"g&Z3$rn7?GrRqBSdFi`JJ_G\/T%XD.
-s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y\E3cfroOGNbiVdak2oM<jp8>Gk2r=Qk1j2?joK\@roO2WrT45ch;j$rJ`_OGT&p7C
-s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\?#Zmri?>eXK4RcXK4P^X9aSiXK6YcXJA8`X8uIbri?)^rN$*r7@Qu%XF[IDX9Q9(
-f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\CppVrn7TNg=f9Sg=f6ug'Fa+g=hmRg<`n"g&Z3$rn7?GrRqA"=2eU!g4@tKg'6R:
-hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\E3cfroOG^k2oP&k2oM<jp8>Gk2r>&k1j2?joK\@roO2WrT449>gR)6k(2Zcjp(/O
-g!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\u[H_R5LD3Tf&XC2P7%<24:DEXJ0r?Suc^<XI),JXIW.:UTCOaR='ajWb45Tri?-4
-7tIamXJ2d#]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K]%S^e_F)2lbX9b+7*4-!6c.C-g<H"%aP)H!g;$D3g;d`tcJ$uP_O[^\f7HH)rn7C(
->(PCYg7m:*ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y]&kR(bX]n:fLO`R8CZbF8'KoRk1QDKe)l^Fk0$TYk0e"Eg?.O$bbh`/j,$@KroO6;
-?\.?jk+^uBli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\uYn*r_EckGYa*V:N*32:D]D"XF*f>B<5$-XD:UrXCG%%J?5i9:Mg$3!K::_X9+qC
->Cil,XJ2d#]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K]%R/.raZ8VQt38,A<#.=A/E&8g7;bbKA($Mg5':Pg3mLBU>">5A;U<>!O?hHg&f;R
-F+N%rg7m:*ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y]&j"Erb;\gTk_!OC6[]VC)>(Uk+ug-MWShlk)X8sk(IJaX6/Q`C6AMX!PEaXjoWsl
-H@b40k+^uBli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gOfSVP=)\)>!g-Q_JZOF(U9"R1map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KOkKlRDN4YL!k<-uJ_G\/U=oh2s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YOlc_iFHujf!lB'<J`_OGU?2[Gs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gOfSV'='pN[JZPBC#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KOkKksDKp`dJ_HXJ#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YOlc_2FFSl(J``Kb#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\?#anMNNIkJZOF(orJA/map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K\Cq"mY.&u9J_G\/p"BW0s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y\E3k.\AEgZJ`_OGp#ZJEs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\Z>m`>@)7EX9+/PG(H`GXF[JQX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\_7.[FEic@g&e?bQ@[b@g4@uXg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\`O!pH@D+TjoVr(Sq6$Tk(2[pjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\uZC"7;@FOXJ(5tSZJohNCs2O"."OjNW-![JqS]VJZOd2#.j6SeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\D!1K]%RY!=,3X$g<?Cia4f7pZX3Xb"2:V.Zi8YZV5JmuJ_H%9#3,[>g4n&Hqq;:uJaVg;
-nC^*X~>
-#$LBV\^d1Y]&jL6>`PuDk1Hi>dcT]J]jq'("3I^K]`.$oY-<K>J`_mQ#4)<BeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\^c7g\uZio2H+4^XB9(H;6-e"Sk?)cRTF*52QWuoAn>k2XF[I3X9Q9(f@>Z*nb^iAa+NjD
-_!p&EJ,~>
-#$LBV\D!1K]%S*g7;@D!g2DOnBA)"maBmTS`,:-W7,$@LJU`W0g4@t:g'6R:hV*_4o)%,GbCT*H
-^@9fAJ,~>
-#$LBV\^d1Y]&js'88j=;k&lK9D<9pBdpqP&cZFu!8ET&oLk_+Ek(2ZRjp(/Og!tl,nb^iAa+NjD
-_!p&EJ,~>
-#$LBV\^c7g\Z>g9NW-!pR<j00X/rCo9!#+\=*f1dXF!ZfH:WX=XF[I4X9Q9(f@>Z*nb^iAa+NjD
-_!p&EJ,~>
-#$LBV\D!1K\_7(+ZMrPn_OI#Rg"P0$?J=,JDk!6?g7)N?RTlV>g4@t;g'6R:hV*_4o)%,GbCT*H
-^@9fAJ,~>
-#$LBV\^d1Y\`Np=]`.%/bbV$qjlY^SA*2prFekhbk+lXcUL:6Uk(2ZSjp(/Og!tl,nb^iAa+NjD
-_!p&EJ,~>
-#$LBV\^c7g\Z>g9NW-!b<Gl\%X/rCo9)bmrN,EN?XE[;8D?-2XXF[I4X9Q9(f@>Z*nb^iAa+NjD
-_!p&EJ,~>
-#$LBV\D!1K\_7(+ZMrP`CQ"**g"P0$?N/X_Z&=Ncg6Z%CMZCbJg4@t;g'6R:hV*_4o)%,GbCT*H
-^@9fAJ,~>
-#$LBV\^d1Y\`Np=]`.%!EKcSCjlY^SA,bTp]9AG.k+H,]P5rs\k(2ZSjp(/Og!tl,nb^iAa+NjD
-_!p&EJ,~>
-#$LBV\^c7g\u[$)4^O5OXAa1L'o&fUBeaq8O$.Q*>cau8F)tWJXH`mKJZOF(OfSbumap!Ee+*=c
-#KMJckJ6T@6@]~>
-#$LBV\D!1K]%S:$9m=)#g1c[t)l_Q*Kg2'\[7udGFkYMrOcagpg:[TsJ_G\/OkL$!s5)Iaddm:h
-#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]&k-9;16:Ck&6Z?*4+eKNC'E&^JUDeHfjFBR@/H;k/[Y?J`_OGOlcl6s4PqXe+*=c
-#KMJckJ6T@6@]~>
-#$LBV\^c7g\uZKqF`ihJXIaQhM287"F`i)5U],B9VuEdtFTm])X@YLKJZOF(OfSbumap!Ee+*=c
-#KMJckJ6T@6@]~>
-#$LBV\D!1K]%RalQ'Jl5g;oPYXfU6kQ'IoocMj(/eGe2%Pm+DGg0I@sJ_G\/OkL$!s5)Iaddm:h
-#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]&jU,SXmX[k0om-\$kGASXlY?g&@NBi;Vm=SHZUek$h-?J`_OGOlcl6s4PqXe+*=c
-#KMJckJ6T@6@]~>
-#$LBV\^c7gS?)^&JZOF(O/rPsmap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KSD!spJ_G\/O4jfts5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YSE9g.J`_OGO6-Z4s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\uZgF@q1@sXI<X/P,taH@q2%1XG14pVQ?kI@qU@oJZOd2#.j6SeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\D!1K]%S(KIX\EQg;AAg]%YlHIX];jg8]UNdb<EHIY*.)J_H%9#3,[>g4n&Hqq;:uJaVg;
-nC^*X~>
-#$LBV\^d1Y]&jpbKn["uk08U6`9-3tKn[q:k-ThrhWEsuKo(BCJ`_mQ#4)<BeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\^c7g\uZiWKS3?oXA";#8?8X^KS3($Pur]m;QPO^KRd<YXF[I3X9Q9(f@>Z*nb^iAa+NjD
-_!p&EJ,~>
-#$LBV\D!1K]%S*IW2OLLg0gkX>hRS6W2O1Z]l0jJB\KA6W1nBbg4@t:g'6R:hV*_4o)%,GbCT*H
-^@9fAJ,~>
-#$LBV\^d1Y]&jr\Z*A;ok%1g&@HHBXZ*@s(aEFhnDW\0XZ)`5&k(2ZRjp(/Og!tl,nb^iAa+NjD
-_!p&EJ,~>
-#$LBV\^c7g\#^EGPcR!KX?EV\6`d@OXH$GbX?<S/E3,j'JZOF(N3!5pmap!Ee+*=c#KMJckJ6T@
-6@]~>
-#$LBV\D!1K\(V[6]\6'5g.g8J<8-&"g9bkRg.^4eNnVi\J_G\/N7nKqs5)Iaddm:h#Kq\dlFuc@
-6%A~>
-#$LBV\^d1Y\)nNH`o^+[k#(6r=m"jCk.Z*&k"t35QKHt,J`_OGN91?1s4PqXe+*=c#KMJckJ6T@
-6@]~>
-#$LBV\^c7g\Z?]n4BJ>[4KPVIX//1bX?<SE=fe\eXE\]cUdTd8JZOg3#.j6SeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\D!1K\_7sg9Q&529\S2pg!NdQg.^5-ESB,?g6[iRcrP_OJ_H(:#3,[>g4n&Hqq;:uJaVg;
-nC^*X~>
-#$LBV\^d1Y\`Og':itIS;!-n;jkX)%k"t3SGin-bk+J%&gfo?lJ`_pR#4)<BeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\^c7g\#^EGPcR!KX?EV\6`d@OXH$GbX?<S/E3,j'JZOF(N3!5pmap!Ee+*=c#KMJckJ6T@
-6@]~>
-#$LBV\D!1K\(V[6]\6'5g.g8J<8-&"g9bkRg.^4eNnVi\J_G\/N7nKqs5)Iaddm:h#Kq\dlFuc@
-6%A~>
-#$LBV\^d1Y\)nNH`o^+[k#(6r=m"jCk.Z*&k"t35QKHt,J`_OGN91?1s4PqXe+*=c#KMJckJ6T@
-6@]~>
-#$LBV\^c7g\u[$>XK5BcX?<Sc4fbDHXK4OcN`iHb4KNdHXJA7cXJ^lOJZOF(OfSbumap!Ee+*=c
-#KMJckJ6T@6@]~>
-#$LBV\D!1K]%S:?g=g;Sg.^5S:"dong=f6SZuOgR9\Phng<`mSg=37QJ_G\/OkL$!s5)Iaddm:h
-#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]&k-Uk2pX&k"t4&;<?V:k2oM&^3Jf&;!+F:k1j2'k2<])J`_OGOlcl6s4PqXe+*=c
-#KMJckJ6T@6@]~>
-#$LBV\^c7g\u[#m9heZ^XC=mu=feT)9hf3#T2nZ\EibO)9hg)<XH`dHJZOF(OfSbumap!Ee+*=c
-#KMJckJ6T@6@]~>
-#$LBV\D!1K]%S9c@:=#tg3d=;ES8o^@:=]?a_bHpOP7?]@:Gk_g:[KoJ_G\/OkL$!s5)Iaddm:h
-#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]&k-"AnH,:k(@8XGNIh-AnHh\e8f/5R-)G-An\.*k/RJ:J`_OGOlcl6s4PqXe+*=c
-#KMJckJ6T@6@]~>
-#$LBV\^c7g\uZgMS"$4TXJhVXVQ?krS"$@XXJ;8SX/rCrS"0JZ!]=DcJZOF(OfSbumap!Ee+*=c
-#KMJckJ6T@6@]~>
-#$LBV\D!1K]%S(S`Pp3Xg==0]e(WO(`PpB]g<[aWf\5''`Q%o2!^qCdJ_G\/OkL$!s5)Iaddm:h
-#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]&jpkd*UP0k2=V5hWEtVd*Ub6k1\2/jQ>UVd*_jT!_7k%J`_OGOlcl6s4PqXe+*=c
-#KMJckJ6T@6@]~>
-#$LBV\^c7gS?)^?JZOF(O/rPsmap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KSD!t:J_G\/O4jfts5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YSE9gOJ`_OGO6-Z4s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\uZgB4[!tiXH5S.KrhA,4[#%2XE$HeU9(G,4[O_$JZOd2#.j6SeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\D!1K]%S(E:/7,/g9saOW7ot$:/8FTg6#-*cJ%!$:/leuJ_H%9#3,[>g4n&Hqq;:uJaVg;
-nC^*X~>
-#$LBV\^d1Y]&jp\;Gs+Kk.jkmZKC;O;GtKrk*]+Fg#hFN;H\S5J`_mQ#4)<BeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\^c7g\uZi\X/f3aX?<Pa4fbDHX/eCbO'/Na4fimIX.r+7XF[I3X9Q9(f@>Z*nb^iAa+NjD
-_!p&EJ,~>
-#$LBV\D!1K]%S*Of[srOg.g5P:>+&qf[rpP[;jjO:"ktpfZmQLg4@t:g'6R:hV*_4o)%,GbCT*H
-^@9fAJ,~>
-#$LBV\^d1Y]&jrbjQ(:"k#(4#;WZ_<jQ'2#^Nei#;<FO;jP!jik(2ZRjp(/Og!tl,nb^iAa+NjD
-_!p&EJ,~>
-#$LBV\^c7g\Z?^KVGrh^4KPVIX//1bX?<SE=fe\eXE\]cUdTd8JZOg3#.j6SeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\D!1K\_7tQdV?JL9\S2pg!NdQg.^5-ESB,?g6[iRcrP_OJ_H(:#3,[>g4n&Hqq;:uJaVg;
-nC^*X~>
-#$LBV\^d1Y\`OgihJgNt;!-n;jkX)%k"t3SGin-bk+J%&gfo?lJ`_pR#4)<BeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\^c7g\Z?]q6<Bq`4KPVIX//1bX?<SE=fe\eXE\]cUdTd8JZOg3#.j6SeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\D!1K\_7sk<,U"89\S2pg!NdQg.^5-ESB,?g6[iRcrP_OJ_H(:#3,[>g4n&Hqq;:uJaVg;
-nC^*X~>
-#$LBV\^d1Y\`Og*=EN9Z;!-n;jkX)%k"t3SGin-bk+J%&gfo?lJ`_pR#4)<BeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\^c7g\#^EGPcR!KX?EV\6`d@OXH$GbX?<S/E3,j'JZOF(N3!5pmap!Ee+*=c#KMJckJ6T@
-6@]~>
-#$LBV\D!1K\(V[6]\6'5g.g8J<8-&"g9bkRg.^4eNnVi\J_G\/N7nKqs5)Iaddm:h#Kq\dlFuc@
-6%A~>
-#$LBV\^d1Y\)nNH`o^+[k#(6r=m"jCk.Z*&k"t35QKHt,J`_OGN91?1s4PqXe+*=c#KMJckJ6T@
-6@]~>
-#$LBV\^c7g\u[$%XK5BcX?<Sc4fbDHXK4OcN`iHb4KNdHXJA7cXJ00sJZOF(OfSbumap!Ee+*=c
-#KMJckJ6T@6@]~>
-#$LBV\D!1K]%S9tg=g;Sg.^5S:"dong=f6SZuOgR9\Phng<`mSg<G&gJ_G\/OkL$!s5)Iaddm:h
-#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]&k-4k2pX&k"t4&;<?V:k2oM&^3Jf&;!+F:k1j2'k1PF<J`_OGOlcl6s4PqXe+*=c
-#KMJckJ6T@6@]~>
-#$LBV\^c7g\u[$.4?R)NXEH]gCTOOM4?RqkV-c>IM6*@M4?o+4XG7.GJZOF(OfSbumap!Ee+*=c
-#KMJckJ6T@6@]~>
-#$LBV\D!1K]%S:+9MBi_g6PE+Lt^L89MCr0dWnM[Y1h'89MiCUg8b[oJ_G\/OkL$!s5)Iaddm:h
-#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]&k-@:f)f%k+5CGOQPV_:f*qLh1&6t\)u7^:fYQuk-PW:J`_OGOlcl6s4PqXe+*=c
-#KMJckJ6T@6@]~>
-#$LBV\^c7gS?)`FI=\JNXH9Lf]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KSD"!+Sq5UHg5t"mir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YSE9i;Vh*u]k)e^0li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gS?)^XJZOF(O/rPsmap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KSD!tYJ_G\/O4jfts5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YSE9gpJ`_OGO6-Z4s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gZ`FY&20Z.!,s4:FXHG%q4@/tJ!Gs:]X9t:\4B%oSN]]F0V#%.pE'-7)JZOF(WN6<8
-map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KZe>o'6^QNU02,&)g:B199N1rE!K&`0g'YVp9PV`(ZqO/:d/)GuO%`62J_G\/WS.R9
-s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YZfVb>7\Jo#1/Le7k/98V:fmYY!KoD;jpK75:iOtI^/.XSh"p.8Q;CDIJ`_OGWTFEN
-s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\#^3g@'$FtE,VhWI]TV5XIk<MX??K`s#g+Y$;-nkG&aU1XK5fcqQ'oaXK4OcU.gu+
-XF[ITX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\(VIaH.ptRNfDcDTA&!mg<-MNg._M"s%N7B$=:g-QB9gjg=ghSqUu0Jg=f6Sc!\A=
-g4@t[g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\)n=!JEGuuQBgUlW935=k1-p&k"u'>s%rOR$=hQISs\Z9k2q3&qW8#Zk2oM&fk&BY
-k(2Zsjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\uZ49J4OOMXFt,/DuHa<Bn-)_##phgX@ApHq5ap5H%9LXXK7k@>E\ia#s>;j4KPQQ
-:L8j.XF[IVX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K]%RJ>U0NW!g8KLgNW%Q3KVA@u#&:g)g0)Zoq:Z1)RA,8-g=jK>F1D)##u'(,9\S.=
-A9Y/,g4@t]g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y]&j=VX'q1Ak-9Z6Q2ThGN2lj=#&qTEk$H\:q;r$;U8s*Ok2ssiH,KL@#uKdH;!-id
-C43OAk(2Zujp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\uYs@BV>@+"':V1DuHa<@YXi_#"tMgN*NGHq5apCAS>A+XK7Ot=I/fb"$EZd4T2>_
-MICm`XF[IWX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K]%R43KZa;J")bW:NW%Q3I&d/!#%,F)Z?4eoq:Z1:J:r*Jg=j&iE528'"&.G&9`<ZH
-YBugkg4@t^g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y]&j'EMq.gh"*DDRQ2ThGK<tO=#%Z0E]R/d;q;r$NLPpPhk2sO=G00UC"&S.B;#TMX
-\Up]0k(2[!jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\uZ4+4Dg:`X=nft:B%<rSkH*_X9aYjX/pP@GUe^LX9;.eXEJU^X8u^bqQ'c]XK4P`
-X94)Y:oJrHJZQ)W#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K]%RJ-9T$F8g,k[;@fG'_a^<^"g'Fg,g"Md&Qo22Gg&ta'g6Rj!g&ZK$qUu$Fg=f7"
-g&n0lA^u@cJ_I?^#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y]&j=D:m/cZk!#JYB`@,qe7I_?jp8GHjlW4MTfB^]jof2Ck+7t=joL"@qW7lVk2oM>
-jo_f4CZ0j,J`a3!#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\?#p^<E-&BE)&t'X9"nbrN%&q@B?Q!E,[1[XK7sTRB3J^Sud*TXCJ?5@#1ncE)ut>
-#X#2i4KP2<AWH_j!CVNjXF[I[X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\Cq1XChh[hNal>ng&]9$rRr<nHeR2kNfGiqg=jS@_V3^MaP)rAg4%c0H*,fSO)=mM
-#Y`t+9\RZ`J@#4.!EQ%Jg4@tbg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\E4$lEcC03Q"a\[email protected]')4?Q'F26k2t)hc0".ue)m6hk(Vs[J@=V&Q?3&f
-#Z0[G;!-A,LqWcL!F)^Xk(2[%jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gZE+6r4KGQbUMTn1!L.s0X9XGABWS;+4.6)L#Xpj_XK89]4Dt/"!H;'<X948@4H'$:
-!f7bGJZOF([&aJCmap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KZJ#L]9\J.RcADMR!P=m#g'=QMK\G/#9>^\^#Zj]Eg=jtK9T/o(!KM!qg'4WP9X3=*
-g&0P*XrjKkg4@tbg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YZK;?m;!$j%foZ0p!QCl5jp/1gMrs0M:X&h##[C2Uk2tMs:m1h?!L@d*jp&7j:qGfO
-jo"6B\0.r*k(2[%jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZS[K!DIrnXF[IZX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_KqR!FVROg4@tag'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`cdj!G/6]k(2[$jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\?#_2V7ir2VPrFS"0%i^VYR:rV4aokV#HndVlZWlSH,YgX9"rjq5a[pSXleVX9,)d
-TD5JhSt2YTX9YDpXK8@kSYu:b!Ml`HXL,&5]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K\Cpu8dCn67dam@1"4kN5e+q]#dE:1sci1rdeCr1H`rO]ig&]@Eq:Yr!a2cg-g&fO>
-anXQkaN)U)g'>gKg=k)ta4'k<!RTGLg9fQ<ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y\E3hPgqDhNhVmDT"6.bWhYH::h:C`Ng]#V&hr`SjdK&;+joO#hq;qe8daI1OjoX2`
-eG//-e'ctKjp0Jmk2tXNdbjl_!Sl^dk-X7Tli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\?#^HII4*;HXW3,X9"oLlDt"tKDqqPHhONDM3<XqKDo9ZOnc![B1kmOqQ(C*="CAR
-912E0END)l9.G^uXG&fHqQ'gr=%c2&qQ'g^;+jW9qQ(6V91r3MXK7:H=0/K691rEgqQ'^DD1Sdq
-X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\Cpt>T'b55S9qs:g&]9tlIl8hVZ,9LSG(Y>Y.:UeVZ(oB\G4b[JmVlaqUuY/DDp5&
-?WUT$O4m'1?T"q=g8I_oqUu)"DdQk-qUu(^B4#,FqUuLP?XIN^g=i`2DVEfn?XIg+qUtt>Mh0Th
-g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\E3gQVsWUJV1QeUjoNu@lK/,&YQ!YaV=s$S\AP`:YPs+R_YE6qM.C/&qW8LFF?/LG
-A6WS5Qf^nNA2q!Zk-7d:qW7q9F_#$EqW7ptD.I:_qW8?eARo`%k2s0WFQV_>A7ToFqW7gSP(Dc&
-jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\?#Zmri@*:QBn>JSXu@;VlZ>\R?jkSXHZh3XK%SSXI5BRqlC+)QBn2FXF=!3U\Lo(
-R[0nRVj<jEQDL[QL7YKJTer()poG07E*'--08G<RX/rCmQD^g_Q8Fnsri@!5P!"c+MI&EHXI#of
-E-SIKXK#TcXJf$<@f!//Rn]uc4Sl,^D0i:P:AV%+:8t=2I&s>PFB>QF9!#*YWMr".TDbhk4FsT@
-X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\CppVrn8@@^:qtJ`lZ36eCqga_7nRUg:M9jg=O'Tg;:STqq;A0^:qbDg7MrjcM6*,
-_nO^Ue%WiC^<tZSWlWoJbX0%^pt?F)Nc3Xe40,Def\5&u^=:le^-]QQrn87:\P0EbYBN[og:u4m
-NLAM4g=LPSg=9l"IJVY#`F7KS9`!HGMjrG<A,=mnA(K@jS_D\;P]#4/?J=+/f@EWeb5L#o9S(p)
-g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\E3cfroP3WaN3,udF?Oahr`29bfJi,k/DJ9k2XP,k0;!,qrS4GaN2ook,<(:g%a\C
-cH+u,hoO0naP>q)Zd\(!f1*j-puW9;Q?D?45I@e+jQ>UOaPZ.=a@=7troP*R_be,1\U@<:k/u]G
-Q(d?Zk2Um%k2C3HK_jg6ctDM';#9;WP,.6cB_pj*B]A0:V<6faS93oUAEN#Rio3e4ec"V1:k@c9
-jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\?#Zmri?W<;GpStCEleVA#rW_;c7Q5X9iijXJ@ICXA^XCqlC*E;GpPbXAUTILA@nb
-LK%/bXHt,CF<-FDCbULCXFD6gB_e_JU+eV\TWC8WX?NYcNDrebXIW60;JE56G?7iEX9(Mc4T)8\
-4T2>dS4p#cNE_*GqQ'gh9rtEYqQ'g:HE<Q1poF_#=-K_R:Q\`WX9XtiX/rC<<Fc$0!'Gh6[&aJC
-map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K\CppVrn7m.BP;;:LFd4SIG/EtC1rS*g'Ne,g<_oig1`Liqq;@<BP;5#g1WHZWqk?_
-X(l=$g:o.hP9dQiLcqWhg7]d*K_a=?c94c\bM#YDg.p;SZ>4-$g;dkPBSG0oQ>UR=g&at%9`3TE
-9`<ZM`aINSZZE*oqUu(k@G9F/qUu(1S(bbipt>u*DS"Q=A@QOUg'>9,f\5&8CjuB;!).st[+Y`D
-s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y\E3cfroO`ADJjRXO"PEiK][5;Df1g=jp@?Hk1`(4k&3<4qrS3PDJjL@k&!1tZh`_t
-ZuBo@k/o<4RjPo4O?p)4k,KbGMtuKRfg&:qf&ffkk#1:&]Q%hAk0e,oDN3f@T655SjoSBA;#KGU
-;#TM]d:MJ&]m6o:qW7q-BBJ>QqW7pDUuos9puVhBFN!=dC;P)kjp/nHjQ>TcEeXMT!)S7/[,qSY
-s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\Z>gUEW3$YOcGGWX/.bNXG1/D8uSh4FKDQ_Gc[uaHE;U1qQ'pgNfHnkXGgEZX9tLc
-LlQ%^XIE<qQN!rdAV9u`!'L"W';[f_3MWZ4NcoEDV`fcpD.0NI4T;D`MI)#9X93?cX??H_!Lcd^
-X9XYgXK5$cKjsn["Ii,eX???\"DrIdRSN[[#bkFhXK5*cO]VO`!h*8crN$3eC2g8UDL-l8[B'SD
-map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K\_7(NO8diP\?rV.g!N:9g8]P-?IdbmPhOiOR+g8PS(aQiqUu1h['XAGg9Phqg'Yl#
-XL*M5g;IrO^AcgeJ>W>"!)3.@'@BKZ8C-!V[$?^+e5!$NML4(29`E`IYBQrEg&m;&g._J!!Q/FG
-g'=m*g=flSWI=Ws"N=g'g._@s"H/c'_diMr#gRD+g=frS\8M<"!lK!$rRqIeL5t!AMjo:O[FtiE
-s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y\`NpcQN$"c_S3`OjkWP`k-T`SA)ZR=SEAt"T]YC#UZSS8qW8%*^:n<ik.?!8jpKO?
-[_@NXk0J3raSt<&LTg^>!)WFP'AZJo9\\]!^7L\Ri)6nqOb)ZW;#]SY\UCa^jo^jBk"u$=!R5?W
-jp/JFk2p1&Z@r):"OLfDk"tp:"HoSCc=m%9#haCGk2p:&_K>e>!mYu@rT4=&NgAhiPG<]k[H7\Z
-s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\?#Zmri?f>>$<&LV*h>cQ;W`GXK6ncXK6Acri?/`X??<[#AmXJ15N#j>kkB$ROS5>
-"bs+[>#hU%X8umbri?)^pT+dt0KUn[X=%1RN3&m#r`TDTXK4P_X9j)P<iiB35Z/VRri?,fV>[Iq
-4T;Db/5e_dV>I=sRn]uc4Sl,^D0i:P:ALsl=-<K`#Vo:H.A*]-=/Z"u!c(eHri?)^JZQ5[#.j6S
-eVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K\CppVrn8'/EcNS]d8\iR^1alng=i6Sg=hRSrn7EIg._=r#E!PB5HWYFFSOPj`&%C5
-"fg;1F)9J-g&Z`$rn7?GpY$&$4\@cYg+m\eZ.dYXrc/+9g=f7!g'O*aD;*]k;.q5Mrn7BQdJ_c!
-9`E`K2eZ&NdJMW#`F7KS9`!HGMjrG<A,4gZDRf]"#X<!)1s+IcDUeX=!f(T@rn7?GJ_IKb#3,[>
-g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y\E3cfroOoBG^(_"h-&n&a_eb:k2r\&k2qu&roO8Yk"tm9#Ej=V6al-hHhc_(c8PZH
-"gd@RH#hsEjoL7@roO2WpZ;n;5YaJnju%C+]B7s&rceOHk2oM=jp@Z&F6;V:<c07croO5bh#6@8
-;#]S[3c7q^h#$4:ctDM';#9;WP,.6cB_gckFMe%>#X`K82q7!3FPm&Z!fqAUroO2WJ`a?%#4)<B
-eVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\?#Zmri@#2L2[lkV&+3-=J1ZrI>1q#XHQ^lQ)q'I.YRW!$;uV.+`ONH=b^.VqlC^9
-D0L_ZGb[]SL-;32O\]SVXK5-NFFL<mH5ca`'O5TYXHtT2V-K1aF)m"`EMeIDL8k0R#c*VGNhVhm
--]e8.!CN^^X8kB^X:Lbc>X53gX@Z*eXIi@EL/.`L,U%92XF"]:Ht'1YNu"4dXA3nm?%T/IQ=`+O
-X?:oc5H:\FI@pJ>!'L1\!>p69XLkP<]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K\CppVrn88tWfA%0d2e@LDp,L8SuQhWg:M9I^"V2J25g9($>HN6.ZW5oEN4-,qq;t?
-MO1?1REns)W_LXi\7C3,g=g#9PG$X`Rj%aa'QoFSg;#ejdWN+RP*)c:O4($iWn.1'#gg+U[EcLa
-0t.)8!EIPGg&OhGg(2*8FA^QAg0J+?g<!s,Wal%^,V"u2g73quSUK5G[2d0>g1$>IG,<p3^4Ai$
-g.\-=:tO8lT$%#c!)3=E!?Rkag:Q&Cir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y\E3cfroP,0[$D]Mh&i&lFk48VVmL^&k/DIka6)O!33i;A$?!5N/=#A:GI2\NqrSgW
-P+]1UU"WbIZr,E:_J+kMk2p<`S#PQ4Ua,j#'RQ-gk/op:h0[*%R[LO\Qeo)6[,M#H#i*<o^Y-]4
-1r0+Q!F":WjoA6Wjq#_XHWK(ek$hoak1"4SZt]O%,V5GIk,"*FVM+*o^E1bak%L<mI'2VXaG<LC
-k"r"`<9)t7Vq(b.!)WUU!?e:kk.Ba[li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\?#Zmri@$+@X*9IV*fB7S?.`RCLX-AXF"DcJ#o`D<hK2h$)h<IMeoJrKOTr9X:oP^
-E3,L;G(!haXES,_KWM8G@W_UN!Ad.BX:U5OLTH,;Ni]=/XK6SSCTO3.@K<8"X9+2eM#OIVJ#WCJ
-!.4XF#&@\FXK6brri?3[@Uc#0X8usqri?0F@VPhC"eK2!XK6jL@K;boX9<KOTr_u-@K<J)X8kB]
-X9*5_Q%?$KX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\CppVrn8:-I$gIpd8ZBY`S.\=Lj[Y)g73P<U"\5BCs)S-$.XEWY_h)fW-koGg(TNp
-NnVF!QCiQ:g6R,6VqTkFI$=Q`!C9fcg(:EtXP0P![+a6(g=hg>LYBoMHiVRhg&eC(Xo@#TT[s(q
-!1`u@#)@TSg=i'frn7IYI!j-:g&Zi7rn7F?I"hRR"iu)<g=i1uHiUq\g'!F`bh@dMHiVjqg&OhF
-g&d0_]ReeKg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\E3cfroP-DJtT!;h-$;#d,r&eOFl<Nk,!Z]WoiHnEn1!J$/pJp\rc(:Z%BX`jqF&4
-QKHMFSu71Zk+@6WYib)rJt)c%!C^5kjq,&?[H=ZE^?4RSk2r4dO65!lJcOX%joVuC[f5CiWT*m=
-!2]VU#*4Amk2rJ:roO<oJqDSQjoL@TroO9SJrTcl"k/(Xk2rT@JcNsmjoh!%fB/(lJcOm-joA6V
-joU\ta+<Bbjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\?#^mFo&0@LbXP]X9*B.M>4.UQu5'_XJ5WB!0?iT!0I,.!28YY!EH%^X9!C+rN$$(
-Tn0;VX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\CptlQ2929X?NK[g&d=7Xn^TR_2D%7g<KPh!4DOS!4Mg!!6j]]!Gg2Lg&[AJrRq9n
-b^nKZg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\E3h-SbhIM[R.1sjoUlO\+o(hbEGiZk1T[3!5J6i!5SN3!8$Jt!HI%^joLphrT4-+
-fR`1rjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gYH.eSBlF!P!d/4%poFX[Bka9BSc!1%JbH/FK)B<_S:RbmXK/E,]'e2#LXYejeHa-I
-n)qLUg-U;~>
-#$LBV\D!1KYM'&MKoH#b!gJD+pt>nZKn[b)a8CVkU\<CAV>Q#I`IZ`og8ip3ir@lhL=5Yig'>fP
-mcqOUfg1,~>
-#$LBV\^d1YYN>nbNKjG)!h>7CpuVapNK)QPdeo()XS1cVY5F7Zd"1>1k,[VKli5YgLXYejeHa-I
-n)qLUg-U;~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gOfSS\BS!79XIH9q]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KOkKibKRqj.g7-e#ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YOlc]$N.L,Bk*tK;li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g];ud2GE@-1I&sE*DjRQ,Q#DP.N3&"WDl<T9#B+XIS?.*VHMOWEHnB8ori?BaDj#g/
-K7n03JZOF(WN6<8map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K]@n%2QaW?hS_Df!NPF3$]T'(cZJ)UDNRRm\#E=kY`nI#DS,(b?SN2\5rn7X_NOl'g
-VPfElJ_G\/WS.R9s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]B0mIT>726VWR$KQ-&1Na-F04]]QklQ/DT'#F1^sdH7<kV"s-TV*($RroOKuQ,Kr7
-YHX;<J`_OGWTFENs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g]<!6C,?Q'm26;[CGYt?4;g;UhOdTEuGZh,I@!Hi?Is,UPDKDlUX:Tq:G`Sr-P$E63
-1lN5]GZ1MkXF[IQX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K]@nLD/9!"Y6e\_iR:jsnC708k\AE?UR;ps4HC:$NTpCM&Mil]ig(:&CRC:i'\TO<V
-6*VG[R;16&g4@tXg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y]B1?[/p8ak8*7@5Tl&Z>DkVV,_T[>"Tm,YZJ>&MgWh,<GPF:P0jq+X[TtogQ_gA(t
-7CsUqTlAn?k(2Zpjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\uZ)uX?<RHX=O9`s#g:^%QphoM.gQ\XE\]cXFl*tri?,tQM[`aUIG-_!'L7^#&()#
-XK8-cJZOF(WiQE9map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K]%R?^g.^3og,Aq`!D?,cg($g1g9$$]7,!ufg=iF"?iJa[B>=>t!RFjGg&OhGg'35a
-9\S4F=b5:Xg8`j2ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y]&j2nk"t2:juNF!s%r^W%T)<M[u6/8k+J%&k-(muroO5uant3$g0FU=!)W[W#)hV?
-k2t?'J`_OGWoaNOs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\u[)<X?<RHX>bHUJ;$IeXJInXQ<8Z]2lqCCXK8:f9rY4n;OI?_'Ve*uV5^O`V6$bm
-X>d&YQqsfbT;7%>JZQ#U#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K]%S?%g.^3og.%O*U8V2>g<iFE^2Ka47G=>hg=jum@b08aBYjT"'[Kk7dFR#OdG!=!
-g-sKE_.D?Sb0Y^nJ_I9\#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y]&k25k"t2:k";DLX0Q$ak1r\ma`XYV8`ln3k2tOGBAr"4DTr"?'\ZgSh;[R#gudbO
-k"4Imb\H;&e_>Z;J`a,t#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g]<!38,(qV)/;o`p?smiM<+&cTXIE6u<?R='D.$aRPCd%I?%2XO&#WB7=.$(X=(#EL
-X;tGO=8o9%,?9;rJZQ#U#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K]@nI6.]5D033^#6H?tJ!C3jeQg;RrUCFHRDML'Sf];9UqFeJTb&(G??DSb&EDL-V]
-g*L`bDuSGk/8TmkJ_I9\#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y]B1<L/[.II41W=RJUs!CE.N-gk0S4$E@S]bP(A1-`NFQ=I&Zu)&)V>WFj&pmFFf"$
-jsPD)FoLM(/olO*J`a,t#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g]<!0HLma9lNL[)9Lkr.6Sqr@qXK7hGS;Wu?XGD[uXK7J=Nqf[WSVW[4X::SRLoII<
-P_c$7XD]VXJZOF(Y,hi=map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K]@nFJXMV?_ZGtV4XK:.0aK2^Ng=jEF`j!P<g8qBig=j!:[.r>VaK32Vg'tm"XOl0"
-]<'92g5Ir-J_G\/Y1a*>s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]B19a[EQA1][5f_[C,/Ze$Zkqk2sprdCRfhk-_V<k2sIe^A-gle$[BujpfPB[Gp=F
-`jOI]k*.mNJ`_OGY3#rSs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gYH.l+=]ndmn#QMWr)j#Cp8e=?+'SWE!JHnmXF[ITX9Q9(f@>Z*nb^iAa+NjD_!p&E
-J,~>
-#$LBV\D!1KYM'-1E,][1n(IcYr,;Y%p=]S8-Z]1>!N3hdg4@t[g'6R:hV*_4o)%,GbCT*H^@9fA
-J,~>
-#$LBV\^d1YYN>uIGB\,Pn)aVpr-&.4p>uFM.<tgR!O9q$k(2Zsjp(/Og!tl,nb^iAa+NjD_!p&E
-J,~>
-#$LBV\^c7gYH.i,O,oh!X8o-qNrYUAX9+iOOFaKaXJ`-(]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KYM'*3[^O0Cg&TS![K+5=g&f1#[Xm.`g8EX/ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YYN>rJ^qe=bjoF68^];XQjoWiD^k(X!k,7>Gli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gQ)k+1D60gTr_W`bXC2$)"f8<%X&5&VX8nUd;$Cm>XD:\!JZOF(\uZ+Imap!Ee+*=c
-#KMJckJ6T@6@]~>
-#$LBV\D!1KQ.cA)MqZmArau;Lg3N[1"ju&XfOqbkg&SneB*F7Jg4s=TJ_G\/]%RAJs5)Iaddm:h
-#Kq\dlFuc@6%A~>
-#$LBV\^d1YQ0&4=P31ngrbMY\k(*GI"l8>'jD;a1joEO&C^$'ck)X?#J`_OG]&j4_s4PqXe+*=c
-#KMJckJ6T@6@]~>
-#$LBV\^c7g\Z?*KG@R_U4Y/]XP4YgU9)>V+V1khKKOm6HXAkOQ</@VQQ^9t0XK5!$HMX]PNG+ZF
-403OEQWf`WR>ld!JZQSe#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K\_7@?Q[RTA9fPg?\b+SU?2E7ldAbXLVgqFog1nC;C9?3&^V<Xgg=fhYS,1hJZ@p!-
-9A5Sl^N.*C_6\^HJ_Iil#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y\`O3RTS2Ii;*.TN_t<'kA,>=)h6Pu$Y_Q$:k&AJcE44nGb0!`7k2p-(U\a*^]SjqT
-:Ze18b';(kbe/MhJ`a]/#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\Z?ZQE*03CJ7u$c4KO9/8X?HI8Y:*7XH"2j:Aq7!Hqn1HXB:QHrN$'p<Ls,j#F/Dh
-XGpG%HM=KLDL/C$H`WW2XG:+RU4KCsXMCnA]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K\_7pCNc<_+UP%:S9\QLP?,#%2?-8@[g9_u.A,Y*dSn!2og2OJorRq=uCWHG.#JG')
-g9PgYS+kVFMji@WSD(hjg8fF'c%4T"g;)DHir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y\`OcUQ?MEQXGc6';!,)n@`dcY@b%!&k.W$KB`7&uVJ(Y:k'"O:rT417EROjK#KV)G
-k.H#(U\EmZPG@9&V<6$:k-]VHfR`19k.p*`li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\u[6M+=A8%XFOucX?;>KSt9,MW_?cAKn-*\StE*cQqD.fXK7RcX??H_!Lld]X9XGh
-XK6#cDL2&Y%R?toIV4*u:TUXsSjm4hJZOF(_Q3sQmap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K]%SLQ-o!*hg7s;Sg.\YsaiSS8f3iidW1qg3ai`>k^g;i@g=j&Rg._J!!QALGg'=R*
-g=h+SMjsIp%T1d1T7`b;AD5bha]X&CJ_G\/_V,4Rs5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]&k?h.PrU%k,aL'k"rR?eC8`_j(<e0ZE)nUeCE^Db@?Xck2sR&k"u$=!RPHWjp//F
-k2qK&PG@m7%TVKMW/@NYC$+R;e6[gfJ`_OG_WD'gs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\uZ:3,:at/XFM]c6@h8uX9=heXA`m4X8kB]X9+GTFoJHE8tN+HrN$$-L]+:Z=HKVc
-4KNFHpoFa]>H4d+I;4U7rN$&p>,["RJZQ_i#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K]%RP7/2f$!g7pE%;km%cg'#-'g1c?@g&OhFg&eZgPlBA=?HChorRq9uXSpiXDn"HS
-9\PDopt?"\FP,=$SqjIZrRq<^En,`pJ_Iup#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y]&jCN00(W4k,^FB=KG?ujoieCk&-4XjoA6VjoW;.SGqXQA(0R:rT4-3[Jf4mFi!5&
-;!*t:puVjrHK=5NViJ9$rT4/oGi=59J`ai3#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\uZRG=DV!<XFOiYVQ=']XK6_cXAbD_X:IFpWf*s[VfP=NV.i"R'o)^h!'L1\!'L7^
-"$8Ul1&e6TJW]o4!IS_]X:'DlXH@9\S#WQkRWsCbJZQhl#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K]%RhNE/ADag7s/Gdb8lKg=i!Sg1e8!g(-m2f<O&`e<3t#d=k4e)QNej!)3=E!)3CG
-"%u<A55s7:UUU3U!M,)Fg'aI.g:2o3`7N_s_j>r.J_J)s#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y]&j[fG*-h,k,a<ohWB3sk2rG&k&/9=jpt;Nj1=C8i0muDh2G-+*4,Y,!)WUU!)W[W
-"&D`L6N6*JXMXqu!N)"WjpS&Jk/*-Tcf=0McCfaNJ`ar6#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\Z?HLEETBE3$hk3XK#Pg4Dh0f*]/6CX942>5)K6>#GQ78XK6%MLAn7S4oDA]4oMG`
-W[BS$X8sSIrN$$ID>pU@>Wcf'XH.f-X9!>GJZOF(`N09Tmap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K\_7^>O)`n-7PAr=g=LLA9T.WA-:47%g&n?K:TaTL#L/@Xg=h0!WrC]P:&N]F:&WcI
-fJ,Vig&WdBrRq:CMZ2<6FA.MEg9mRNg&[9?J_G\/`S(OUs5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y\`OQPQZqTS8hkbVk2Uhc:m0tb-q:'4jo_qd;n)_f#M>F!k2qOAZi9(e;Z,YW;Z5_Z
-j>94&joI/WrT4-XOoFJIH;K^ck.dkmjoLhTJ`_OG`T@Bjs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZS%9!>gTDXF[IlX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_K;@!?S@og4@tsg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`c.X!?\e%k(2[6jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZS%9!/lE0JZQek#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_K;@!3h%.J_J&r#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`c.X!4maDJ`ao5#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZSmQ!Ml^nX9#&rnZ2_anZ2bgVr"KVP;8k`XF[JNX9Q9(f@>Z*nb^iAa+NjD_!p&E
-J,~>
-#$LBV\D!1KJ_L.X!RTErg&]IOn_*uen_+#leDAm\\j4Mkg4@uUg'6R:hV*_4o)%,GbCT*H^@9fA
-J,~>
-#$LBV\^d1YJ`d!p!SlZ4joO/rn`Bi'n`Bl.i83St`'`1.k(2[mjp(/Og!tl,nb^iAa+NjD_!p&E
-J,~>
-#$LBV\^c7gJZSmQ!FCW]X8tkbnZ2^QnZ2b+Ibh(+8tLU8JZSdN#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_L.X!I1dGg&YF$n_*t:n_+#!TAA3%?-.ZOJ_L%U#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`d!p!IhQWjoJl@n`BgJn`Bk4W86S:@aotkJ`cmm#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g]<!3(2JP9b6`d.l4E[a+E]deqEN!J34HceIS30&LM4m^-9VD9a,D7ai4Cb:j8o0)A
-PcUZ`4FF6'+YZ$IXHFG\4K5>:4KML8QM[`uAJI=>XK8C:4D:[p5r+-F@AkJ'4HoTB-_*:`SY@iX
-4A2?KXFE?69!"@A4CY4iLceKuSue_k4F=0'0oTg?Tn0;$X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K]@nI#7>FKe<SGlG9U+8aOA($uOO\nU9Y&m2`_96^Xit<L@*AH$,H!\b9RYFE?&>CO
-]@tVO9V'n\.QpJDg:/7q9\7l]9\O5C^AHV!J/V+4g=k,59SD!N;Eq-?I+9l/9Y1&R-cShVa3Hl.
-9OGusg7V,W?J<.f9RYCDXA!2%akG*^9Ush\5-fiMb^nK(g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y]B1<78WHQ&>3=[k:n6\0Qr&E7Qf*Zr:rMMYcqm`"\(GCkA_-b@,I'P#:k[`g@Zdfi
-`TGs":o3=+/3m%Xk//?8:u^M';<Dg]ant38LE'-Hk2tZa:lOAq=$s8TK&JFF:rN1l-dbdkdb-sP
-:h8/>k,D1!AEM$2:k[`g[SU^<eE5P2:o*7*6+i.gf7E(?jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\u[)1IP$+5XC$gcF*2MHXG/1*SV!rE4KO]HXJdq"<gg%Z<h]Dl'/t-:Kk%3C057M/
-XBCUcDL/BjM>aLV8>,s`"DrLeR8<X[!'L4]%;UBnIqYpL<f^:^XD34ZX=095XJf0c@SNqa>-**f
-XH=Qa=fe]Z@Y86nQmA9)>)o\%H)t@AJ"2.BXGEq^]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K]%S>lT/rcAg3BdSP*D&og8Zs_a/.MD9\R$og=8KVD8P#HD9_t3'1S>BWI<L+4,)CO
-g2XOSMjrFFY5R&T>Kd$""H&`'_IWJr!)3@F%>US0U4h77D7+35g4u<qg*jOKg=C,THt(g:En[(?
-g:/K:ESB-GIAVPK_(Nj`EjXPZRbE$hTuEm[g5+Geir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y]&k2'W'.7Zk'sl&R[fb:k-Hu.d]V`p;!,];k2A_$F3WjpF4gBP'2"q[Z@qAP5)eWm
-k'+T&PG@8h\GbOj@+P>>"HfPCc"["9!)WXV%?IFLWf6)^F2)bWk)QD8js\/gk2CC&JnO5[Giklb
-k/&O\Gin.pKWg0nbV7Q/GeW=)U?6r1WmIr#k(r.(li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\uZ)uX?<RHX<7F(!DkoXX:@@oVIDYM19>_>XK8+\9E)!n;3q*\!'L7^"?`cE9r\,n
-#8fQc3a&OjM>aLV8>,s`"JSAe9:bm[!'L4]!&+=6#skYoLea;<XD34ZX:fb*4?P?R@YUtE>-(Af
-XK7k0GlFcT4B[`HX@f(c)*C#B=KGkRJZOR,#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K]%R?^g.^3og*lqo!G5%)g($g1dsXn`5MDHag=jca?iJa[B>=>t!)3CG"AIOT@b1P4
-#9QW58o`R0Y5R&T>Kd$""O1*'?cVur!)3@F!'C0R#u]L2X^f-"g4u<qg(Kf.9M@XNI&bo-EnXm@
-g=jH)R/YeM9Q@Jog0MhS+&#@#E8#T'J_Gh3#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y]&j2nk"t2:jsp@,!GbO2jpk5Mhh+a%6ft&-k2t::AcCfmD9;\;!)W[W"An6mBB&pQ
-#9Zi>:3YiL\GbOj@+P>>"P@&CACC;9!)WXV!'gHZ$!69O[V3eFk)QD8jq=@E:f'KdK!a[SGiiPb
-k2ssSU&O0b:j9\:k$lj&+])!1G34:GJ`_[K#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\u[)<X?<RHXC-gbXDi9'XFr"'N`iH.1oup@XK75;=.$(Z<hfJm#<-e,K4V-C>lC`<
->E,_^Ff\o+XDk8B8>*&'XK6G=@ed#=4KOC'XDN<cXDk8+=--C^XD33cE;HX^PZ4`cLm2A'XH$Jc
-Iqc!cE0+2'XFt,<A#u"@Suc.UXJ^3B?]"]^!EY,/XGj4b]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K]%S?%g.^3og3TjSg5_A\g8Hd\ZuOfe6JB%eg=iX7DSb&GD9_t3#=as3VL[C+FT'o-
-F0jTLQ.gJcg5an@>Kb`\g=hX"I/)D09\QY\g5;BRg5an#DRXE7g4u<SNr%HU]PH6TXh/t\g9bnS
-TnV4SNj`l[g8BG"IG2IeakCgAg=2A@H*."u!H,&kg5O_iir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y]&k25k"t2:k(0r&k*DL+k-6f+^3Je67HVR/k2s+cFNimoF4pHQ#>1NKYD;8PHi<(@
-H+i@tS`YC2k*G/l@+OJ+k2r%HKD=RC;!,:+k)uP&k*G/MFhr(Zk)QD&QMT_i`c:/'[`3p+k.Z*&
-WK$'&QG@\+k-0TGK]^E0eE2(ik22]kJ%,@<!Hbi&k)AF,li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g]<!3(06'@%5'j,74?T49F?F(mXJokqE&W<KT0,5DVk['N9VVBb#Wm)iAZ2\&104CU
-'W,(s6(k<S:-=N;XIqmBS?/fj;N1CP'RDlJVQ?e74?S\+68XBL@]ZA*4GN[5-(d:^@%B)CX@tC?
-XF`PsGc[>r4CkClM`aj==KJB(4@,X61H9ITX9+Y%H@`/VX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K]@nI#4-*C,:Rfj[9MER]P>$Epg=CpNN^]\ra\5BSe'DT!@F"`'#YU=SJCW@[5]$GR
-'[h%r;p3n@@na5_g<3Gh`nK.sBX7Ee'Uh^?e(WE29MDkJ<'mQHI+lq_9W@jA--8hSH,i3Rg0d1d
-g8%D9R+fGO9RkUHYY8YIE8&`]9N''X5t@+;g&er+Rt9:Pg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y]B1<75F,KD;l&<%:f,['Ro"f2k2D4pQ:\.>e5/tmhqDgAB%d%C#Z$mcLZ%<*6ur:h
-']"%2=4ZNfBi)M*k13X2dH9TMDS5c,'VeKRhr`s^:f+ph=@KM[K'(j.:p]u[-.PjhJC6hlk%7!/
-k,hHVU#sTr:kmoj\km3cG37Y-:fl6"6qa!JjoWRCUOhQdjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gXK2GRBBZDs4QNRETguAh!D%0\XGa.a]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KXP*]MK':ng9]Xn.bZ_:*!F1Y9g5FYhir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YXQBPbMWj1&:upa>f3bfF!F_:Fk)8@+li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gYH.l*4?R8Un#QMQq`Fp:4HSa-"bSloOfY&M49/XOX8l)p492;3X9#/uJZOd2#.j6S
-eVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KYM'-/9MC&in(IcQqb.&X9Xa-<"f=p[\D"n!9E95#g&Pa_9E<Pog&]USJ_H%9#3,[>
-g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YYN>uG:f*&/n)aVhqbR>_:r)8V"g:]k_WK2B:]Pk-joB2p:]TD*joO9!J`_mQ#4)<B
-eVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\Z?$B13K\"O$#FRXF[I(XSJq%]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K\_7:45F'sV[S08Dg4@t/gA0G,ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y\`O-F6_3B%^edaVk(2ZGk5"-Dli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\Z>g9NVojX4FsSbXF[JKX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\_7(+ZM`DV9S(oKg4@uRg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\`Np=]_pml:k@b[k(2[jjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\Z>g9NVojX4FsSbXF[JKX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\_7(+ZM`DV9S(oKg4@uRg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\`Np=]_pml:k@b[k(2[jjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\Z>g9NVojX4FsSbXF[JKX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\_7(+ZM`DV9S(oKg4@uRg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\`Np=]_pml:k@b[k(2[jjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\Z>g9NVojX4FsSbXF[JKX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\_7(+ZM`DV9S(oKg4@uRg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\`Np=]_pml:k@b[k(2[jjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\Z>g9NVojX4T2>^9O`RSJZOF(s/ZF9map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K\_7(+ZM`DV9`<ZG@=3X[J_G\/s4R\:s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y\`Np=]_pml;#TMWAqPZsJ`_OGs5jOOs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\Z>g9NVojX4T;D`NZWFqXF[I(XT,@+]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K\_7(+ZM`DV9`E`IZm_5kg4@t/gAfk2ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y\`Np=]_pml;#]SY^+,_*k(2ZGk5XQJli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\Z?$K2Kc+&O$#r3X9!B\JZOF(JZSjP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K\_7:@7$ZK[[S0m(g&[@rJ_G\/J_L+W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y\`O-S8=eo*^eeD;joLp8J`_OGJ`cso#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\Z>h%VLbh"XF[JEX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\_7)(dXg,'g4@uLg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\`Nq?hLXg?k(2[djp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\uYt,.ZK"\JZOF(o;i/-map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K]%R5026qeeJ_G\/[email protected])Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]&j(G34sh)J`_OGoB$8Cs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\uYsA;2p..JZOF(o;i/-map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K]%R43B<m*BJ_G\/[email protected])Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]&j'FD7kG^J`_OGoB$8Cs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\Z>g9NIe0^XF[JEX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\_7(+Z@U_\g4@uLg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\`Np=]Rf3rk(2[djp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\Z>g9NIe0^XF[JEX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\_7(+Z@U_\g4@uLg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\`Np=]Rf3rk(2[djp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\Z>g9NIe0^XF[JEX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\_7(+Z@U_\g4@uLg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\`Np=]Rf3rk(2[djp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\uZ!b5$sHOX8tgLJZOF(JZS[K#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K]%R7]:3a8Ig&YAFJ_G\/J_KqR#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y]&j*r;LcR_joJg[J`_OGJ`cdj#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\uZ0gFEEYHXH+6KJZOF(JZS[K#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K]%RFbPEWK0g9i#rJ_G\/J_KqR#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y]&j:"S"%:Wk.`(>J`_OGJ`cdj#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g[&a:iJUsnRXF[JJX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K[+YPiUOh-Mg4@uQg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y[,qD*XF]Mbk(2[ijp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gVlTlIJZOF(KWGBhmap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KVqM-CJ_G\/K\?Xis5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YVrduXJ`_OGK]WL)s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gWN60#BeB.^.AAX[X@k@@TgLqFVM$U:XElO@QTRj@XCa@KAZVt50pQi6G`jdC4>qbA
-XF[I]X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KWS.F)KK8k^.Et.Ng0d1ebZ.>Vd\f3]g7(3e^eA%fg4D^\J(iUm5J<:DRCGFQ9LP\-
-g4@tdg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YWTF9AN'-pu.G7-bk%-s0f32!ph6B2'k+b//b"uR0k(uW"L?@W=6HGZ]Tu0/k:e7^>
-k(2['jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\uZ+1?!W2dXI/um$*88sEa>09S:<ZrX:/N&K8j*(<MZ^W=faabX9h"jXFaE0XK6Pc
-ri?Kr:9:NZXK4scXE8Q8XF[I]X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K]%RA6G'9k=g;3c3$/(T7OESRr`h?*$g'i=*VR(?^Cs^nDES=+cg'LI,g8/Pgg=hgS
-rn7au@bTO0g=fcSg67_Og4@tdg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y]&j4MI!i9_k0*aO$0@_SR!d6BdAg%<jpZfAYJ#5,EnoflGNMa$jp=lHk,r[6k2r5&
-roOU6B]eGRk2p(&k*qikk(2['jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\uZELMi1T'X@\>.6E?1aG)JulX8kBXX9N*T</Fh6@fEG>4KOTHXDW?cVc%eIWiU>a
-ri?Kr:9:NZXK4sJ9:hi.XF[I]X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K]%R[>Ycqo[g0Lqe<8"]#Q*=Tog&OhAg'2nfC9;QVI/_h19\Qmog5MKSe7b:rf@lLP
-rn7au@bTO0g=fc4?c^HBg4@tdg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y]&jNQ]"2n*k$kp5=lmF@T"8G2joA6Qjp$C+E4:,!KDt!D;!,N:k*)S&heo0<j5uo#
-roOU6B]eGRk2p'ZACK.]k(2['jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\uZF:<E1N5XBnn,NNAsDXK4P`X8kBXX9N*g=`@T"@fEGL4KPJ^N`MUMN%S*UT<*0V
-XJ^?4:9:NZXK4ri+K0jmJZQ8\#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K]%R\>ChtuAg37@LZeEf+g=f7"g&OhAg'2o)EK5+>I/_h?9\S!5Zu*b8Z8ueSb1`,C
-g=2P/@bTO0g=fbC.Fj"'J_INc#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y]&jOUEcO.Zk'h>k^#n-Rk2oM>joA6Qjp$CEGF!N\KDt!R;!-\W^2qT^]010ge`NEj
-k22lXB]eGRk2p&f/)c'AJ`aB&#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\uZE6P)VDbXH/O-7'!.OXK4P`X8kBXX:ersTIO0*?)ap!8$&e7Amh^A8H+bf9<<8W
-XJ/1Q:9:NZXK4scS:#^cWf!U'XF[IaX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K]%R[#]!=c;g9nN'=4tu#g=f7"g&OhAg(Jb5au+7HG1PBk=k_SoJU,u'>Q22L?eUd-
-g<Ed=@bTO0g=fcS`gr[Sf<<PPg4@thg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y]&jN4`4S[]k.ejQ>NO[Dk2oM>joA6Qjq<6QeMhceIH'DA?KUC?Lk+XM@/e([AEKGN
-k1O(dB]eGRk2p(&d&*]&j1*ipk(2[+jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\uZWa:/NWFX<^P9=KH0WPCjg$S5("uV#.5$Ub#->>?e1Z:JOiOri@/'XK6ji:5_jd
-:,Ok'8OfLW:/5T+Q68ao20>pn!/#j(JZQGa#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K]%RmW@qIc>g+HlFE7omk\u-aA`FC*%d/2N)cSo1aF*$'0A7K>`rn8Deg=i2DA$BGe
-@m`Rm?!5Nl@q1;J^+!;s6^-6J!2b>$J_I]h#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y]&j`kBP]hRjtLI^G3+W1`NUV`ctF\<g\^+@gH/p-H$SPQC1qP'roP7uk2rTfBY%k&
-BLbL)@U@f2BP<Fga=C\47[rPl!3^t9J`aQ+#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\uZLDR[p4FXIP`JVQ?GZVkfcVWW&=dWr&k)Wg]HZWM?PrS!p#KX9P?!XJ;5QVYZ_d
-Trb&YR]3BerL*kdX?TgcJZOF(\uZ+Imap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K]%RbJ_oL'Dg;UtIdb;j]eBl+Yf)EPef_aA0fYb__f$E((`P]jsg'5aSg<[[Sde^id
-bhCF]_q*PlrPJceg/)b=J_G\/]%RAJs5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]&jUbcI1Fqk0VE!hWEA6i7uW2ir74'jSS'HjNc08inNVXd*C2?jp'E!k1\,+hYPM&
-f]Lr6cJn!ErQYQ&k#?N^J`_OG]&j4_s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gUT=GgrC-c_f;nt$JZOF(\?#nGmap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KUY5]TrE0,3f@g4tJ_G\/\Cq/Hs5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YUZMPerE]J=fB*(4J`_OG\E4"]s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gUTFBf!2G+HJZOj4#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KUY>Xj!7$/LJ_H+;#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YUZMR0rR_,'J`_OGNTLH2s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gM6$\gJZOF(U9"R1map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KM:qr[J_G\/U=oh2s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YM<4enJ`_OGU?2[Gs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gM6$\cnuMn./8]s>JZQ5[#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KM:qrVo%F/#3/W:@J_IKb#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YM<4eio&^"64-G0WJ`a?%#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g]<!3(7Wh=B:op^14FsT8IQV@AEN="?4J/^VWB<InNiH#?:TF8m'r*lR3g?_44Ar8^
-Am8YN>A%#P;*:3EX9!]bri?3r4@lIKX:'tIJinNKXIMCIDGl%eJZR+t#.j6SeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\D!1K]@nI#=Hm-PB%kmh9VgCrT1k#POP,Ue9Zl)CekAu3[+B"cACp\3(!fQI8\<]l9PE/6
-Joc3_F+S:aB2$,?g&[b$rn7J!9O$-Gg'b/VUeII[g;Q`pN+ddrJ_JB&#3,[>g4n&Hqq;:uJaVg;
-nC^*X~>
-#$LBV\^d1Y]B1<7?(>GkCZa]7:p&mBW)/LiQfXK/:t=^ji_W^P^>j-.C?,0Q("uJ\9uc><:i>FX
-M0XW%H&6X&D,ACSjoM?AroO=8:gi;[jpSdpX\c$!k0Qq;PAYs6J`b5>#4)<BeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\^c7g\u[)/F"2DsXCm*cB7YMHXF;FrRX)!94KOoHXJ[Fl=d?(V=/>_p"?`ceI$Xc5!'L7^
-()hoDK1;:MQE48MXK6ecXK7XcXIrObqlC,h@l\6cO]SWR+HqAXJZR+t#.j6SeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\D!1K]%S>iOu8V#g4H-SJu##og7L"O_jT649\R<og=.mHE4suBDUA:7"AIP'T"b3X!)3CG
-(*TXuVHLh`^Y3_8g=i*Sg=j2Sg<49Sqq;BRIRo/d\8L$=.(b&aJ_JB&#3,[>g4n&Hqq;:uJaVg;
-nC^*X~>
-#$LBV\^d1Y]&k2$RQ-s:k)$5&M63_:k,9urc(X:^;!,u:k2/"jGK8jiFkcfU"An7CVTAc!!)W[W
-(*^(,Y?oL%al[i^k2rP'k2s[&k14P&qrS5bKhRG%_K=qd/&d)%J`b5>#4)<BeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\^c7g\uZ)uX?<RHX<7F(!CK!KX:@@oWbad[19>_>XK7hO9E)!n;3q*\"G]*%BW;!4!'L7^
-(-JT\U.1SHXK7=cXK6ecXK67h4?OsMqlC,hWB@7EA;%%c<Ki!8JZR+t#.j6SeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\D!1K]%R?^g.^3og*lqo!EDhmg($g1f8**o5MDHag=jEQ?iJa[B>=>t"KP3iK\-4W!)3CG
-(/3=Ubuqtog=icSg=i*[email protected];BRekFdkI](oRCV,/OJ_JB&#3,[>g4n&Hqq;:uJaVg;
-nC^*X~>
-#$LBV\^d1Y]&j2nk"t2:jsp@,!Er>!jpk5Mj,d)66ft&-k2sq)AcCfmD9;\;"LV'&MrXg!!)W[W
-(/X$ifj;s;k2s7&k2rP'k2qdd:f&s]qrS5bi_\c6KsBe&EQ*LkJ`b5>#4)<BeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\^c7g\u[)<X?<RHXBCUcXF4c4XGnd4N`iH92QVpBXK7MF<1U+_<M95j"F[AQ@#4f`!'L7^
-(-JT\U.1S'SZHRTXK6ecXK71cXK7>OqlC8lWB@7EJnD*W0pA]?JU)gJJZR8##.j6SeVDWDqpbql
-KCA!=nCg3Z~>
-#$LBV\D!1K]%S?%g.^3og2OLSg7Etlg9N]lZuOfs7,"tfg=j!ECW>)NCs)Y/"J4?$H*.)"!)3CG
-(/3=UbuqtFaP)BAg=i*Sg=iTRg=idPqq;[email protected]&UR?\eJ_JN*#3,[>g4n&Hqq;:u
-JaVg;nC^*X~>
-#$LBV\^d1Y]&k25k"t2:k'+W'k,4-<k.Ee<^3JeD8ERU2k2sIqEREq!En1'L"K1DEJ@>I>!)W[W
-(/X$ifj;rde)lXhk2rP'k2s(&k2s8(qrSAfi_\c6Y))5k6,i!KXJ1:.J`bAB#4)<BeVDWDqpbql
-KCA!=nCg3Z~>
-#$LBV\^c7g]<!3(,&oM`0m]Qs4?Sb+BKTKTXJK8dALN)1Outj/U74e<8X]FV,""IT>bnHf4<cn`
-Ag2mQK-Yq/8j%[+XD9OB@'$Gf4?QoFr2^Ef,@EuQ6#20:7mW??V`d:rXF[J#X9Q9(f@>Z*nb^iA
-a+NjD_!p&EJ,~>
-#$LBV\D!1K]@nI#/!!,a5F]o:9MDtKKM6GQg<k.=J2<qR\P,\9c,<s_>f-?k,#q<1FjSjX9Iif_
-Jh*cNVCnQ9?;.-Jg4qjPHJ7)W9MBWVr7V[d/:(HM;M_;G>>i)ee4rklg4@u*g'6R:hV*_4o)%,G
-bCT*H^@9fAJ,~>
-#$LBV\^d1Y]B1<7/XAu!6DW7X:f,'jMbn^fk1tJ_LGl3q_ba0Qf[",*@EnZ2,$If>He[]*:b>Mu
-M(PtbY;*%R@o08hk)M_iJ`c++:f)Ppr8nO%/qI;a=-'X`?rt>0hbmI*k(2[Bjp(/Og!tl,nb^iA
-a+NjD_!p&EJ,~>
-#$LBV\^c7gXK2GZ?Iu7ZRSMnE#+nqgXFW('JZOF(dB!P`map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KXP*]XGh:XM`+%c\#0Lf)g8$m]J_G\/dFnfas5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YXQBPnIb3]_c=l8##1[eEk,go+J`_OGdH1Z!s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gYH.l*4?QrHn#QMQr&asin>l[j.STH8!1WmK!*oE&#?ErYS?/ffT7O(pXO+$Q]'e2#
-LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KYM'-/9MB]Yn(IcQr(I*>nCdqZ2IZ42!6"e/!-S1m#Am.>`nK.nb(88tg<eOXir@lh
-L=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YYN>uG:f)Vsn)aVhr(mBInE'dk3+hdE!71R>!.4V*#BN^MdH9TGeUck6k0W5pli5Yg
-LXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g\Z?$K20H"%O$#m_XF[I(XSJq%]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K\_7:?7$ZK[[S0hTg4@t/gA0G,ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y\`O-R8"Jf)^ee?gk(2ZGk5"-Dli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\Z>g9NVojX4FsSbXF[JKX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\_7(+ZM`DV9S(oKg4@uRg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\`Np=]_pml:k@b[k(2[jjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\Z>g9NVojX4FsSbXF[JKX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\_7(+ZM`DV9S(oKg4@uRg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\`Np=]_pml:k@b[k(2[jjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\Z>g9NVojX4FsSbXF[JKX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\_7(+ZM`DV9S(oKg4@uRg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\`Np=]_pml:k@b[k(2[jjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\Z>g9NVojX4FsSbXF[JKX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K\_7(+ZM`DV9S(oKg4@uRg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y\`Np=]_pml:k@b[k(2[jjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\Z>g9NVojX4T2>^>A\qmJZOF(s/ZF9map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K\_7(+ZM`DV9`<ZGF,GP&J_G\/s4R\:s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y\`Np=]_pml;#TMWH'3a@J`_OGs5jOOs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\Z>g9NVojX4T;D`Pp:'qXF[I(XT,@+]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K\_7(+ZM`DV9`E`I]e"tjg4@t/gAfk2ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y\`Np=]_pml;#]SYa=iU*k(2ZGk5XQJli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\Z?$B13K\"O$#K&X9!-CJZOF(JZSjP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1K\_7:45F'sV[S0<mg&["QJ_G\/J_L+W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Y\`O-G6_3B%^edf*joLQkJ`_OGJ`cso#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gXK2H"T_PSnVk0KZXK87unZ2ekSu[FDJZPZK#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KXP*^(bP9creB,h`g=k!,n_+&qak;7!J_HpR#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YXQBQ?f(eA4i7-98k2tL[n`Bo4eE)8DJ``cj#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gXK2GR-MXYI>"M;LXK5QcnZ2eW+.n+cJZPZK#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KXP*]N0_j?,Ea;t^g=gPSn_+&X-d%"oJ_HpR#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YXQBPc1\g);G[b.#k2pm&n`Bno.Fj"3J``cj#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7g];uR=RB3?RWM#cRQ_gdbUmI`:ri?d%Q`@-aQSk,%XK7nEU9(8ZV3dbPX9k\hTWG5n
-Q^gX>JZOF(UoXd3map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K]@mhB_V3SUf#u(U^X:chd(datrn8%'^Y%8g^I,cYg=jNEc.^[^dD*d%g'Q*?bM(\#
-^VsI#J_G\/UtQ%4s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]B0[Yc0"!-imuN-b1u.AgWJ)DroOm=b2h^@a[XG'k2t$qf]M,7gre+FjpBebf&l,R
-b0XSIJ`_OGUuhmIs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g]<!iC-`ijdP^+?N;-0iu=&DsIXK7"O;/`Ot;&iGUXK5q^O0"]n;,L;SXJf2t<L^(%
-;,\g6JZOF(UoXd3map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K]@o*@1>9c(]UC3aB5cJSDJ*cCg=iB:B8tWSB-_,Sg=h$6[G&DIB4l"hg=:(RCrP+[
-B500DJ_G\/UtQ%4s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]B1rU2!34D`hFo&Cj"k!FDPtWk2rgaCmF/!CaNtgk2qCX^ZN]lCi"(,k2:>tEmWs*
-Ci;,[J`_OGUuhmIs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\uZc3XK5BcX>HTO4f_AHXIhAOPY$do??N?N4T)8p=c]Yc8rB]nENDl_O+B]3JZP\1
-T7O(pXJDp%]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K]%S#qg=g;Sg-Ws9:"a'og;u_9]3VYLGEgh89`3TYEOFNS?E`(KOP408[\QrVUY=*g
-b(88tg8*F,ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y]&jl,k2pX&k!dh_;<;Q;k0uo``aZNpI@TH^;#KGiGJE;&A%:ZmR-&%Z^o^guXQJ;7
-eUck6k+q,Dli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\uZ9%XK5BcX?<Sc4f^^EX91SdN\:<6",j7^4T)8f=c]Yc8tN,-END/!=U&D=OK>NT
-T7O(pXJDp%]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K]%RNcg=g;Sg.^5S:"`5>g&k%&Zo\2*"0pS69`3TOEOFNS?HCidOP32'E!Cf1[bBG?
-b(88tg8*F,ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y]&jAsk2pX&k"t4&;<:XRjo\HB^-;O?"1mXW;#KG_GJE;&A(0S3R-%$?G6WeF_<0lg
-eUck6k+q,Dli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\uZfGLjL.jQnP&)0U%l,Lh@ftW+LL7FF^'?08]\0)377,S"r*"XC#/4QWf3$>G5/T
-Fr?(:X@Z-;XF[IOX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K]%S'5XILT.^c]]^4hJOMXF_h:eUjEpPG6:&4Ke\;)7E\/`6_,Vg3@Yl^N-EWFN\X)
-Q6<9_g0J0=g4@tVg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y]&joG[A>7Jb<OJ-5fLrk[>HEWiJFM@S#b/K5Ig^T)8KRFceD4%k'qX<b'CD&HIm>J
-Sg(T)k$htSk(2Znjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\uZgF?u:U:JmaV(@!\o8@"E<NXK6/EFKCa8?tB8<)/rtkLmqdpXCG\?XH$[rS?/;i
-Ee&;6N>m7rXF[IOX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K]%S(JHA\\^UjBD]HCNWrHD?P"g=h=.PM3]rH@GkI)39)iXi5UNg4"D&g9c0P`nJL[
-OJA&oZQbrkg4@tVg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y]&jpbJW[7(Xb"4-JYVABJZP3Ck2q\TS*%bBJVF*c)4#i)[a0Mpk(J?Kk.Q=sdH8o/
-R&lh?]d0G*k(2Znjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gKrb<-GCciHXJ`-(]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KL"ZR)Q\!kAg8EX/ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YL#rE?T7Q-Uk,7>Gli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gXK2GgJ,$)MRWs(LXK7V\nZ2neGc7^6Rt7YlXJ`-(]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KXP*]hU%m=H_jQq7g=j-an_+/iRFU$1`.?Wng8EX/ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YXQBQ)Wqb]]cCpr]k2sY:n`C#+U#G.\c[k50k,7>Gli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gXK2Gc0DMUR:2b'@XK5QcnZ2nc0;#>6:P#TuXJ`-(]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KXP*]c48@M7@uZJfg=gPSn_+/f4NcBpA:`Hcg8EX/ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YXQBQ$55=7FBpFt2k2pm&n`C#(5Lno?C4YMuk,7>Gli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g];uR-Gc[WZUl0bZEL3c.Q#V[Dri?cYEMon,E@5a^XK6hhU9'u,QZ7ZWX:1>5Mla"R
-EILKOXK4O8XF[INX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K]@mh-R+fiHd'07HO2'E&]oT?jrn8$RO42h#O"uctg=i0[c.^:#^lPAlg'kWTYhIgT
-O.]b#g=f5Og4@tUg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y]B0[CT]XpogUaGoQceIQa-X>5roOlfQf$rNQSk,<k2rV.f]L\Mb*T=2jp]7r]&r/,
-Q`4EDk2oKkk(2Zmjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g]<!uX0W_$1P`?YiG>,'4;g2OmXK-5WG?h,;G:IfqXK7";O0#!17sAEpXJ/[<?')$f
-GA8"fXK4[cJZOF(W2p37map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K]@o6Y4ke4R]X8o.QXSRnBpX#qg=V@DQZ^p"QSk,7g=iAu[G&ei>*jZ8g<FB!G.6%A
-Q\HX*g=fHSJ_G\/W7hI8s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]B2)o5j$cp`kNaKT4[3=DkDG2k2_blT7#YFT/`ITk2rgE^ZO*8?_<"Uk1FXFI)4cb
-T8b&Fk2o_&J`_OGW9+<Ms4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7g\uZ9%XK5BcX?<Sc4f^^EX9q(kN]1Zd:2-f24T)8f=c]Yc8tN,-END/!BaQIpOK>NT
-T<,,DBn<@:XJi3)]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K]%RNcg=g;Sg.^5S:"`5>g'UO-Zpf\&@tiXj9`3TOEOFNS?HCidOP35(KaKkZ[bBG?
-b1bRCKn7s/g8N^0ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y]&jAsk2pX&k"t4&;<:XRjpFrI^.F<DBT2*9;#KG_GJE;&A(0S3R-%'@N=%jm_<0lg
-e`Q"oN.L,Bk,@DHli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\uZc3XK#!ZX?<Sc4f_#HXJS"ZO[4DFH^1\64T)8s=c]Yc8tN,-ENDKMIt)iQM6*[C
-T<,+Vr2]plV1G_!XKJW/]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1K]%S#qg=KcGg.^5S:"`Uog<rOG\5SumS@mS09`3T\EOFNS?HCidOP3["TqS$%XkM?*
-b1bQCr7V1pd=L#&g90-6ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1Y]&jl,k2U'nk"t4&;<;':k2&eo_H3Y7UrVW[;#KGlGJE;&A(0S3R-%PCWMu_D\)u[Q
-e`Q!jr8n%2gk"U=k-!hNli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7g\uZf[@U:<jJg-5@,($7e@TXY)XEe,]>_\MP,%^bT(i_<.M45u4X@>LWVc7,7?*%CB
->T[mcX??E^!@(TqXF[IUX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1K]%S'OI!72lV(8pe/=Y1)HuC=1g7!86FK3$$.tIWQ(m%!qXi3/Ug0%>-e7sAYG1q1g
-FXW4&g._Fu!A&&<g4@t\g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Y]&jobJpf>,Xt@B//u7HFJorHHk+[<VHF(\E/r0Gg(mm^-\'R*tk$;'Nhf+1!I-,p1
-HRb9Bk"u!<!A8DDk(2Ztjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7g\uZgJL5hU]Q\M')L6J^0L6msgXK7>7OK>.1L5>i1(lj?*R\Y\"XGDY5XIY*#Uo^DI
-O-Yp0V*k3_!cKQVJZOF(Y,hi=map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1K]%S(PWj9IJ^T,>uWk7!+WkYsXg=ig3\(]$*WiZ3R(pp<C_p>?lg8q@/g;g4nd+ZmI
-[D'-(d8g/!!f](SJ_G\/Y1a*>s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Y]&jph[(OVsb-]UK[)M1V[)p),k2s7^_<0@V['otr(r!AacJ,_Bk-_SYk0gWDgudG"
-^WF=Sh-0d>!gPaiJ`_OGY3#rSs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gKrb<9Nr?$[K:7@mJZPuT#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KL"ZR9[/J\ZVo+)>J_I6[#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YL#rEO^A[0pYg.g^J`a)s#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gpoFI9aK,A^aK,A^JZOF(VlU*6map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1Kpt>_0aP$WUaP$WUJ_G\/VqM@7s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YpuVRDaQ<JiaQ<JiJ`_OGVre3Ls4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gq5aU@EW3$?QXB`n"BIN/4!i[`!)!-i!*&Qk"C3<94F?\$!`UY5poFL8LA7hNE#+#+
-JZPcN#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1Kq:Yk9O8di6^j5q5"Dp[^8h\uR!+,QV!,M2["ElFl9Ut_.!bsU(pt>b/Wqb9KNZ<W(
-J_I$U#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Yq;q^MQi?+Jb(0KR"ER6k:,1Pd!+buh!-.Vm"FMq#:o*^F!cU-;puVUC[.rbaQ6(V>
-J``lm#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gq5aU8H2alGPZ7X`/4lI"V`_%nEhZ3oXI2^SK<0!+CJ0bjXFNr:?EC5L91u:dXJJQj
-J!t^&94Rt&!DH8fX:Lss97<mb@rY/!XJJ:cX??K`#?OQnXA=^H:]7@'=c]YM94b2"9<>4-JbZ;I
-HTZk\JZPcN#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1Kq:Yk/RJtn@]P@H"/6p=rdnJJJOj.7Lg;@9)VqR,cLL7OEg7hq]GM:c5?XMI>g<j8E
-Tu3?C?[_q-!FTF:g(2A6?_5u:IZRp>g<imRg._M"#B*tqg17BoAGt3jEOFN8?\$j?@+s=eU\NOD
-S4nLfJ_I$U#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Yq;q^BUAj9U`c1q>/7I(1hb`HmRFu,pk07FIYi_11O(?)hk,W$'IHK[[A7Xc`k1sQh
-Wm.=aA;'sE!G,sDjq$$RA>eR\KpZD\k1s2&k"u'>#BaS3k%VA:CAm9'GJE:^A;B;]A`i-4XSCoY
-V,2a*J``lm#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gq5aU+LAn7TRVVo(/>K73VkU8[1KL&SXC.Ti8ti!rI@W[*Ro#ZH=0.O,SXi3NRoQ#B
-+H*$SSY?%a0V(/(XI3.\SSN_N*d4)?X//1bR89o[>`bLWRVjLDR9#u^XBCUcWC)oOD.p#PH&VL!
-!'Gh6JZPcN#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1Kq:YjsWrC]Q`/+EH/C3!Je'?[`6#FYgg3Uf[?Hg\8T>sma`+@!0DVDUca2_<9`GET*
-.C%5ga3=P:0ZQZ:g;7aJa,$G9-C2\Ng!NdQ_.D?IFgoD.`/?Ck_JRKMg2XOSelBB:MM0^;R^2\A
-!).stJ_I$U#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Yq;q^1[/T1gcB%te/DK8fhq@/97<?n-k((n.A(TEVVp\Z/cYLtWFQUH2daDF`cZ7IO
-/%aS.db"K\0[`SUk0.qqdZ:E_.%\jgjkX)%b\H:qHbn-OcBC*5b]D@tk'+T&i`a@aOc/AaU:^0^
-!)S7/J``lm#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gq5aU%NVBLY6)UfcU+;`4X<*`r6QDc#4KPVHXJK#d6_(6ZDF6cPXDE9cXGrjR4Su2_
-4KPVoL&S.u4KLZHX?EV\)FIGoXH"Mm6S`A#E3--SJ?5hTO0#F;@]WLno;hpSJZOF(VlU*6map!E
-e+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KqUu#(FL(Yp##j")g<DOprn8F0<E19eg.^5S9\Rm4<E7&mg5K$38_Sukg=imUg._Ct
-"AIP'IB!5",>?fbg=f9Sd32M)a4dmO<E28;Q]BeRKVI2SEOFNSWI3E6^%9qX9S(oKg8EX/ir@lh
-L=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YqW7k@HG'"7#$9^Ek1McAroP9F>$<6'k"t4&;!-PU>$B>9k*&tP:?IY8k2s>,k"ts;
-"An7CKX1U>,>dN!k2oP&h'6*BdcS7s>$=7OTU+a&MlZ"&GJE;&Z\.CYa7JEn:k@b[k,7>Gli5Yg
-LXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gq5aU8H2"BD6)UfcU.5*_+[;fj0;,C/XK4OcVMq@J5HKNKV1Uk2Iqc!cPbP6AXIkjY
-X<]p0XEe`cXH?Sc4KPVIX//(XG]BgO<1]qQQ$?'*Wa1UcXBCV`X9)4B>kkB$OG!M5!'L1\!J6Gb
-XF[IUX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1Kq:Yk/RJ5D=;q'ISbujqu+]-S&43Q>Og=f6Se$@BK:thjtdAKXkTnM.R]?T&'g<%,/
-g*BAGg7!uSg:2%S9\S2pg!N[EQ]Kk9C<4f;]U*-^f64LSg2XP"g&blQFnjYk[\s)X!)3=E!N!;W
-g4@t\g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1Yq;q^BUA*dR=5W0&fj4R=+][=A5M"snk2oM&hRhRu<T^Q@gosT:Wf6*&`S'BMk1.WR
-js3dck+\+&k/)6&;!-n;jkWqlTU4faE7<Uba.R,.j*\Q&k'+T>joT=kHhc_(^p*e"!)WUU!Ns:j
-k(2Ztjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gq5aU8H2+HG6l.n=XB?E2riAn74@h,,Aeg)R'l'-V4?R_eSl.[V(5T&?4?QT:XDU-l
-PcUrL'g.MXGW\)iUhpirM\T]+(QPS@ENG-e4A(l`8N]1mXK5AC13]h$S1CK3X8u-Gri?2d'g.HS
-X8sPGJZOF(Y,hi=map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1Kq:Yk/RJ>J@<ujo5g2S3<rn:/.9O'\tJK(Ye)hu3S9MCZ(aCe1i*3@kd9MB6Gg5J^1
-]\;(7)bdTlQqU1kd#/j:YT%t4*jjXfOP7$@9O5>u>te%qg=g9i5F:*X`])?@g&Ye@rn7HN)bdO9
-g&Wa@J_G\/Y1a*>s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1Yq;q^BUA3jU>9?VIk'%tUroR"B:glS1L`Eh+*0/8i:f*\Edqqp0*k(40:f)/`k*/\O
-`ocD]*)O?2TMSI,gQEPV\K-<L+26m0Qfbta:h%J<@Sg"3k2pV46_EN'd5p.ZjoK6TroO;_*)O9H
-joI)TJ`_OGY3#rSs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gq5aUMA$)g5G]<AX!IeeYX9+>'TD5Jg?9s.DJZPuT#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1Kq:YkJI]_<)Q]Cdn!MG2Bg&eQ/anXQjGZ'+HJ_I6[#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1Yq;q^_KrsJ<TU,<6!ND+SjoW.FeG//,ITD$^J`a)s#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gpoFIQXfMRY.V&7T")KS<W;3LqU6PDR!L9C1XF[ITX9Q9(f@>Z*nb^iAa+NjD_!p&E
-J,~>
-#$LBV\D!1Kpt>_OXkEh?21G>S",T&pebRo"cF`i)!PH[.g4@t[g'6R:hV*_4o)%,GbCT*H^@9fA
-J,~>
-#$LBV\^d1YpuVReXl][N3/%(h"->](iVDU:fuEdK!QWiDk(2Zsjp(/Og!tl,nb^iAa+NjD_!p&E
-J,~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZSIE!L[BlX<aa7U9'lUXK%e\Uo^>]VQ?M^Vl#uZXK8%aS>E<gSXcdTS>`:_S,fR?
-XF[J=X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_K_L!Q09[g*G1fc.U+Xg=XEbd+Zgcdb;sceC)@_g=j]h`mNMoa2ZiW`mrK8`W4VA
-g4@uDg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`cRd!R65ljs8m4f]CN0k2aq;gud><hWEM=hqlc7k2t4AdG<sIda@40dGWjZd/`3X
-k(2[\jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZSLF!g$,Hq5c$,*''uO5-/]s9NIj2)MP81)NKSB8Z]"!,sd*`X?&);Af[(e)GEgM
-Q@Z,gXQuql]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_KbM!k2TAq:[:,,=pEK:>1\8?u=,R+fX1S+ge:P?/""U/lSS"g.=K^JL.n(+^e\1
-^4G!hg?[Gsir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`cUe!l8JUq;s-B,u!;_;Wa6UATQLr,I6Hq,JCKj@clg#0itL>k"S/'M'p6E,@tF?
-aFWK)k3M.6li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gKrbr54?S"mWbjj\6EEOd69L^<SsDnAX;O65JSTXSFf_[4:96mZXIW"cXAN8_XK5?b
-ri?KPDlfd&XK4OcSR._8XF[J=X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KL"[3/9MD&3f8<6q<8(?'<(t3`ahM$Sg)3_:UPPM)PhOj.A(k&1g;dRSg1GN7g=g;S
-rn7aJNS;c[g=f6Sa*>FOg4@uDg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YL#s&C:f+%Oj,m/7=lrnE=A[<*eB)(mjr%-QXH9<JSEAtYC$&^Sk0df&k%oIZk2pX'
-roOT^Q0-n*k2oM&dXKDkk(2[\jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gKrbr.XK4OcRSKrcEiamJVQ;n]XJ&/ZX9LnJ=_iCqK`8%`4KO*HX?NYcN*M*HXK5?b
-ri?ENDlfd&XK4-Z/V1!SXQcej]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KL"[3&g=f6S`+%HSOkQ]sdb7CKg<<aqg'1BYEJU38VuGB\9\Q:og.p;SZ?3*og=g;S
-rn7[HNS;c[g=e`13J#n8g?I;qir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YL#s&:k2oM&c=lA&RHC_>hW@Ysk1<u8jp"esGEA\UZ2Wkr;!+m:k#1:&]R-u;k2pX'
-roON\Q0-n*k2o!S4b;aHk3;"4li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gKrbr04?ORaWG4OXL9-#<XK4OcXJ&/ZX9Lng:KW!TK`8%o4KPAPH=j7Z@l-;(S?,YR
-XG:kADlfd&XK4CB9:Vr3XF[J=X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KL"[3(9M?\beqQjlWnOA#g=f6Sg<<aqg'1C)A8n,hVuGBk9\Rm$Rt9;HI6pUn`S,(>
-g8pI*NS;c[g=f')?cLWIg4@uDg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YL#s&<:f&J#if-c2[-"TIk2oM&k1<u8jp"fEC3HJ.Z2Wl,;!-PDUP\-pKLSd+d,o;f
-k-^YOQ0-n*k2o=OAC0:dk(2[\jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gKrbqMXG\:(UO'#C4KO0GXK4OcXJ&/ZX=QT8VZ;+%?EC5WC94L`<KF5Y6EI8T;63]\
-XFOu/Dlfd&XK4OcXAY@cPYnB1XF[JAX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KL"[26g9<*]cC<PA9\QCog=f6Sg<<aqg+6(Oe,Z)DGM:cDL>(@PCUMmF;qfs?BA.+5
-g7j7gNS;c[g=f6Sg1\4S]P#cGg4@uHg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YL#s%Fk.3/,fq[]l;!,!:k2oM&k1<u8jt'KkhuKXaIcfdkNooK#EPLYm=Q\bgD!#]W
-k,XE6Q0-n*k2oM&k&/9&`bj[ck(2[`jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gKrbu74C(KlShN8hNN>K'Uh267K/tYVqQ('`/n(etLTHV#4DLkpX<(BCXBmPKHoWoD
-0f_?SGG\V-5bG-)/j)6NS#g3<VLbh"XRE4p]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KL"[619QjZqaZW<kZJ&;Ed"+6YVFisTqUu=^4*oS;X4k'W9SV-tg)b(ag3>\\SOl"=
-5"J@9QdTtL;9@O^3_W42`7fb`dt-5(g@*`"ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YL#s)F:jc]2e3Hi,]]NBcgk\,$Y>.;iqW80t5(VgX[H>>&:laQ7jrSR*k'fL!VG0?Q
-5tk*HTA=ij<Rp6.4]"s@cfU$*hgsp@k3qF:li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZQSe!@a(\XF[J@X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_Iil!Ah08g4@uGg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`a]/!B.`Ek(2[_jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZS=A!1WmK!*n-W!2G+HJZS7?#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_KSH!6"e/!-QoI!7-5MJ_KMF#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`cF`!71R>!.3>[!8<"dJ`c@^#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gKWG6U@>sfZ!/^TS!E#<XX8n:[Fo[s%X9+6%S,KDh?'"?R!^Af*ri?0s>+5Gl!/^ZU
-!etljpoFIPqlBc_o;hqBrcS:>o;i"?G,b8<!Ka./XO=0S]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KK\?L\Ha31r!3Z4Q!GB@Cg&SMZQ2neng&eFC`VnKkG.$\j!`2Rprn7G#El7n1!3Z:S
-!ihR.pt>_Nqq;$Io@a2>rg!Q5o@a89QIkoc!OgC,g="[Zir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YK]W?tK"LX:!4Vjf!H$0TjoE-pScI"+joW#`d/E)-I)#%1!`W"-roO:;Gg?<N!4Vph
-!jeKJpuVRcqrRlYoB$%Srgj,IoB$+NT&]V.!PmNBk0iArli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gKWG3S55qY_X8T.!Ws#N)40,F]X9,G\VZ*[rWrT7!Wsl(g-us?'X/rD'X/rE$X8]1%
-L.caiX9,G`UA_1nX8]4"X8&ar4T)8]PZ7U_!'L4]!eNdjrN-"!"K\XcX/l6$!NUqQXT#7#XSo4"
-X9<9!EcPFaXT,@$XSo4!X93YuUoaQr#-=l+XK5<cJZR;$#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KK\?IY:]B&Lg"=sUgAfh)f`Fh!f`'S+fW`g'gAfeAg"P-3g">!3YqhE&A(]Mhg">$4
-f\+p0rn7FR?C1ZF!nk!+rRq;)g&B_)f_F/#9`3TF]5.B!!)3@F!i8nmrRqM/g"G*49A%qsg&]j)
-rS%;(!SQ3+fa$0`g4r7]OELQVs4IA*"5);Zf`'S6QT<FHg">!3f\"p3BYK&Odb4obs5)Iaddm:h
-#Kq\dlFuc@6%A~>
-#$LBV\^d1YK]W<q;uYn\jlGM$k5XNAjT86=jSn9CjLO.Hk5XKYjlY[cjlGOc]/>tCC#nF=jlGRd
-jQ5I`roO9gA=rk`!p%,KroO:DjQ6C'roEk:!)WUU!QB'WjoA6VjoV\hXo7D^j9=Z-j\Ot!roO7B
-Z2Nhbj8nB)roFCGk2q[uR$`7"k5XNBjoa]+jQ-=&%A,c;k2k[ck2bUck&/7kk0iArli5YgLXYej
-eHa-In)qLUg-U;~>
-#$LBV\^c7gKWGie5-1i_=?SfgXK74D4\BgK'g5.fX<:7XR]NTE5!;`3IN)BP<hl`YXK4UcXHcFA
-CTL#d6p5kqX9!<bri?0%+HHH&$"lCpQ`P["4X,[WX8kB\X9"PbrN#u]rN$'p7Qg[O%<"C$/tlkl
-4_CdsTKO\%X;bk:4^G*q.SDp>XH6PcX?<ScKg%_UUE`Su7ZRJL$q-nmL)"Br,<i31;O2m8d]<Ya
-map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KK\@*k:YOONE)'/jg=iZ,:0j'\)bs]<g)slM_qNhD:JPK?T-A2KDU7$1g=f<Sg:Ucf
-LtZ$'<_f+_g&[8$rn7Ei.CB*.$%ku]^Y5AV:+WLBg&OhEg&\g$rRq6FrRq=t=\ShK%?+%f3m<0p
-:4h3Rb"a\jg)G`@:3P<82.'+6g:)"Sg.^5SW(p0hcRi^'=LA(]$s(a/WZ-W:/5P!RBYK&Odb4ob
-s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YK]Ws.;s*6!G#D5+k2s*R;IZ-!*E$AGjre=`cK=8p;c7DWW$HL`FP>kRk2oS&k/V"1
-O60eC>>h6qjoLg@roO9&/&)#F$&VVmb3#^%;D,BQjoA6UjoNG@rT4)VrT416?;UX`%?sb"4kGN2
-;MjPuel"@(jr97W;LISU3+PpIk.u3&k"t4&Yu=W.g+R5>?,$=#$sVKKZQ5"X/lUopDTICkdcLc"
-s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gKWGbpL9.JSN2*./XH-VcXB'PH4Su3*:7A8@@&pAs:TQI:XAtIc3hqC=X/JXUUNC=5
-5,G>sI&sDhGQ"TQ>)o\cB6^288?>+PUQM8GX8kB\X8uLarN$!WrN$E1Km%44E-SIW32*E9qlDG5
-XK6/cXK7@cV_4RB4KOWCUM>=\Lg$OH=c6a"XJ8dcXK4gcXK4^bX'gdcXHB?1XO=0S]'e2#LXYej
-eHa-In)qLUg-U;~>
-#$LBV\D!1KK\@#cWnQ1UZ-LWeg9u.Tg23/09`*NhA&I$'H.gogAD0G]g2"=S8^=8`g!sEBcBF*n
-:XRmQS_DeYQi5VJEjXQSK:'rr>hW-%cF;$ng&OhEg&Z9$rRq7UrRq["W0W1lNgSPD7a0R[qq<\s
-g=h:Sg=ifSe2k\)9\QsicA&(IX`D_2E3Xh@g<XTSg=fTSg=fKSfm9dSg:5R^g="[Zir@lhL=5Yi
-g'>fPmcqOUfg1,~>
-#$LBV\^d1YK]Wl!Zf^E-]@tt6k.l?&k&[0W;#BB#B[5bMJE>q<C?A((k&JB&:"lk+jl'^jg7+2>
-;r-StVWR$-TDdm^GeW>&MP8bC@HLYFg;2G;joA6UjoKb@rT4*krT4N5ZC['<Q(d?k9%`9&qrTP.
-k2qZ&k2s:&h`]HN;!,T4g5W/q[X$QXG.N?]k1an&k2on&k2ob&jajo'k/6#+k0iArli5YgLXYej
-eHa-In)qLUg-U;~>
-#$LBV\^c7gKWGQ]5-1i^=@GY0XFk']X8kB[X9;:eXF"g`X:@@o4KPVaPH5rs:QqlW)ZE/4FcT\,
-XFOucXDrI_X9DdfXK5&Zr^@!lVaX$RSb]>e4T)8]PZ7I[#EqqP79#j[Oo29\4Su2_4KPVZRf9Au
-4JtKHX?<SG,=P_2XEcAr71bPiKrh@SQ)q&TUo^Yo6_-l$XNdgN]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KK\?gc:YOOMDc^"!g8BGug&OhDg&tp'g7+!!g($g19\S39]@nc:A@pRE+oYOMQ*tYc
-g7j8Sg5hU!g(&/1g=fn1='&MXe5o^da8+Eh9`3TF]5.5r#J+GI=)5oq\GY%\9`*NH9\S31_uA@"
-9[ltog.^50/QZl<g6t##<tMihWS6'?]\;(?d+[4$<QAHtg<J=Uir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YK]W[&;s*5uF^/05k-0U<joA6TjofACk+n1>jpk5M;!-n[`TAdXC;o>l,Q:pTS\TF2
-k,XF&k*M_=jplXMk2p2R>[1Rsi*9N+deW#*;#KGV`Gt_9#K1=]>]J88_YiNr;#BAX;!-nRcMlr9
-:u>@:k"t3V03iYUk+Xs:>S+`)ZKC:fa6)MggZIYR>1-r4k0<#mli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gKWJ+P5-1iU:Rc/JUnV"WRs^!m7[oNYXK8!_Ml!(HR[\M@V)G*J9SfH%V4Ub\X(HsQ
-OE$='Ngj(=XJ'6BU9(Gg;1PIDPZsWH?*%+sRpM#SXCt0'X8kB\X9"Pbq5cbiDk`k(J!X<-Rq&:r
-6(<+XXK%aJS#V]VS"!cFS3*XF2PYt%Wg$_aT2h>LGE-,nRu:XNXIVM=VQ?e02jF*=!E`KUXOsTY
-]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KK\BAV:YOOBAAsB\d*6OC`La-a=N.e0g=jVNYgLU0_o7t'd7)C5@BIgDdE67JfRfp<
-[Z@jE[)Hn#g<>,(c.^mnB;3c,]5ts1G1plR`H\W@g4W]/g&OhEg&\g$q:\#\N6TL]TtbTd`I?4g
-;oP-0g=XA5`RhbC`Pm)/`_+b.7F.rDf=Z1Pb%nr7QF)'4`NXX:g;ct$e(WH*7_AHL!H2q.g=Y*`
-ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YK]Z4n;s*5iC=&&!gt6ejd&+55?-pHRk2t-!]%tnWc-W,Mh+68ZB"$Dah:6MrjGC"c
-^mDhc^<grIk1GKOf]M>HD6)FR`HfhWIHG\!d!iRgk)3XGjoA6UjoNG@q;skoPhFT-Wl]J3d"U9;
-=4!VQk2al[d,W,kd*R6Ud8&WU8D:@aj2QB#eT&m]T>#tRd(4bak0d/IhWEmT8]CJe!HiR:k1Jf#
-li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gKWG3S55qVnJPCMsJ?5hN9l-o4VG1.kX?9]]9nf[M:/,]/KM?`_9ji0>L9.IoXK6#.
-=KIQd>"tcnXDUa,Eic?N9hg)<XHQ@QMl^Ve9m<\?Sh4(CX8kB\X9"PbqQ(@29hf_?9j=]f9hg;B
-XGoqnXK8,p9cTb+Ptau0XD:OnKM?_u9qJGNL9.IN9l[7DH;.]EX9Va"9oH*SN`u4Z!gFjGJZRM*
-#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KK\?IY:]B&XULB^8U>"=8@>NXkdU@%mg,sFb@Aqo6@ptDOVdZ"6@="8KWS6'ag=h-e
-E8%a>Ead;Jg5KHKOP8E9@:>h_g:C^$YhFe>@@#X$aZ4>=g&OhEg&\g$qUuV8@:>=K@<:/?@:?+g
-g9Y4Jg=jgN@3!AB]jY?Pg5'1JVdZ!<@EI69WS6'8@?9,jRUL@<g';G&@BeJ>ZuYrq!k^"AJ_Jc1
-#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YK]W<q;uYnhXCe>UX6/P_Aru0;hI^m/juds%B!UR]BkE[nY\'WXAq?RdZf^D6k2qM4
-G36S`G\5[lk*'ChR-*O_AnJ%)k/CqE]&nuaAtJ/Ie3%pQjoA6UjoNG@qW8IPAnIKdApNO`AnJ=1
-k.G;lk2t=qAfT:^a(Aqnk)X,lY\'VYB%5t_Zf^C`As_Y5ULnoQjp,p=B"@'d^3KG8!lcdTJ`bVI
-#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gKWG6UD2clD!e3n3k,\WH<2fbs!_YY6ri?1!A"(WC"0,@BTD5JhRp'b*X9!f[JZRJ)
-#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KK\?L\MQtR_!hs)>k1TmHC=N49!aeX*rn7G'IDa:_"5%COb4sZl`H$t5g&[joJ_J`0
-#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YK]W?tOh9$'!ifkVk2l`^E8^]W!b>-=roO:>K[.g("64BhebJ8.cZk`MjoMH6J`bSH
-#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZR8#!b>8CTr\?m<)e>AX9*<>>_0!#X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_JN*!e5!;U"TUrCMTR;g&d7LFFi/ig'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`bAB!et]OU#lI5EH.rPjoUffH\(>'jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOp6!f`/+JZPHE#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_H1=s0;X@J_H^L#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ``$U!kc.gJ``Qd#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOs7"EIaP=H\6:T<&7.map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_H4>"HdeJDn1GQT@sM/s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ``'V"IXR_Fi/dmTB6@Ds4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOs7"@/oeCj^f8T<&7.map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_H4>"B!_'M4K4OT@sM/s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ``'V"BFFCOemWkTB6@Ds4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOs7"@/oeCj^f8T<&7.map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_H4>"B!_'M4K4OT@sM/s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ``'V"BFFCOemWkTB6@Ds4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOs7"@/oeCj^f8T<&7.map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_H4>"B!_'M4K4OT@sM/s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ``'V"BFFCOemWkTB6@Ds4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOs7"@/oeCj^f8T<&7.map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_H4>"B!_'M4K4OT@sM/s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ``'V"BFFCOemWkTB6@Ds4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOs7#\%mu?Aknd?QXj#UT=[2map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_H4>#^hi$GHffTGpe0sUY5q3s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ``'V#_SV;I_+\(J16'3UZMdHs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOp6#BY$CXK8$:Aq@%YX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_H1=#Et:Og=j[uJUuOMg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ``$U#Fh-ik2t2ELk4]`jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOa1!MFF`XJ2d#]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_H"8!R$OTg7m:*ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_jP!S3Tgk+^uBli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(rN$!JJZQ#U#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/rRq7EJ_I9\#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGrT4*ZJ`a,t#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(s/Z:&G9-I[-p9&\?87J9;*7OIPVQ=AMD/P<4?BRFFu_?XXK6%gKnV3oU,4hl
-3H'JMi2d-omap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/s4RP-Q6l=[-quSOGWrL]B1u^Z]K^;fY<@<`9M*slQ:O;Wg=h0BWMht5bsFoo
-8<&2Si7\Cps5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGs5jCET-sEr-rDtbIR1^'Cf"]t`^=k1\Nto,:eg*7SkMRmk2qOeZEZ]RfLAM1
-9U(+ji8t70s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOp6"^kY`XK82r?4!9UEIM5UXJp2%poG?Y13o``VH9+cS5u=WS?/eSXK7F\J?5i4
->5bN04KPVHXK5fcXGpG8XPg/a]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_H1="aYE`g=jmPGR;QhOJ$j,g=MBZpt?US5FKr!dVlnS`bit.`nK-?g"NfJU>">.
-ErF]!9\S2og=gkSg9PdNg>LZhir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ``$U"b;&uk2tCsIL4W.Q`5GLk2M_(puWHg6_W@=hK@!'d<!rOdH9RgjlX9rX6/QY
-Gl?b3;!-n:k2q6&k.H"kk2>A+li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOs7'4luW@th![MMb8sR2p%"8?/bm4SYu^H#H*B6CpgKX:J6pR89o:AZVqBGtt6<
-N`uC_$9YDk4KPVlFBjlsJZRe2#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_H4>'7m6fI];%3Y-)EO_Bjr>>M%T_9_d<GRZ(:g<68GFg(.o1_.;8sJD/\*R:F_"
-ZuZ-!$;B1-9\S3HPBF:PJ_K&9#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ``'V'8X*,KsKiT\@?@sbpSO]@,pD3;#'/WU6Jm2=O^gZjpuCNb\H:DM!!fQU1iHH
-^3KV=$;fmI;!-nkRsVosJ`bnQ#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOp6&m89pI&q'a=+[NT4KPVKWN<0`poF[FDfTe`SkB!`*E/6)?A_pHXJI+B0o)ij
->-+fIX?<Sc4KPVl6S+:LXP^)`]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_H1=&o__WS_Ag9DPZ"?9\S2rf@nqPpt>q@N0''!a^+o"*GN1?GHZ%ng<hEg5-*DE
-En]63g.^5S9\S3H<B.F<g>CTgir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ``$U&pJFhV<3e[FKO]f;!-n>io]B"puVdTPaIb=e7/F>*H0!\ICXX:k1hP16F>mh
-Gin.Yk"t4&;!-nk>!'NNk25;*li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOs7'2agP7sqD&Oc`\1X?<Sc5H1`c4SYujH#KHB6D7/NXJSsbXGC:]XK5+pOVUKh
-N`rNc4KLZHX?<Sc@#1G7BWS:qT7O*)X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_H4>'5"Y]=e49Y\@?Cjg.^5S:Y4=S9_d<SRZ,Ng<6Sk"g='iSg9#^5g=g!7\/&<&
-ZuXmS9\N1og.^5SHE>5pKA,%cb(8:-g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ``'V'5YG"?DZf'_SU?8k"t4&<9!'&;#'/cU6OA2=P%9Bk211'k-fkWk2p:T_A6PA
-^3Jf&;!(U:k"t4&J[O%AMrs08eUclDjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOs7'm`YO3^9]$:JY#aGoVR$*GqcO*)DptX9q*HX)^P.MGd5ILAn7q7&6oC*)DMh
-*)AjL:JWgK>Ye.$XJ7=1:I/3dX:8oqXQ6Ge]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_H4>'q8cG8l45+A7TQ#RNniB,`:2a,@nRcg'UP>fo]7fY@qHZWW(Tm<m]R*,@n&i
-,@j_0A7S$\FC\p)g<V`SA5[L&g(B*kg>prlir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ``'V'r,MY:/[email protected]@U*[._-B[;&-#1QujpFsRjdB65\Sc/!Zi9).>MJ;P-#1&,
--#-L?C2-6#HYR;Ck1_srC0,`Djq<]*k2bY/li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOp6s-X@nR]N'JRA-dVRA?^JT<%sZ!3#aq$(@9`X.ZPqSXH#HX9P>uXJM>QV>?Sb
-SuefWRAR'crL!e`XAhWbJZRq6#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_H1=s2#8n_qN/J_Tpl[_U-cKb1Zd2!7^l!$,aX6fur+'a25jpg'5aRg=!jTde^fc
-aP,(Z_UI5krPA]`g1sg<J_K2=#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ``$Us32&/cK<R!bh;.2bhM%!e`HeS!9!_9$-pcWjjrSVd`g,;jp'Duk2"8*h>5>#
-e)oN2bhhLCrQGDuk&F\^J`c%U#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(q5aR"r($gcfW5++VLbi/X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/q:Yghr*'0Mf\-A'dt-65g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGq;q[&r*TN^f]E4<hgsqMjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(q5aRkr1F%jJZQA_#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/q:Yhor6#)nJ_IWf#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGq;q\1r71l0J`aK)#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(rN$!2JZQ#U#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/rRq7&J_I9\#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGrT4*9J`a,t#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(s/Z:%?QJpC-ntk)>oAZe83B>'PT<`)MATg#4<^f-Ftt4?XK6%NKnU=VU*D?S
-10oI4i2d-omap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/s4RP,GU<.=-pImfFs+0)>YJ80]Hh7GY9&,A9IecMQ9Zp8g=h0#WMgkkbq2(P
-5B_V3i7\Cps5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGs5jCDIjb$R-pe*uHm6;E@8L7H`[5Ze\KHR`:b:bkSjP&Kk2qOCZEYL0fIoKd
-6[XIIi8t70s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOs7'<45YA?2f&4?PZoDcCC4JZPl.4SYuqGtMJA6DIGNXJ8dc:7A8b4fk`7?YcaE
-N`uC_$9YDk4KPVlLoQG?JZRe2#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_H4>'A$#RJ(`Pr9MA'sN,"#>UY=A'9_d<ZRU1<g<6f1"g<ONS@`7!R:>+?pG_b#,
-ZuZ-!$;B1-9\S3HXOsk&J_K&9#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ``'V'B<"fL?7RG:f'p5P]2OWXQJTQ;#'/jU18`1=P@WBk1Oe&B[5c%;W[&@Iu`[R
-^3KV=$;fmI;!-nk[H+uJJ`bnQ#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOs7'54DICj`<HXK6Q7X<E+q5H1`c4SYu^H#HNB6CpgKX:J6pX?<S/E3-$CL/X\F
-N`uC_#s>;j4KPVl<]H.kXP^)`]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_H4>'8+ojM4N?og=hh3g+&iN:Y4=S9_d<GRZ(gg<68GFg(.o1g.^4fNnW*+WbKQ.
-ZuZ-!#u'(,9\S3HD+D$cg>CTgir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ``'V'8to5Oeq2:k2r5]jt3Xr<9!'&;#'/WU6KH2=O^gZjpuCNk"t36Q0.(PZZ"@U
-^3KV=#uKdH;!-nkE_F3!k25;*li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOs7';[lT-@DnF4?RP^X?<Sc5H1`c4SYu^H#IhA6CpgKX<(<*XDN;YS#i2&4=>`^
-N`rNc>c^&hX?<Sc?suKbVh(r-X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_H4>'@BTL0V-pl9MCDtg.^5S:Y4=S9_d<GRZ*Mg<68GFg)at@g5;D0`7i9Z9JN?s
-ZuXmSFP9FBg.^5SH@&`$dt-62g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ``'V'AZS`18X-6:f*D;k"t4&<9!'&;#'/WU6M42=O^gZjrSH]k)lKQcfW\):c,<:
-^3Jf&HKJ&dk"t4&JV%.AhgsqJjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOs7'0rLr5^]Y^XK5EbX?<Sc5H1`c4SYujH#KcB6DRSNXIrUcXHH_!XK4P`X;3q"
-N`rNc4KLZHX?<Sc@#1nD>HFo@Ob'UpX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_H4>'2d<4;4ZF5g=gASg.^5S:Y4=S9_d<SRZ,rg<7#C"g<4<Sg:;3Tg=f7"g(mB9
-ZuXmS9\N1og.^5SHE>i+F5#?'\:NApg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ``'V'34#P<MeiVk2p^&k"t4&<9!'&;#'/cU6Oe2=PIfBk14S&k/2D#k2oM>jq^eU
-^3Jf&;!(U:k"t4&J[OXQHKO@M_L^k1jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOs7"d2#3=ZEM^4:GVpD]sRg,%7H5+ZtqaX9pj;X,KfTRS5h7R/X0.:Sk.H+ZtH@
-+ZqV14?Pj0D`g.$XJ.1#4>^TMTb29qXQ6Ge]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_H4>"h@B'EC\a^9FQ3pN%1L*.sfc?.SRDLg'U5.fs,#?`*c8C_>`.0A^T52.SQg8
-.SN2c9MA79N(cp)g<DK@9L=6_bSH:kg>prlir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ``'V"iF59GY@2u:^hm2PUrfG/V2nX/5X7\jpFXAjh#3gcXfp\bPpWFC>@sW/5WWK
-/5Seo:f(-RPYb2Ak1DX]:e$3%fGBp+k2bY/li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(afGM7@Y(W@X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/ak?c$I"C#3g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGalWV5K7W1Fjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(q5aQnr&atVfW5+AWI_/2X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/q:Yg\r(I+=f\-ACf7DZ9g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGq;qZnr(mCMf]E4Yj+6@Qjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOp6!dl_6rN$$QFQTY*B9Mhe"e(=>Q=ibNX8o$pM?&t6X9,#OR"qaI]'e2#LXYej
-eHa-In)qLUg-U;~>
-#$LBV\D!1KJ_H1=!hMT,rRq:NPNLR"K=UR,"iIOa^4TYPg&TFtY5l?/g&fF#_2$_Kir@lhL=5Yi
-g'>fPmcqOUfg1,~>
-#$LBV\^d1YJ``$U!iA8>rT4-cSEAr7MSo#I"jXX+aGOEgjoF*6\,aYBjoX)CbD53ali5YgLXYej
-eHa-In)qLUg-U;~>
-#$LBV\^c7gJZOp6s)e1?!'KAE!Jd9<X9P1q?<&h`4Q`^KQ6TU?=HW6W!fpGSLTC]kmap!Ee+*=c
-#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_H1=s-*B7!)2M.!NX<5g'5N5GAKV"9]k%4^FaPOE4GPo!jurNLY;sls5)Iaddm:h
-#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ``$Us-rrK!)Ve>!O^DJjp'1RIW@m>;!-mDaY.shG/En6!l&kcLZSg,s4PqXe+*=c
-#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOp6s)e1?!'L7^)Ke/)+f_W6:HWj&RO=,":7F-nX'Hp0XAp[1riA_64Ae/@Wb4Ft
-UT?nZXJ/as02t&PXJfVk4FX@s;aEO*XIW3NAgN_DHot)lX?ibcD0r@_@Q\"pD_bHXBWJ59TLc/c
-9.-3H+b#KR#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_H1=s-*B7!)3CG)O3ui.bECoA5&?D__JK>@`:_qflemQg2&RSrn9u.9P6rMfRce<
-cIu@Gg<FHf4DRWMg=:XG9VC*:Bi@^3g;df!JM4^jSP3J1g/?GSMOW>LI8"n6NB_DVK\>)5b?N]S
-?S]TZ.A2aU#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ``$Us-rrK!)W[W)P']$/`Z!@C/CPbc8<4\B[B:4jaAbqk&NArroQhB:i&kfjGHcZ
-g?)Yok1F_:5B'Gak2D"j:oWSXDHBZJk0e'BLbZs4VGLmNk#UF&P,.6uKM[0SPsT[kN903aemRY&
-A2MYt/?+]m#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOp6s)e4@!I\_^X;*k!XFI:M;OOV,G-"Y1NLGrSDlfg&ri?Z8NNB4&Ff^oTXCm*c
-NEWDGr2_k)PcR!KV1l"P4KO5tVQ;n\;O=J%9rrYYXIN7d6)U_\R&jbOXGL;c/!$c^BWS;.8?AnT
-=0/JcNiWGrmap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_H1=s-*E8!M>/Hg(d<8g7d3NBYiDbQ.g"RZGa2?N7u]Zrn7p)ZeF,rPhNl(fn-$R
-ZZFhor7X+a]@os4d\tmR9\QI<e(RLKB>E5Y@G73/g;RgS;Uj?4^tO49g9,\S2mqA6K\G/'>M@f@
-DVEf<NnO]ss5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ``$Us-ruL!N;%XjqU_Tk,RP&DTq72S`Xop]["<ePigh)roOc;^#nIGSE@sJjbg2&
-]m8a:r8osp`o^+[h6H,);!,&Yhr[bsD9D"(BBGtQk0S)&<oE%UbN=Jak-oj&3ksgXN999R@-6Ug
-FQV^^NogQ3s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOp6s)e4@!N/6_X::%L4CkLj(HafAC91Bori?7%5c[5Jri?H2NNB3TS?/fgX>g,@
-!^s+Pr2_,*XK4OcVdDPK.BJ55XK4Oa5-1iT9rqDO4?PNs5rq/`XK4,T49A0W4T;Di4KPWW8?Anm
-<KpFHNiWGrmap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_H1=s-*E8!Rt$Hg't5Z9RkaF*DB.!LY?OLrn7M+;V4ssrn7^#ZeF,@`nK.og.)'8
-!`n#Kr7WAhg=f6Se9FY\1tnpWg=f6Q:>4F?@G5Wb9M@k#;G'Z`g=e^h9EJST9`E`R9\S4D>M@f`
-CqOMqNnO]ss5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ``$Us-ruL!T7&Yjpegs:kn)h*`,[.Nok>oroO@C<odE>roOQ5^#nHgdH9TIk">VL
-!a=__r8o5#k2oM&i."R"2s.E!k2oM$;Wd,fBBF>(:f'^:<_cMuk2nr.:]b1i;#]Sb;!-ok@-6V4
-ElN(=NogQ3s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOp6s)e1?!'L7^%:uWB5H1YfNi\jnXAkG_X9+&>@K!8t>E,_cM-m?cAZU>pXK6!7
-E-SIcAZS"qX?<SS9WWFfXG(/cX?<OhN3#uQXGpGcXDOb!VlO'^XE\]cXC\IWJ#m:6XK8'cri?3\
-7TcPeX8tSCPH4u"map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_H1=s-*B7!)3CG%=m0d:Y46@[+`Zag2">!g&e0KHi;YgF0jTSXa/XSJD-ZNg=h)2
-NgSPSJD*]Ng.^5?@+pr)g8TMSg.^1BZ.`r$g9YkSg5=6TeCeuMg6[iRg47m-U"Y-og=j_Srn7I[
-=E)^fg&Y*SPM-6#s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ``$Us-rrK!)W[W%>X*.<8utc^?3t5k&JB=joVbeK)Oh%H+iA&[t!Q&LZYRqk2qH]
-QD!C&LZVFqk"t3fA`fUEk-B[&k"t/e]B4'Fk.Q'&k)nG"i8o<uk+J%&k(i(NWof2?k2t6&roO<q
-?$>''joJMmPNE)8s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOp6s)e1?!'L7^%RrQCJZPrR>!,BVRQ<NVrN$#\M#OJI<B<3bXK7CD4G0`:IQT`U
-XK-;&4J?CKKnVR$XEcpJ9Qs&iULuWBX'@c89rtF]4?RtM3af%i@]ZYU4?T%54)$g.XK7"93_97O
-!H*/]X9+1mLQeeD]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_H1=s-*B7!)3CG%TlCuUtXPUE_K`j_b*RkrRq9DXT$pFCe@?cg=il,9W$OtTM/%i
-g=_K[9[&,\WMiCAg6kWq@@(4kc[n`gflTo[@G9GK9MCt^8pT.DI+m;@9ME=W98-'7g=iAs8mMAL
-!K3?Eg&e>oXHV?Bir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ``$Us-rrK!)W[W%UDn-Xled-GYhi0c;%01rT4,U[f5D\E_]E$k2s?R:p9$DWDHF/
-k2hn*:tLS!ZE[,^k+Y\=AtNO-g5/P1ja0h%BBJ?s:f+"$:4VKgKBD<h:f,Bu:Q/,Ok2rgC:1=.a
-!L'5VjoVq1[?K_Wli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOp6!d,u(rN$$DFMFm[Wi)b"NUNqMWB-sPX95N$3i`1\!C;I'X9Q9(f@>Z*nb^iA
-a+NjD_!p&EJ,~>
-#$LBV\D!1KJ_H1=!gPWorRq:<PJ>fSf[SDnZgZTLf1OQfg&p$X9%X'r!E5t\g'6R:hV*_4o)%,G
-bCT*H^@9fAJ,~>
-#$LBV\^d1YJ``$U!hD<,rT4-QSA41hjP\sC^$k(bj%eP-joa`':?2?9!EZUjjp(/Og!tl,nb^iA
-a+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(`2j&p5s^Y$X93K/6)FCY".MSBI#Y33]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/`7b<m;Gt$mg&mF7;UP<o"3"/9SW2>-ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OG`9%0-<`[**jo^uO<o*T6"41(LV2aUAli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(n>lVci2csZVXCMdWM"gDo;i/-map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/nCdlhi7\4addGfif#[email protected])Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGnE'`*i8t($hX9M,iRWSBoB$8Cs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(nZ2bU<;rs"UPA`K");A1PO5FPPZ..S#+f@JJr:SGk,\YuA7T<DX9,A3CA4e0
-IBT^V]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/n_+#UC]<#gc`6rt",DB;]'\2P]P@#k#0D@ZV6D/nk1TojIt*%@g&flULA0C%
-T<HrQir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGn`BkkEW5)$g9^b?"-/,S`9l[fa)LV3#1SBtY.>n:k2lc(L5(NUjoXOsNVDQ8
-Vm#4eli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(nZ2b3G5eQDQVma`)Ie)I/T@emUmRjWXIQ&aR&ZgHV59QPXJ:u=rN&\]R&-X\
-X-f?WXJ/gMEuCW:TpVIRXK%YTU9(&ZTU;RWXJM;WSY<-dS!^4W?rVf1>-+g*R%(1UR&-1AXK8IU
-0s%IOR%gOHSZJnTYH.r>map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/n_+#*QN#S=^M!Q")LS*R3KDhId)!r[g;V@e_:ZrIdF#eRg<[@:rRsr__9pZa
-ftkS[g<OZ8Os%nFbe_HUg=O0Wc.^C^bJDT[g<ma[a3<8k`PL0[H>BFSEn]7!_8Y-Y_9p*?g=k2W
-52+`9_9UTIa4f6@YM'3?s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGn`Bk>T)RjQb&..?)M=lk4I,'kgrn=3k0Vf>bN.6th;-9*k1[berT6eubMD":
-jibs3k1Op_RNg<`f?;_,k2XY.g#gr8f#uk2k1n/2db*^EccbA2JT7rsGin/KbL#D0bMC@jk2ta0
-6K[F`bLtgsdcT[gYN?&Ts4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(nZ2b3G5eQDQVma`)GH[&OGp9?=&;ndXAW54:iLLrN/S`uXFir?riA;4;,BJt
-XE.38J?2h6XK6TA5upf]Q)nk":fa68+&u->WiB/t<?HOgKMkWbXEnccVa7DcD,=,aR3PO);iq![
-$TtMlJ/j*,,@IUS4Kkgj]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/n_+#*QN#S=^M!Q")IUS=\$=Z<De3b'g1YMUAWDs!ZEYX<g87qdrn9Q/An=f#
-g6-#[U=sOpg=hk@;Jfu\^"SEVASoSZ-Z!@4f[t+RCaY_+Ve9S"g7+#Sdo+oRMIgJ#_C]A2C:=,q
-$V]:.UEcML/:-%(9X!.Sir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGn`Bk>T)RjQb&..?)J.=Y_7SjhF_c$Dk&#?sCR1G9]XoJ[k-/*0roQDDChm";
-k*g(%X6+Q@k2r8k<c`%ra6&S$CNJ(%.<93HjPtAuE[ddGY\e0?k+e.&hcJt&P&"p?bV*aIE5;J8
-$W-!JX<jmj07i9J:p9!cli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(nZ2aeRJs8gW13df'q.KP<MHQiI?9%KXH"BYXI$"WUS:6WX:^[qXK7CfWN9f\
-H<ZJj9TN8:rN%_>P,rMIXH\g.8Wp/3T<(8U:me>V1p!!7N0%FgH<cP7R&k::OGcVr9STXC8#r_m
-4T;De8Y;kUT<,,\YH.r>map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/n_+"S_Z&6ie\qI@'uO$FCsLaET!tOsg9`91g:u?DcH]Pkg(Cu4g=iiVf@ktL
-Rrc'F@CC*`rRru(\_;q1g:Xo(>e&KSakBSAB#*-B6JB.YZ+#%BRru2[^tOis\$0&P@B/&,=kVN_
-9`E`N?-1Q+b1bRaYM'3?s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGn`Bjdc2Qi+iQqMc(!]uZEnTShVnoN?k.W=Rk/uglg"B[1jq5XQk2s=*j5u>t
-UNs\hB#&Q*rT5h8_rd,Xk/P6R@Dh4seE0ciCWkki7cqg$]>9#dUO0h$bN>.D_7F!tB!g^R?KL>3
-;#]S^@as7Ke`Q#:YN?&Ts4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(nZ2b3G583DH_d`fE3)%u<s)p5N`uC_"*\a'GlFcJPZ+ZbKk((_!H(+#<s"jm
-OSu6m6)Uf$H`Us`="KN94KPVKW'('\"$EZI/H/]VML%6`=KJT66iL-nTM1iVX?EVcX??K`"-6T?
-@B6I6]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/n_+#*QMK5=SC#uWNnR#&DZbFAZuZ-!".,(.RJtnD]P?0SWI=a!!K9eQDZ[jq
-\,G"m;UjEXS(`U8D`G8\9\S2seP,tr"&.FY3<!h%Y+%q"E8'#p<W6nCb@/BDg.p;Sg._M""1<-L
-H`Pj)ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGn`Bk>T)%LQUtb%*Q0(a=FT[<Z^3KV=".tpFU&O0Xa)L2'Z@r2=!L-O^FTTm3
-_>WL.<oE,'Uum\[FZ[M';!-n?iDBO9"&S-s48s@.\>)Z=G37q@>5iXNen3:kk#1:&k"u'>"2B&f
-JZIo;li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(nZ2b3G583L9M1.VI&rZ<M2>H<G=[kqXAu&`7&?udST[>\XJTEYM/e9F>)A)J
-Q(V69M-QK*OK2GnXA=\$*da;/SY@p'R95;[+fqVTIYi5s@oo_!=e_WnM2>]39M((]FKDO"0SuU,
-W+J#_poFKV?ad$?]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/n_+#*QMK5E?s]sjS_Cl"XfZ^!QWprug/ZL"<mfXT`g0T4g=(DGXcKL.EilHq
-]utAsX`_QJ\(PYJg17=X-C_k7aNZu[_JlW2.b`F*T<4EPIW*oUER)gKXfZuj@9p!tPM4Zk4KZua
-eU^67pt>a>H+)E2ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGn`Bk>T)%LYARi30VWQ$G\$p\GT4#M7k#L2>>MSB'd@OLVk21co\!OGTGdk/=
-a4>FC[sQCh_<#cmk%_B(.&>*Qe(I.,c$$RT/`u#LW4/@tKluM$GM1Vm\$pt:An&6;S*&e@5e#P2
-i.t"XpuVTNJ@=SEli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(nZ2b3G583AJWX;_ri??b?XK;(CgV/[X9!Tmri?3Z?XI[LX<hFbGH@mE?XJAc
-XI`d+N0dmrX']D=UgInlDLu5SQ="m<O'dB!ri?lM?ZN5Y?`U8hQ`Qrh?\YXULgP>,XJu2+"IlKo
-HYrPZ!eVMH[]B\Emap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/n_+#*QMK5:UUYQ7rn7UaG^.3]M0P'Zg&[Y3rn7IXG^,,Fg*M8oQeL0DG^-%<
-g;nM`Z+kONfQ_l!d!1>FMkt[(^3H%![WnK>rn8-CG`^X.GhLfY^Y6tXGcKJ+XE^#ag=H7J"N9$J
-S;R*q!i@9A[b:rFs5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGn`Bk>T)%LNXMTIYroOI"It,i-Oai\qjoM3OroO<nIt*X\js>e4TB>:oIt+T_
-k0ng0]?5VrjF;mGgOG6iPHKDIaa^#H^ji@\roOuVJ!fAPJ*#h-b3%E-J$e?M[XXn2k2QAi"OH5m
-UltN8!j<uU[cRe[s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(nZ2bg?Fd-?X+>h4L@;2GUH*IdpoFOR5'cq)!Ha%'X9Q9(f@>Z*nb^iAa+NjD
-_!p&EJ,~>
-#$LBV\D!1KJ_G\/n_+#mGIcE1fqbEnWpeXDcUjA>pt>eP:RV"3!L'Iig'6R:hV*_4o)%,GbCT*H
-^@9fAJ,~>
-#$LBV\^d1YJ`_OGn`Bl/IC\JCjfPY>[.!,Zg.e*`puVXe;kj'L!LpC&jp(/Og!tl,nb^iAa+NjD
-_!p&EJ,~>
-#$LBV\^c7gJZOF(VlU!#B4lkbX95&,B9;ni!cr!sWiQE9map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/VqM7*JqBogg&oEJK"(O/!g8/#WnI[:s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGVre*BM2AJ)joa(hM8AuL!h+t:WoaNOs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(g8k@=HC"N2!LfRgX8n1VX9,)AVlZs(]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/g=cV=R_JaS!Q<$fg&SATg&fKee?%@.ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGg?&ISUWNJs!RB-&joE!jjoX21i2l&Fli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(g8k?R@$1Dh!Df-7X9!s5jK&>Dr2]sl0V,;H#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/g=cUAHFWt.!nh,%f%L/%ZfKg?9`3TGaZ[YFg'6R:hV*_4o)%,GbCT*H^@9fA
-J,~>
-#$LBV\^d1YJ`_OGg?&HSJAV<J!p+.@f&d":^#\;U;#KGWe3VK`jp(/Og!tl,nb^iAa+NjD_!p&E
-J,~>
-#$LBV\^c7gJZOF(g8k<QQMmm&X$*PcJW,&<I$(M3GB0^bXFkP\EhKL\Ee"(i#ao^gL9.7mEf^'u
-"KP'kEh<93%sr>oXIF72KSZRIQu\R7V#.4pWcE7]X9>8<IS665X9Q9(f@>Z*nb^iAa+NjD_!p&E
-J,~>
-#$LBV\D!1KJ_G\/g=cR@^AZb'fhL2SUTpK!S[[>,QBBhRg8:"JOiuIKOeVj/#f;_)WnPm`OgY&>
-"P?plOidUV&"A^0g;T3-W3"O3^lcEpd/2Muf9)?tg'#]`TO5^?g'6R:hV*_4o)%,GbCT*H^@9fA
-J,~>
-#$LBV\^d1YJ`_OGg?&ERaSk6=j\b1&XLkIGV8DBWT:"[$k-(/qR+CDrR&^/J#gJaEZf^,3R(rL[
-"QWs.R+2,t&#>TLk0TLWZ*rSXbF$J?g\^+7j-ZD:jojA)WFaJYjp(/Og!tl,nb^iAa+NjD_!p&E
-J,~>
-#$LBV\^c7gJZOF(g8k<QQMmm3W'IGcGoBg+='M_>EHY]hJ7Wml25,/0G%Z0'W)7_H*3*7eG$11/
-X;@p0<Hb"9X)W!">cO;EJ7DuD6o@1i3gBNC$EA8$XK8C(G%hkcXK2W;map!Ee+*=c#KMJckJ6T@
-6@]~>
-#$LBV\D!1KJ_G\/g=cR@^AZb4e5=rRR3?PrDKFHaOHk+CU4AM16d1dPQ%PR[eRt.o,M.%&Q#XS9
-g)&CJCR*&rfoM&VFk=VkUOINl<^T\U8\=lR$J1P(g=k.tQ%gI%XP*m<s5)Iaddm:h#Kq\dlFuc@
-6%A~>
-#$LBV\^d1YJ`_OGg?&ERaSk6Ji)]"&Td+e0FF*#-R%AffX,!9N7b=/mSr0?+iGG0;-0'?DSp/?S
-jqm)gELt_Cjd2.%HfNL6XG)27>=VXf9ud(m$KI^@k2tZISrFuBXQB`Qs4PqXe+*=c#KMJckJ6T@
-6@]~>
-#$LBV\^c7gJZOF(g8k<QQMmm/AqI+cS4o/GNE_*"C2-=Z5-1iT9rtF=C/STD6)UfcB4cbpX8kBZ
-X9!-bri?Bf2JQu'Aun1,ri?95Kj9R9PkhBd4KPVgNNB3SSZJms]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/g=cR@^AZb0Ju%,S`aHGoZ?*!>LPK,p:>4F?@G9G"LM2.j;UjFSJq9ctg&OhC
-g&[&$rn7Xf7#-P0J_EnLrn7O)W-#=\]D:.d9\S3AZeF,?`iRkuir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGg?&ERaSk6FM65q&d:L@;]R$k]NfIS7;Wd,fBBJ?HNbsL4<oE-&M28>6joA6S
-joLUAroOL'8</^GLuqWjroOB<Z$X*%`qea&;!-nc^#nHgdB)I7li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(g8k<QQMmm3X$*PcS4o/GNE_3.I!p:+6)^lJ9rr5PI9:$]8Y<)cUMG:ZXJJ;\
-X:8unXJ;k\5C7g)PcR'Kri?95Kj9R9PkhBh4KPVmLTIIESZJofUTgg(]'e2#LXYejeHa-In)qLU
-g-U;~>
-#$LBV\D!1KJ_G\/g=cR@^AZb4fhL2S`aHGoZ?*-NStDIc;q9U4@G6[$T5T24>fk^Rc\S1Hg<rss
-g'rn0g<\Kb:n=5J]@p'4rn7O)W-#=\]D:.h9\S3IX4l-,`nK.mc`l+-ir@lhL=5Yig'>fPmcqOU
-fg1,~>
-#$LBV\^d1YJ`_OGg?&ERaSk6Jj\b1&d:L@;]R%"mVPp62=Q/D\BBGGFW-*gV@FaN&g5i/ok1s2:
-jpdHMk1\t:<2HOg`TC+ZroOB<Z$X*%`qea*;!-nl[-$@RdH9TFg9B]Dli5YgLXYejeHa-In)qLU
-g-U;~>
-#$LBV\^c7gJZOF(g8k<QQMmm3X$*PcCb18oJMa-C@:NN"M-FI\9rr\K@ll]KXAi\>=0,qB@of/s
-X;6Rr@p5t8H=(/fKU3rmQ)plD<Erd.AG`G<WFI,^S?-(->p+!cX?8VLX9Q9(f@>Z*nb^iAa+NjD
-_!p&EJ,~>
-#$LBV\D!1KJ_G\/g=cR@^AZb4fhL2SM)VCsUI*:iH[Tt>X`Str@G75rI7m/\g1u+bDVBSgI;R%$
-g(p`2I<+&qRs9@(VnXg1]\:h*CNO]7J,@q0f6o2u`S,TcFt&=&g.Y2Eg'6R:hV*_4o)%,GbCT*H
-^@9fAJ,~>
-#$LBV\^d1YJ`_OGg?&ERaSk6Jj\b1&OZKd5X@Cp4JV8<Z[sE^9BBH%?KMP>"k&?!,FQS=2KQGT<
-jqb@OKR)_BUORrEYf\YOa6)8QEI3(PLAU*Cie/q;d,oh2I4LHBk"nmYjp(/Og!tl,nb^iAa+NjD
-_!p&EJ,~>
-#$LBV\^c7gJZOF(g8k?RKVSOJ-*'D1XH/(,Kq=!rXGDRmXK7M;L01OYMhRaVWN;bHKqYTHKnYoh
-X9+K;U].>*MhR4nTnS2nXJpo2RZ!PmqlBdure1]SXJLW1QB/,#)j7G,#.j6SeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\D!1KJ_G\/[email protected];Hg9mp%WQD-hg9%?ag=j$8WGpSFZ)PjEf%S9GWQa)HWN!`/
-g&e^^cMlN.Yc5%abc.Sag=E7,_m.%aqq;&&ri$7Ng<ut,^9u[m,J(,5#3,[>g4n&Hqq;:uJaVg;
-nC^*X~>
-#$LBV\^d1YJ`_OGg?&HSYhK*=-08:dk.e4OZIH2<k-hS4k2sLcZZbKn]!Bhkio\dsZIe6tZEh^L
-joWB)gA^4F]!B*5f<V^4k2N\VcFV34qrRn>riumbk2!>VahQuB,fHqL#4)<BeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\^c7gJZOF(g8k@';2+tM!K<05X94Mf>?pTt!.auO!0ZZL!1Wmj!-e+;!K`8DX9Q9(f@>Z*
-nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/g=cV"AuP[^!O9-+g&na)FER$*!2BC5!4hFL!6+kX!1*<3!OoA<g'6R:hV*_4
-o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGg?&I6CpEs$!P?2?jo`AEH@5/C!3?$D!5n-b!7:Xi!2&rH!PuCOjp(/Og!tl,
-nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(`2j'7NK'b%X8nafN<#^=X8o-qN<#<=X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/`7b=;ZEhjFg&T(hZ2i/8g&TS!Z2h\6g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OG`9%0R]Y*%fjoEa*]E$UMjoF68]E$*Jjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(]W;3`<)f`GXR`Fs]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/]\3IZC221Jg@Er%ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OG]]K<oE,aZbk47X=li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(]rV?u>*P8OqlBjl4>h\kqlC"5map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/^"NUuF1f0<qq;+p9LFBbqq;86s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OG^#fI6H,dkbqrRt2:e-*!qrS+Ks4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(^8qWh4t00YXK52kDuHa;4T;D^Q2XG\WiW:79U1F8#.j6SeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\D!1KJ_G\/^=imb:,H@Vg=g(FNW%Q29`E`G^&DCCf@nr1@(hBM#3,[>g4n&Hqq;:uJaVg;
-nC^*X~>
-#$LBV\^d1YJ`_OG^?,a";Dr-kk2pAiPl9_E;#]SWa8TZSj6#K]B#oej#4)<BeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\^c7gJZOF(^8q[;IoMr7XCdljBn-,`!'L7^$:C>R<N3$3JXfo.M6$ommap!Ee+*=c#KMJc
-kJ6T@6@]~>
-#$LBV\D!1KJ_G\/^=iq@Tk_Tpg4@,\Kq\M"!)3CG$<5$bCtI?lUW.>eM:r0ns5)Iaddm:h#Kq\d
-lFuc@6%A~>
-#$LBV\^d1YJ`_OG^?,dWWGp5?k(q:/N2lm>!)W[W$<ba&EoQ2;XO)74M<5$.s4PqXe+*=c#KMJc
-kJ6T@6@]~>
-#$LBV\^c7gJZOF(]rV6n>lC`+7mnkSri?)^ri?H>6pud2W#7uk4\pp9#.j6SeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\D!1KJ_G\/^"NLlFoC"r>$!YPrn7?Grn7^2=')EUeK@pp9k9+7#3,[>g4n&Hqq;:uJaVg;
-nC^*X~>
-#$LBV\^d1YJ`_OG^#f@-Hi<(/?X#ReroO2WroOQE>?eGri?DK1;/1sM#4)<BeVDWDqpbqlKCA!=
-nCg3Z~>
-#$LBV\^c7gJZOF(]rV6n>lLf-7\?GGHiC)H4T;DlLnph5WMrLTUn3OHXFQRqX9Q9(f@>Z*nb^iA
-a+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/^"NLlFoL(t=j##nS,V+A9`E`UXj><lf%+0@ccEBFg7l9?g'6R:hV*_4o)%,G
-bCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OG^#[email protected]?.IY9V#KKV;#]Se[bKP=iSn@fgXEdsk,ZO^jp(/Og!tl,nb^iA
-a+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(^8rH"0d0W"XG/o&7l%0=4V^,LX<B_i?)t&l90GV"XK3:GNN<>qmap!Ee+*=c
-#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/^=j]p5:LL(g8[qD>!Ufb9cHgFg+#fkFkGE]?VOM(g=dZoNS4Trs5)Iaddm:h
-#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OG^?-Q/67d6@k-Iua?:3l+;&iHZjt0G-I,sG2A5QL@k2mk:NTLH2s4PqXe+*=c
-#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(]r_46riH.#"0AQ)XT#:#XT#:!XT#:#X8u?nN3!5pmap!Ee+*=c#KMJckJ6T@
-6@]~>
-#$LBV\D!1KJ_G\/^=rP=rn@D*"5;G^gA]e*gA]e(gA]e*g&Z%qN7nKqs5)Iaddm:h#Kq\dlFuc@
-6%A~>
-#$LBV\^d1YJ`_OG^?5CUroX7B"6S_-k5OKBk5OK@k5OKBjoTU5jc/C,li5YgLXYejeHa-In)qLU
-g-U;~>
-#$LBV\^c7gJZOF(TWA0VUl;AZ]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/T\9FVd#?Z_ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGT]Q9lgl1A"li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(]rV:"2-0^X!i)ilmAp>bWr9"#UTC6iX9)E[Q2[ic?`*h(!iS4DUoXd3map!E
-e+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/^"NP#6Z)hV!m]NFmFhTgfDXD)cJ$SCg&c(X]`-UcH.2cH!nBt;UtQ%4s5)Ia
-ddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OG^#fC97s"[l!nl_imH+H)j8J*Ag?.)fjoTQna8Y3%J):1e!oZsPUuhmIs4PqX
-e+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(]rV6n>lC`*4K1R4X8u=brN$&aW]^6]!F1T_X9!lbr2]l\UoXd3map!Ee+*=c
-#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/^"NLlFoC"q9\*&-g&Z$$rRq<Kf1c.s!HbXHg&[t$r7V-EUtQ%4s5)Iaddm:h
-#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OG^#f@-Hi<(.:uYIAjoKM@rT4/[j&#^:!IMHXjoMQ@r8muUUuhmIs4PqXe+*=c
-#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(]rV6n>lC`G4K1QHXArbi4H-@o4?RbfX*$NeK<1L_1H_>3X?NXHrN$$)N;fmZ
-JS4n^!'I'Y#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/^"NLlFoC#99\*%og1u,C9X<BL9MC](fp#0(VV8s85toJUg/$<orRq9oZMrPY
-UP&Ku!)03B#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OG^#f@-Hi<(K:uYI:k&H'e:qYqo:f*\Djd].DYNF.Z6r;Ltk#:;:rT4--]Dgpn
-XGZr<!)TKR#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(]rV6n>lC`@EN4)]XI:SHXDrc(XK6JcF`XXcBRm0aPPqQaF/s<ZX8uRbri?0d
-=/c)!!'I'Y#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/^"NLlFoC#2OP#]Lg;>aog5r%^g=h^SP`jbSKVI1:])C=aOk>cog&Z<$rn7Fe
-DUn^>!)03B#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OG^#f@-Hi<(DQfORsk0>o;k*N-,k2r,&S=8U&MlYu\`;Sg"RH0_5joKh@roO:'
-FQ!,[!)TKR#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(]rV6n>kkB)RR!aOXA>8`XT(E^X9=qeXAtJXX8uRbri?0W@B0:-!'I'Y#.j6S
-eVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/^"NLlFnjYp_c"q:g18)"gAakGg'#9'g2+@og&Z<$rn7FUHeA;N!)03B#3,[>
-g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OG^#f@-Hhc_-c;rfak%W*>k5S9WjoinCk&SE6joKh@roO9jK&lmm!)TKR#4)<B
-eVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(]rV6n>kkB$RSNj`"+P$dXSm8@X9N?fXAtIcEql^:>`AZ`!J+n]X8kB]X9!c^
-WiQE9map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/^"NLlFnjYk_di]""JLP'g62H!s4R[1U=sFpg5u*`!HbXHg&[t$r7V-ErRq:E
[email protected]@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OG^#f@-Hhc_(c=m4>&?:]Ok*hg0S*&jlWoe??k*Yr+!IMHXjoMQ@r8muUrT4-Z
-LoTSAli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(]rV6n>kkB%<A7/HX:KnF4ER[*F?D[<XK8*e4HfK@!F1T_X9!lbr2]l\ri?0u
-5s;6L#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/^"NLlFnjYlCHQ&)g(1#R9U"/_P>"ZIg=jbV9Y'rP!HbXHg&[t$r7V-Ern7G%
-;GF1F#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OG^#f@-Hhc_)EBn19jq"Uk:n6Y/Rnuqbk2t9):rE(j!IMHXjoMQ@r8muUroO:=
-=&Q'\#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(]rV9o-t1l3!b!L9ri?-(NrH*]W(S?6X9+G<U8k:!]'e2#LXYejeHa-In)qLU
-g-U;~>
-#$LBV\D!1KJ_G\/^"NOm1OIm1!dc`/rn7Bn[/Sb\emBs,g&eZIc)TJ%ir@lhL=5Yig'>fPmcqOU
-fg1,~>
-#$LBV\^d1YJ`_OG^#fC.2M0]G!eN;AroO6+^Ad6riFFP>joW:bfrF0=li5YgLXYejeHa-In)qLU
-g-U;~>
-#$LBV\^c7gJZOF(]rV:7SY4`=!hc*`ri?*orN$($SY#h^!NDopX9Q9(f@>Z*nb^iAa+NjD_!p&E
-J,~>
-#$LBV\D!1KJ_G\/^"NP=a335k!mAX8rn7@trRq>+a3">7!S>_ug'6R:hV*_4o)%,GbCT*H^@9fA
-J,~>
-#$LBV\^d1YJ`_OG^#fCUdb!79!nYl[roO46rT41Cda\9Y!TVt7jp(/Og!tl,nb^iAa+NjD_!p&E
-J,~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(frP3oHfhC1<13<Y"c[bpMI/g7X8n^gGQ<crX8o0tGQ<<(X9Q9(f@>Z*nb^iA
-a+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/g"HIgSEAN+C;TPq"gaT4YBX.2g&T%iQiOMcg&TY%QiNnjg'6R:hV*_4o)%,G
-bCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGg#`=%V<6n@E6Rn8"hgSQ\:7cGjoE^+TE)^ujoF?=TE)(&jp(/Og!tl,nb^iA
-a+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(frP09jfAKAV=UbmO]ud#3iG=+X9Ft=E,]!EorJ=p5?Ml;GIX^Y]'e2#LXYej
-eHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/g"HF"jk9a?dIZ&r\9![@8_$]#g',8INfJ.kp"BSu:iMGIQFPWQir@lhL=5Yi
-g'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGg#`92jlQTUh=Kb5_KhG^:#T+7jorpbQBld7p#ZG8<Ha[cT=F"fli5YgLXYej
-eHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(frP09ri@#I4?OO`XHH(9EibHCN_iE9-S_]#)jRL"*16`,$Xl.n/$,UM4BA5Y
-4T;EUA#LkM4DLsm<]iKiX>*4.5)65'83BinS?-Ee9:)_BXK5lcXJ/]W=f8?24?OO`XC6mcN`r&Q
-4?S.qKGp(H;ii)#**4&NLH[gIHI&Ys]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/g"HF"rn89=9M?V`g:1<[OkRAhZt3[\0g=<),/)]?,JjB5$[YQX2VQSu9Pr)/
-9`Ea>Iap;_9S_?ID+mWlg-/\7:93*[>>/f[`nH,?@)(Dhg=gqRg<FG-ERWWi9M?V`g3]mSZuX9&
-9MD58W$8l[BsoC(,]4aHX%l>CRa9[lir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGg#`92roP,P:f&D!k/1P&RHDF3^2%?&1dU8A,ff%\--Q;M$\D2i3Tf1A:ik@Q
-;#]TNK]+n$:la\kF&5]-k!EEP;RGT)?r1ekdH6BaA]a(2k2q<&k1F]NGMhP9:f&@uk(9u&^3S4G
-:f+7UYp77tDnmf@-?LH]Zr9dWUX/',li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(g8k<pG5eQX5GY*2XJ&FXUi(:U8Oo/<RW3PQQVma`&5\aqXC6mcR51jFLnoo.
-X??H_9;jG5X?<S[NhiI4XEmR@Va7(TTWE$5XD)mSPtA#=UmtJYXAk+RLKLWBUnigJXC6[UM-cm<
-Ung,SX>X%MQ(_;t;0>I&7\?K@S^4AA]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/g=cRhQN#SQ:XIIig<=*Ed#4(@?!G.a`/g5<^M!Q"&7r]3g3]mS_EZamXO+.d
-g._J!9@Z#Cg.^5I[*[/mg7)O(do+M(bM%kmg4ks@]j9;bd)BkFg1mk=X)Qcgd*SlJg3]UAX`qsu
-d*PG>g-obu^!(GRAsHZD=j#+(a3WHDir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGg?&F'T)Rje<8?9:k1==lgln5i@UI=*cBk0ca_h%>&8TJOk(9u&bsUW9[bSE5
-k"u$=9Ar"]k"t3p^>.L>k+cPMhcJNJf&i0>k)H%ha(".,gsC,nk&@oe[!(S2gt]="k(9\i[slrG
-gtY`gk"0OAa4GKuCn5%b?IdiNda.%[li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(frP09ri?<_6ptIbS0%Yt"+.+@TDbhm4KL[DX9DFfXK4^crN#uRr^6fiX??H_
-)5og%X?<SX<^]>1XEnccVa6qHXK7LcX@teV6jKbP6q;s4X=F3;'ORr#6ptFaXC3tS<ihij6ps#9
-X??H_$<WBeQV!gN7mp4Ac`@>^map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/g"HF"rn7R]<`XP#`[:[c".\(Nao0op9\N2=g')'(g=fHSrRq68r`0)=g._J!
-):_U<g.^5FD,s\$g7+#Sdo+=ng=iuRg0mbU<X7;J<a)KVg,8k1'R8?;<`XP#g3Z1fD;*$F<`V`E
-g._J!$?3Fc^g5(9>#o7Oce8T_s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGg#`92roOEs>?c[@d4"uu"/P'geG\M2;!(UQjooPDk2o_&rT4)Gr`]GIk"u$=
-)<"TXk"t3mF'Dj8k+e.&hcJ?:k2sL'k%7Nj>6j7_>@+VtjuE?E'S#8X>?cX?k(6*-F6:ni>?ab_
-k"u$=$?j4$b$rl_?X%?jcfPGts4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(frP09ri?T/SXi'JW+(RRMg)-fOJ`#Y!f/CGriB\'8W'CHOBnEJ?EAcmSXj2j
-FEO.FA"G`[VDb67=.NtUVJp(ISNEWWL7L_7XHQkZSR/0OU8VRYXF+oVSRS["SXi'JX&s_EXK7:e
-SRF=PV`(*EXK#*N;2n/4?(%6uI]TVl5LZ\<]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/g"HF"rn7it`l:s2eU4L=Ya<p@\'t?1!j"A@rn:r+>d)T0[s#d2GhT$I`l<>Y
-PEa),IE5%2dRDKoDT7;gdZ/h2a%Od-WlA(Xg:MFG`d#p#cII?Gg7=/A`dHKU`l:s2fPm>,g=i]T
-`d9u"dm_:,g=Kr9B!YdUG/D7RT\A+^:t+,&ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGg#`92roO]0dEu%XiIeSd\t@qa_;>1R!k(1UroReB@Cb4V_0jYXIcdhldF!O-
-S".mRK[W]Sh+?A?FO>t.hNilXdSJYO[*`*$k/DVnd=0qDg#7Unk,+?id=UM#dEu%XjE@?Rk2s1(
-d=OdDhau5Sk2U9`CqX;uI*ButWTN?2<7Bt6li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(frP09ri?2t91t?FX9W-+?*'>b98EMJ!iJ\UriAXp91so=XGokGOK>O691thW
-XE.$-WbY7iKM-QkHV8lhKi(LDC.j_k@S;/PXK7XZ98\X#ENH6YXK6_@9;ARb91t>IUe=@,ri?u[
-98?<$MG$U+XIi-kH!tf,E(`iAXK83T9%0jG]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/g"HF"rn7Hb?XL5?g';n1G1sZ;?`X1[!n1Mgrn9na?XK_bg9Y-n\(]Q1?XLk-
-g6,fMf8!_CVdGhFS6r%-W+TJiL0qIEHs`Obg=j/G?`pV?O4r<Fg=i$'?dIG;?XL4pcX1%Jrn86S
-?`R_AY?tYKg<!]FR<t0LNaH.Pg=jnA?IRU4ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGg#`92roO;tAS&XUjp-EJI-/O^A[VO"!oIS/roQasAS&+.k.P>;_<0m\AS'<P
-k*fjmj,[cgY[sKiV.H`KZ#""4Nb-,jJn:p)k2sWoA[o<_QKI=mk2rFMA_Q9^AS&X=gLXrkroP)h
-A[H3`\7K6jk1!siTn8ejQ=XWkk2tGhA(0QEli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(frY4#^T7R4Q'GL@bH(c98Ysn;#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/g"QIr^Y/h9]tJC&bM!$<?.%-T#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGg#i=2^ZG[Pa2`DLbN8lS@bfGp#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(Q)k(B;cB3SX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/Q.c>?BkbPSg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGQ0&1UDf=!jjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(_5mX(i2csVT'iZ\U5ktL#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/_:en*i7\4[aR7a_c*a;"#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OG_<(a@i8t'se*c?!fY4*B#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(_Q3co@/d5.RtCU?"&r3WP3o=OM-fbS"dMr$Ef_L,XSu&s>4\fqB`:j/T'`TZ
-EU'V0]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/_V,$lHN)V!`23Fd");PS\aA)OY'BNk"heQ*OL?_&g&Th*B)luDg&Qg*B)p$?
-g&R3!g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OG_WCm,Jc=d4c`[6/")r1i_sQRe\:4#2"itPCR(t?:joFNBD#ehPjoC>=D#i&P
-joCb5jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(_Q3cNJc;_ON*Q@`)GZK]-@;hqRtd?4XGWOAL9$JlTq$k(XI4X%rN%o3LRt6A
-VhU/3XI!+VHki\ESVEH3XJU`,S#hm;PD5a3XIFs3N1-iLM2&(4@;;*c=KJU#L5u87*f#K)Tra5@
-QBk%BUP=MpXK.)LS;OD-R>dVmS?/eSlDt3$map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/_V,$BV#K'KZ$$'")Ip@l0UpeM`2UW-g98N?WS+h]bf6Wtg;9YqrRs00X2rQ>
-e>]_,g:q[CSK$3Ta/Qf,g<ut"`S/#8\uEm,g;U&-ZGYDMY,U(-H\T;=E8'$nWO2ZY*il9>bhB@'
-^V<q*c`*nbg=`IL`in+&_Qh%_`nK-?lIlI%s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OG_WClUXo@G`]6jP>)JI(01Sj0qca1jXk.&gkZfT*2f[7%Jk00sErT=-e1t1+>
-i3U&Xk/qqjV&\Pmd^.'Xk2!AMd,rBc`O".Xk0UHX][#[%\$P/XJrRm_G37rCZbHG$*ji8[fB0_L
-aiRlOg9\-7k2ir$dCA>Pbe)32dH9RflK/<:s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(_Q3cNJc;_ON*Q@`)F::&OdE/D<FT""XA`\3@VU-5Q]32BXG9PWriB7>@UUm;
-XCG^GI&p#2XK6fM3)a9gQE4G&@T9+P)d6]NXJ8a(<Z[+!FC8QlXD`BcS4p#c?Xd;mXD_NV5C0E#
-9rtEYXBT.C;lQf]F];am@O4Yq87em(4R0!P]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/_V,$BV#K'KZ$$'")H,)=\A-bBCj^*?g1c(TI#"(A^p>Phg8e_.rn:M5I![oG
-g4"EnS_@Mkg=i.O7qm?h^=mj[Hu%'%,'&'Ig<XP^DC2L>PBqV1g5VNS`aINSG^OY1g5UH,:n$+V
-@bTO0g2hXhC"M!5P\PK0HnSh_>CbG]9^:=9ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OG_WClUXo@G`]6jP>)HPeY_TM#nEJ&>\k&6#sK8uTZb.TF4k-SiOroR@HK7Z7a
-k(SG:VWML;k2rQ&95fH*al\,+K5oVF,^=r^k1am.F==W\Rt63Ok*;Y&ct;G&IY3$Nk*:ON<28U%
-BBJ>Qk';T3Dr]nWS8a"MK/$pq@#*n,;!R0Ili5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(_lNp:;4[]f!NDsqX;.Kp4B.rS5B_L"4KO/[S?/Kb9V7_Kri?]g?EC5WC94LY
-M.p1CHp3iiS,KEZ4/8ldL9-knIQ*h!32`i?X@/kcV)bW67X]_`G&LK3<hug(@X`Y`TO)toMQ!VG
-3IZEUXI+Hc0;tsh0r1kGP#$m7JRtpaU["ob]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/_qG1?B?1#*!S>d!g(hq09P_c(:R7Z?9\Q?q`S/Vg@*6>srn7seGhUlEL>(=E
-Y(^tjSPQt.`VnL]9@)=>WS5=aTLQrT8(?6dg/cSSdRi/q=Iu1!Q&TaUD:%!^IA!*#bBKMMY1;7E
-8>)Vig;0GT4Oi)B51%s/\R_gZUk%1QcKa*fir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OG_r_$WCsr=F!TMr7jqZTL:iOqH<1^(];!+r7d,s'AA_#">roOg&IcfdlNTT>l
-\;bg6VGkQJd/E)t:YY#aZf]T5WCkS#9&Jc-k$-U&h+d%@?)OZ>Ss=JuF55o-KW1b>epaHp\DcSr
-9W>"/k00g(5N([e6/1JU_eQW$XbZ'$g?Rf)li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(_Q3cNJbcAOC8n:OH`T+(C'/[]K4Y"_")N?qKDqqUM-d9bH>`\_!Fo%,C'(/(
-S,KE#4KPVnL9+WpC+c'Y4KPVHX??K`"$EZ>4T9($Q#B90<iiB)=T3%LVlX]L>`GhS05>6qXB94P
-.&a4aHiC)MP#dHHK4X5I#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/_V,$BV"r^KL=Y(9S(^7/L'*aqVL\X!",WRuVuGBRY'A[SRu@7!!Ie\\L'#Y/
-`VnL&9\S3JWS2HKL-*E/9\S2og._M""&.FK9`BbP]o??QD;*]_E;kS+eCob6FL0]>4GJU8g2D_#
-1=Y$8SGq4G\S\NoVL[j`#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OG_WClUXnh)`NoK2aUuk2HN<>g8YD<)="-KI8Yl<bg\:3T&UQbZ=!JPCiN<7gG
-d/E)=;!-nmZfZUoNBYbP;!-n:k"u'>"&S-d;#ZF[aH^7pF6;V.G5dI8hr^#[HG/Ie5E1ZTk&lZC
-2;mV[V#KK[_fNA:YD;<'#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(_Q3cNJbcAW5tuN0MQE=KG'7)k?q,nMXA5cO8ZSqoO^CD-XK#`QG$p</>BY0m
-S>]G2G#=YVMl9$RXB'LZ)L@>kR@,L^SlKr;.BKRbEctuI9ie?d<hZKpG'6l\7<<WZM6(qZIf?D\
-;KcXfKr[jHN3'+!4+]_G7]H9d!gs7OnZ2r+map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/_V,$BV"r^S;IYr:YM.!6QBlUGH<@0Gg.p6c>hIca\9LoLg=Ue<Q?omhF-`,2
-`n"slQ=dujYgld&g23.1+e#Ym_SS.7aD@/`1YUK9OHtBq@;X`=D9URMQBl=4=H\tqY1f71T`3XW
-BU45iW7bNnZJ+#l9;POX=P!B'!l>5Kn_+3,s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OG_WClUXnh)h<bJ"R\`V:]St:5iJ6fM\k"ar)@H?S5_LGXkk2_/cSq4T7HCg^O
-dG]):SnuV0]&6bFk&[,S,GVk0c-82YdrM%*2Wj([R%B&<Aom+_F4]DpSt9rU?(.@7\E9GSWW)#l
-DOu\+Z/oM9]]S@A:Td`r?/b\C!mM"`n`C&As4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(_Q3cNJbcALLR<(:ri??eEH.bTG]A?6X9!p1ri?3^EH-O.X<hn,Lod\SEH.&@
-XIX?NQ^DcKVf@!`U2bX?JV\<5QuRq`P&ZIDri?r[EJ1E5FKDR,TWFi,EKdJ[EH-`7XFP;:ri?^'
-EIrt!X)W-9XK6hiQuSL5W;EXt:Gnj9X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/_V,$CU\WUGXMBpurn7UeOH@fBR#n0Cg&\%Rrn7I^OH?49g*MlCXP2CUOH?p)
-g;f;:^ql,6e<$*Pc&eU&UTKWn^lY\P\ra6mrn83TOJgfoPM4a$b1b($OLj/IOH?Krg7j[trn7t+
-OJJtVfoV;ug=i-[^lZ?nebe&%A4+T2g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OG_WClVXSLu\[EFrEroOI&R$cUiTU;n\joMWproO<sR$arRjs?F_[H?W-R$b\O
-k0fWab0-0\i0^5#fpJ_LXL=M>bF#a#`0e27roP&hR'>_?SEAtOf&kVPR)S3qR$b8Ck,XlEroOgB
-R'!d$jd;FFk2rS/bF$J?iVVa=Bh-eFjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(_5mWI\Z>q3Df8^Fb,bSRn#Q`)map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/_:em<\_728NK%hmb1ZiEn(J!*s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OG_<(`O\`O%PPa$:6b2r\Xn)ai?s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(JZSXJ"/pKjOg_=q]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/J_KnQ"4Wa,\@1)qir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGJ`cai"5ooJ_m\\3li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(WiQ5hPPqQ`O)OTj!K<Y=X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/WnIKi])C=`[Z0k3!O9e8g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGWoa?+`;Sg!^m+EP!P?mMjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(WiQ4pSGfMiRPOH8!Fq2_X9Ef#DNlqYXK2W;map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/WnIJ]`r4Tl_a!_G!IhKLg'*g)MnD;nXP*m<s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGWoa=ndJ`2.c9h*a!JS>]joqA@PK$"5XQB`Qs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(WiQ1_ri?3`@"1<<X:8rQUo\*7X*A$=XDqX>ri@61@!6mtXH-b>XK3sRU._&Y
-Q!e!bXE9#4KPcOHXCbk>]rVFLmap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/WnIGHrn7I_H(dq2g'rg_d+WtpfpI'"g5gO#rn8L3H'XuRg9l4$g=eK&c!SKE
-]m4n9g6/4kW/@\1g4=P#^"N\Ms5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGWoa:XroO<uJ>uHFjpdB%[email protected]*LVIroP?IJ=`Ruk.cGJk2n^GfO`Im
-a+/]\k*rH<Z&uHVk(nQI^#fObs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(X/nLV9!#+_=GUW6XJfc[LfpH^=0%E>U9'GJN3'+Q=GUu4X-d%GB7m9J?\h@G
-XB::78?@OaAfYAbVdb76>,8m6#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/X4fbY?J=,NE34dCg=:hIX`;X7DV;HacJ#a4ZJ+$SDlo*?fYMR0K;R?rH*(Gn
-g2O0r>hZ/#JL#\bdsS!oEmVPS#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGX6)UpA*2puG.*>]k2D2q[WgDXFQL;,g#g+Z]B88*FgdYWjNMhVMQl5>J@9%:
-k'"2A@HOm@LaIh$hh/)?Gh]sp#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(X/lGKE3--'ri?MjXH>&9=@-V`=0$Cbri?H3N3'*SS#i]4X#^/](b)OKX?9.H
-XHQag,-7>.PuE]HL,)k54`S3;#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/X4d]ENS<)[rn7cSg:0+]E)_D"DV1):rn7^$ZJ+#@`S0%/fgu*](c9r?g.Ykn
-g:D6B/)&$N]kOioW]tHA9om$B#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGX6'PYQ0.4*roOVck/'3'G$0X>FQAj\roOQ7]B86fd,sJZj\5Ys(cUSRk"oX:
-k/;Fd0':SmaDS_;ZU8nZ;4##Z#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(WiQgqXK56cXIh>NQ:QpqLm4u>MamZH.U7q6XBpdcXI-(aI#sG>X?<S2%%XIh
-OG,0cSP,5HN`qE:NKAm]XK%5T_Q3sQmap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/WnJ(Zg=g,Sg;u\8^0InNXLm2#YZ^qY.WhuMg39aSg;)EPT!l)$g.^4j&B<F+
-[\u(;a'ZMoZuWK^ZaQmLg=W^X_V,4Rs5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGWoapjk2pI&k0ul_a^Mcr[`.BH\R,6s.XSeik'ji&k0)n$VSL!Hk"t39&CKWG
-^p5r^dU^F:^3RD*]tgttk2a20_WD'gs4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(WiQgqXK8F':fSTaXFjDI;i@`Y!d4LD.qL4tJ#o_[:f(8pWE2nm@t>VMRjai/
->YnBAFC?DG-[mP<ISip@OK>2WJASAl]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/WnJ(Zg=k1tAo&iag8AUrBsHCG"-rl>.tKTWU"\4HAnGu7eo,/4I\S-^`&#Ee
-FCo;:PC"jV0q^DITP%kO\(]..UVb^hir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGWoapjk2t]HCiUu#k-/`>Dn>)n".fGR.u62fWoiGpCi"7UicT'RKrcT$cSj25
-HYd[ORt<;q1oNCbWGQHj_<0JPXMX*(li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(WiQY%SZJogQ_9kBXK7nXSc5\kR&0e`/"DrmU9(GoQ^=PMXJD2LVkTNPXIuSp
-VO*pHTUhFGQ_g%JXI5EHXK4cgVo#M>]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/WnIngaP,@p^rsaAg=jK\`r=Zm^s`59/&oB?c.^n#^qe@Og<dXNeBYkSg<8.&
-d_NuGb/_<F^sTsLg;:YHg=fPAe&'fCir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGWoab#e)ofJbLY(mk2t"5dJi8/bME0[/()P`g#hGSbKJ]'k1e)&i7Z<,k1A\V
-hTOEte^DXrbM:;#k0;)uk2ofchnnL[li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(WiQ5fOi4=$IDDog]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/WnIKh\A[)$T"s%air@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGWoa?)_SkR:VnhF!li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(JZR.u!JQNiX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/J_JE'!N<?]g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGJ`b8?!OBDqjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(PcOpNX?Z*R!IAeVX9)ZSK)VhQ:*5kpX9XGkIVu6gW]o:@#.j6SeVDWDqpbql
-KCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/PhH18g/.1j!Lf,?g&cFOV#K'L@jf(`g'=U/T8VFWfM:;W#3,[>g4n&Hqq;:u
-JaVg;nC^*X~>
-#$LBV\^d1YJ`_OGPi`$Ik#Lg2!Mc%PjoTreXo@GaBdq6sjp/2KW0?B+j&=gs#4)<BeVDWDqpbql
-KCA!=nCg3Z~>
-#$LBV\^c7gJZOF(PcOpKX??K`+HAQh@B67f4DV!A9lW:AXK4'&4Gp574-Oe_X/g"u4Jr+Z!GI#^
-X8u1bri?Tb4CbFn=)FBgRB2'PHu/e`!'K,>#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/PhH14g._M"+LFgbI+ctB9ShAg@ZO3Og=eVC9X!0q9=g?ug"D0T9[j!p!J@0G
-g&Yg$rn7j_9Rb[KDi2J,_:kf:SV[:!!)28'#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGPi`$Dk"u'>+ML["K&tic:lj_1B9uGik2nlb:q5Z@:W/c<jlMP":u;36!K4&X
-joK;@roO]u:ke#nFct$HbiZ-aVNCf>!)VP7#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(PcP^4XCSE6M-d9B(6qauXF4lc.<hjdSZI'TrN$K;:ii%LCON:c;4"AcBRp&_
-'2b*tXG(,bKO_*Q0j(MfXHJ$mKDqqQ@>EaA#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/PhHt(g4.i1Y'A[**5-"=g7F,S1mcp'`nHf?rRqa.AWjotLn<>SB><0SK;8D!
-'5#&6g8TMSW.*I=5&]/)g:Er`VZ,9MHE?#X#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGPi`g;k(`$\\:3SP*lr0[k,4:&2kT5DdH7*frT4TACRWJ?O/M.&D9:r&Mlcm>
-'5YhRk-B[&Z%_>d6?VFFk/=74YQ!YbJ[OCt#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(O/rOZS#i]MEH_>_#s>:OXK5'cXE\^_X8uaAri?)^ri?9IENH6TJGlPX;4"Ac
-5rq+j,-77mUA(_i=c_IA#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/O4jeH`S0%NO-]e!#u'&Hg=foRg6dp!g&ZPPrn7?Grn7OBO4r<?U]&mTB#*-S
-;b9YV/)%p1c1fomEOF]X#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGO6-XYd,sK&Q_+3=#uKb\k2p7&k+J%=joL'jroO2WroOBVQfdFgXSq8iCs(o&
-=A;Ug/`tANf_=M/GJE%t#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(O/s4?Ff_ZoM-m?cN`rMHXK5'cXE\]cI]TVZL]4@]>)o\c?\tkcBRp&_$W37l
-XDN<cXF@7?:%kXg4T)8]EK'"\#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/O4kJ7PhOibXa&RRZuXkog=foRg6doST\A+HX8^fZEjXQSGcocSK;8D!$YI3.
-g5;ESg7[0<@eSLU9`3TFO0[m$#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGO6.=KSEAt6[t!Q&^3Jd:k2p7&k+J%&WTN>p[/T1oGeW>&J%+S&Mlcm>$Z*uJ
-k)lM&k,ILhBD1Hf;#KGVQb2AA#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(NiY-\4?R>ZN''4+UN[i(PU'81T2[pjXJ.."Eic@;>!+p+XK5\X0l="n:*hiH
-XK68$4E.B#,u"'7!'L4]!i$]HjfAZtmap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/NnQCT9MC/oZ:mr4cBfuF]In$Sb%j\0g<MQ@OP8F6E_K03g=g^/5)\.K@kU9B
-g=hEX9TIhA/n"G-!)3@F!m`'Ajk9pus5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGNoi6h:f*,5]MMFLfq0dd`\;GqeT"ELk1M[]R-*PbGYh5Kk2q(Q6B^KnBei8W
-k2qh':mL0^0kU1B!)WXV!nnoUjlQd5s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(JZR.u!K^F^X8u@$jK&Qsmap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/J_JE'!OctGg&Z&+jOsgts5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGJ`b8?!PimWjoKOBjQ6[4s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(JZR.u!M?+bX9"fgjK&Qsmap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/J_JE'!Qr[cg&].@jOsgts5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGJ`b8?!S,m%joNfcjQ6[4s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(JZPiP#.j6SeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\D!1KJ_G\/J_I*W#3,[>g4n&Hqq;:uJaVg;nC^*X~>
-#$LBV\^d1YJ`_OGJ``ro#4)<BeVDWDqpbqlKCA!=nCg3Z~>
-#$LBV\^c7gJZOF(R]HOV:&1k9V2LP=NJjm=Mi4")S;Wo=RZ!f4MjLNHP`(HhXK7J@WL/U;T`'cK
-V8TG>]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/Rb@eX@en_'dBL7:Z`r09Ycu!u`j!J:_m%;.YeSoG]<JNXg=j!>f>4]8bPeXF
-dDX`Cir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGRcXXnBDL[8h7CSf]Xm7d]"6/KdCR`fc+;HY]#j*s`k&b-k2sIjilepbfDW8\
-h8JF[li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(S#c[R=?H>[.@_h;X@57PD-^FKQ\HW;XFD@PP[-DQXDp'gK<2.P25PXBOcU\k
->r7AUX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/S([qRDbBiZ.E+,&g/q&%MKO&Z^oAi_g7]t$]QHp%g5nX+VV9a;6dhJR\@*i/
-F[E1Jg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGS)sdhF\hhq.F:"7k$:gFOaMOub-W\*k,KrE`dCVFk*SVHYNFtb7bsmk_SIaM
-HptK^jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(XK3(Z4?R>YX(a[Y0!%]>7QcF,VPQEMX;O]FDg?8GE3-.:7''1PXHc_cX@[/T
-XK5icri?K^@]ZXnXK4OcP&cZ&X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/XP+>S9MC/nfnE*n3ndqK=\PjLe'Ukag)4=PNL>`mNnW45<n_-$g:_4Sg0BE*
-g=gnSrn7a[I+m:Jg=f6S\WF;=g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGXQC1g:f*/5jc!#453?Bf?;RujhVD$'jr%ciPbOD9Q0.5`>NT\Ek/_H&k$a:K
-k2q9&roOTpKBD;mk2oM&_jJ9Yjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(XK2q\XK4XbW'IGcIB8PeTr^BUX8kBXX9M@T;flqtG5eQR4KOTHX@o+cN`qWH
-XK5icri?E\@]ZXnXK4?O,/UDc]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/XP+2Wg=fBRePY&STA$e?c.Ykjg&OhAg'1ugBp4L;QN#SK9\Qmog0_kRZuW`n
-g=gnSrn7[YI+m:Jg=f##/Ag*Fir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGXQC%kk2o\&iDo%&Vrkiaf]H$0joA6Qjp#G-DjuuYT)Rj_;!,N:k%2s&]m7S:
-k2q9&roONnKBD;mk2o6C0#H`Tli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(XK2qQ4?OCXXF!&lEibC)XK4P`X8kBXX9M@[email protected]]FC2)MB/i"4
-O/ucFXH6hE@]ZXnXK4LV=I5c#X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/XP+2H9M?GVg71i1OkR<_g=f7"g&OhAg'2!)HtnV%QN#SZ9\S*5PBkj8K1AU)
-[G#u.g9u:,I+m:Jg=f3CE50Z9g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGXQC%\:f&4lk+kgMRHDA.k2oM>joA6Qjp#GEK5[!AT)Rjn;!-eWRt'P^MG$c;
-^ZL-Tk.lMRKBD;mk2oIjG08LVjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(XK2ppXGn'qWG&B74KOZHXK4P`X8kBXX=R&7X9ig2;QQsKC94Lp:QVZZ4KPW\
-6`a^OXH$J=@]ZXnXK4OcXC-jcQp@:bX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/XP+1Yg9VjNf7_l39\R!og=f7"g&OhAg+6[Og'`kRB\M14LYCIdA[^=H9\S4J
-<SDf#g9bn#I+m:Jg=f6Sg3TjS_,8=qg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGXQC$ik.Mnrj,<'^;!,W:k2oM>joA6Qjt(,kjp[KrD<BuZNooK8C;Auo;!-oq
->3:FDk.Z,IKBD;mk2oM&k('o&bZ<98jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(XK3+r4Bc0$WB!('O/u2>Rr168N''*bqQ('i3`rJ=K<1n34DLqrX<(cNXCsUV
-Kfh@X3]fGcFfT7>4Jf-43BTDbPcSO>T#du;]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/XP+Ar9QPQ,f1AY0[G#4a`Jd?\YtR\bqUu=j8T3=`VV9Ek9S_=#g)bRog4W!j
-WD#lW8kViNPhCgc9[VRm85)]L]@qoaaN3'>ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGXQC53:jIYDi_<6G^ZK?,d$.5']221$qW81+9m,U*YNFY;:laZ:jrT*9k)2o0
-Z;=7l:/=\^SE5c-:u(3<9MeP\`TE+,e&^YUli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(Q)sk^f;o!0OiOO-]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/Q.l/e!8#iV!CF<:g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGQ0/#'!92Vm!CaoHjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(QE1(^r'(0^S#ch*map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/QJ)>cr(mB1S(\)+s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGQKA2%r)E`<S)sq@s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(RB-CbP,nl!map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/RG%YgP1g-"s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGRH=M)P3)u7s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(R]HO>48Gs'SRm#HBk=?EAS$OrMIh[HKOp73AU^_^G\(HAXK6;NVL`<CPPo%m
-S]%T6]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/Rb@e99DR9ea+0N1Kn.k.J:OQOYCNh1W.;@lJ=kQLR"0^fg=hL9e"_H*])@-Z
-a2H[9ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGRcXXN:\j,udYFIWN/-NTLPN+r\VI]WZ%p0;LT'@tTSJ<1k2qk_hQ2LP`VkPl
-d_t8Pli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(XK3)6R@0nQXJM>QS#i0US=-CYN+kBLX=9o*1SnDWV-JY*A;?O)R&lQ*S=k'l
-VQ>eMAs]U#CJ(Ri/tSUdK7caO`2j0Smap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/XP+?;_SX^Sg<mdS`S/AX`kpB^Z%YjHg*t??5gadkdWD@`J#gCH_:lR``QFKF
-e(V-7K"p$nLgJZD3loB'VP[V"`7bFTs5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGXQC2Sc->),k2";,d,rd1dEU_6]8TP]jsf%[7,362h0Q9.L:#/fbN?i.d++aj
-hWDL]M94oBO(7.e4k%kCYHMED`9%9is4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(XK2qB:/4okW`W"k-EL0";,2'/X8kBXX9M@;B6eE8G5eQR4KN"HXFOucX?:HH
-XK5icri?K^@]ZXnXK4OcH%VL&X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/XP+25@q0H0fPb800\U;)An-i"g&OhAg'1uGK:.[[QN#SK9\Olog7j8Sg.[Nn
-g=gnSrn7a[I+m:Jg=f6SRARg=g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGXQC%HBk_bOjE>6O1Zi[ACh]16joA6Qjp#F`MP??&T)Rj_;!*D:k,XF&k"qA:
-k2q9&roOTpKBD;mk2oM&U9DeZjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(XK2qoP*.`%WCN,7OK=R6VlW#[X8kBXX9M@^9QG&kG5eQ_4KO`KUJIM`JlROj
-XK5icXJ__G@]ZXnXK4<B+2Y)`]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/XP+2n\[b,YeloVp[bA5neCmUqg&OhAg'1us@$$>/QN#SX9\R*tc=G&NV/*).
-g=gnSg=49FI+m:Jg=eth.)O[Bir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGXQC&/_o#%(iEjF>^uiL>hr[c7joA6Qjp#G9AXJ^LT)Rjl;!,`?g1f(!Y&UdJ
-k2q9&k2=drKBD;mk2o63.`1<Pli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(XK2q><`U?AXGg1\@'#JlXK4P`X8kBXX9M@fGW]naG5eQK4KPV_E+,iL>5hP8
-GcY>/XH$J=@]ZXnXK4OcFG?7&X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/XP+21D/C]Og9PR4H.ocGg=f7"g&OhAg'2!)R8&X%QN#SD9\S37NdKL6ErKng
-R+cnfg9bn#I+m:Jg=f6SPH)O=g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGXQC%DF)rhik.>\UJEF^jk2oM>joA6Qjp#GETi%&AT)RjX;!-nYQ@\2\GlDas
-T]Uj5k.Z,IKBD;mk2oM&S$UDYjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(XK3+.MKBVsWC2W$9!!A/VjT61U5CX_qQ)9F4b]sZDkgKnMJ7[DXIhnSXHtVu
-TS,4\:2Gf.>)lmGMG^IJ0T(`^Loc^WR`MQ7]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/XP+@pYEKs:elJuX?J:oOeA=AjcEBC8qV!OK:8uqpN6cOJYD&h,g<!C>g;#kT
-bG[h4@u7CNEjKqmY@cM34g2%uXP10-`5pX:ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGXQC4,\XOYYiENk'A*0Unhp"F9fssAZqW9Bc;R5F7PhLAm\W!]Rk1!Vek0$$#
-f!.cVBT]imH+eX:\SUEZ5e4F<[cYFOcH,,Pli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(XK2Sn??CO<Wr?<4R][email protected]!Rd)qQ($o??*'3OK>Ef?@VpT#'m;OI9p6B
-qHaD^XFOV`WN;3[?3He":bnfeX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/XP*ipGE\M_f`$(&_qKulbG9?f]m"[HqUu:qGECOl\(]DWGG4uh#+=3!Sp,Cf
-qKE1Fg7ie8f%RV3G6Gn=AO"J]g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGXQB]2I@I%*jSjQ8c/t.:f<'J5aF/JeqW8.3I@00;_<0a*IB*8.#,:8BVgX!1
-qL&UUk,NiXio\)UI0@pZC.$[qjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(QE1(cr.>!-f;o!PUW9G?]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/QJ)>ir1sCtf@g7?cc=`Dir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGQKA2,r3$+3fB**Qg;i=[li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(QE1(ar+,kMS#ch*map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/QJ)>fr."d2S(\)+s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGQKA2)r.k?BS)sq@s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(RB-CIP,nl!map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/RG%YGP1g-"s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGRH=L]P3)u7s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(R]HO&3r,j&Ps8HR76diO5<j%eGX$DRDa/f25@ppt><b>nXK5,\UM2rJLAa=:
-Q,Ka.]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/Rb@do9)70d]hie(=&@T#:f*)(R8B7(N)6=S:k79RFAPesg=g"4c@o)qWVoWn
-]u8V/ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGRcXX-:AO#taAdHI>ZBhD<)f(DTi@]IPZ4cr</9VuH;mk4k2p;Ug5T(=Zi*i'
-a2I*Eli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(XK3),F*!\LXI"!LHE;RWHul0dN.F+eX=:2C6Bub3R8Kr_H>]`EWiW3^X/gnJ
-S#iVsKW;,TKOCm]40,DDWMs3[`2j0Smap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/XP+?0P*3T6g:rf6RbFFCSW_IUZ(t(hg*t]^<5"WU_IqHNRu>okf\4tMf\*03
-`7iggW7]hXVg@(L9%hlif%,&H`7bFTs5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGXQC2GR[VC]k/s-]UZSPkV4-9']<+p*jsfD&=NI+sb\Z:uUQab7jQ>N!jQ3UY
-cfX8;Z/k'0Z%1us:Z^\6io5Eq`9%9is4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(XK2q5F`gHZWD7SY19>=6Cirq\X8kBXX9M@<ApJ<7G5eQR4KNXHXD30bX$(KH
-XK5icri?K^@]ZXnXK4O_?^.5%X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/XP+2%Pa#\0f41&05MCuAM3N&[g&OhAg'1uIJshRZQN#SK9\P\og4u<SfM7No
-g=gnSrn7a[I+m:Jg=f6MGe;/;g'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGXQC%7S=F9Qib=pQ6KXFZOdp^rjoA6Qjp#FaM5$6%T)Rj_;!+7:k)QD&jAMA:
-k2q9&roOTpKBD;mk2oLuJ&U!Wjp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(XK2r'ChtMuWDIDISZIrTXK4P`X8kBXX9M@f7<!0bG5eQ_4KOuQQ;aNZGXcKt
-XK5icXJ(W.@]ZXnXK4?G+Mt2a]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/XP+3*Lkmh:f4Khpa4e%@g=f7"g&OhAg'2!)=,r6$QN#SX9\RC%^1tsIQs#5$
-g=gnSg<?n'I+m:Jg=etn.DjdCir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGXQC&@OH;?Yj(sg=dcSDgk2oM>joA6Qjp#GE>aCVAT)Rjl;!-&FaD]boTO*^<
-k2q9&k1@;QKBD;mk2o69/&LEQli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(XK2q/I!I0>XHS$Z:ood\XK4P`X8kBXX=R&7O!\dgEic@?6*..jChBcM9mh>6
-@'!dlXH$J=@]ZXnXK4OcNHLDcWh?E6X9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/XP+1rSXD=bg:EiGA_OY3g=f7"g&OhAg+6[O[P3Z*OkSO<;VKiEM1OC7@@`sW
-HJ3_Hg9bn#I+m:Jg=f6SZBVoRf?;gfg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGXQC%.VP6$.k/=-oCZ`KUk2oM>joA6Qjt(,k^bV.FRHEYh=6AXhObi/^Au;H"
-J`_Qkk.Z,IKBD;mk2oM&]Uct&j4<;4jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(XK3+>A6^("W$Ptb>-)0gTnO_PQXh=QqQ('q/8_IJDldV_A6>/sX<'L*XFMO+
-P@,bK3)4!^>*`9$A8&'.,@k=ELocR9QcQ64]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/XP+A/Irus(eLuE%EnYn+c)<2$^jdneqUu=t3/ZE[N7rr7IrN.$g)`rAg7p3K
-\p6&\87R-`EkZIAItZOe/:W.>XP0r[^rY46ir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGXQC4AL3k/>iA-.BGijWHfWd*Eb(_R+qW8164-AYuPidmYL3CZ;jrR@]k,^4j
-`IKe"9PK6!H-(5aL5Y3408>3S[cY4&b/i]Lli5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(XK2T"KTD=ZX8[b[UTBE-VNun*TS.uPqQ(%"KT<.,SueuGKU)M;#*Q'hP_=^]
-qLf*AXHeHlWiVfjKES*P3_uZpX9Q9(f@>Z*nb^iAa+NjD_!p&EJ,~>
-#$LBV\D!1KJ_G\/XP*j'VmX+Gg&@lWcJ#P$d_;WubGV8;qUu;&VmP1$aP,:EVnN&_#.`IA];MRJ
-qPOS8g:aD^f\4FFVZb?"8n?Gmg'6R:hV*_4o)%,GbCT*H^@9fAJ,~>
-#$LBV\^d1YJ`_OGXQB]>YeS,njo2Ilg#foNhT2qJf!)BaqW8.>YeK8Ne)o_qYfH_)#/fTc`NZSq
-qQL4Kk/X^1jQ=qiYQW_C:28\-jp(/Og!tl,nb^iAa+NjD_!p&EJ,~>
-#$LBV\^c7gJZOF(QE1(`r*05=f;nsk`iKBUmap!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/QJ)>fr,i!sf@g4b`nCXVs5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGQKA2(r-SL-fB*'u`o[Kks4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(QE1(dr/1Q<S#ch*map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/QJ)>jr3674S(\)+s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGQKA2-r42mGS)sq@s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(RB-C0cE%"er2]m>rN$$pI/U,IR#(^B!fU-)ri?-NTDbhmF]FP&X8m>>X8m>?
-X9,A$>PtQ,]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/RG%Y(cIr8]r7V.6rRq:uSc.7C^o[Lg!jZX1rn7CJao0opP\df-g&R<6g&R<7
-g&flBFSshsir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGRH=L<cK5+qr8n!JrT4.7VZ#WXbI.<2!kWHGroO6_eG\M2S8l@DjoCkJjoCkK
-joXO^HMln0li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(S#c[c=??8Z/<qVIX>_f5OZYa3Uj",.XDK86MEFS6XB@,3Eic?0/Ycr)L4gj8
-4=lJnJS4q_!H!2_X9,A+NrH*]VG*``X9,/S8,fRjTLf$_!h<bBri?-Y?2^i*GB!P_!iqMBr2^+6
-map!Ee+*=c#KMJckJ6T@6@]~>
-#$LBV\D!1KJ_G\/S([qgDbBiZ/A3i8g."3X\4fS>d$HDNg57PXY=r?Xg2T,>OP8Df3R371WMhID
-9K9B4UP&O!!K3HHg&flK[/Sb\dpUH"g&fR'>5m4Vb$=o!!lfYQrn7CWG5^+qQ]D(!!nk.Pr7VA7
-s5)Iaddm:h#Kq\dlFuc@6%A~>
-#$LBV\^d1YJ`_OGS)se)F\_bp/B9YIk"7l"_GF'Vgn-?nk)qL#\PQo#k'&pWR-*O64P>TIZ`u8^
-:clAQXGZu=!Ks8XjoXRi^Ad6rhIbF>joX8H?N0'feRAF=!mu[kroO6mI/W1.TU,T>!p.Bkr8n4L
-s4PqXe+*=c#KMJckJ6T@6@]~>
-#$LBV\^c7gJZOF(XK3)#9hgJGXGKYG=KGkX>>:inQB46(X:.d"L3[]r>cb#b?*$0fX9h"jXDV1%
-XK5icri?Ta@]ZXnXK4OcXC-jcNEc@_!HrM^X8u[brN$#jT`(qmTh#'_!'L1\!HWA^X9"\arN$$O
-B)J_14T)8b]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/XP+?$@UcLog9"gnDq]K.FCNPL^:-f2g'hD&WgSgNFkYQRG1oXhg'LI,g5L!Y
-g=gnSrn7j^I+m:Jg=f6Sg3TjSZ?6'!!L8fGg&ZH$rRq9VbPg,qbZau!!)3=E!Kr]Hg&]$$rRq:J
-K)F=&9`3TKir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGXQC2;B4n^9k-nu9Fln4PH=tpnaMC^JjpYj=Z_E\rHfjJ%I-+9)jp=lHk*1))
-k2q9&roO]sKBD;mk2oM&k('o&]R'P=!M,YWjoKt@rT4,gf)=_3fO"O=!)WUU!LfPXjoN\@rT4-_
-M>ZK9;#KG[li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(XK2q>S!ugFW'm,E<31fqNLNB9X8kBXX9M@F?[$F.G5eQR4KO9GXAtIcT1ONH
-XK5icri?Wb@]ZXnXK4I64J\pWPZap`X9!rbrN$$?G5\KC@>Ff_!MN$^X8u+brN$$@FT/?CSPu?`
-X9+>eWr9"!4T)8b]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/XP+20`5G^-eQ9]-C>,[7ZG]lEg&OhAg'1uUGaFANQN#SK9\QLng2+@Sb$:Wo
-g=gnSrn7m_I+m:Jg=f,o:!hGE]Pu@!g&\($rRq:6Q2TD;H`R,!!R+aGg&Ya#rRq:8PlBA<a(`p"
-g&eR(fDXD'9`3TKir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGXQC%Ccd,hTiEOXSE9=JT]['m_joA6Qjp#FnJ"MsmT)Rj_;!,-:k&SE&eR>J:
-k2q9&roO`tKBD;mk2oC?;;C-m`cp>>joMZ@rT4-JT)IdPJ[PI=!SC`WjoK5@rT4-LSGqXPdVmn>
-joW/Dj8J*?;#KG[li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(XK2qs7Re;pW`hk]PcU!KXK4P`X8kBXX9M@f7<!0bG5eQ_4KP2ULfgOUGV)B*
-XK5icXI=Kj@]ZXnXK4Bn.fQLNR9-3`X9"8brN$$KCAk47E-M8^!MN$^X8uRbrN$$@FT/?CTN.W`
-X9+SgW;Wdt4T)8b]'e2#LXYejeHa-In)qLUg-U;~>
-#$LBV\D!1KJ_G\/XP+2s=BH`sfQ((r]@sc4g=f7"g&OhAg'2!)=,r6$QN#SX9\R[+X`2_BQoS7o
-g=gnSg;BG\I+m:Jg=f)L2?);2_J[^!g&\I$rRq:FLAfg,O-fh!!R+aGg&Z<$rRq:8PlBA<bA56!
-g&ej*ec"2%9`3TKir@lhL=5Yig'>fPmcqOUfg1,~>
-#$LBV\^d1YJ`_OGXQC&4?!SZ5jEY$:`ob-[k2oM>joA6Qjp#GE>aCVAT)Rjl;!->L[W^NiTKQR-
-k2q9&k0Bg0KBD;mk2o<n3<&%Ac#h_>joN)@rT4-[NW%u?QD"3=!SC`WjoKhArT4-LSGqXPeoB4=
-joWJFiVhm=;#KG[li5YgLXYejeHa-In)qLUg-U;~>
-#$LBV\^c7gJZOF(XK2ptU6I+*X,3RF5cg)LXK4P`X8kBXX=Hu6V@RTtAZVu!;66j9@<\fS5GFmB
-8ZZ?UXH$J=@]ZXnXK4OcVIYRcNEc@_!HrM^X8u[brN$#jT`(qmTh#'_!'L1\!HWA^X9"\arN$$O
-B)J_14T)8b]'e2#LXYJa]a(lrn)qLUg-U;~>
-#$LBV\D!1KJ_G\/XP+1^cFc!afr`QF;;/Ntg=f7"g&OhAg+-UNdh@\:JD/_lBA2'sH^<C>:sRA*
-?.sY+g9bn#I+m:Jg=f6SdXSISZ?6'!!L8fGg&ZH$rRq9VbPg,qbZau!!)3=E!Kr]Hg&]$$rRq:J
-K)F=&9`3TKir@lhL=5>`^^%8umcqOUfg1,~>
-#$LBV\^d1YJ`_OGXQC$nfu>u0jL<gq<T_/?k2oM>joA6Qjst&jh@u3XM!!jAD<BuDJtM2f<S?'P
[email protected],IKBD;mk2oM&hM/Q&]R'P=!M,YWjoKt@rT4,gf)=_3fO"O=!)WUU!LfPXjoN\@rT4-_
-M>ZK9;#KG[li5YgLXYJa]a(lrn)qLUg-U;~>
-#$LBV\^c7gJZOF(XK3+M5"mD6W#%W]C90uKS8]6nN'8"CqQ('i*)s":DleIQ5#\'PX;sF)XD&G6
-L-$59,;DA<>+SYV5(BYf(-Xo,LocS?rN$$CErE'??]"`_!D&m^X9#"brN#u]r2]p?FT/?BQr![^
-!J4q]X8kB\X9Q9(f@>Z*U%s<En)qLUg-U;~>
-#$LBV\D!1KJ_G\/XP+AC:LGu*eK%F]L>#o]`Jkh1Z;2E<qUu=j,APqEN7t"%:MIoLg)Wl@g4^JA
-WCn=//3ZiqEli#k:SHLA)c'6\XP0t%rRq:;Oo<u7Gcq#!!F*bGg&]E$rRq6Fr7V17PlBA;_.ET!
-!Mk>Fg&OhEg'6R:hV*_4TD=$AmcqOUfg1,~>
-#$LBV\^d1YJ`_OGXQC4V;e7k<i?(usNTO\"d$5WO]2K_OqW81,-#i!_Pif#F;f:+ajrI:\k)CB[
-ZVM]B00rN)H.6b2;l\uc*E,lh[cY5KrT4-ORJl7KJ%,C=!FXLWjoO+@rT4)Vr8n$KSGqXOb\I+=
-!Nh4VjoA6Ujp(/Og!tl,U%s<En)qLUg-U;~>
-#$LBV\^c7gJZOF(XK2T+WiE,#XT#7"XT,:'XK/A%X8]-pXT,:*XK/D'XK&;$rN$4(XK8J&WiPur
-#HOr,WiE/%X8T'uX9!<arN$$/LAn7UVHK2`X9,"kV#IFsQYT+jX9"AbrN$'U9m$B9!I8S]X9!'b
-ri?1$E\.-i"hO-ReVCX/dKTI0_!p&EJ,~>
-#$LBV\D!1KJ_G\/XP*^.fDaD&gA]\0g"P*1g=b*2g&BV"g'ZNbf\5$3g=k01f_sM.f\5'3f@S^P
-f*C!_f[na/g=cGV"52CiQMoM<IB!5"!n2/&rn7FqB@-Y3!l'Oprn7C\E;eJlXC7@mg&[Y$rRq:-
-TDmOGfTA/kg'-L9hV*^ppsoWFlFuc@6%A~>
-#$LBV\^d1YJ`_OGXQBQFj8S*>k5OBHjlYXak2bRajo4<:jpL51jQ>Rck2t^ajSe3FjQ>Ucj5]7t
-is4].jQ#:_k2lR%"6J[4T)IdPK<tR>!oA.AroO:3D;5'P!m6R1roO6rGQ$Y*[:c$/joM3@rT4-@
-W;bo\jI&+-jot)Ng!tkepsK?AkJ6T@6@]~>
-#$LBV\^c7gJZOF(QE1(^r&asXf;nt/r2]mTrN$$tNr?$[T9]AV!gn.iri?-_V#@@rMKYHfX8n+T
-X8n+UX9,DFHMjiK]'e2#LUR6[rWi>Ko]O$Zg-U;~>
-#$LBV\D!1KJ_G\/QJ)>br(I*)f@g5,r7V.QrRq;$[/J\Zb.[c-!l:/,rn7C_ci)Q!Y*Hs)g&S8Q
-g&S8Rg&folRf(kDir@lhL:@3[rWi>Jo]j0[fg1,~>
-#$LBV\^d1YJ`_OGQKA2%r(mB3fB*(Br8n!grT4.<^A[0pe]@^[email protected]\p79\=LqEjoDmg
-joDmhjoXV7U\s6Yli5YgLUR6[rWi>Ko]O$Zg-U;~>
-#$LBV\^c7gJZOF(JZPiP#J0?TeVC*km/5B=P+hU4_!p&EJ,~>
-#$LBV\D!1KJ_G\/J_I*W#NGd?g4lZsn,1lEOe_[9^@9fAJ,~>
-#$LBV\^d1YJ`_OGJ``ro#ODECeVC*km/5B=P+hU4_!p&EJ,~>
-#$LBV\^c7gJZOF(JZPiP#eKHUeVC*Or7Cqu#e>u'p?06\g-U;~>
-#$LBV\D!1KJ_G\/J_I*W#ibm@g4lZYr7q;*#eQ),pZfK^fg1,~>
-#$LBV\^d1YJ`_OGJ``ro#j_NDeVC*Or7Cqu#e>u'p?06\g-U;~>
-#$LBV\^c7gJZOF(JZPiP'Y<_aeVC*:lgNBSd@?c@p?06\g-U;~>
-#$LBV\D!1KJ_G\/J_I*W']T/Lg4lZFm.&f`eXW5JpZfK^fg1,~>
-#$LBV\^d1YJ`_OGJ``ro'^PePeVC*:lgNBSd@?c@p?06\g-U;~>
-#$LBV\^c7gJZOF(JZPiP'Y<_aeVC*:ansrF`.kY4p?06\g-U;~>
-#$LBV\D!1KJ_G\/J_I*W']T/Lg4lZFc2?STaG%.@pZfK^fg1,~>
-#$LBV\^d1YJ`_OGJ``ro'^PePeVC*:ansrF`.kY4p?06\g-U;~>
-#$LBV\^c7gJZOF(JZPiP'Y<_aeVC*:^?k7;Q(Pb'p?06\g-U;~>
-#$LBV\D!1KJ_G\/J_I*W']T/Lg4lZF_sQpHQ(Z"2pZfK^fg1,~>
-#$LBV\^d1YJ`_OGJ``ro'^PePeVC*:^?k7;Q(Pb'p?06\g-U;~>
-#$LBV\^c7gJZOF(JZPiP'Y<_aeVC*:^!c\[N46L6p?06\g-U;~>
-#$LBV\D!1KJ_G\/J_I*W']T/Lg4lZF_UeLfMnHpDpZfK^fg1,~>
-#$LBV\^d1YJ`_OGJ``ro'^PePeVC*:^!c\[N46L6p?06\g-U;~>
-#$LBV\^c7gJZOF(JZPiP"hO-ReVC+&]`R5HT)QD,p?06\g-U;~>
-#$LBV\D!1KJ_G\/J_I*W"lfR=g4l[-_?/eLTDl\2pZfK^fg1,~>
-#$LBV\^d1YJ`_OGJ``ro"mc3AeVC+&]`R5HT)QD,p?06\g-U;~>
-#$LBV\^c7mJ\$EDJ\%hl"i]o]eVC+&]`Pp(Zi7WAp?06\g-U;~>
-#$LBV\D!1OJ`;7?J`<Zg"mH!Cg4l[,_?#G$rk\j5lFuc@6%A~>
-#$LBV\^d1[Ja7mQJa9<$"n2KEeVC+&]`Pp(Zi7WAp?06\g-U;~>
-#$LBV\^cVbJaS*WJaTH("4u(Y_#E<oi7%Ya"oIJunCg3Z~>
-#$LBV\D!M5JcC<$JcDYJ"5_ad_>`Krimdqf"oIT!nC^*X~>
-#$LBV\^dM:JcC<$JcDYJ"524[_#E<oi7%Ya"oIJunCg3Z~>
-"^19U\^f#Wf7DP)f;@1"eH*#Gp[eUK_!p&EJ,~>
-"^19U\D#JahLXO7hPT00g&\PMp\"aP^@9fAJ,~>
-"^19U\^f)Yfn%h-fr!I&eH*#Gp[eUK_!p&EJ,~>
-"'P'S\Ui:^eUc89eH<VVg-U;~>
-"'P'S\:N@bg4@tCg&o(Yfg1,~>
-"'P'S\Ui:^eUc89eH<VVg-U;~>
-"Bk0T\[-jBJVSf3V2#&Wo@3rYnCg3Z~>
-"Bk0T\@$mAJVAZ/V1eoUo@a;\nC^*X~>
-"Bk0T\[-jBJVSf3V2#&Wo@3rYnCg3Z~>
-"^19U\ZptdVuis:`duTidt,u\dfHr+q5=>0nFP04_!p&EJ,~>
-"^19U\?gtcWr^/ZJ^T+tJ^V3Z!P-VRWr^',o@a;\nC^*X~>
-"^19U\ZptdVuis:`duTidt,u\dfHr+q5=>0nFP04_!p&EJ,~>
-"\,r'Q*H8E]`lU<igB'-Jan<]JapMF#3_c/s8V!!r4N-jo^gT8S@G1AJ,~>
-"\?50Qa;SH_?J9GigK31Jb"B_Jb$SH#3hc2s8V*(r5&Kqp@Hu?T=ppKJ,~>
-"]3XiYHa#_]`lU<igB'-Jan<]JapMF#3_c/s8V!!r4N-jo^gT8[ahZ6J,~>
-"Y=h;>Hs+c]a2?fkP"SDR-X0keUc8%e\BW?]n=c4iqE',_#D"Jiq2im"(#V5&:a~>
-"YbLUA[@9n_?e&tl1anHR-jBog4@t/g:u>I^k()9jnJK3`;[USjS&3!")2jY&qB~>
-"[ff-U9TXU]a2?fkP"SDR-X0keUc8%e\BW?]n=c4iqE',_#D"Jiq2im"/W>h,_,~>
-&MS*3=0[[s]uo74nDDcgR-X0keUc8%e\BWD]n=c4e^`UJs5(l2iq2im"(?4P(Ou~>
-&N"lT@^Cs/_Tq0@o&JGrR-jBog4@t/g:u>N^k()9g=kWYs5;/=jS&3!")NI!)Lq~>
-&Oj7;U9TWi]uo74nDDcgR-X0keUc8%e\BWD]n=c4e^`UJs5(l2iq2im"/`]11k5~>
-&MS*3=0[Xmh!k!pf%&<CR-X0keUc8%e\BW:]n=c4rm_5(i:ZHji:QWk"(?4P(Ou~>
-&N"lT@^Cp)hXU@$gY1ARR-jBog4@t/g:u>D^k()9rn7S2jS%rqiqDut")NI!)Lq~>
-&Oj7;U9TTch!k!pf%&<CR-X0keUc8%e\BW:]n=c4rm_5(i:ZHji:QWk"/`]11k5~>
-#r$7+=0[LMLRbsSeH;G2lgB>SJ^o>%^XWG"[email protected]"feH96#=;QJ~>
-#rI$L@^CcZL7GpTg&mt7mI5\\J_G\/^Y/e*J_'hug'"^4LXc%hg&l/@Af?1~>
-#t;D3U9THCLRbsSeH;G2lgB>SJ^o>%^XWG"[email protected]"feH;\\W\f5~>
-&MS*3=0[[sZCHo>`mN>/R-X0keUc8%e\BWD]n=c4e^`'cQ&M<@iq2im"(?4P(Ou~>
-&N"lT@^Cs/[[iABb1>:=R-jBog4@t/g:u>N^k()9g=k)uQ&D9DjS&3!")NI!)Lq~>
-&Oj7;U9TWiZCHo>`mN>/R-X0keUc8%e\BWD]n=c4e^`'cQ&M<@iq2im"/`]11k5~>
-"Yah'=0[\_]a2'=Kq5fIR-X0keUc8%e\BWD]n=c4e[_3)T=;MIiq2im"(?4P(Ou~>
-"Z1UH@^Csk_?d`GKV#lLR-jBog4@t/g:u>N^k()9g:Nl/TY/.YjS&3!")NI!)Lq~>
-"\#u/U9TXU]a2'=Kq5fIR-X0keUc8%e\BWD]n=c4e[_3)T=;MIiq2im"/`]11k5~>
-"Yah'=0[\]]`tj6Nej(gl%-m+a+;:G`s8r'deo8gS[A@/!TNbCeH96#=;QJ~>
-"Z1UH@^Csi_?RK>NeWqgl@I-0bCRjOb6PG+f)1YiT"+a9!T`tGg&l/@Af?1~>
-"\#u/U9TXS]`tj6Nej(gl%-m+a+;:G`s8r'deo8gS[A@/!TNbCeH;\\W\f5~>
-"Yah'=0[\[]`b^9R-:H!K7SZ+K=up;dK-&Lqn3$io^gT8@<,HdJ,~>
-"Z1UH@^Csg_?@BDR-LN!JUrB'J\?U:f$U8'qn`Bpp@Hu?Ck$%8J,~>
-"\#u/U9TXQ]`b^9R-:H!K7SZ+K=up;dK-&Lqn3$io^gT8VRribJ,~>
-"Yah'=0\Rrp&X^]Ja\0YJa^8?!VuB`p&Y'_o@3qOE`a-.~>
-"Z1UH@^Dg(pAsg^JaS*WJaU2=!VuB`pAt0bo@a:_IqBUL~>
-"\#u/U9UNhp&X^]Ja\0YJa^8?!VuB`p&Y'_o@3r?];d]<~>
-"Yah'=2isGkCMfIkGIDBj7Ce'@<,HdJ,~>
-"Z1UH@`dJXl@J5OlDEhHk4@:/Ck$%8J,~>
-"\#u/U;bo=kCMfIkGIDBj7Ce'VRribJ,~>
-">+@t?X*>7!FD:I^k':P^oP6OVeGj6"*.mG4Fd~>
-">Y.?DJ&]\!GS0W^4F"L^8nsKWcRrO"+P>p5C`~>
-"@fN#Z)%2m!N!5U^k':P^oP6O^9.1-"1bh-;1J~>
-"<q2^@VPXY!GAron:C([n>l$Zc$K/*"(PdnVLS~>
-">"/)EHh5.!Hc#+n:C([n>l$Zd>%FG"*/B?VLS~>
-"@n9T[(#kC!OL=-n:C([n>l$ZiP,*!"1>LLVLS~>
-"#h>U:&%fk;5JitJ_G\/X4dTcAGB7/9eV%oJ,~>
-"%+Iq>52\1?E&M/J_>V-X4[NfEVO,J=uV$0J,~>
-"*$Y@RJ<c_UV_T9J_G\/X4dU%Z1t=$R:q<OJ,~>
-s"sg$)YY$J1P%lD6@hJ(630"`p_O#pVYgCD~>
-"%5L-+86ZR1k@rD6%M>&5liqdp_j6!VYgCD~>
-")i0L3qkH24b5qN6@hJ(630A2pbW(MVYgCD~>
-%%EndData
-showpage
-%%Trailer
-end
-%%EOF
diff --git a/lib/et/doc/src/megaco_filter.gif b/lib/et/doc/src/megaco_filter.gif
deleted file mode 100644
index bd03929b4c..0000000000
--- a/lib/et/doc/src/megaco_filter.gif
+++ /dev/null
Binary files differ
diff --git a/lib/et/doc/src/megaco_filter.png b/lib/et/doc/src/megaco_filter.png
new file mode 100644
index 0000000000..cdea3a147e
--- /dev/null
+++ b/lib/et/doc/src/megaco_filter.png
Binary files differ
diff --git a/lib/et/doc/src/megaco_filter.ps b/lib/et/doc/src/megaco_filter.ps
deleted file mode 100644
index 19a1fc6bd1..0000000000
--- a/lib/et/doc/src/megaco_filter.ps
+++ /dev/null
@@ -1,1733 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: GIMP PostScript file plugin V 1.12 by Peter Kirchgessner
-%%Title: /home/hakan/picts/megaco_filter.ps
-%%CreationDate: Mon Oct 14 17:46:21 2002
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%Pages: 1
-%%BoundingBox: 14 14 469 306
-%%EndComments
-%%BeginProlog
-% Use own dictionary to avoid conflicts
-10 dict begin
-%%EndProlog
-%%Page: 1 1
-% Translate for offset
-14.173228 14.173228 translate
-% Translate to begin of first scanline
-0.000000 290.927657 translate
-453.947466 -290.927657 scale
-% Image geometry
-543 348 8
-% Transformation matrix
-[ 543 0 0 348 0 0 ]
-% Strings to hold RGB-samples per scanline
-/rstr 543 string def
-/gstr 543 string def
-/bstr 543 string def
-{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
-true 3
-%%BeginData: 99787 ASCII Bytes
-colorimage
-!AQV60nB=U!.b-$!:0^c3<Coq0n9~>
-r'Z)9JH16$JH5$:r'Z&~>
-"DW"!C3+q+JH16$JH5$:r,[A~>
-r]0uYnc&U&JcC<$JcE7[!56GQrr<*T3B;T~>
-r^?bdnc&U'JcC<$JcE7[!5?MRrrE$dJ,~>
-rcA)>nc&U&JcC<$JcE7[!56GQrr<+8F)uj~>
-s"OQTs8VWG!53s6J^o>%\CCSma56ja!WXr0J,~>
-s$Qngs8VWC!5=$8J_#D'\CLYoa4gR]!WYVVJ,~>
-s)S5As8VWG!53s6J^o>%\CCSma56ja!W[:VJ,~>
-!]^8\n(n&XJ^o>%J^q9\!56A.!lY."J,~>
-!^m%gn(IcUJ_#D'J_%?^!5?G+!l=q*J,~>
-!cnAAn(n&XJ^o>%J^q9\!56A.!lY.\J,~>
-!\j]Tn(n&XJ^sYJ!6(hc!6'N>S(.MP`SL[8!',Q~>
-!^m%gn(IcUJ_'_L!QrigecEqAJ_$@B!5?G+!l=q*J,~>
-!cnAAn(n&XJ^sYJ!6(hc!6'N>S(.MP`SL[8!-<Y~>
-!<E/fh>k6dec1lieHNpfe\-<VrfmH5!J>a&eH3F2HiB90eH(;LnC7Q8]n+_AeH!;GhY3Q5hZ',E
-hZ',Dh>s\XJ,~>
-!<E/fg&Sjaf)LlgedTEhf"Q]`R?<W_eq&CUed9'AI@64[f%,D'nC@W6^4FkCec<GIg@q$.gAdT>
-gAdT=g&\>VJ,~>
-!<E/fh>k6dec1lieHNpfe\-<VrfmH5!J>a&eH3F2HiB90eH(;LnC7Q8]n+_AeH!;GhY3Q5hZ',E
-hZ',Dh>s\XJ,~>
-!<E/thZ',ChZ',Eh>k7]eH*Y&iRItJ^$sPQ`P(Qes-2Bj&]K+(eVedneWc<KeUr5!e]#5.eI@F`
-`RU3;e^];!e^_XPo[O#MHc:Qd[abAkkMGs'p>5b<s5*^ErS@RV!.Y~>
-!<E/tf)M08f)M0:ec<GVdK.4niR.bD[d_]G_RAaXs,l0d&]0+-dZ&[pcB47;dXcttd_`H!dLD1a
-`m0^/daE\tdaH"@o[3fLID19\[aG/ikLTBqp=B21s47.:rRM"P!.Y~>
-!<E/thZ',ChZ',Eh>k7]eH*Y&iRItJ^$sPQ`P(Qes-2Bj&]K+(eVedneWc<KeUr5!e]#5.eI@F`
-`RU3;e^];!e^_XPo[O#MHc:Qd[abAkkMGs'p>5b<s5*^ErS@RV!.Y~>
-!<E/uhYiuChYiuDh>k7]eH(;LiRIs]HgoPdK6tSf"cJVqeUr5GeHLSPe^];!Zdf)/Hi)=sK6u/!
-K7!4?!L/Lne[F!.^$"8HSG(h6SGh:FX8mb~>
-!<E/uf);$8f);$9ec<GVdf4mWdf4mfdf4m;dKPJmdaE\tqpPLqs3gpuZdSl)qpPLqs3gpuo?mZ)
-M1O*`dK%#Ef(YU+f(YU2ecDoRJ,~>
-!<E/uhYiuChYiuDh>k7]eH(;LiRIs]HgoPdK6tSf"cJVqeUr5GeHLSPe^];!Zdf)/Hi)=sK6u/!
-K7!4?!L/Lne[F!.^$"8HSG(h6SGh:FX8mb~>
-!<E/uhY`oDhY`oCh>k7deHX!NH\8]UV#G]@`VS*mXG_FPMp9eRMgLA`rmh%,"hfP8[+1uOHiM%o
-MgL)`e^]S9]n:[=eYN1ks2>,!H[CCYqUHs`HbIt[XFo&UHe$ZcMgL)`eZ=,:eXV!*eXWGc`J](q
-[+3]bMl_j8eHER4^"&YPHO.lKHe$Z!He"qkHiM%nMgL)`e^]S9XGbV]Hi)@nM\<^UHaL/4HaM>R
-`J](q[+3^GPl5qCe]!c"H],kneZ=[UH]-/!XG_F`XSC<GSGmj@c%CAneUr5!V#G`@`=7`PK='1Z
-Mi4Zpe\-=CJ^q6[!57RPpRLp5q4.B>!NZ9O~>
-!<E/uf)1s9f)1s8ec<G]dK[RNI>+uTU&KH?_YV[gY).RTM9=8LM1(5`rmLh+"hKD=ZI5HGIK..n
-OaVqhdaF,7\qP^@d\6Ygs2"o$JUN6\qU-aZICdkTV1m?KJ^Vu`OaVqhd].`4d[>O#d[?fW_NB8#
-ZI70\NMVX5dKI.0]$d#GI0duHJ^VttJ^U7kIK..mOaVqhdaF,7V2`oSJc!mqN=r[RJZcG8J[3_P
-_NB8#ZI71<Oo9\Bd`.E#I>tthd]SFTI>Q+pY).R`Y5$EFRJqU?b(5,ldXcttU&KK?_@;WUKsK.T
-NK'cod^FS8J^V$U!5@XIpR1^*q3h03!NlEQ~>
-!<E/uhY`oDhY`oCh>k7deHX!NH\8]UV#G]@`VS*mXG_FPMp9eRMgLA`rmh%,"hfP8[+1uOHiM%o
-MgL)`e^]S9]n:[=eYN1ks2>,!H[CCYqUHs`HbIt[XFo&UHe$ZcMgL)`eZ=,:eXV!*eXWGc`J](q
-[+3]bMl_j8eHER4^"&YPHO.lKHe$Z!He"qkHiM%nMgL)`e^]S9XGbV]Hi)@nM\<^UHaL/4HaM>R
-`J](q[+3^GPl5qCe]!c"H],kneZ=[UH]-/!XG_F`XSC<GSGmj@c%CAneUr5!V#G`@`=7`PK='1Z
-Mi4Zpe\-=CJ^q6[!57RPpRLp5q4.B>!NZ9O~>
-!<E/teb>U4eH!;\bmMFBK>!Lr`Pm1N^&#u1UjJ$,[%t[BH^)4.H`YK:K6rNHH\9S^H[EHFK7gk%
-Hc=6^H]+D@K?_A^HbI[^HaLJn^&#u$[!S%^c%Dh:K6tk^K7gk%Hc<[FXNcBEXNcC)`IifVP^CBo
-K6rNPrQQOVHc=7KH[EHNK6tkfK6tk^H[EHFK7gk%Hc=6^H]+]EMhCoO/q\M/S9oU@S9on5`IifV
-P^CBoK7h.fK6tkVXM(ufMp8&EMmTje`N4EN]p*lFq9:##H[EHNK6tkfK6tk^H[EHFK7gk%Hc=6^
-H]+]E`I",+c*tpt^$!oGSGC\8SFkA/SGUh;X8mb~>
-!<E/tdeB1.dK%#Zc3h^FKt<Ot`l<RX_YVP7V1"3+[]7?II?hO3IB(T<JUNBKI>,tdJUPDTJVC\#
-IE'Q`I>OYGL!I\hIDX9dIC?ku^A?,&[XFRhcAACCJUu+hJVC\#IE&jHWm6<HWm61(b(58XQ$pZt
-JUNBOrQZU\IE'RPJUPD\JUu+lJUu+dJUPDTJVC\#IE'Q`I>OfGM2D,T/qJG1Tm_?KTm_X?b(58X
-Q$pZpJVCtdKmh7\Y.h>mM9_rGM6aRi`i=HP^6O,Hq9C)%JUPD\JUu+lJUu+dJUPDTJVC\#IE'Q`
-I>OfG`dOP3cF;(!^?<oERJG82RInr)RJYD5XoNt~>
-!<E/teb>U4eH!;\bmMFBK>!Lr`Pm1N^&#u1UjJ$,[%t[BH^)4.H`YK:K6rNHH\9S^H[EHFK7gk%
-Hc=6^H]+D@K?_A^HbI[^HaLJn^&#u$[!S%^c%Dh:K6tk^K7gk%Hc<[FXNcBEXNcC)`IifVP^CBo
-K6rNPrQQOVHc=7KH[EHNK6tkfK6tk^H[EHFK7gk%Hc=6^H]+]EMhCoO/q\M/S9oU@S9on5`IifV
-P^CBoK7h.fK6tkVXM(ufMp8&EMmTje`N4EN]p*lFq9:##H[EHNK6tkfK6tk^H[EHFK7gk%Hc=6^
-H]+]E`I",+c*tpt^$!oGSGC\8SFkA/SGUh;X8mb~>
-!<E/sebPa5eH!;\bmCIuSB\-^XNcBEq98tnHc>s..t`2fc,G$^c-:lf`Q`aVc-:lfc)c8^c)c8n
-c%CA^c$Of^c%CAfc&6q=^%]bsK6tkVHc=6^Hd/X=SB\-^XNc*V`I!6%]mJ#*H^r?^H`YJEHi)%g
-P^EDS(k[1[c%CAfc%CAfc%CAfXF$J^XF%%nK7!=:(k[1Sc$OfVc$Of^XF$J^XF%%MH^r@*K7!UB
-#K=B/K?]$q`Vn$cK6tS^`I!74bnu([c-:lfc-:lfc-:lfc)c8^c)c8nc%CBAblN0UJ^([K!57RG
-!1`l8!1`]3qjdQ6!NZ9O~>
-!<E/sdeT=/dK%#Zc3^Y%TusNdY0MTLq9B%qIDYs..uA\ocGk9hcH^uh`m0-dcH^ulcE;Shb-$/q
-c@LD`c@LPlc@LPlcA?t?_Y;@UJKr=OIDX9\J^1EHTusNdY0MH\`dNQ/_L9S0IA+fdIBLkHIEMK5
-!L8*4cMrIqcMrIqcMrIqcMrG'cE;Shb-$/qc@LDdpWaV,IEKidIEKidJ^1EHTusNdY-NJHcH_,l
-rltbc^4D!`Kmgi:c3B,R`m2SPM>5BrJcF$qJcF$qJcF$qJIBc+IA+fdIBLkHIEMQ7!I^5acF;(!
-^?<oERJG82RInr)RJYD5XoNt~>
-!<E/sebPa5eH!;\bmCIuSB\-^XNcBEq98tnHc>s..t`2fc,G$^c-:lf`Q`aVc-:lfc)c8^c)c8n
-c%CA^c$Of^c%CAfc&6q=^%]bsK6tkVHc=6^Hd/X=SB\-^XNc*V`I!6%]mJ#*H^r?^H`YJEHi)%g
-P^EDS(k[1[c%CAfc%CAfc%CAfXF$J^XF%%nK7!=:(k[1Sc$OfVc$Of^XF$J^XF%%MH^r@*K7!UB
-#K=B/K?]$q`Vn$cK6tS^`I!74bnu([c-:lfc-:lfc-:lfc)c8^c)c8nc%CBAblN0UJ^([K!57RG
-!1`l8!1`]3qjdQ6!NZ9O~>
-!<E/rebbm6eH!;\blFR;HNU(gK7!F=s*O[gs*Oais*Odj$\NfNc%CAfc%CAfV#5QQUs4O=c-:lf
-c-:lfc-=4lH[C[aq998:H`W`qc-:lfc(t8a$`)%*K<1<%K<1!UV#5QAUs4O=qoo/+HiD8#K6tkf
-K6tkfK6tkfK6tk=r-JOAc%CB:bmT/Nc-:lfc-:lfc(t8as.g0PUs7/:Hd06VK8Y)/c$Og8c2W.i
-c2W.cbn#GRc-:lfc-:lfc-:lfc(t8a"/O1oHi;1iH^'*+\'4odr7(e\q4%Gup=0/5q:,J8p!rl.
-r7(hL!.Y~>
-!<E/rdefI0dK%#Zc2a^=I06=kJV!XBs*agj!J,[ucMr=mcMrIqcMrIqcMrFrcDCGe';a!*J^2Pl
-J^2PlJ^2QXQ$n(?^A6%]SUIZ3NR#h#J^1+iI1)msOb'ZtR>%Z#cDCGe"/X:oJc!^nQ$rYWs+13q
-s+13qs+13qs+(3rV>P`DV9XXCp<N\hs3CXqs3CXq!R@P>IK-,SIA+s3Kmh7XKn553L!G*pr6>=o
-IK%OlIJD+fJcF$qJcF$qJcF$qJH=&mr-\[Dc@LQFc2i?YJ^1aM!5ABZ!4quo!4qmP!1EZ2!1EN.
-q3h0/!NlEQ~>
-!<E/rebbm6eH!;\blFR;HNU(gK7!F=s*O[gs*Oais*Odj$\NfNc%CAfc%CAfV#5QQUs4O=c-:lf
-c-:lfc-=4lH[C[aq998:H`W`qc-:lfc(t8a$`)%*K<1<%K<1!UV#5QAUs4O=qoo/+HiD8#K6tkf
-K6tkfK6tkfK6tk=r-JOAc%CB:bmT/Nc-:lfc-:lfc(t8as.g0PUs7/:Hd06VK8Y)/c$Og8c2W.i
-c2W.cbn#GRc-:lfc-:lfc-:lfc(t8a"/O1oHi;1iH^'*+\'4odr7(e\q4%Gup=0/5q:,J8p!rl.
-r7(hL!.Y~>
-!<E/qebu$7eH!;\blXtnSG^V4K7!F=!eYj5rQQ+1Hc=7KH\9SfK6tkfK6tkfK6tkEH^t#Y$%mTL
-c%CAfc%CBAblbq\H\;.=%)%"GK<3>BK6tkEH^t#Y$`&--Uo\p$Us5ufSG^V4K7!L?(8Q;rc-:lf
-c-:lfc-:lfc-:lfc)c8^r657pHhP\nK6tkfK6tkfK6tkEH^t&Z&Zg>Lc-:T^c&6qnc%CYnK6t<1
-bm&fI`QcAKKD<\'K6tkfK6tkfK6tkfK6tkEH^t#Y!J>aublYk2S:SqoblGHTeb>U-eGu-8eGu-5
-eb>U4eH)`OJ,~>
-!<E/qdf#U1dK%#Zc2t.sU&<49JbdRmKmg]6c5)7b`m2SPM9aCtJ^2PlJ^2PlJ^1EHU&<49JcF$q
-JcF$qJc3jr`h@g7q9BD[I>rfXcH^ulcE;Shr6>\DI>t)'I>srGY'm#AcMrImc5*+%`m2k\J^2Pl
-J^2PlJ^2PlJ^1EHU&<49JbIChJcF$qJcF$qJHO3#IA-Vb&[$PMcH:]dcAdCtc@pttKmg]6c3B,R
-`m2SPM>5BrJcF$qJcF$qJcF$qJHO3#IA-Sas+10p!lfY^J^1aM!5ABZpR1a'!1EZ2!1EQ/pR2!.
-!NlEQ~>
-!<E/qebu$7eH!;\blXtnSG^V4K7!F=!eYj5rQQ+1Hc=7KH\9SfK6tkfK6tkfK6tkEH^t#Y$%mTL
-c%CAfc%CBAblbq\H\;.=%)%"GK<3>BK6tkEH^t#Y$`&--Uo\p$Us5ufSG^V4K7!L?(8Q;rc-:lf
-c-:lfc-:lfc-:lfc)c8^r657pHhP\nK6tkfK6tkfK6tkEH^t&Z&Zg>Lc-:T^c&6qnc%CYnK6t<1
-bm&fI`QcAKKD<\'K6tkfK6tkfK6tkfK6tkEH^t#Y!J>aublYk2S:SqoblGHTeb>U-eGu-8eGu-5
-eb>U4eH)`OJ,~>
-!<E/pec208eH!;[bmB#LUpR51c%CAMqTUjuH\8E5XMq8fPeE<.XNf"BHd0ffHd0ffHaLbEH_e$M
-[*=5Mc-:lfc-:lf[*>DR]sN-Eprt%9H[E`Vc%CAfc%CA=[&gXZ[!R/5]mG+5c-:lfUpR51c%CB?
-boOKE[*?jJHd0ffHd0ffHd0ffHaLbEH_e$M[*=5MrlkJ%KDWnGK6tkfK6tkfK6tkfK6sE$XL,rn
-H_cRHHd.IqXK6bq]rZR5XM(^SXF$2FP^BM,bnu([c-:lfc-:lfc-:lf[)IZEUpR51c%CBBblY8!
-]n+G;blGHTeb>U-eGu-8eGu-5ebu$<ebu$:eH)`OJ,~>
-!<E/pcMs1*c2bTVapZ4CIAOBTZHA#P[`83e1obtXY-t@IWdU/DQ$oLOb(5,db(5,db)(PT_M*E7
-[]ZpYJUttdJUttdM1)hPTsDD<I>RaA,DCPo`lcGTJ]budIAOBTZHBV(IC?_8IC@;<Kmff+Y-Q3$
-Jc!S1\p^a(b(5,db(5,db(5,db)(PT_M*E7[]ZpYJV!gCs,$Wqs+13ms+13ms+)H<`eAi;[]ZpQ
-I=7fGI=97pIB';qID2_0Ks%ka_Q&$L\s7]?pr`Vfs2t@ms2t@ms2kb,IC@"HIAOBTZH@`LrlP;F
-IC=^L\&n]br6G&%p<EZ'q9Au*p<NW%s3CS.rQYGH!.Y~>
-!<E/pec208eH!;[bmB#LUpR51c%CAMqTUjuH\8E5XMq8fPeE<.XNf"BHd0ffHd0ffHaLbEH_e$M
-[*=5Mc-:lfc-:lf[*>DR]sN-Eprt%9H[E`Vc%CAfc%CA=[&gXZ[!R/5]mG+5c-:lfUpR51c%CB?
-boOKE[*?jJHd0ffHd0ffHd0ffHaLbEH_e$M[*=5MrlkJ%KDWnGK6tkfK6tkfK6tkfK6sE$XL,rn
-H_cRHHd.IqXK6bq]rZR5XM(^SXF$2FP^BM,bnu([c-:lfc-:lfc-:lf[)IZEUpR51c%CBBblY8!
-]n+G;blGHTeb>U-eGu-8eGu-5ebu$<ebu$:eH)`OJ,~>
-!<E/feH!;[bmMFSH[CCHc*W+M^&#t]XG_FPMoErBK6r6Prll^@Hd0ffHd0gBK6t;NP^@b0XNcBE
-c-:lfc-<VJHbGYrH[D!rprrl9H^+NS&VGGTc,GooH\8EEc$Of^c$Og:bm;:QH[CCHc%CB>c2W_%
-bnu([c-:lfc-:lfc-<VJHbIC_H[CCHc%CBBblNHDqop^FHd0ffHd0ffHd0gSP^@b0XNdi!K=$8X
-c*W+MS>:M%c)chMH],kfXFkkPXS9sVK6tkfK6tkfK6tkf["E_=`KY^rK<3=MHiD:iMh0-]blGHT
-eH!;YS,g7reb>U,ec20<ec20;eH)`OJ,~>
-!<E/fc2bTUapQ"NJUN6Tb-HSL])'PWWel.PM8%-/KmeZTrlY7ls2t@ms2l=eJUtDLQ%=@;Y0)<H
-b0#9db0%#@J\%+tI=[ZtprWZ3I?FNOs+13m)8_YiI>+iH`dN9Xb'e]Xb0%SdJUN6Tb(5-?b5[J$
-b5[%mb5[%mb5[%mapbS,J\&^`JUN6Tb(5-Cb5[%ib5[%mb5[%mb5[%mas"WeJUN6Tb-$;LZA!kP
-[Y9.#Tm`?OWel.PM8%-/KmeZTpWEMes2t@ms2t@ms2kbUJUtDLQ%=@;Y0)<HrlY8#J]bFD!5ABV
-!4M]g!4MUHpQbEss-<Q.s-<N-!NlEQ~>
-!<E/feH!;[bmMFSH[CCHc*W+M^&#t]XG_FPMoErBK6r6Prll^@Hd0ffHd0gBK6t;NP^@b0XNcBE
-c-:lfc-<VJHbGYrH[D!rprrl9H^+NS&VGGTc,GooH\8EEc$Of^c$Og:bm;:QH[CCHc%CB>c2W_%
-bnu([c-:lfc-:lfc-<VJHbIC_H[CCHc%CBBblNHDqop^FHd0ffHd0ffHd0gSP^@b0XNdi!K=$8X
-c*W+MS>:M%c)chMH],kfXFkkPXS9sVK6tkfK6tkfK6tkf["E_=`KY^rK<3=MHiD:iMh0-]blGHT
-eH!;YS,g7reb>U,ec20<ec20;eH)`OJ,~>
-!<E/feH!;Qc2)be^!4guHN:b0blYk:XMrEbH\:V.qKi4Uk03t/K>iDd[`nfc`74mi!.Y~>
-!<E/fc2bTKb5-Md]$8CoI/pk/ao]G2V8gXZ`dNR+b5-Md]&q-:We&$<b-oFm^;S:tXoNt~>
-!<E/feH!;Qc2)be^!4guHN:b0blYk:XMrEbH\:V.qKi4Uk03t/K>iDd[`nfc`74mi!.Y~>
-!<E/fblGG.`<+#lUrpX\[$7AfMgLu7`;udJJ]5%9!56=q!NZ9O~>
-!<E/faoK/,`WF/oTut@Z[ZRSiNI@M@`W;dIJ]>+;!5?Co!NlEQ~>
-!<E/fblGG.`<+#lUrpX\[$7AfMgLu7`;udJJ]5%9!56=q!NZ9O~>
-!<E/fblGG.`Q,q$]p+.rK;=(;J]7E'!56=q!NZ9O~>
-!<E/faoK/,`lH(&^6*tpKqX(;J]@K)!5?Co!NlEQ~>
-!<E/fblGG.`Q,q$]p+.rK;=(;J]7E'!56=q!NZ9O~>
-!<E/fblGG.`IZ!Z`ONke]u8.rX8mb~>
-!<E/faoK/,`du-\`jj"g^;S.pXoNt~>
-!<E/fblGG.`IZ!Z`ONke]u8.rX8mb~>
-!!%S&JV/N+JV3$9!!%N~>
-!!%S$JUrB'JUum5!!%N~>
-!!%S&JV/N+JV3$9!!%N~>
-!<E0!joD3.s+13$s+14<rro4uk2s>WJ,~>
-!<E0!joD*+s+13$s+14<rro+rk2s5TJ,~>
-!<E0!joD3.s+13$s+14<rro4uk2s>WJ,~>
-!<E0!joD3.s+13$s+14=rs"+Os5rIW!.Y~>
-!<E0!joD*+s+13$s+14=rs"%Js5rIT!.Y~>
-!<E0!joD3.s+13$s+14=rs"+Os5rIW!.Y~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV7Vs+/mTg4@t/g@EttJH_bIk2s5TJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV7Vs+/mTg4@t/g@EttJH_bIk2s5TJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV7Vs+/mTg4@t/g@EttJH_bIk2s5TJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV7Vs+/mTg4@t/g@EttJH_bIk2s5TJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV7Vs+/mTg4@t/g@EttJH_bIk2s5TJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV7Vs+/mTg4@t/g@EttJH_bIk2s5TJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV7Vs+/mTg4@t/g@EttJH_bIk2s5TJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:A!!:[N!:889!<1OK!!:[N!;tCI!:/25!9Mc2!:SJ6!!^sR!7fU"!.i[OeV)KQ
-K*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IF!!:jS!:8G>!<1^P!!:jS!;tRN!:/A:!9Mr7!:SY;!!_-W!8?-,!.ijTg4\2[
-JH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:A!!:[N!:889!<1OK!!:[N!;tCI!:/25!9Mc2!:SJ6!!^sR!7fU"!.i[OeV)KQ
-K*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!;b7G!:889!<1OK!;Y1F!:889!<1OK!9Vi3!:SJ<!;b7G!<:UL!.i[OeV)KQ
-K*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IL!;bFL!:8G>!<1^P!;Y@K!:8G>!<1^P!9W#8!:SYA!;bFL!<:dQ!.ijTg4\2[
-JH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:G!;b7G!:889!<1OK!;Y1F!:889!<1OK!9Vi3!:SJ<!;b7G!<:UL!.i[OeV)KQ
-K*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<1OK!"7<W!7fU"!7_&Le^aTuo%!a?rmh#Ks4.&J
-rmgrIs4.,L"4[AOeboLJec,UNeGoU?ec,XJec,UOeGoU"r;clJr;clJrr</O!!(RJ!.i[OeX+hd
-K*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IL!<(XO!!M!U!8?0*!:nkD!<1^P!"7K\!8?-,!87DQg=lK*o%O*Drn@APs4[DO
-rn@;Ns4[JQ"53_TgAM$OgA_-Sg&M-DgA_0OgA_-Tg&M-,r;clOr;clOrr</T!!(aO!.ijTg6^On
-JH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<1OK!"7<W!7fU"!7_&Le^aTuo%!a?rmh#Ks4.&J
-rmgrIs4.,L"4[AOeboLJec,UNeGoU?ec,XJec,UOeGoU"r;clJr;clJrr</O!!(RJ!.i[OeX+hd
-K*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@rmh#K#1W\ReGoU"rW!/Q!!(R"!!)T?rW)oI
-rrE)Lrr<;S!!(R"!!(RG!<:UL!!(RK!!:[N!;"b@!<(IJ!"[T[!7fU"!7fU"!7fU"!7goGs4.,L
-J^o>%R+;4h"f21\k.LbF~>
-!<E0!joV7Vs8(IL!<(XO!"%?Z!87DQg=cN,o@j3Ern@AP#20%Wg&M-,rW!/V!!(a,!!)TDrW)oN
-rrE)Qrr<;X!!(a,!!(aL!<:dQ!!(aP!!:jS!;"qE!<(XO!"[c`!8?-,!8?-,!8?-,!8@8Ls4[JQ
-J_G\/R+hRk"ektYk.1PC~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@rmh#K#1W\ReGoU"rW!/Q!!(R"!!)T?rW)oI
-rrE)Lrr<;S!!(R"!!(RG!<:UL!!(RK!!:[N!;"b@!<(IJ!"[T[!7fU"!7fU"!7fU"!7goGs4.,L
-J^o>%R+;4h"f21\k.LbF~>
-!<E0!joV@Ys8(:D!"@BX!7_&LeGoU"eGoU@ebT7WeGoU"!!(R"!!(OL!7fU"!:\P<!<:UL!<:UL
-!;tCI!!(RK!<:UL!;tCI!<:UL!;"b=!#!f^!7_&Le^XX"e^XX"e^XX"ec#RKec#Q"eUc89ec17*
-V#TT>]`<Q~>
-!<E0!joV7Vs8(II!"@Q]!87DQg&M-,g&M-EgA1d\g&M-,!!(a,!!(^Q!8?-,!:\_A!<:dQ!<:dQ
-!;tRN!!(aP!<:dQ!;tRN!<:dQ!;"qB!#!uc!87DQg=cN,g=cN,g=cN,gAV*PgAV)'g4@tCgAc^-
-U&X9;\c@6~>
-!<E0!joV@Ys8(:D!"@BX!7_&LeGoU"eGoU@ebT7WeGoU"!!(R"!!(OL!7fU"!:\P<!<:UL!<:UL
-!;tCI!!(RK!<:UL!;tCI!<:UL!;"b=!#!f^!7_&Le^XX"e^XX"e^XX"ec#RKec#Q"eUc89ec17*
-V#TT>]`<Q~>
-!<E0!joV@Ys8(:G!<(IJ!!CaO!7grHo@<j@rmh#K$Io+VeGoU"eGoU"qZ-*8rVurKqZ-ZHqu?fK
-!!*#KrrDuIrrE)LrrDZ@rrE#Jrr<>T!!(R"!!(R"qZ$]J!!)rIrW%N"J^p+;s+:KNs5rIW!.Y~>
-!<E0!joV7Vs8(IL!<(XO!!CpT!8@;Mo@j3Ern@AP$JGI[g&M-,g&M-,qZ-*=rVurPqZ-ZMqu?fP
-!!*#PrrDuNrrE)QrrDZErrE#Orr<>Y!!(a,!!(a,qZ$]O!!)rNrW%N'J_HIEs+(?Is5rIT!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!!CaO!7grHo@<j@rmh#K$Io+VeGoU"eGoU"qZ-*8rVurKqZ-ZHqu?fK
-!!*#KrrDuIrrE)LrrDZ@rrE#Jrr<>T!!(R"!!(R"qZ$]J!!)rIrW%N"J^p+;s+:KNs5rIW!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!!UmQ!7_&Ln(%F<rmh#K%+P=XeGoU"eGoU"!!)K<rrE&Krr<,N!!)rI
-rrE)Lrr<,N!!*#KrrDuIrrE)LrrDZ@rrE#Jrr<DV!!(R"!!(R"!!)rIrrDrHrW%N"J^p.<s+:KN
-s5rIW!.Y~>
-!<E0!joV7Vs8(IL!<(XO!!V'V!87DQn(RdArn@AP%,([]g&M-,g&M-,!!)KArrE&Prr<,S!!)rN
-rrE)Qrr<,S!!*#PrrDuNrrE)QrrDZErrE#Orr<D[!!(a,!!(a,!!)rNrrDrMrW%N'J_HLFs+(?I
-s5rIT!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!!UmQ!7_&Ln(%F<rmh#K%+P=XeGoU"eGoU"!!)K<rrE&Krr<,N!!)rI
-rrE)Lrr<,N!!*#KrrDuIrrE)LrrDZ@rrE#Jrr<DV!!(R"!!(R"!!)rIrrDrHrW%N"J^p.<s+:KN
-s5rIW!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@rmh#K#1W\ReGoU"rW!/Q!!(R"!!)W@rrE&K
-rr<V\!!(R"!!(OL!7fU"!7_&Lrmh#Ks4.,L#1W\Re^XX"o@<j@rRLoJ#LreSe^XX"ec#RKec,UN
-eGoUKec,XLec,W#eUc8<ec17*V#TT>]`<Q~>
-!<E0!joV7Vs8(IL!<(XO!"%?Z!87DQg=cN,o@j3Ern@AP#20%Wg&M-,rW!/V!!(a,!!)WErrE&P
-rr<Va!!(a,!!(^Q!8?-,!87DQrn@APs4[JQ#20%Wg=cN,o@j3ErS%8O#MK.Xg=cN,gAV*PgA_-S
-g&M-PgA_0QgA_/(g4@tFgAc^-U&X9;\c@6~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@rmh#K#1W\ReGoU"rW!/Q!!(R"!!)W@rrE&K
-rr<V\!!(R"!!(OL!7fU"!7_&Lrmh#Ks4.,L#1W\Re^XX"o@<j@rRLoJ#LreSe^XX"ec#RKec,UN
-eGoUKec,XLec,W#eUc8<ec17*V#TT>]`<Q~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<1OK!"7<W!7fU"!7_&Le^aTun^[O;rmgrIrmguJ
-!7h#JrRLiHs4.,Ls4.,Lo@<j@rRLoJ!n@8Nrmh#Ks4.&Js4.,LrRLiHJ^o>%Qdu+g"f21\k.LbF~>
-!<E0!joV7Vs8(IL!<(XO!!M!U!8?0*!:nkD!<1^P!"7K\!8?-,!87DQg=lK*n_3m@rn@;Nrn@>O
-!8@AOrS%2Ms4[JQs4[JQo@j3ErS%8O!nmVSrn@APs4[DOs4[JQrS%2MJ_G\/QeMIj"ektYk.1PC~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<1OK!"7<W!7fU"!7_&Le^aTun^[O;rmgrIrmguJ
-!7h#JrRLiHs4.,Ls4.,Lo@<j@rRLoJ!n@8Nrmh#Ks4.&Js4.,LrRLiHJ^o>%Qdu+g"f21\k.LbF~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV7Vs+/mTg4@t/g@EttJH_bIk2s5TJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV7Vs+/mTg4@t/g@EttJH_bIk2s5TJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV7Vs+/mTg4@t/g@EttJH_bIk2s5TJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV7Vs+/mTg4@t/g@EttJH_bIk2s5TJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV7Vs+/mTg4@t/g@EttJH_bIk2s5TJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV7Vs+/mTg4@t/g@EttJH_bIk2s5TJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joV7Vs+/mTg4@t/g@EttJH_bIk2s5TJ,~>
-!<E0!joV@Ys+/^OeUc8%eah8jK*A(Nk2s>WJ,~>
-!<E0!joD3.eUc8%eUc9=eHMcKk2s>WJ,~>
-!<E0!joD*+g4@t/g4@uGg'+2Mk2s5TJ,~>
-!<E0!joD3.eUc8%eUc9=eHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eUl?>K*Kl%s5rIW!.Y~>
-!<E0!joD*+g4@t/g4J&HJHji%s5rIT!.Y~>
-!<E0!joD3.eUc8%eUl?>K*Kl%s5rIW!.Y~>
-!<E0!joV@/eU_IdC4U,TCAucPK*VG,V#TT>]`<Q~>
-!<E0!joV71g4=g+JUrB-Jc=BlJHu5/U&X9;\c@6~>
-!<E0!joV@/eU`X0Mh-eAMuM8qK*VG,V#TT>]`<Q~>
-!<E0!joV@/eU_IdC4U,UC&m]$ec19u]`<]]^&S*:eYN6-k.LbF~>
-!<E0!joV71g4=g+JUrB.JH5`LgAca#_>o/`_Z0W?g7eQ/k.1PC~>
-!<E0!joV@/eU`X0Mh-eBMZEeVec19u]`<]]^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KDW=_s+C0]s8N;RV#TT>]`<Q~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJc!:bs+1$`s8N;WU&X9;\c@6~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKDW=_s+C0]s8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KDW=`s+>t$^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJc!:cs+,au_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKDW=`s+>t$^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KD`F_s8R`K^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJc*Cbs8RZI_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKD`F_s8R`K^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMX8o@#!;rqs!.h5&XI60imf(c:KD`F_rrU`'KD`F_rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g&Tk*!;tRL!.ijTg6p[ps8LaPJc*CbrrUo*Jc*Cbrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:joFQB!;u!X!.j9`k*bB3s8LRKKD`F_rrU`'KD`F_rs%#Ls5rIW!.Y~>
-!<E0!joqR2eS8j#qZ-Srq>gPsq>gMrrW)hsquHbuquHAjquHYrq>^MsrW)r!rVur"q>^MsquH#`
-!!)u!!!*#"!!)u!!!%SOJZP<As6fm:s+C9`s8W,Ls+C6_s8N;RV#TT>]`<Q~>
-!<E0!joqI4g4=h/qZ-TKq>gQLq>gNKrW)iLquHcNquHBCquHZKq>^NLrW)rOrVurPq>^NLquH$9
-!!)uO!!*#P!!)uO!!%T(J_HRHs8W)Ps+1-cs8W,Qs+1*bs8N;WU&X9;\c@6~>
-!<E0!joqR2eVf@JqZ-TWq>gQXq>gNWrW)iXquHcZquHBOquHZWq>^NXrW)r[rVur\q>^NXquH$E
-!!)u[!!*#\!!)u[!!%T4J``E`s8W)Ks+C9`s8W,Ls+C6_s8N;RV#TT>]`<Q~>
-!<E0!jp.^4eS8j#X8r4#!!)u!!!)u!#lq'.!3E7%XK2F"X8i7rX8i7tX8i7iX8i7rX8i8!X9/I(
-X8r1"!!*#"!!)u!!!*#"!!)5a!!)u!!!*#"!!)u!!!%SOJZP<As6fm:s+C9`s8W)Ks+C9`s8N;R
-V#TT>]`<Q~>
-!<E0!jp.U6g4=h/g&V**!!)uO!!)uO#lr]5!8?-,g=cQ)g&M-Kg&M-Mg&M-Bg&M-Kg&M-Og&h?/
-g&V')!!*#P!!)uO!!*#P!!)6:!!)uO!!*#P!!)uO!!%T(J_HRHs8W)Ps+1-cs8W)Ps+1-cs8N;W
-U&X9;\c@6~>
-!<E0!jp.^4eVf@JjoGAB!!)u[!!)u[#ls,M!9WDDk2l[Ajo>DWjo>DYjo>DNjo>DWjo>D[joYVG
-joG>A!!*#\!!)u[!!*#\!!)6F!!)u[!!*#\!!)u[!!%T4J``E`s8W)Ks+C9`s8W)Ks+C9`s8N;R
-V#TT>]`<Q~>
-!<E0!jp.^4eS8j#X8r1"!!*#"!!)u!#lq'.!3E7%XK2F#X9&C'!;`bs!;iht!:[&i!;W\r!<&u$
-!3E7%r2]kuri?)"rN#u!ri?)"poOJqo;holrN#u!ri?)"rN#u!JZOF(R]QPWrmh%$rk8@3rRLq#
-rOr72#1]OLk2s>WJ,~>
-!<E0!jp.U6g4=h/g&V')!!*#P!!)uO#lr]5!8?-,g=cQ*g&_9.!;bCL!;kIM!:\\B!;Y=K!<(UR
-!8?-,r7V,Nrn7>PrRq5Orn7>PptG`Jo@a0ErRq5Orn7>PrRq5OJ_G\/RbIfArn@C'rke^8rS%:&
-rPJU7#25dNk2s5TJ,~>
-!<E0!jp.^4eVf@JjoG>A!!*#\!!)u[#ls,M!9WDDk2l[BjoPPF!;bgX!;kmY!:]+N!;YaW!<)$^
-!9WDDr8mtZroO1\rT4([roO1\pu_SVoB$#QrT4([roO1\rT4([J`_OGRcaYMrmh%$rk8@3rRLq#
-rOr72#1]OLk2s>WJ,~>
-!<E0!jp.^4eS8j#X8r1"!!*#"!s#F(!;`bs!;`bu!3?1sX8i7tX8i7iX8i7rX9/I(X8r1"!!*#"
-!!)u!!s#F(!;rnu!;NYq!:m5i!<&u!!<&u!!.h5&XI?6jmf(c:KDrRas8:FIKDrRars%#Ls5rIW
-!.Y~>
-!<E0!jp.U6g4=h/g&V')!!*#P!s%'/!;bCL!;bCN!87GLg&M-Mg&M-Bg&M-Kg&h?/g&V')!!*#P
-!!)uO!s%'/!;tON!;P:J!:nkB!<(UO!<(UO!.ijTg7$aqs8LaPJc<Ods8:UNJc<Odrs%2Ns5rIT
-!.Y~>
-!<E0!jp.^4eVf@JjoG>A!!*#\!s%KG!;bgX!;bgZ!9O:Xjo>DYjo>DNjo>DWjoYVGjoG>A!!*#\
-!!)u[!s%KG!;tsZ!;P^V!:o:N!<)$[!<)$[!.j9`k*kH4s8LRKKDrRas8:FIKDrRars%#Ls5rIW
-!.Y~>
-!<E0!jp.^4eS8j#X8r1"!!*#"r;c\q!!)nt!!*#"!!)nt!!)nt!!)Mi!!)hrr;cbs!!*#"!!)u!
-r;cbs!!)5a!!)u!!!*#"!!)u!!!%SOJZP<As6fm:s+C?bs8VuHs+C<as8N;RV#TT>]`<Q~>
-!<E0!jp.U6g4=h/g&V')!!*#Pr;c]J!!)oM!!*#P!!)oM!!)oM!!)NB!!)iKr;ccL!!*#P!!)uO
-r;ccL!!)6:!!)uO!!*#P!!)uO!!%T(J_HRHs8W)Ps+13es8VuMs+10ds8N;WU&X9;\c@6~>
-!<E0!jp.^4eVf@JjoG>A!!*#\r;c]V!!)oY!!*#\!!)oY!!)oY!!)NN!!)iWr;ccX!!*#\!!)u[
-r;ccX!!)6F!!)u[!!*#\!!)u[!!%T4J``E`s8W)Ks+C?bs8VuHs+C<as8N;RV#TT>]`<Q~>
-!<E0!jp.^4eS8j#X8r1"!!*#"!s#F(!;`bs!;ikq!;iht!;iht!<&u!!;3Dn!<&u!!<0&%!3E7%
-qlBi!X8r1"!s#F(!;rnu!<&u!!:?if!<&u!!<0&"!<&u!!.h5&XI?6jmf(c:KE&Xbs8(:GKE&Xb
-rs%#Ls5rIW!.Y~>
-!<E0!jp.U6g4=h/g&V')!!*#P!s%'/!;bCL!;kLJ!;kIM!;kIM!<(UO!;5%G!<(UO!<1[S!8?-,
-qq;)Og&V')!s%'/!;tON!<(UO!:AJ?!<(UO!<1[P!<(UO!.ijTg7$aqs8LaPJcEUes8(ILJcEUe
-rs%2Ns5rIT!.Y~>
-!<E0!jp.^4eVf@JjoG>A!!*#\!s%KG!;bgX!;kpV!;kmY!;kmY!<)$[!;5IS!<)$[!<2*_!9WDD
-qrRq[joG>A!s%KG!;tsZ!<)$[!:AnK!<)$[!<2*\!<)$[!.j9`k*kH4s8LRKKE&Xbs8(:GKE&Xb
-rs%#Ls5rIW!.Y~>
-!<E0!jp.^4eS8j#X8r1"!!*#"!!)u!!!)qu!!)qu!!)qu!!)qu!!)nt!!)u!!!)\n!!)u!!!*#"
-!!)u!!!)u!!W];%r2]kurN#u!ri?)"rN#u!mAp9frN#u!ri?)"rN#u!JZOF(R]QPWrmh%$!knX6
-q:5Lts1SI4#1]OLk2s>WJ,~>
-!<E0!jp.U6g4=h/g&V')!!*#P!!)uO!!)rN!!)rN!!)rN!!)rN!!)oM!!)uO!!)]G!!)uO!!*#P
-!!)uO!!)uO!W^pSr7V,NrRq5Orn7>PrRq5OmFhO?rRq5Orn7>PrRq5OJ_G\/RbIfArn@C'!lG!;
-q:bk"s2+g9#25dNk2s5TJ,~>
-!<E0!jp.^4eVf@JjoG>A!!*#\!!)u[!!)rZ!!)rZ!!)rZ!!)rZ!!)oY!!)u[!!)]S!!)u[!!*#\
-!!)u[!!)u[!W_?_r8mtZrT4([roO1\rT4([mH+BKrT4([roO1\rT4([J`_OGRcaYMrmh%$!knX6
-q:5Lts1SI4#1]OLk2s>WJ,~>
-!<E0!jp.^4eS8j#X8r4#!!)u!!!)u!!!)qu!!)qu!!)qu!!)qu!!)nt!!)u!!!)\n!!)u!!!*#"
-!!)u!!!)qu!!)nt!!)u!!!*#"!!)u!!!)u!rrDYl!!)u!!!*#"!!)u!!!%SOJZP<As6fm:s+:Bd
-s8VlEs+:Wks8UWFs5rIW!.Y~>
-!<E0!jp.U6g4=h/g&V**!!)uO!!)uO!!)rN!!)rN!!)rN!!)rN!!)oM!!)uO!!)]G!!)uO!!*#P
-!!)uO!!)rN!!)oM!!)uO!!*#P!!)uO!!)uOrrDZE!!)uO!!*#P!!)uO!!%T(J_HRHs8W)Ps+(6g
-s8VlJs+(Kns8UfHs5rIT!.Y~>
-!<E0!jp.^4eVf@JjoGAB!!)u[!!)u[!!)rZ!!)rZ!!)rZ!!)rZ!!)oY!!)u[!!)]S!!)u[!!*#\
-!!)u[!!)rZ!!)oY!!)u[!!*#\!!)u[!!)u[rrDZQ!!)u[!!*#\!!)u[!!%T4J``E`s8W)Ks+:Bd
-s8VlEs+:Wks8UWFs5rIW!.Y~>
-!<E0!joqR2eS8j#qZ-Srq>gMrquHbur;Zi!r;cl!quHbuq#L/jq#LGrq>gGp!!)quq>^Msq#LAp
-rrDVkr;cbsr;_DMJZP9@s6fm:s+C@Oon*Ras8UWFs5rIW!.Y~>
-!<E0!joqI4g4=h/qZ-TKq>gNKquHcNr;ZiOr;clOquHcNq#L0Cq#LHKq>gHI!!)rNq>^NLq#LBI
-rrDWDr;ccLr;_E&J_HOGs8W)Ps+14MommFds8UfHs5rIT!.Y~>
-!<E0!joqR2eVf@JqZ-TWq>gNWquHcZr;Zi[r;cl[quHcZq#L0Oq#LHWq>gHU!!)rZq>^NXq#LBU
-rrDWPr;ccXr;_E2J``B_s8W)Ks+C@Oon*Ras8UWFs5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:K)krCKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJH5`AJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKK)krCKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KCJmFeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJai[Dg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKCJmFeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KCf*LKE(u%V#TT>]`<Q~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJb/mJJcGc(U&X9;\c@6~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKCf*LKE(u%V#TT>]`<Q~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXGX(Z!.h5(XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g5=Sa!.ijVgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k)/:$!.j9bk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!joqR2eS8j#quHVqrW)ktqZ-Vsq>^MsquEau!!':*rW)/`!W];%r2fnuJZOL*s6fm:s+C@O
-p=91qs8N;RV#TT>]`<Q~>
-!<E0!joqI4g4=h/quHWJrW)lMqZ-WLq>^NLquEbN!!':XrW)09!W^pSr7_/NJ_Gb1s8W)Ps+14M
-p=fOts8N;WU&X9;\c@6~>
-!<E0!joqR2eVf@JquHWVrW)lYqZ-WXq>^NXquEbZ!!':drW)0E!W_?_r9""ZJ`_UIs8W)Ks+C@O
-p=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i7pX8i7tX8i8!X8i8"X8i8!X8i8"X8i7!X8i7(X8i7aX9&C'!<&u#!3?0O
-XFmVSmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Ig&M-Mg&M-Og&M-Pg&M-Og&M-Pg&M,Og&M,Vg&M-:g&_9.!<(UQ!87F(
-g4S,Zs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>DUjo>DYjo>D[jo>D\jo>D[jo>D\jo>C[jo>Cbjo>DFjoPPF!<)$]!9O94
-k(Dgrs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i7qX9&C'!;rnu!<&u!!<0&"!<&u!!<0&"!;NYq!48j*!<'#!!<9/#!<'"t
-!<0)"!!',"!;rqr!;3Gn!<9/#!;rqt!<0)"!!',"!;`bs!<'"u!<9/"!;*>o!3?1tX8i6OXFmVS
-mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Jg&_9.!;tON!<(UO!<1[P!<(UO!<1[P!;P:J!4:JX!<(XO!<:dQ!<(XM
-!<1^P!!(aP!;tRK!;5(G!<:dQ!;tRM!<1^P!!(aP!;bCL!<(XN!<:dP!;+tH!87GMg&M,(g4S,Z
-s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>DVjoPPF!;tsZ!<)$[!<2*\!<)$[!<2*\!;P^V!4:nd!<)'[!<;3]!<)'Y
-!<2-\!!)0\!;u!W!;5LS!<;3]!;u!Y!<2-\!!)0\!;bgX!<)'Z!<;3\!;,CT!9O:Yjo>C4k(Dgr
-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i7qX9&C'!;rnu!<&u!!<0&%!3E7%r2]kupoOJqZ`F-,q5ai%X8o?'!3E7%
-rN#u!riH,"ri?)"ri?)"rN#u!oW/2rX8o?'!<0&"!<0&"!<0)"!<0&"!;iht!;rnu!<&u!!;*Aj
-!;rnu!.h5(XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hSg&M-Jg&_9.!;tON!<(UO!<1[S!8?-,r7V,NptG`JZe>BZq:Z)Sg&Tj\!8?-,
-rRq5Orn@APrn7>Prn7>PrRq5Oo\'HKg&Tj\!<1[P!<1[P!<1^P!<1[P!;kIM!;tON!<(UO!;,"C
-!;tON!.ijVgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@bjo>DVjoPPF!;tsZ!<)$[!<2*_!9WDDr8mtZpu_SVZfV5fq;qq_joFQ+!9WDD
-rT4([roX4\roO1\roO1\rT4([o]?;WjoFQ+!<2*\!<2*\!<2-\!<2*\!;kmY!;tsZ!<)$[!;,FO
-!;tsZ!.j9bk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8juX8i7rX8i8"X8i8!XS`(sXSi.sX8i7!X8i7rXT&:oX8i8"X8i8!X8i8"X8i7h
-XT&:tX8i7uX9/I(X8r1"!!)qu!!)qu!!)u!!!)Vl!W];%qlBbtJZOL*s6fm:s+C@Op=91qs8N;R
-V#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Kg&M-Pg&M-OgACsLgAM$Lg&M,Og&M-KgA_0Hg&M-Pg&M-Og&M-Pg&M-A
-gA_0Mg&M-Ng&h?/g&V')!!)rN!!)rN!!)uO!!)WE!W^pSqq;#MJ_Gb1s8W)Ps+14Mp=fOts8N;W
-U&X9;\c@6~>
-!<E0!johL1eVf@bjo>DWjo>D\jo>D[k555Xk5>;Xjo>C[jo>DWk5PGTjo>D\jo>D[jo>D\jo>DM
-k5PGYjo>DZjoYVGjoG>A!!)rZ!!)rZ!!)u[!!)WQ!W_?_qrRkYJ`_UIs8W)Ks+C@Op=91qs8N;R
-V#TT>]`<Q~>
-!<E0!johL1eS8juX8i8!X8i8"XS`(sX8i8!X8i8"X9/I(X8r1"!!)u!!!'.&!!)hr!!)hrquH_t
-!!)u!!!)u!r;cGj!!)ksq>gPs!!)qu!!)qu!!)nt!s#F(!;!;i!;rnu!.h5(XT._fec1:%s7Y"C
-KE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hSg&M-Og&M-PgACsLg&M-Og&M-Pg&h?/g&V')!!)uO!!'.T!!)iK!!)iKquH`M
-!!)uO!!)uOr;cHC!!)lLq>gQL!!)rN!!)rN!!)oM!s%'/!;"qB!;tON!.ijVgAh3PgAca(s7Y1H
-JcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@bjo>D[jo>D\k555Xjo>D[jo>D\joYVGjoG>A!!)u[!!'.`!!)iW!!)iWquH`Y
-!!)u[!!)u[r;cHO!!)lXq>gQX!!)rZ!!)rZ!!)oY!s%KG!;#@N!;tsZ!.j9bk5YJ\ec1:%s7Y"C
-KE(rUeYN6-k.LbF~>
-!<E0!johL1eS8juX8i8!X9/I(X8r1"!!*#"!!)u!!!*#"!!)u!!!*#"!!)u!!!'.&!!)hr!!)ks
-!!)u!!!*#"!!)u!!!)hr!!)Ym!!)ks!!)hr!!)qu!!)qu!!)nt!s#F(!:m2m!3?1tX8i6OXFmVS
-mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V')!!*#P!!)uO!!*#P!!)uO!!*#P!!)uO!!'.T!!)iK!!)lL
-!!)uO!!*#P!!)uO!!)iK!!)ZF!!)lL!!)iK!!)rN!!)rN!!)oM!s%'/!:nhF!87GMg&M,(g4S,Z
-s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>D[joYVGjoG>A!!*#\!!)u[!!*#\!!)u[!!*#\!!)u[!!'.`!!)iW!!)lX
-!!)u[!!*#\!!)u[!!)iW!!)ZR!!)lX!!)iW!!)rZ!!)rZ!!)oY!s%KG!:o7R!9O:Yjo>C4k(Dgr
-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i8!X9/I(X8r1"!!*#"!!)u!!!*#"!!)u!!!*#"!!)u!!!)u!rrBC,!!*#"
-!!)u!!!)ks!!*#"rrE&"!!)u!!!*#"!!)u!!!)Ym!!)hr!!)u!"9>O)!!*#"!!)nt!!)ksrrDSj
-!W];%qlBbtJZOL*s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V')!!*#P!!)uO!!*#P!!)uO!!*#P!!)uO!!)uOrrBCZ!!*#P
-!!)uO!!)lL!!*#PrrE&P!!)uO!!*#P!!)uO!!)ZF!!)iK!!)uO"9@00!!*#P!!)oM!!)lLrrDTC
-!W^pSqq;#MJ_Gb1s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>D[joYVGjoG>A!!*#\!!)u[!!*#\!!)u[!!*#\!!)u[!!)u[rrBCf!!*#\
-!!)u[!!)lX!!*#\rrE&\!!)u[!!*#\!!)u[!!)ZR!!)iW!!)u["9@TH!!*#\!!)oY!!)lXrrDTO
-!W_?_qrRkYJ`_UIs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!joqR2eS8j#q#CDrr;Zi!r;Zi!qZ-Vsq>^Msq#LAprrB@+rW)nur;c_rrW!&%!!',"!<9/"
-!<9.u!;*Ak!;`eq!<0&#!3H/"r2ferqlBbtnZ2clX8r4#quD;LKrk=Brmh%$s8VfCs+C@O#1]OL
-k2s>WJ,~>
-!<E0!joqI4g4=h/q#CEKr;ZiOr;ZiOqZ-WLq>^NLq#LBIrrB@YrW)oNr;c`KrW!&S!!(aP!<:dP
-!<:dN!;,"D!;bFJ!<1[Q!8@DPr7_&Kqq;#Mn_+$Eg&V**quD<%L"cS,rn@C's8VfHs+14M#25dN
-k2s5TJ,~>
-!<E0!joqR2eVf@Jq#CEWr;Zi[r;Zi[qZ-WXq>^NXq#LBUrrB@erW)oZr;c`WrW!&_!!)0\!<;3\
-!<;3Z!;,FP!;bjV!<2*]!9X7\r9!nWqrRkYn`BlQjoGABquD<1L$&F8rmh%$s8VfCs+C@O#1]OL
-k2s>WJ,~>
-!<E0!johL1eS8iMXLYD4!:Hog!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g:>o;!:JP@!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k.0US!:JtL!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXLYD4!:Hog!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g:>o;!:JP@!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k.0US!:JtL!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXLbM3!:m5i!.h5&XQchdmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g:H#:!:nkB!.ijTg?I>ks8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k.9^R!:o:N!.j9`k3;%.s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp%X3eS8j#XSMnsXSW"qXSi.uXSr5!XSr3`X8i7EX8i7rX8i6OXF[J0XT._fec1:%s7Y"C
-KE(rUeYN6-k.LbF~>
-!<E0!jp%O5g4=h/gA1dLgA:mJgAM$NgAV*OgAV)9g&M,sg&M-Kg&M,(g4@u7gAh3PgAca(s7Y1H
-JcG`Sg7eQ/k.1PC~>
-!<E0!jp%X3eVf@Jk5#&Xk5,/Vk5>;Zk5GA[k5G@Ejo>D*jo>DWjo>C4k(2[Ok5YJ\ec1:%s7Y"C
-KE(rUeYN6-k.LbF~>
-!<E0!johL1eS8juX8i8!X9/I(X8r4#!!*#"!!)u!!!*#"rrE&"rrA4`!!(6E!!)hr!!%SOJZR_0
-s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V**!!*#P!!)uO!!*#PrrE&PrrA59!!(6s!!)iK!!%T(J_Ju7
-s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>D[joYVGjoGAB!!*#\!!)u[!!*#\rrE&\rrA5E!!(7*!!)iW!!%T4J`bhO
-s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i8!X9/I(X8r4#!s#F(!;ii%!3E7%X8o@$!<'#!!33."!!95%!<0(u!<'"s
-!;iks!<0)!!<0)!!<9/!!<0)!!<9/"!;<Ml!<'"s!.h5&XPp8\mf(c:KE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V**!s%'/!;kIS!8?-,g&Tk+!<(XO!34cP!!:jS!<1^N!<(XL
-!;kLL!<1^O!<1^O!<:dO!<1^O!<:dP!;>.E!<(XL!.ijTg>Uccs8LaPJcGcDgAca(rs%2Ns5rIT
-!.Y~>
-!<E0!johL1eVf@bjo>D[joYVGjoGAB!s%KG!;km_!9WDDjoFQC!<)'[!352\!!;9_!<2-Z!<)'X
-!;kpX!<2-[!<2-[!<;3[!<2-[!<;3\!;>RQ!<)'X!.j9`k2GJ&s8LRKKE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johL1eS8juX9/I(X8r4#!!)u!!s#F(!;ii(!3E7%X8o=%X8r4#rrB+$!!*#"rrE&"!!)u!
-!!)u!!!)hr!!*#"!!*#"!!)qu!s#F(!<&u!!<0&"!<&u!!;*>m!;W\r!.h5&XPU&Ymf(c:KE(uF
-ec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&h?/g&V**!!)uO!s%'/!;kIV!8?-,g&Th,g&V**rrB+R!!*#PrrE&P!!)uO
-!!)uO!!)iK!!*#P!!*#P!!)rN!s%'/!<(UO!<1[P!<(UO!;+tF!;Y=K!.ijTg>:Q`s8LaPJcGcD
-gAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjoYVGjoGAB!!)u[!s%KG!;kmb!9WDDjoFNDjoGABrrB+^!!*#\rrE&\!!)u[
-!!)u[!!)iW!!*#\!!*#\!!)rZ!s%KG!<)$[!<2*\!<)$[!;,CR!;YaW!.j9`k2,8#s8LRKKE(uF
-ec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juXSi.tX8i8"X8i8"X8i7tX9em.X8o?'!3E7%VQ9atr2]kuq5aPrrN#u!qQ'Ys
-r2^2)XK2E'X8o?'!;`bs!<0&"!<&u!!;*>m!;W\r!.h5&XPU&Ymf(c:KE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johC3g4=hSgAM$Mg&M-Pg&M-Pg&M-Mg'Ic5g&Tj\!8?-,VV2"Mr7V,Nq:YfKrRq5OqUtoL
-r7VGWg=cP\g&Tj\!;bCL!<1[P!<(UO!;+tF!;Y=K!.ijTg>:Q`s8LaPJcGcDgAca(rs%2Ns5rIT
-!.Y~>
-!<E0!johL1eVf@bk5>;Yjo>D\jo>D\jo>DYjp;%MjoFQ+!9WDDVWIjYr8mtZq;qYWrT4([qW7bX
-r8n:ck2l[+joFQ+!;bgX!<2*\!<)$[!;,CR!;YaW!.j9`k2,8#s8LRKKE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johL1eS8juX9/I(X8r4#r;cet!!)nt#lq'.!3E7%XK2E!X8i7uX8i8!XS`(sX8i7sXSMqs
-X9J[+X8o?'!<0(t!<&u$!3E7%o;holq5aPrJZOF(hQ6bFrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSg&h?/g&V**r;cfM!!)oM#lr]5!8?-,g=cP(g&M-Ng&M-OgACsLg&M-LgA1gL
-g'.Q2g&Tj\!<1^M!<(UR!8?-,o@a0Eq:YfKJ_G\/hV/#0rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bjoYVGjoGABr;cfY!!)oY#ls,M!9WDDk2lZ@jo>DZjo>D[k555Xjo>DXk5#)X
-jothJjoFQ+!<2-Y!<)$^!9WDDoB$#Qq;qYWJ`_OGhWFk<rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i7sX8i8"X8i8"X8i7tX9/I(X8r1"!!&mt!!)qu!!*#"!!)u!!!)u!!!)ks
-!!)eq"9>M'X8r7$!!)u!!!)u!!s#F(!;!8l!;W\r!.h5&XPU&Ymf(c:KE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johC3g4=hSg&M-Lg&M-Pg&M-Pg&M-Mg&h?/g&V')!!&nM!!)rN!!*#P!!)uO!!)uO!!)lL
-!!)fJ"9@-Ug&V-+!!)uO!!)uO!s%'/!;"nE!;Y=K!.ijTg>:Q`s8LaPJcGcDgAca(rs%2Ns5rIT
-!.Y~>
-!<E0!johL1eVf@bjo>DXjo>D\jo>D\jo>DYjoYVGjoG>A!!&nY!!)rZ!!*#\!!)u[!!)u[!!)lX
-!!)fV"9@QajoGDC!!)u[!!)u[!s%KG!;#=Q!;YaW!.j9`k2,8#s8LRKKE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johL1eS8juX8i7sX8i8!X8i8"X8i8!X8i8"X8i7uX8i8!XT&:$X8i8"XT&;"X8i8"XT&;!
-X8i8"X8i8!X8i8!X8i8"XT&8%X8i8"X8i8"XT&:uXT&:kX8i8"X8i8!X8i8"X8i6OXF[J4XT._f
-ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hSg&M-Lg&M-Og&M-Pg&M-Og&M-Pg&M-Ng&M-OgA_/Rg&M-PgA_0Pg&M-PgA_0O
-g&M-Pg&M-Og&M-Og&M-PgA_-Sg&M-Pg&M-PgA_0NgA_0Dg&M-Pg&M-Og&M-Pg&M,(g4@u;gAh3P
-gAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@bjo>DXjo>D[jo>D\jo>D[jo>D\jo>DZjo>D[k5PF^jo>D\k5PG\jo>D\k5PG[
-jo>D\jo>D[jo>D[jo>D\k5PD_jo>D\jo>D\k5PGZk5PGPjo>D\jo>D[jo>D\jo>C4k(2[Sk5YJ\
-ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp%X3eS8j#XSi.tXSr4uX8i8"XSi.uXSr5!XSr5!XT&:#XSr2#X8r4#rW!#$!!)u!rW)hs
-r;cetrr<,%!!)u!rW!#$!!)qu!!)PjrW)hsrW%MNJZRh3s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp%O5g4=h/gAM$MgAV*Ng&M-PgAM$NgAV*OgAV*OgA_/QgAV'Qg&V**rW!#R!!)uOrW)iL
-r;cfMrr<,S!!)uOrW!#R!!)rN!!)QCrW)iLrW%N'J_K):s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!jp%X3eVf@Jk5>;Yk5GAZjo>D\k5>;Zk5GA[k5GA[k5PF]k5G>]joGABrW!#^!!)u[rW)iX
-r;cfYrr<,_!!)u[rW!#^!!)rZ!!)QOrW)iXrW%N3J`bqRs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXSf."!7._H!.h5&XMh4?mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+gAKY)!70@!!.ijTg;M_Fs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k5=?A!70d-!.j9`k/?E^s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXSo4#!7%YG!.h5&XMh4?mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+gAT_*!7'9u!.ijTg;M_Fs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k5FEB!7'^,!.j9`k/?E^s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXSi.FXSi.tXS;dHXF[J$XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+gAM#tgAM$Mg@tZ!g4@u+gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k5>;+k5>;Yk4eq-k(2[Ck5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp%X3eS8j#XSMqrXSi-MXS&Xp!9^H_!;iks!.h5&XNmpImf(c:KE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!jp%O5g4=h/gA1gKgAM#&g@a/"!9`)8!;kLL!.ijTg<SFPs8LaPJcGcDgAca(rs%2Ns5rIT
-!.Y~>
-!<E0!jp%X3eVf@Jk5#)Wk5>:2k4Rj:!9`MD!;kpX!.j9`k0E,hs8LRKKE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!jq+?=eS8j#X8o?'!3E7%XK2F#X8i6OXS/^q!9L9^!;W\r!.h5&XNmpImf(c:KE(uFec1:%
-rs%#Ls5rIW!.Y~>
-!<E0!jq+6?g4=h/g&Tj\!8?-,g=cQ*g&M,(g@j5#!9Mo7!;Y=K!.ijTg<SFPs8LaPJcGcDgAca(
-rs%2Ns5rIT!.Y~>
-!<E0!jq+?=eVf@JjoFQ+!9WDDk2l[Bjo>C4k4[p;!9N>C!;YaW!.j9`k0E,hs8LRKKE(uFec1:%
-rs%#Ls5rIW!.Y~>
-!<E0!jq"9<eS8j#X8o?'!3E7%X8r.!!!)u!rrACerVuu#!<0(u!<0)"!!',"!<'"s!<'#!!<9/#
-!<'"t!;`bs!;W\r!;`er!<'#!!<9/#!.h5&XQ$>]mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jq"0>g4=h/g&Tj\!8?-,g&V$(!!)uOrrAD>rVuuQ!<1^N!<1^P!!(aP!<(XL!<(XO!<:dQ
-!<(XM!;bCL!;Y=K!;bFK!<(XO!<:dQ!.ijTg>^ids8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!jq"9<eVf@JjoFQ+!9WDDjoG;@!!)u[rrADJrVuu]!<2-Z!<2-\!!)0\!<)'X!<)'[!<;3]
-!<)'Y!;bgX!;YaW!;bjW!<)'[!<;3]!.j9`k2PP's8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jsX8i8!X8i7tX8i8!XT&9fX8i8"XT&;#X8i8!X8i8"XT&;"X8i8!X8i7rX9\g-
-!3E7%XK2F#X8i7tX8i7rX8i7tX8i8"X8i8!X9AU*!3E7%JZOF(j/i:Krmh%$s8VfCs+C@O#1]OL
-k2s>WJ,~>
-!<E0!johC3g4=hQg&M-Og&M-Mg&M-OgA_/?g&M-PgA_0Qg&M-Og&M-PgA_0Pg&M-Og&M-Kg'@]4
-!8?-,g=cQ*g&M-Mg&M-Kg&M-Mg&M-Pg&M-Og'%K1!8?-,J_G\/j4aP5rn@C's8VfHs+14M#25dN
-k2s5TJ,~>
-!<E0!johL1eVf@`jo>D[jo>DYjo>D[k5PFKjo>D\k5PG]jo>D[jo>D\k5PG\jo>D[jo>DWjp1tL
-!9WDDk2l[Bjo>DYjo>DWjo>DYjo>D\jo>D[jokbI!9WDDJ`_OGj6$CArmh%$s8VfCs+C@O#1]OL
-k2s>WJ,~>
-!<E0!johL1eS8jsX8i8!X8i7tX8i6aX8i7uX9&C'!;ii"!3E7%rN#u!rN#u!q5jSrr2]kuqlBbt
-r2]kuq5aPrr2]kur2]kuriH,"JZOF(hlQkGrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hQg&M-Og&M-Mg&M,:g&M-Ng&_9.!;kIP!8?-,rRq5OrRq5Oq:biKr7V,Nqq;#M
-r7V,Nq:YfKr7V,Nr7V,Nrn@APJ_G\/hqJ,1rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@`jo>D[jo>DYjo>CFjo>DZjoPPF!;km\!9WDDrT4([rT4([q<%\Wr8mtZqrRkY
-r8mtZq;qYWr8mtZr8mtZroX4\J`_OGhrat=rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8jsX8i8!X8i7tX8i6aX8i7sX8i7tX9/I(X8r4#!!)u!!!)hr!!)nt!!)nt!!)qu
-!!)hr!!)quq>gMr!!%SOJZR_0s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hQg&M-Og&M-Mg&M,:g&M-Lg&M-Mg&h?/g&V**!!)uO!!)iK!!)oM!!)oM!!)rN
-!!)iK!!)rNq>gNK!!%T(J_Ju7s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@`jo>D[jo>DYjo>CFjo>DXjo>DYjoYVGjoGAB!!)u[!!)iW!!)oY!!)oY!!)rZ
-!!)iW!!)rZq>gNW!!%T4J`bhOs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8jsX8i8!X8i7tX8i6aX8i7sX8i7tX9/I(X8r4#!!)u!!!)hr!!)nt!!)nt!!)qu
-!!)hr!!)qu!!)eq!!%SOJZR_0s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hQg&M-Og&M-Mg&M,:g&M-Lg&M-Mg&h?/g&V**!!)uO!!)iK!!)oM!!)oM!!)rN
-!!)iK!!)rN!!)fJ!!%T(J_Ju7s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@`jo>D[jo>DYjo>CFjo>DXjo>DYjoYVGjoGAB!!)u[!!)iW!!)oY!!)oY!!)rZ
-!!)iW!!)rZ!!)fV!!%T4J`bhOs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8jsX8i7uX8i8!X8i7uXT&9fX8i8!X9/I(X8r4#!!*#"!!)u!!!)u!!!*#"!!)u!
-!!)ks!!)u!!!)nt!!)hr!!)nt!!)u!!!*#"!!%SOJZR_0s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hQg&M-Ng&M-Og&M-NgA_/?g&M-Og&h?/g&V**!!*#P!!)uO!!)uO!!*#P!!)uO
-!!)lL!!)uO!!)oM!!)iK!!)oM!!)uO!!*#P!!%T(J_Ju7s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@`jo>DZjo>D[jo>DZk5PFKjo>D[joYVGjoGAB!!*#\!!)u[!!)u[!!*#\!!)u[
-!!)lX!!)u[!!)oY!!)iW!!)oY!!)u[!!*#\!!%T4J`bhOs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juXS`(sXSi.rXT&9eXSi.tXSi.uXSr5"XSr4uXSr4uXSi.rXSi.sXS`(sXS`(r
-XSi.uXSi-MXF[J2XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hSgACsLgAM$KgA_/>gAM$MgAM$NgAV*PgAV*NgAV*NgAM$KgAM$LgACsLgACsK
-gAM$NgAM#&g4@u9gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@bk555Xk5>;Wk5PFJk5>;Yk5>;Zk5GA\k5GAZk5GAZk5>;Wk5>;Xk555Xk555W
-k5>;Zk5>:2k(2[Qk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMX8o@#!;rqs!;rqs!;rqs!:m2k!;`eq!:m2k!;NYq!:m2k!;`ep!;*Ak!;rqs
-!;!;j!:m2k!;`eq!<'"r!;rqt!;`es!;rqs!.h68XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g&Tk*!;tRL!;tRL!;tRL!:nhD!;bFJ!:nhD!;P:J!:nhD!;bFI!;,"D!;tRL
-!;"qC!:nhD!;bFJ!<(XK!;tRM!;bFL!;tRL!.ikfgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:joFQB!;u!X!;u!X!;u!X!:o7P!;bjV!:o7P!;P^V!:o7P!;bjU!;,FP!;u!X
-!;#@O!:o7P!;bjV!<)'W!;u!Y!;bjX!;u!X!.j:rk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp%X3eS8j#XSMnsXSr5!XSr2"XSMnsXSr5"XSr5"XSMqjXSMqrXSr2#X8p>C!!)u!!!*#"
-!!)u!!!*#"!!)u!!!*#"!!)u!!!)YmrrDqt!!)u!!!)YmrrDkr!W];%o;qrlqQ'YsnZ2]jrN#u!
-ri?)"rN#u!orJ,nrN#u!oW8&mqlBbtrN#u!ri?)"rN#u!rN#u!poFMsX8r4#!!)u!!!%SOl)apQ
-rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp%O5g4=h/gA1dLgAV*OgAV'PgA1dLgAV*PgAV*PgA1gCgA1gKgAV'Qg&T4J!!)uO!!*#P
-!!)uO!!*#P!!)uO!!*#P!!)uO!!)ZFrrDrM!!)uO!!)ZFrrDlK!W^pSo@j3EqUtoLn_*sCrRq5O
-rn7>PrRq5Op"BBGrRq5Oo\0<Fqq;#MrRq5Orn7>PrRq5OrRq5Opt>cLg&V**!!)uO!!%T(l.Z1;
-rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!jp%X3eVf@Jk5#&Xk5GA[k5G>\k5#&Xk5GA\k5GA\k5#)Ok5#)Wk5G>]joEKb!!)u[!!*#\
-!!)u[!!*#\!!)u[!!*#\!!)u[!!)ZRrrDrY!!)u[!!)ZRrrDlW!W_?_oB-&QqW7bXn`BfOrT4([
-roO1\rT4([p#Z5SrT4([o]H/RqrRkYrT4([roO1\rT4([rT4([puVVXjoGAB!!)u[!!%T4l/r$G
-rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i8!X9/I(X8r1"!!*#"!!)u!"9>O)!!*#"!!*#""ota+!3E7%p8eQ#XK2E'
-X8o?'!<0)"!6D5A!<&u!!<0&"!<&u!!<0&"!<&u!!<0&"!<&u!!;3Dp!3?1tX8i8!X8i7nX9&C'
-!;W\t!3?1mX9&C'!;`bs!:6ce!;W\r!;3Dn!<&u!!;3Dp!3?1tX8i8!X8i7rX8i8"X8i7pX9&C'
-!<&u!!<&u!!.h69XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V')!!*#P!!)uO"9@00!!*#P!!*#P"p!B2!8?-,p=]fQg=cP\
-g&Tj\!<1^P!6Ejo!<(UO!<1[P!<(UO!<1[P!<(UO!<1[P!<(UO!;5%I!87GMg&M-Og&M-Gg&_9.
-!;Y=M!87GFg&_9.!;bCL!:8D>!;Y=K!;5%G!<(UO!;5%I!87GMg&M-Og&M-Kg&M-Pg&M-Ig&_9.
-!<(UO!<(UO!.ikggAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@bjo>D[joYVGjoG>A!!*#\!!)u["9@TH!!*#\!!*#\"p!fJ!9WDDp>uY]k2l[+
-joFQ+!<2-\!6F:&!<)$[!<2*\!<)$[!<2*\!<)$[!<2*\!<)$[!;5IU!9O:Yjo>D[jo>DSjoPPF
-!;YaY!9O:RjoPPF!;bgX!:8hJ!;YaW!;5IS!<)$[!;5IU!9O:Yjo>D[jo>DWjo>D\jo>DUjoPPF
-!<)$[!<)$[!.j:sk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8juX8i8!X9/I(X8r1"!!*#"!!)u!#QUs-!3?1%X8r7$"ota+!3E7%p8eQ#XK2E'
-X8o?'!<&u!!;rqu!6VAC!<0&"!<&u!!<0&"!<&u!!;W\r!;!8l!;iht!<&u!!;!8l!;`c!!3E7%
-nuMfkqQ'Ysm&U0eq5aProrJ,nrN#u!o;holqlBbtrN#u!qQ'YsrN#u!poFPtXK2EsX8i6OXQchd
-mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V')!!*#P!!)uO#QWT4!87G,g&V-+"p!B2!8?-,p=]fQg=cP\
-g&Tj\!<(UO!;tRN!6X!q!<1[P!<(UO!<1[P!<(UO!;Y=K!;"nE!;kIM!<(UO!;"nE!;bCO!8?-,
-o%F'DqUtoLm+MF>q:YfKp"BBGrRq5Oo@a0Eqq;#MrRq5OqUtoLrRq5Opt>fMg=cQ%g&M,(g?I>k
-s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>D[joYVGjoG>A!!*#\!!)u[#QX#L!9O:DjoGDC"p!fJ!9WDDp>uY]k2l[+
-joFQ+!<)$[!;u!Z!6XF(!<2*\!<)$[!<2*\!<)$[!;YaW!;#=Q!;kmY!<)$[!;#=Q!;bg[!9WDD
-o&]oPqW7bXm,e9Jq;qYWp#Z5SrT4([oB$#QqrRkYrT4([qW7bXrT4([puVYYk2l[=jo>C4k3;%.
-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX9/I(X8r1"!!*#"!!)u!!s#F(!<&u&!3?1%X8r.!!!)Mi!!)qu!!)bprrC6D
-!!)u!!!)u!!!*#"!!)u!!!)ks!!)Sk!!)nt!!)u!!!)Vl!!)ks!s#F(!:m2k!;`eq!:m5j!;iks
-!;*>m!<&u!!;!8l!;iht!<&u!!;`bs!<&u"!3H/"r2]u#XK2EtX8i6OXQZbcmf(c:KE(uFec1:%
-rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&h?/g&V')!!*#P!!)uO!s%'/!<(UT!87G,g&V$(!!)NB!!)rN!!)cIrrC6r
-!!)uO!!)uO!!*#P!!)uO!!)lL!!)TD!!)oM!!)uO!!)WE!!)lL!s%'/!:nhD!;bFJ!:nkC!;kLL
-!;+tF!<(UO!;"nE!;kIM!<(UO!;bCL!<(UP!8@DPr7V5Qg=cQ&g&M,(g?@8js8LaPJcGcDgAca(
-rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjoYVGjoG>A!!*#\!!)u[!s%KG!<)$`!9O:DjoG;@!!)NN!!)rZ!!)cUrrC7)
-!!)u[!!)u[!!*#\!!)u[!!)lX!!)TP!!)oY!!)u[!!)WQ!!)lX!s%KG!:o7P!;bjV!:o:O!;kpX
-!;,CR!<)$[!;#=Q!;kmY!<)$[!;bgX!<)$\!9X7\r8n(]k2l[>jo>C4k31t-s8LRKKE(uFec1:%
-rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juXSi.sX8i8"X8i8!XSi.tX9AU*X8o=%qlBbtn>lTiqlK_r`2iq=r2]kurN#u!
-ri?)"rN#u!qlBbtr2fbqr2]kuqlBbtrN#u!riGtsr2]kuqlBbtri?)"nuMfkp8e5on>lTiq5aPr
-orJ,nrN#u!o;holqlBbtrN#u!qQ'YsrN-#!ri?)"ri?)"ri?)"qQ'YsJZS%9s6fm:s+C@Op=91q
-s8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSgAM$Lg&M-Pg&M-OgAM$Mg'%K1g&Th,qq;#MnCdjBqqCuK`7b1kr7V,NrRq5O
-rn7>PrRq5Oqq;#Mr7_#Jr7V,Nqq;#MrRq5Orn@5Lr7V,Nqq;#Mrn7>Po%F'Dp=]KHnCdjBq:YfK
-p"BBGrRq5Oo@a0Eqq;#MrRq5OqUtoLrS%8Orn7>Prn7>Prn7>PqUtoLJ_K;@s8W)Ps+14Mp=fOt
-s8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bk5>;Xjo>D\jo>D[k5>;YjokbIjoFNDqrRkYnE']Nqr[hW`9%%"r8mtZrT4([
-roO1\rT4([qrRkYr9!kVr8mtZqrRkYrT4([roX(Xr8mtZqrRkYroO1\o&]oPp>u>TnE']Nq;qYW
-p#Z5SrT4([oB$#QqrRkYrT4([qW7bXrT=+[roO1\roO1\roO1\qW7bXJ`c.Xs8W)Ks+C@Op=91q
-s8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX9/I(X8r.!!W];%r2]u#XK2F#X9AU*X8o=%qlBbtn>lTipT+>p`iK.?qlBbt
-rN#u!ri?)"rN#u!r2]kun>lTiqlBbtrN#u!o;holqlBbtri?)"nuMfkp8e5on>lTiq5aProrJ,n
-rN#u!o;holqlBbtrN#u!qlBbtr2]kurN#u!ri?)"ri?)"qlBbtJZS"8s6fm:s+C@Op=91qs8N;R
-V#TT>]`<Q~>
-!<E0!johC3g4=hSg&h?/g&V$(!W^pSr7V5Qg=cQ*g'%K1g&Th,qq;#MnCdjBpY#TI`nCCmqq;#M
-rRq5Orn7>PrRq5Or7V,NnCdjBqq;#MrRq5Oo@a0Eqq;#Mrn7>Po%F'Dp=]KHnCdjBq:YfKp"BBG
-rRq5Oo@a0Eqq;#MrRq5Oqq;#Mr7V,NrRq5Orn7>Prn7>Pqq;#MJ_K8?s8W)Ps+14Mp=fOts8N;W
-U&X9;\c@6~>
-!<E0!johL1eVf@bjoYVGjoG;@!W_?_r8n(]k2l[BjokbIjoFNDqrRkYnE']NpZ;GU`o[7$qrRkY
-rT4([roO1\rT4([r8mtZnE']NqrRkYrT4([oB$#QqrRkYroO1\o&]oPp>u>TnE']Nq;qYWp#Z5S
-rT4([oB$#QqrRkYrT4([qrRkYr8mtZrT4([roO1\roO1\qrRkYJ`c+Ws8W)Ks+C@Op=91qs8N;R
-V#TT>]`<Q~>
-!<E0!johL1eS8juX8i8!X8i8!X9&C'!;rnu!<&u$!3E7%riH,"qlBbtn>lTir2]kurN#u!a/f7@
-qQ'YsrN#u!ri?)"rN#u!rN#u!n#QKhqlBbtrN#u!o;holqlKYpo;holp8e5on>lTiq5aProrJ,n
-rN#u!o;holqlBbtrN#u!qlBbtr2]kurN#u!riGtsrN#u!JZRt7s6fm:s+C@Op=91qs8N;RV#TT>
-]`<Q~>
-!<E0!johC3g4=hSg&M-Og&M-Og&_9.!;tON!<(UR!8?-,rn@APqq;#MnCdjBr7V,NrRq5Oa4^Ln
-qUtoLrRq5Orn7>PrRq5OrRq5On(IaAqq;#MrRq5Oo@a0EqqCoIo@a0Ep=]KHnCdjBq:YfKp"BBG
-rRq5Oo@a0Eqq;#MrRq5Oqq;#Mr7V,NrRq5Orn@5LrRq5OJ_K5>s8W)Ps+14Mp=fOts8N;WU&X9;
-\c@6~>
-!<E0!johL1eVf@bjo>D[jo>D[joPPF!;tsZ!<)$^!9WDDroX4\qrRkYnE']Nr8mtZrT4([a6!@%
-qW7bXrT4([roO1\rT4([rT4([n)aTMqrRkYrT4([oB$#Qqr[bUoB$#Qp>u>TnE']Nq;qYWp#Z5S
-rT4([oB$#QqrRkYrT4([qrRkYr8mtZrT4([roX(XrT4([J`c(Vs8W)Ks+C@Op=91qs8N;RV#TT>
-]`<Q~>
-!<E0!johL1eS8juX8i8!X8i7uX8i7tX8i8!X9/I(X8r7$rrDqt!!)Mi!!)qurrE&"!!)qurrCBH
-!!)u!!!*#"!!)u!!!*#"!!)u!!!*#"!!)u!!!)Vl!!)nt!!)u!!!)Vl!!)bp!!)Sk!!)nt!!)u!
-!!)qurrDtu!!)u!!!*#"!!)u!!!)qurrDtu!!)u!!!)qurrDns!!)nt!!)u!!!)nt!!)nt!!*#"
-!!)ks!!)u!!!)u!!!%SOl)apQrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSg&M-Og&M-Ng&M-Mg&M-Og&h?/g&V-+rrDrM!!)NB!!)rNrrE&P!!)rNrrCC!
-!!)uO!!*#P!!)uO!!*#P!!)uO!!*#P!!)uO!!)WE!!)oM!!)uO!!)WE!!)cI!!)TD!!)oM!!)uO
-!!)rNrrDuN!!)uO!!*#P!!)uO!!)rNrrDuN!!)uO!!)rNrrDoL!!)oM!!)uO!!)oM!!)oM!!*#P
-!!)lL!!)uO!!)uO!!%T(l.Z1;rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bjo>D[jo>DZjo>DYjo>D[joYVGjoGDCrrDrY!!)NN!!)rZrrE&\!!)rZrrCC-
-!!)u[!!*#\!!)u[!!*#\!!)u[!!*#\!!)u[!!)WQ!!)oY!!)u[!!)WQ!!)cU!!)TP!!)oY!!)u[
-!!)rZrrDuZ!!)u[!!*#\!!)u[!!)rZrrDuZ!!)u[!!)rZrrDoX!!)oY!!)u[!!)oY!!)oY!!*#\
-!!)lX!!)u[!!)u[!!%T4l/r$Grmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp%X3eS8j#XSMqpX8i7uXSMnsXSr5!X8i8!XS`(jXS`(tX8r=&rW)hsrrCBHqZ-Srr;cbs
-r;cetqZ-;jquHYrr;cJkquHSprW)VmquHYrr;c_rrrDqtr;cbsr;c_rrrDqtr;c_rrrDtuquHYr
-r;c\q!!)ksrW)errW)r!qZ)2Kl)apQrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp%O5g4=h/gA1gIg&M-NgA1dLgAV*Og&M-OgACsCgACsMg&V3-rW)iLrrCC!qZ-TKr;ccL
-r;cfMqZ-<CquHZKr;cKDquHTIrW)WFquHZKr;c`KrrDrMr;ccLr;c`KrrDrMr;c`KrrDuNquHZK
-r;c]J!!)lLrW)fKrW)rOqZ)3$l.Z1;rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!jp%X3eVf@Jk5#)Ujo>DZk5#&Xk5GA[jo>D[k555Ok555YjoGJErW)iXrrCC-qZ-TWr;ccX
-r;cfYqZ-<OquHZWr;cKPquHTUrW)WRquHZWr;c`WrrDrYr;ccXr;c`WrrDrYr;c`WrrDuZquHZW
-r;c]V!!)lXrW)fWrW)r[qZ)30l/r$Grmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jJXS;dHXF[I(XMV(=mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=h(g@tZ!g4@t/g;;SDs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@7k4eq-k(2ZGk/-9\s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMX8o@#!;rqs!;rqs!;rqs!:m2k!;`eq!:m2k!;NYq!:m2k!;`ep!;*Ak!;rqs
-!;!;j!:m2k!;`eq!;`es!;rqs!;rqr!;rnu!.h66XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g&Tk*!;tRL!;tRL!;tRL!:nhD!;bFJ!:nhD!;P:J!:nhD!;bFI!;,"D!;tRL
-!;"qC!:nhD!;bFJ!;bFL!;tRL!;tRK!;tON!.ikdgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:joFQB!;u!X!;u!X!;u!X!:o7P!;bjV!:o7P!;P^V!:o7P!;bjU!;,FP!;u!X
-!;#@O!:o7P!;bjV!;bjX!;u!X!;u!W!;tsZ!.j:pk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp%X3eS8j#XSMnsXSW"qXSr4rXSr2%X8o?'q>g5jq>gMrrVuu#!6D5A!<&u!!<0&"!<&u!
-!<0&"!<&u!!<0&"!<&u!!;*Am!;iht!<&u!!;*Am!;W\t!3?1lXT&:sX8i7jX8i8!X8i8"X8i8!
-X8i7nX8i8!X8i7mXT&:tX8i8!X8i7uX9&C'!<&u!!<&u!!<&u!!;W_r!.h66XT._fec1:%s7Y"C
-KE(rUeYN6-k.LbF~>
-!<E0!jp%O5g4=h/gA1dLgA:mJgAV*KgAV'Sg&Tj\q>g6Cq>gNKrVuuQ!6Ejo!<(UO!<1[P!<(UO
-!<1[P!<(UO!<1[P!<(UO!;,"F!;kIM!<(UO!;,"F!;Y=M!87GEgA_0Lg&M-Cg&M-Og&M-Pg&M-O
-g&M-Gg&M-Og&M-FgA_0Mg&M-Og&M-Ng&_9.!<(UO!<(UO!<(UO!;Y@K!.ikdgAh3PgAca(s7Y1H
-JcG`Sg7eQ/k.1PC~>
-!<E0!jp%X3eVf@Jk5#&Xk5,/Vk5GAWk5G>_joFQ+q>g6Oq>gNWrVuu]!6F:&!<)$[!<2*\!<)$[
-!<2*\!<)$[!<2*\!<)$[!;,FR!;kmY!<)$[!;,FR!;YaY!9O:Qk5PGXjo>DOjo>D[jo>D\jo>D[
-jo>DSjo>D[jo>DRk5PGYjo>D[jo>DZjoPPF!<)$[!<)$[!<)$[!;YdW!.j:pk5YJ\ec1:%s7Y"C
-KE(rUeYN6-k.LbF~>
-!<E0!jq+?=eS8j#X8o?'!3E7%XK2F#X8i7tX8i7tX8i8"XT&;"X8i8!X8i7oX9em.X8o?'!3E7%
-riH,"aK,@ArN#u!ri?)"rN#u!ri?)"rN#u!ri?)"rN#u!orJ2pX8r.!!!)u!!!)\n!W];%q5aVt
-X8qmo!W];%qQ'Ysm&U0eq5aProrJ,nrN#u!orJ2pX8r.!!!)u!!!)qu!W];%rN#u!rN#u!rN#u!
-qQ'_uX8mgQk,eUNrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jq+6?g4=h/g&Tj\!8?-,g=cQ*g&M-Mg&M-Mg&M-PgA_0Pg&M-Og&M-Hg'Ic5g&Tj\!8?-,
-rn@APaP$UorRq5Orn7>PrRq5Orn7>PrRq5Orn7>PrRq5Op"BHIg&V$(!!)uO!!)]G!W^pSq:YlM
-g&Ud!!W^pSqUtoLm+MF>q:YfKp"BBGrRq5Op"BHIg&V$(!!)uO!!)rN!W^pSrRq5OrRq5OrRq5O
-qUtuNg&Q]Xk1]k8rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!jq+?=eVf@JjoFQ+!9WDDk2l[Bjo>DYjo>DYjo>D\k5PG\jo>D[jo>DTjp;%MjoFQ+!9WDD
-roX4\aQ<I&rT4([roO1\rT4([roO1\rT4([roO1\rT4([p#Z;UjoG;@!!)u[!!)]S!W_?_q;q_Y
-joG&9!W_?_qW7bXm,e9Jq;qYWp#Z5SrT4([p#Z;UjoG;@!!)u[!!)rZ!W_?_rT4([rT4([rT4([
-qW7hZjoBtpk2u^Drmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jq+?=eS8j#X8o?'!3E7%XK2F#X8i7uX9&C'!<&u!!;rnu!<0&"!<&u!!;<K#!3E7%XK2E'
-X8r4#!!)qurrC3C!!*#"!!)u!!!*#"!!)u!!!)hr!!)Vl!!)nt!!)u!!!)Vl!!)ks!s#F(!:m2k
-!;`bs!:6ce!;W\r!;3Dn!<&u!!;!8l!;iht!<&u!!<&u$!3E7%rN#u!rN#u!rN#u!poFGqJZS"8
-s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jq+6?g4=h/g&Tj\!8?-,g=cQ*g&M-Ng&_9.!<(UO!;tON!<1[P!<(UO!;>+Q!8?-,g=cP\
-g&V**!!)rNrrC3q!!*#P!!)uO!!*#P!!)uO!!)iK!!)WE!!)oM!!)uO!!)WE!!)lL!s%'/!:nhD
-!;bCL!:8D>!;Y=K!;5%G!<(UO!;"nE!;kIM!<(UO!<(UR!8?-,rRq5OrRq5OrRq5Opt>]JJ_K8?
-s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!jq+?=eVf@JjoFQ+!9WDDk2l[Bjo>DZjoPPF!<)$[!;tsZ!<2*\!<)$[!;>O]!9WDDk2l[+
-joGAB!!)rZrrC4(!!*#\!!)u[!!*#\!!)u[!!)iW!!)WQ!!)oY!!)u[!!)WQ!!)lX!s%KG!:o7P
-!;bgX!:8hJ!;YaW!;5IS!<)$[!;#=Q!;kmY!<)$[!<)$^!9WDDrT4([rT4([rT4([puVPVJ`c+W
-s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8jsX8i7uX8i8!X8i7uX9&C'!<&u!!;NVt!3E7%nZ2]jr2]kupT4ApbH([DrN#u!
-rN#u!ri?)"rN#u!qQ'YsnuMfkqlBbtrN#u!o;holqQ'c!XK2EmX8i7sXSi.iXSr4sXSr4lX8i8!
-X8i7lX8i7tX8i8!X8i8!X9/I(X8r1"r;cbsr;c_r!!%SOk,eUNrmh%$s8VfCs+C@O#1]OLk2s>W
-J,~>
-!<E0!johC3g4=hQg&M-Ng&M-Og&M-Ng&_9.!<(UO!;P7M!8?-,n_*sCr7V,NpY,WIbLuprrRq5O
-rRq5Orn7>PrRq5OqUtoLo%F'Dqq;#MrRq5Oo@a0EqUu#Og=cPtg&M-LgAM$BgAV*LgAV*Eg&M-O
-g&M-Eg&M-Mg&M-Og&M-Og&h?/g&V')r;ccLr;c`K!!%T(k1]k8rn@C's8VfHs+14M#25dNk2s5T
-J,~>
-!<E0!johL1eVf@`jo>DZjo>D[jo>DZjoPPF!<)$[!;P[Y!9WDDn`BfOr8mtZpZDJUbN8d)rT4([
-rT4([roO1\rT4([qW7bXo&]oPqrRkYrT4([oB$#QqW7k[k2l[7jo>DXk5>;Nk5GAXk5GAQjo>D[
-jo>DQjo>DYjo>D[jo>D[joYVGjoG>Ar;ccXr;c`W!!%T4k2u^Drmh%$s8VfCs+C@O#1]OLk2s>W
-J,~>
-!<E0!johL1eS8jsX8i7uX8i8"X8i7uX8i8"X8i8"X8i7qXSi.hX8i7tXSi.;X8i7uX8i8!X8i8"
-X8i8!X8i7tX8i7uXSW"qX8i7tX8i8!X8i8"XSW"qX8i7tX8i8"X8i7kX8i7oX8i7iX8i7rX8i7n
-X8i8!X8i7lX8i7tX8i8!X8i8"X8i8"X8i8!X8i8!X8i7rX8i7uX8i6OXQHVamf(c:KE(uFec1:%
-rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hQg&M-Ng&M-Pg&M-Ng&M-Pg&M-Pg&M-JgAM$Ag&M-MgAM#ig&M-Ng&M-Og&M-P
-g&M-Og&M-Mg&M-NgA:mJg&M-Mg&M-Og&M-PgA:mJg&M-Mg&M-Pg&M-Dg&M-Hg&M-Bg&M-Kg&M-G
-g&M-Og&M-Eg&M-Mg&M-Og&M-Pg&M-Pg&M-Og&M-Og&M-Kg&M-Ng&M,(g?.,hs8LaPJcGcDgAca(
-rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@`jo>DZjo>D\jo>DZjo>D\jo>D\jo>DVk5>;Mjo>DYk5>:ujo>DZjo>D[jo>D\
-jo>D[jo>DYjo>DZk5,/Vjo>DYjo>D[jo>D\k5,/Vjo>DYjo>D\jo>DPjo>DTjo>DNjo>DWjo>DS
-jo>D[jo>DQjo>DYjo>D[jo>D\jo>D\jo>D[jo>D[jo>DWjo>DZjo>C4k2th+s8LRKKE(uFec1:%
-rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jsX8i7uXSi.rXS`(tX8i7qX9/I(X8qdl!!)bp!!($?!!)nt!!)u!!!*#"!!)u!
-!!)qu!!)Mi!!)nt!!)u!!!)Vl!!)nt!!*#"!!)Sk!!)_o!!)Mi!!)hr!!)\n!!)u!!!)Vl!!)nt
-!!)u!!!*#"!!*#"!!)u!!!)u!!!)hr!!)qu!!%SOk,eUNrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hQg&M-NgAM$KgACsMg&M-Jg&h?/g&UZs!!)cI!!($m!!)oM!!)uO!!*#P!!)uO
-!!)rN!!)NB!!)oM!!)uO!!)WE!!)oM!!*#P!!)TD!!)`H!!)NB!!)iK!!)]G!!)uO!!)WE!!)oM
-!!)uO!!*#P!!*#P!!)uO!!)uO!!)iK!!)rN!!%T(k1]k8rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@`jo>DZk5>;Wk555Yjo>DVjoYVGjoFr6!!)cU!!(%$!!)oY!!)u[!!*#\!!)u[
-!!)rZ!!)NN!!)oY!!)u[!!)WQ!!)oY!!*#\!!)TP!!)`T!!)NN!!)iW!!)]S!!)u[!!)WQ!!)oY
-!!)u[!!*#\!!*#\!!)u[!!)u[!!)iW!!)rZ!!%T4k2u^Drmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8jsX8i7uX8i8"X8i8!X8i7uX9/I(X8r$s!!)u!!!)Vl!!)qu!!)u!!!('@!!)ks
-!!)u!!!*#"!!)u!!!)u!!!)Jh!!)nt!!)u!!!)Vl!!)ntqZ-5h!!)_o!!)Mi!!)hr!!)\n!!)u!
-!!)Vl!!)nt!!)u!!!*#"qZ-Vs!!)u!!!)hr!!)qu!!%SOk,eUNrmh%$s8VfCs+C@O#1]OLk2s>W
-J,~>
-!<E0!johC3g4=hQg&M-Ng&M-Pg&M-Og&M-Ng&h?/g&Up%!!)uO!!)WE!!)rN!!)uO!!('n!!)lL
-!!)uO!!*#P!!)uO!!)uO!!)KA!!)oM!!)uO!!)WE!!)oMqZ-6A!!)`H!!)NB!!)iK!!)]G!!)uO
-!!)WE!!)oM!!)uO!!*#PqZ-WL!!)uO!!)iK!!)rN!!%T(k1]k8rn@C's8VfHs+14M#25dNk2s5T
-J,~>
-!<E0!johL1eVf@`jo>DZjo>D\jo>D[jo>DZjoYVGjoG2=!!)u[!!)WQ!!)rZ!!)u[!!((%!!)lX
-!!)u[!!*#\!!)u[!!)u[!!)KM!!)oY!!)u[!!)WQ!!)oYqZ-6M!!)`T!!)NN!!)iW!!)]S!!)u[
-!!)WQ!!)oY!!)u[!!*#\qZ-WX!!)u[!!)iW!!)rZ!!%T4k2u^Drmh%$s8VfCs+C@O#1]OLk2s>W
-J,~>
-!<E0!johL1eS8jsX8i7uX8i8!X8i8"X8i7uX8i8"X8i8!X8i8"X8i8!X8i7lX8i7uXT&;"X8i7u
-XT&:HX8i8!X8i8"X8i8!X8i8"X8i8!X8i8"X8i8!X8i7lX8i7tX8i8!X8i7lX8i7pX8i7kX8i7t
-X8i8!X8i7uXT&:uX8i8!X8i8"X8i8!X8i7uXT&:uX8i8!X8i7uXT&:sX8i7tX8i8!X8i7sX8i8!
-X8i8!X8i8"X8i8!X8i7uX8i6OXQHVamf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hQg&M-Ng&M-Og&M-Pg&M-Ng&M-Pg&M-Og&M-Pg&M-Og&M-Eg&M-NgA_0Pg&M-N
-gA_0!g&M-Og&M-Pg&M-Og&M-Pg&M-Og&M-Pg&M-Og&M-Eg&M-Mg&M-Og&M-Eg&M-Ig&M-Dg&M-M
-g&M-Og&M-NgA_0Ng&M-Og&M-Pg&M-Og&M-NgA_0Ng&M-Og&M-NgA_0Lg&M-Mg&M-Og&M-Lg&M-O
-g&M-Og&M-Pg&M-Og&M-Ng&M,(g?.,hs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@`jo>DZjo>D[jo>D\jo>DZjo>D\jo>D[jo>D\jo>D[jo>DQjo>DZk5PG\jo>DZ
-k5PG-jo>D[jo>D\jo>D[jo>D\jo>D[jo>D\jo>D[jo>DQjo>DYjo>D[jo>DQjo>DUjo>DPjo>DY
-jo>D[jo>DZk5PGZjo>D[jo>D\jo>D[jo>DZk5PGZjo>D[jo>DZk5PGXjo>DYjo>D[jo>DXjo>D[
-jo>D[jo>D\jo>D[jo>DZjo>C4k2th+s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juXS`(uXSr4uX8r=&r;Zi!r;chur;chuq>g2iquH_t!<B5#!;ikt!7.bD!<'"t
-!;rqs!<'"r!;3Gk!;rqs!;*Aj!;`er!;3Gk!;rqs!;ikt!;ikr!;rqs!;ikt!;ikr!;ikt!;rqr
-!;rqs!;`er!<'"t!;rqs!<'"s!.h68XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hSgACsNgAV*Ng&V3-r;ZiOr;ciNr;ciNq>g3BquH`M!<CjQ!;kLM!70Br!<(XM
-!;tRL!<(XK!;5(D!;tRL!;,"C!;bFK!;5(D!;tRL!;kLM!;kLK!;tRL!;kLM!;kLK!;kLM!;tRK
-!;tRL!;bFK!<(XM!;tRL!<(XL!.ikfgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@bk555Zk5GAZjoGJEr;Zi[r;ciZr;ciZq>g3NquH`Y!<D9]!;kpY!70g)!<)'Y
-!;u!X!<)'W!;5LP!;u!X!;,FO!;bjW!;5LP!;u!X!;kpY!;kpW!;u!X!;kpY!;kpW!;kpY!;u!W
-!;u!X!;bjW!<)'Y!;u!X!<)'X!.j:rk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jJXS;dHXF[I(XMV(=mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=h(g@tZ!g4@t/g;;SDs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@7k4eq-k(2ZGk/-9\s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtXSr2#X8r7$r;churW)u"rW)u"q>gPsq>^MsrW)u"rW)u"q>gMrrVuu#!.h5&
-XF[J$XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hRgAV'Qg&V-+r;ciNrW)uPrW)uPq>gQLq>^NLrW)uPrW)uPq>gNKrVuuQ!.ijT
-g4@u+gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@ak5G>]joGDCr;ciZrW)u\rW)u\q>gQXq>^NXrW)u\rW)u\q>gNWrVuu]!.j9`
-k(2[Ck5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8juX8i8"XT&;#X8i8!X8i8"XT&;"X8i8"X9J[+X8o?'!<0&"!<&u%!3E7%!<0&"
-!<0&+!3E7%XK2E'X8r7$rr@VOJZOF(d]EK:rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSg&M-PgA_0Qg&M-Og&M-PgA_0Pg&M-Pg'.Q2g&Tj\!<1[P!<(US!8?-,!<1[P
-!<1[Y!8?-,g=cP\g&V-+rr@W(J_G\/db=a$rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bjo>D\k5PG]jo>D[jo>D\k5PG\jo>D\jothJjoFQ+!<2*\!<)$_!9WDD!<2*\
-!<2*e!9WDDk2l[+joGDCrr@W4J`_OGdcUT0rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp.^4eS8j#X8r1"!W];%qlC&'XK2E'!3E7%ri?;(XK2E'X8r7$!!)u!#QUs-!3?1%X8r7$
-#lq'.!3E7%XK2F#X8i7uXT&9OXF[I(XP']Tmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp.U6g4=h/g&V')!W^pSqq;;Ug=cP\!8?-,rn7PVg=cP\g&V-+!!)uO#QWT4!87G,g&V-+
-#lr]5!8?-,g=cQ*g&M-NgA_/(g4@t/g=b3[s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!jp.^4eVf@JjoG>A!W_?_qrS.ak2l[+!9WDDroOCbk2l[+joGDC!!)u[#QX#L!9O:DjoGDC
-#ls,M!9WDDk2l[Bjo>DZk5PF4k(2ZGk1Snss8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp.^4eS8j#X8r*u!!)nt#QUs-!3?1%X8r.!!!)nt!s#F(!<&u&!3?1%X8r.!!!)qu!!)bp
-rr@VOJZOF(frY5Armh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp.U6g4=h/g&V!'!!)oM#QWT4!87G,g&V$(!!)oM!s%'/!<(UT!87G,g&V$(!!)rN!!)cI
-rr@W(J_G\/g"QK+rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!jp.^4eVf@JjoG8?!!)oY#QX#L!9O:DjoG;@!!)oY!s%KG!<)$`!9O:DjoG;@!!)rZ!!)cU
-rr@W4J`_OGg#i>7rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp.^4eS8j#X8r*u!!)nt#QUs-!3E7%X8r.!!!)ntr;cet"TYX*!3?1tX8i7tXSi-MXF[I(
-XO4-Lmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp.U6g4=h/g&V!'!!)oM#QWT4!8?-,g&V$(!!)oMr;cfM"T[91!87GMg&M-MgAM#&g4@t/
-g<nXSs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!jp.^4eVf@JjoG8?!!)oY#QX#L!9WDDjoG;@!!)oYr;cfY"T[]I!9O:Yjo>DYk5>:2k(2ZG
-k0`>ks8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp.^4eS8j#X8r*u!!)nt#QUs-!3E7%X8r.!!!)nt!s#F(!<&u&!3E7%X8r.!!!)bp!!%SO
-JZOF(d]EK:rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp.U6g4=h/g&V!'!!)oM#QWT4!8?-,g&V$(!!)oM!s%'/!<(UT!8?-,g&V$(!!)cI!!%T(
-J_G\/db=a$rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!jp.^4eVf@JjoG8?!!)oY#QX#L!9WDDjoG;@!!)oY!s%KG!<)$`!9WDDjoG;@!!)cU!!%T4
-J`_OGdcUT0rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp.^4eS8j#X8r*u!!)nt!s#F(!<0)"!;iht!;iht!<&u$!3E7%riH,"qlBbtr2]kurN#u!
-JZOF(JZR;$s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp.U6g4=h/g&V!'!!)oM!s%'/!<1^P!;kIM!;kIM!<(UR!8?-,rn@APqq;#Mr7V,NrRq5O
-J_G\/J_JQ+s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!jp.^4eVf@JjoG8?!!)oY!s%KG!<2-\!;kmY!;kmY!<)$^!9WDDroX4\qrRkYr8mtZrT4([
-J`_OGJ`bDCs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i8!X9/I(X8r4#!!*#"!!*#"rrDqt!!)nt!!)u!!s#F(!<0)"!;iht!;rqu
-!<0&"!;rqu!.h5&XF[J+XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V**!!*#P!!*#PrrDrM!!)oM!!)uO!s%'/!<1^P!;kIM!;tRN
-!<1[P!;tRN!.ijTg4@u2gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@bjo>D[joYVGjoGAB!!*#\!!*#\rrDrY!!)oY!!)u[!s%KG!<2-\!;kmY!;u!Z
-!<2*\!;u!Z!.j9`k(2[Jk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8jtXSi.tXSi.uXSr5!X8i8!XS`(tXSMnsXSr5!X8i8!XS`(tX8r=&rW)hsrr@VO
-JZOF(frY5Armh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hRgAM$MgAM$NgAV*Og&M-OgACsMgA1dLgAV*Og&M-OgACsMg&V3-rW)iLrr@W(
-J_G\/g"QK+rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@ak5>;Yk5>;Zk5GA[jo>D[k555Yk5#&Xk5GA[jo>D[k555YjoGJErW)iXrr@W4
-J`_OGg#i>7rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8j,X8i7gX8i6OXF[I(XR*%gmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g_g&M-@g&M,(g4@t/g?dPns8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?njo>DLjo>C4k(2ZGk3V71s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!joqR2eS8j#qZ,o_rW(QOrrDMh!!%SOJZOF(l`C-Srmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!joqI4g4=h/qZ,p8rW(R(rrDNA!!%T(J_G\/le;C=rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!joqR2eVf@JqZ,pDrW(R4rrDNM!!%T4J`_OGlfS6Irmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp.^4eS8j#X8r4#!!)8b!!(ZQ!W];%n#QKhJZOF(JZS1=s6fm:s+C@Op=91qs8N;RV#TT>
-]`<Q~>
-!<E0!jp.U6g4=h/g&V**!!)9;!!([*!W^pSn(IaAJ_G\/J_KGDs8W)Ps+14Mp=fOts8N;WU&X9;
-\c@6~>
-!<E0!jp.^4eVf@JjoGAB!!)9G!!([6!W_?_n)aTMJ`_OGJ`c:\s8W)Ks+C@Op=91qs8N;RV#TT>
-]`<Q~>
-!<E0!jp.^4eS8j#X8r4#!!)qurW)r!rr<&#rW)er!!)u!rW)u"rW(rZ!!)Jh!!%SOJZOF(l`C-S
-rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp.U6g4=h/g&V**!!)rNrW)rOrr<&QrW)fK!!)uOrW)uPrW(s3!!)KA!!%T(J_G\/le;C=
-rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!jp.^4eVf@JjoGAB!!)rZrW)r[rr<&]rW)fW!!)u[rW)u\rW(s?!!)KM!!%T4J`_OGlfS6I
-rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp.^4eS8j#X8r4#!!)u!!!*#"!!*#"rrE&"!!)nt!!)qu!!)u!!!)\nq>g/h!!)Jh!!%SO
-JZOF(l`C-Srmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp.U6g4=h/g&V**!!)uO!!*#P!!*#PrrE&P!!)oM!!)rN!!)uO!!)]Gq>g0A!!)KA!!%T(
-J_G\/le;C=rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!jp.^4eVf@JjoGAB!!)u[!!*#\!!*#\rrE&\!!)oY!!)rZ!!)u[!!)]Sq>g0M!!)KM!!%T4
-J`_OGlfS6Irmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp.^4eS8j#X8r7$!!)u!!!)qu!s#F(!;rnu!;rnu!;rnu!<&u!!9(!Z!:[&i!.h5&XF[J<
-XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp.U6g4=h/g&V-+!!)uO!!)rN!s%'/!;tON!;tON!;tON!<(UO!9)W3!:\\B!.ijTg4@uC
-gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!jp.^4eVf@JjoGDC!!)u[!!)rZ!s%KG!;tsZ!;tsZ!;tsZ!<)$[!9*&?!:]+N!.j9`k(2[[
-k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp%X3eS8j#XSi.sXSMqsX8i7uX8i7uX8i7tX9/I(X8qmoq>g/h!!)Jh!!%SOJZOF(l`C-S
-rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp%O5g4=h/gAM$LgA1gLg&M-Ng&M-Ng&M-Mg&h?/g&Ud!q>g0A!!)KA!!%T(J_G\/le;C=
-rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!jp%X3eVf@Jk5>;Xk5#)Xjo>DZjo>DZjo>DYjoYVGjoG&9q>g0M!!)KM!!%T4J`_OGlfS6I
-rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp.^4eS8j#X8r7$!!)u!!!)hr!!)qu!!)qu!!)nt!s#F(!8spY!:Quh!.h5&XF[J=XT._f
-ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp.U6g4=h/g&V-+!!)uO!!)iK!!)rN!!)rN!!)oM!s%'/!8uQ2!:SVA!.ijTg4@uDgAh3P
-gAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!jp.^4eVf@JjoGDC!!)u[!!)iW!!)rZ!!)rZ!!)oY!s%KG!8uu>!:T%M!.j9`k(2[\k5YJ\
-ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp.^4eS8j#X8r4#!!)u!!!)u!"9>O)!!*#"!!)nt!!)ksrrCrX!!)Jh!!%SOJZOF(l`C-S
-rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp.U6g4=h/g&V**!!)uO!!)uO"9@00!!*#P!!)oM!!)lLrrCs1!!)KA!!%T(J_G\/le;C=
-rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!jp.^4eVf@JjoGAB!!)u[!!)u["9@TH!!*#\!!)oY!!)lXrrCs=!!)KM!!%T4J`_OGlfS6I
-rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!joqR2eS8j#rW)nu!!)u!r;chu!<B5#!;rqr!;iht!9($W!:d,j!.h5&XF[J=XT._fec1:%
-s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!joqI4g4=h/rW)oN!!)uOr;ciN!<CjQ!;tRK!;kIM!9)Z0!:ebC!.ijTg4@uDgAh3PgAca(
-s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!joqR2eVf@JrW)oZ!!)u[r;ciZ!<D9]!;u!W!;kmY!9*)<!:f1O!.j9`k(2[\k5YJ\ec1:%
-s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8jdX8i7gX8i7DX8i6OXF[I(XQutfmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hBg&M-@g&M,rg&M,(g4@t/g?[Jms8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@Qjo>DLjo>D)jo>C4k(2ZGk3M10s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jdX8i7gX8i7CX8i6OXF[I(XR*%gmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hBg&M-@g&M,qg&M,(g4@t/g?dPns8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@Qjo>DLjo>D(jo>C4k(2ZGk3V71s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jeXSi.iXSi-MXF[I(XL5/0mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hCgAM$BgAM#&g4@t/g9oZ7s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@Rk5>;Nk5>:2k(2ZGk-a@Os8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXN.CB!.h5&XN%@Amf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g;hnI!.ijTg;_kHs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k/ZTa!.j9`k/QQ`s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8j,XSr2#X8qUg!!)2`!!(0C!!%SOJZQhls6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=g_gAV'Qg&UKn!!)39!!(0q!!%T(J_J)ss8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf?nk5G>]joFc1!!)3E!!(1(!!%T4J`ar6s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8j-X8i8"XT&:eX8i7`X8i7CX8i6OXF[IlXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g`g&M-PgA_0>g&M-9g&M,qg&M,(g4@tsgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?ojo>D\k5PGJjo>DEjo>D(jo>C4k(2[6k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8j.X8i7uX8i8"XSi.uXT&8#XSr4uXS`(qXSr4uXSr2"XSr5"XS`(CX8i6OXF[Il
-XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=gag&M-Ng&M-PgAM$NgA_-QgAV*NgACsJgAV*NgAV'PgAV*PgACrqg&M,(g4@ts
-gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?pjo>DZjo>D\k5>;Zk5PD]k5GAZk555Vk5GAZk5G>\k5GA\k555(jo>C4k(2[6
-k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8j.X8i7rX8i8!X8i8"XT&;"X8i8!X8i7rX8i8"X8i8!X8i8"X8i8!X8i7jXSMqU
-X8i6OXF[IlXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=gag&M-Kg&M-Og&M-PgA_0Pg&M-Og&M-Kg&M-Pg&M-Og&M-Pg&M-Og&M-CgA1g.
-g&M,(g4@tsgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?pjo>DWjo>D[jo>D\k5PG\jo>D[jo>DWjo>D\jo>D[jo>D\jo>D[jo>DOk5#):
-jo>C4k(2[6k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8j.X8i7sX8i7tX9/I(X8r4#!!)u!!!)ks!!)qu!!)u!!W];%r2]kuhlQ\To;hol
-JZOF(`2s",rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=gag&M-Lg&M-Mg&h?/g&V**!!)uO!!)lL!!)rN!!)uO!W^pSr7V,NhqIr-o@a0E
-J_G\/`7k7krn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf?pjo>DXjo>DYjoYVGjoGAB!!)u[!!)lX!!)rZ!!)u[!W_?_r8mtZhrae9oB$#Q
-J`_OG`9.+"rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8j.X8i7sX8i7tX9/I(X8r4#!!)u!!!)ksq>gGp!!)nt!!)Pjq>fKU!!%SOJZQhl
-s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=gag&M-Lg&M-Mg&h?/g&V**!!)uO!!)lLq>gHI!!)oM!!)QCq>fL.!!%T(J_J)s
-s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf?pjo>DXjo>DYjoYVGjoGAB!!)u[!!)lXq>gHU!!)oY!!)QOq>fL:!!%T4J`ar6
-s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8j.X8i7sX8i7tX9/I(X8r4#!!)u!!!)ks!!)bp!W];%r2]kub,bRCJZOF(`N9+-
-rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=gag&M-Lg&M-Mg&h?/g&V**!!)uO!!)lL!!)cI!W^pSr7V,Nb1ZgqJ_G\/`S1@l
-rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf?pjo>DXjo>DYjoYVGjoGAB!!)u[!!)lX!!)cU!W_?_r8mtZb2r[(J`_OG`TI4#
-rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8j-X8i8!X9/I(X8r4#!!*#"!!)u!!!)u!!!*#"!!)u!!!)u!!!*#"!!*#"!!)u!
-!!*#"!!(<G!!%SOJZQhls6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=g`g&M-Og&h?/g&V**!!*#P!!)uO!!)uO!!*#P!!)uO!!)uO!!*#P!!*#P!!)uO
-!!*#P!!(<u!!%T(J_J)ss8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf?ojo>D[joYVGjoGAB!!*#\!!)u[!!)u[!!*#\!!)u[!!)u[!!*#\!!*#\!!)u[
-!!*#\!!(=,!!%T4J`ar6s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8j,XSi.tXSi.uXSr5"XSr4uXSr4sXSi.uXSr2"XSr4uXSr4EX8i6OXF[IlXT._f
-ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g_gAM$MgAM$NgAV*PgAV*NgAV*LgAM$NgAV'PgAV*NgAV)sg&M,(g4@tsgAh3P
-gAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?nk5>;Yk5>;Zk5GA\k5GAZk5GAXk5>;Zk5G>\k5GAZk5GA*jo>C4k(2[6k5YJ\
-ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXN7IC!.h5&XMq:@mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g;qtJ!.ijTg;VeGs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k/cZb!.j9`k/HK_s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXN.CB!.h5&XN%@Amf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g;hnI!.ijTg;_kHs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k/ZTa!.j9`k/QQ`s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXN7IC!91*[!/[cW!.h6/XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g;qtJ!92`4!/]D0!.ik]gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k/cZb!93/@!/]h<!.j:ik5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXR<1h!!0/$i2cnYkcFa`"KVU)X8nin!!)Gg!!%SOhQ6bFrmh%$s8VfCs+C@O
-#1]OLk2s>WJ,~>
-!<E0!johC3g4=g+g@!\o!!1dRi7\/2kh?"9"PNk0g&R_u!!)H@!!%T(hV/#0rn@C's8VfHs+14M
-#25dNk2s5TJ,~>
-!<E0!johL1eVf?:k3hC2!!23^i8t">kiVjE"Qf^HjoD"8!!)HL!!%T4hWFk<rmh%$s8VfCs+C@O
-#1]OLk2s>WJ,~>
-!<E0!johL1eS8iMXRE4j!<0)"!6;/@!<0)"!<9,#!1p7l!:Hog!.h6.XT._fec1:%s7Y"CKE(rU
-eYN6-k.LbF~>
-!<E0!johC3g4=g+g@*_q!<1^P!6<dn!<1^P!<:aQ!1qmE!:JP@!.ik\gAh3PgAca(s7Y1HJcG`S
-g7eQ/k.1PC~>
-!<E0!johL1eVf?:k3qF4!<2-\!6=4%!<2-\!<;0]!1r<Q!:JtL!.j:hk5YJ\ec1:%s7Y"CKE(rU
-eYN6-k.LbF~>
-!<E0!johL1eS8iMXRE4j!<&u!!;rqt!<'#!!<9/#!<9/"!<9/"!<0)!!;`er!!0/$rN,turN#u!
-r2^#$XK2E'rW)ktr;churr<&#rW)ktrW!#$!!)u!rW(rZrrE)#rrE#!r;cbsr;cetquH8g!!%SO
-hQ6bFrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=g+g@*_q!<(UO!;tRM!<(XO!<:dQ!<:dP!<:dP!<1^O!;bFK!!1dRrS%5NrRq5O
-r7V8Rg=cP\rW)lMr;ciNrr<&QrW)lMrW!#R!!)uOrW(s3rrE)QrrE#Or;ccLr;cfMquH9@!!%T(
-hV/#0rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf?:k3qF4!<)$[!;u!Y!<)'[!<;3]!<;3\!<;3\!<2-[!;bjW!!23^rT=(ZrT4([
-r8n+^k2l[+rW)lYr;ciZrr<&]rW)lYrW!#^!!)u[rW(s?rrE)]rrE#[r;ccXr;cfYquH9L!!%T4
-hWFk<rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8iMXRE4j!;NVq!<0&"!<&u)!3?1%X8o?'!<&u!!;iht!;iht!<0)"!<0&"!<0&"
-!<0&"!;W_r!<0&"!<0&"!<&u!!<0)"!<0&"!<0&"!<0)"!<&u!!<0&"!;3Gi!;3E!!3?1%X8o?'
-!<&u!!<0&"!<&u!!<&u!!:Hog!.h6.XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g@*_q!;P7J!<1[P!<(UW!87G,g&Tj\!<(UO!;kIM!;kIM!<1^P!<1[P!<1[P
-!<1[P!;Y@K!<1[P!<1[P!<(UO!<1^P!<1[P!<1[P!<1^P!<(UO!<1[P!;5(B!;5%O!87G,g&Tj\
-!<(UO!<1[P!<(UO!<(UO!:JP@!.ik\gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k3qF4!;P[V!<2*\!<)$c!9O:DjoFQ+!<)$[!;kmY!;kmY!<2-\!<2*\!<2*\
-!<2*\!;YdW!<2*\!<2*\!<)$[!<2-\!<2*\!<2*\!<2-\!<)$[!<2*\!;5LN!;5I[!9O:DjoFQ+
-!<)$[!<2*\!<)$[!<)$[!:JtL!.j:hk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXR<1g!<&u!!;rnu!<0)"!;iht!<&u!!;iht!;rnu!;ro#!3E7%r2]u#XK2Et
-X8i8!X8i7rX8i8"X8i8!X9/I(X8r1"!!*#"!!)qu!!)&\rrDtu!!)nt!W];%qlBbtri?)"n#QKh
-JZR\/s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=g+g@!\n!<(UO!;tON!<1^P!;kIM!<(UO!;kIM!;tON!;tOQ!8?-,r7V5Qg=cQ&
-g&M-Og&M-Kg&M-Pg&M-Og&h?/g&V')!!*#P!!)rN!!)'5rrDuN!!)oM!W^pSqq;#Mrn7>Pn(IaA
-J_Jr6s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf?:k3hC1!<)$[!;tsZ!<2-\!;kmY!<)$[!;kmY!;tsZ!;ts]!9WDDr8n(]k2l[>
-jo>D[jo>DWjo>D\jo>D[joYVGjoG>A!!*#\!!)rZ!!)'ArrDuZ!!)oY!W_?_qrRkYroO1\n)aTM
-J`beNs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXQlke!<0(r!<0&"!;W\u!3E7%qQ'Ysr2]kuq5jDms/Z2#q5aPrrN#u!rN,ns
-ri?)"rN$)$XK2F"X8i8"XSMqjXSMqiX8i7tX8i7tX9&C'!;iht!<0&"!:Hog!.h6.XT._fec1:%
-s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g?RAl!<1^K!<1[P!;Y=N!8?-,qUtoLr7V,Nq:bZFs4RGQq:YfKrRq5OrS%/L
-rn7>PrRq>Rg=cQ)g&M-PgA1gCgA1gBg&M-Mg&M-Mg&_9.!;kIM!<1[P!:JP@!.ik\gAh3PgAca(
-s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k3D(/!<2-W!<2*\!;YaZ!9WDDqW7bXr8mtZq<%MRs5j:]q;qYWrT4([rT="X
-roO1\rT41^k2l[Ajo>D\k5#)Ok5#)Njo>DYjo>DYjoPPF!;kmY!<2*\!:JtL!.j:hk5YJ\ec1:%
-s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXRE4j!<&u!!<0&"!;NVq!;W\u!3E7%qQ'Ysr2]kuq5aPrq5aPrq5aPrrN#u!
-ri?)"rN#u!ri?)"rN$)$XK2F"X8i8"X8i7VX8i7tX8i7tX9&C'!;iht!<0&"!:Hog!.h6.XT._f
-ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g@*_q!<(UO!<1[P!;P7J!;Y=N!8?-,qUtoLr7V,Nq:YfKq:YfKq:YfKrRq5O
-rn7>PrRq5Orn7>PrRq>Rg=cQ)g&M-Pg&M-/g&M-Mg&M-Mg&_9.!;kIM!<1[P!:JP@!.ik\gAh3P
-gAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k3qF4!<)$[!<2*\!;P[V!;YaZ!9WDDqW7bXr8mtZq;qYWq;qYWq;qYWrT4([
-roO1\rT4([roO1\rT41^k2l[Ajo>D\jo>D;jo>DYjo>DYjoPPF!;kmY!<2*\!:JtL!.j:hk5YJ\
-ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXRE7j!<0&"!<&u!!<&u!!<0&"!;NYq!;W\r!;iht!<&u!!<0&"!<&u!!<0&"
-!<&u$!3E7%rN#u!ri?)"riH,"ri?)"rN#u!ri?)"riH,"rN#u!rN#u!j/`4\qQ'YsrN#u!ri?)"
-rN#u!rN#u!ri?)"nuMfkJZR_0s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=g+g@*bq!<1[P!<(UO!<(UO!<1[P!;P:J!;Y=K!;kIM!<(UO!<1[P!<(UO!<1[P
-!<(UR!8?-,rRq5Orn7>Prn@APrn7>PrRq5Orn7>Prn@APrRq5OrRq5Oj4XJ5qUtoLrRq5Orn7>P
-rRq5OrRq5Orn7>Po%F'DJ_Ju7s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf?:k3qI4!<2*\!<)$[!<)$[!<2*\!;P^V!;YaW!;kmY!<)$[!<2*\!<)$[!<2*\
-!<)$^!9WDDrT4([roO1\roX4\roO1\rT4([roO1\roX4\rT4([rT4([j5p=AqW7bXrT4([roO1\
-rT4([rT4([roO1\o&]oPJ`bhOs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXRE4k!3H/"qlK_rriH%uqQ0\sqlK\qr2fhsr2fhsr2fhss/c2"s/c2"riH)!
-"0;J&XSr5"XSr5!XSr2#X8r1"r;blZr;c_rr;cbsr;c_rrW)Ji!!%SOhQ6bFrmh%$s8VfCs+C@O
-#1]OLk2s>WJ,~>
-!<E0!johC3g4=g+g@*_r!8@DPqqCuKrn@;NqV(rLqqCrJr7_)Lr7_)Lr7_)Ls4[GPs4[GPrn@>O
-"53_TgAV*PgAV*OgAV'Qg&V')r;bm3r;c`Kr;ccLr;c`KrW)KB!!%T(hV/#0rn@C's8VfHs+14M
-#25dNk2s5TJ,~>
-!<E0!johL1eVf?:k3qF5!9X7\qr[hWroX.ZqW@eXqr[eVr9!qXr9!qXr9!qXs5s:\s5s:\roX1[
-"6KR`k5GA\k5GA[k5G>]joG>Ar;bm?r;c`Wr;ccXr;c`WrW)KN!!%T4hWFk<rmh%$s8VfCs+C@O
-#1]OLk2s>WJ,~>
-!<E0!johL1eS8iMXG<kW!33+#!.h6.XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g5"A^!34`Q!.ik\gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(i(!!35/]!.j:hk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXGEqX!2ut!!.h6/XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g5+G_!3"TO!.ik]gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(r."!3##[!.j:ik5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXGj7Z!.h5)XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g5Oba!.ijWgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k)AI$!.j9ck5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[GRX8pbO!!%SO]<)&#rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=g+g4@rYg&TXV!!%T(]A!;brn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf?:k(2XqjoEon!!%T4]B9.nrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8iMXJW)u!!0/$i2cnYeZ8`NJZQGas6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=g+g8<U'!!1dRi7\/2e_1!'J_I]hs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf?:k,.;?!!23^i8t">e`Hi3J`aQ+s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXJ`-"!<0)"!4/a,!.h5_XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g8EX)!<1^P!41AZ!.ik8gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k,7>A!<2-\!41ef!.j:Dk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXJ`-"!<&u!!;rqt!<'#!!<9/#!<9/"!<9/"!<0)!!;`er!!0/$rN,tur2fer
-nuMfkJZQGas6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=g+g8EX)!<(UO!;tRM!<(XO!<:dQ!<:dP!<:dP!<1^O!;bFK!!1dRrS%5Nr7_&K
-o%F'DJ_I]hs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf?:k,7>A!<)$[!;u!Y!<)'[!<;3]!<;3\!<;3\!<2-[!;bjW!!23^rT=(Zr9!nW
-o&]oPJ`aQ+s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXJ`-"!;NVq!<0&"!<&u)!3?1%X8o?'!<&u!!;iht!;iht!<0)"!<0&"!<0&"
-!<0&"!<&u!!:m2k!.h5_XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g8EX)!;P7J!<1[P!<(UW!87G,g&Tj\!<(UO!;kIM!;kIM!<1^P!<1[P!<1[P
-!<1[P!<(UO!:nhD!.ik8gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k,7>A!;P[V!<2*\!<)$c!9O:DjoFQ+!<)$[!;kmY!;kmY!<2-\!<2*\!<2*\
-!<2*\!<)$[!:o7P!.j:Dk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXJW)t!<&u!!;rnu!<0)"!;iht!<&u!!;iht!;rnu!;ro#!3E7%r2]u#XK2Ei
-X8i6OXLYG4mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g8<U&!<(UO!;tON!<1^P!;kIM!<(UO!;kIM!;tON!;tOQ!8?-,r7V5Qg=cPp
-g&M,(g:>r;s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,.;>!<)$[!;tsZ!<2-\!;kmY!<)$[!;kmY!;tsZ!;ts]!9WDDr8n(]k2l[3
-jo>C4k.0XSs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJ2cr!<0(r!<0&"!;W\u!3E7%qQ'Ysr2]kuq5jDmriH%unZ2]jJZQGas6fm:
-s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=g+g7m:$!<1^K!<1[P!;Y=N!8?-,qUtoLr7V,Nq:bZFrn@;Nn_*sCJ_I]hs8W)P
-s+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf?:k+^u<!<2-W!<2*\!;YaZ!9WDDqW7bXr8mtZq<%MRroX.Zn`BfOJ`aQ+s8W)K
-s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXJ`-"!<&u!!<0&"!;NVq!;W\u!3E7%qQ'Ysr2]kuq5aProW/#mnuMfkJZQGa
-s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=g+g8EX)!<(UO!<1[P!;P7J!;Y=N!8?-,qUtoLr7V,Nq:YfKo\'9Fo%F'DJ_I]h
-s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf?:k,7>A!<)$[!<2*\!;P[V!;YaZ!9WDDqW7bXr8mtZq;qYWo]?,Ro&]oPJ`aQ+
-s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXJ`0"!<0&"!<&u!!<&u!!<0&"!;NYq!;W\r!;iht!<&u!!<0&"!<&u$!3E7%
-rN#u!nuMfkJZQGas6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=g+g8E[)!<1[P!<(UO!<(UO!<1[P!;P:J!;Y=K!;kIM!<(UO!<1[P!<(UR!8?-,
-rRq5Oo%F'DJ_I]hs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf?:k,7AA!<2*\!<)$[!<)$[!<2*\!;P^V!;YaW!;kmY!<)$[!<2*\!<)$^!9WDD
-rT4([o&]oPJ`aQ+s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXJ`-#!3H/"qlK_rriH%uqQ0\sqlK\qr2fhsr2fhsriH"tnZ2]jJZQGas6fm:
-s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=g+g8EX*!8@DPqqCuKrn@;NqV(rLqqCrJr7_)Lr7_)Lrn@8Mn_*sCJ_I]hs8W)P
-s+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf?:k,7>B!9X7\qr[hWroX.ZqW@eXqr[eVr9!qXr9!qXroX+Yn`BfOJ`aQ+s8W)K
-s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXF[J%X8i6OXLbM5mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@u,g&M,(g:H#<s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2[Djo>C4k.9^Ts8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[J$X8i6OXLkS6mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@u+g&M,(g:Q)=s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2[Cjo>C4k.BdUs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I^XT&9OXOjQRmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@tegA_/(g=P'Ys8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2[(k5PF4k1Abqs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[J2XSr5!XSr4eXS`(oX8i8"XSMqjXSMq*X8i7`XSr4sXSr4]XT._fec1:%
-s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@u9gAV*OgAV*>gACsHg&M-PgA1gCgA1fXg&M-9gAV*LgAV*6gAh3PgAca(
-s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2[Qk5GA[k5GAJk555Tjo>D\k5#)Ok5#(djo>DEk5GAXk5GABk5YJ\ec1:%
-s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[J1XT&;"XT&:cX8i7pX8i8"X9J[+X8o?'!;<Ju!3E7%XK2E1X8i7^X8i7r
-X8i7^XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@u8gA_0PgA_0<g&M-Ig&M-Pg'.Q2g&Tj\!;>+N!8?-,g=cP8g&M-7g&M-K
-g&M-7gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2[Pk5PG\k5PGHjo>DUjo>D\jothJjoFQ+!;>OZ!9WDDk2lZPjo>DCjo>DW
-jo>DCk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[J1X9/I(!3H/"riH)!!iuA%rN,tu!NZ;!X8i7tXSr2#X8r7$"ota+!3E7%
-riH%urN$P1XK2E'X8o?'!!'+%!!'+%rW)u"rW(rZrVuu#!<0(u!<0)"!!',"!<'"s!<'#!!<9/#
-!<'"t!;`bs!;W\r!;`er!<'#!!<9/#!;W_rmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@u8g&h?/!8@DPrn@>O!nmVSrS%5N!SRPOg&M-MgAV'Qg&V-+"p!B2!8?-,
-rn@;NrRqe_g=cP\g&Tj\!!(a,!!(a,rW)uPrW(s3rVuuQ!<1^N!<1^P!!(aP!<(XL!<(XO!<:dQ
-!<(XM!;bCL!;Y=K!;bFK!<(XO!<:dQ!;Y@Ks8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2[PjoYVG!9X7\roX1[!p0I_rT=(Z!TjC[jo>DYk5G>]joGDC"p!fJ!9WDD
-roX.ZrT4Xkk2l[+joFQ+!!)0D!!)0DrW)u\rW(s?rVuu]!<2-Z!<2-\!!)0\!<)'X!<)'[!<;3]
-!<)'Y!;bgX!;YaW!;bjW!<)'[!<;3]!;YdWs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[J1X9em.!3?1%!3E7%riH,"rN#u!riH,"r2]kur2]kuriH,"qlBbtr2]ku
-rN#u!qlBbtqlC&'X8o?'!3E7%rN#u!orRuiorJ,nriH,"s/Z2#rN#u!riH,"ri?)"rN#u!q5ai%
-X8o?'!3E7%rN#u!qlBbtq5aPrqlBbtri?)"rN$/&X8o?'!;`esmf(c:KE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johC3g4=g+g4@u8g'Ic5!87G,!8?-,rn@APrRq5Orn@APr7V,Nr7V,Nrn@APqq;#Mr7V,N
-rRq5Oqq;#Mqq;;Ug&Tj\!8?-,rRq5Op"K6Bp"BBGrn@APs4RGQrRq5Orn@APrn7>PrRq5Oq:Z)S
-g&Tj\!8?-,rRq5Oqq;#Mq:YfKqq;#Mrn7>PrRqDTg&Tj\!;bFLs8LaPJcGcDgAca(rs%2Ns5rIT
-!.Y~>
-!<E0!johL1eVf?:k(2[Pjp;%M!9O:D!9WDDroX4\rT4([roX4\r8mtZr8mtZroX4\qrRkYr8mtZ
-rT4([qrRkYqrS.ajoFQ+!9WDDrT4([p#c)Np#Z5SroX4\s5j:]rT4([roX4\roO1\rT4([q;qq_
-joFQ+!9WDDrT4([qrRkYq;qYWqrRkYroO1\rT47`joFQ+!;bjXs8LRKKE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johL1eS8iMXF[J1X9\g-X8o?'!3?1uX8i8"X8i7uX8i7uX8i8!X8i7uX8i7tX8i8!X8i7t
-X8i7uX8i7tXT&:tX8i8!X8i7\X8i7uX9&C'!;ii"!3E7%rN#u!rN#u!q5jSrr2]kuqlBbtr2]ku
-q5aPrr2]kur2]kuriH,"p8n;^rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=g+g4@u8g'@]4g&Tj\!87GNg&M-Pg&M-Ng&M-Ng&M-Og&M-Ng&M-Mg&M-Og&M-M
-g&M-Ng&M-MgA_0Mg&M-Og&M-5g&M-Ng&_9.!;kIP!8?-,rRq5OrRq5Oq:biKr7V,Nqq;#Mr7V,N
-q:YfKr7V,Nr7V,Nrn@APp=fQHrn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf?:k(2[Pjp1tLjoFQ+!9O:Zjo>D\jo>DZjo>DZjo>D[jo>DZjo>DYjo>D[jo>DY
-jo>DZjo>DYk5PGYjo>D[jo>DAjo>DZjoPPF!;km\!9WDDrT4([rT4([q<%\Wr8mtZqrRkYr8mtZ
-q;qYWr8mtZr8mtZroX4\p?)DTrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8iMXF[J1X9\g-X8o?'!3?1uX8i8"X8i7oX8i8!X8i7uX8i7tX8i8!X8i7tX8i7u
-X8i7tX8i7rX9/I(X8qmoq>g5j!!)ks!!)nt!s#F(!<&u!!<&u!!;W\r!;iht!;iht!;rnu!;W\r
-!;rqp!<0&"!;3Gnmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@u8g'@]4g&Tj\!87GNg&M-Pg&M-Hg&M-Og&M-Ng&M-Mg&M-Og&M-Mg&M-N
-g&M-Mg&M-Kg&h?/g&Ud!q>g6C!!)lL!!)oM!s%'/!<(UO!<(UO!;Y=K!;kIM!;kIM!;tON!;Y=K
-!;tRI!<1[P!;5(Gs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2[Pjp1tLjoFQ+!9O:Zjo>D\jo>DTjo>D[jo>DZjo>DYjo>D[jo>DYjo>DZ
-jo>DYjo>DWjoYVGjoG&9q>g6O!!)lX!!)oY!s%KG!<)$[!<)$[!;YaW!;kmY!;kmY!;tsZ!;YaW
-!;u!U!<2*\!;5LSs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[J1X8i7uX9&C'!;rnu!<0&"!;<Jo!<&u!!;rnu!;iht!<&u!!;iht!;rnu
-!;iht!;W\u!3E7%iiE+[qQ'YsqlBl"XK2F#X8i8!X8i7rX8i7tX8i7tX8i7uX8i7rX8i7uX8i7q
-X8i7nXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@u8g&M-Ng&_9.!;tON!<1[P!;>+H!<(UO!;tON!;kIM!<(UO!;kIM!;tON
-!;kIM!;Y=N!8?-,in=A4qUtoLqq;,Pg=cQ*g&M-Og&M-Kg&M-Mg&M-Mg&M-Ng&M-Kg&M-Ng&M-J
-g&M-GgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2[Pjo>DZjoPPF!;tsZ!<2*\!;>OT!<)$[!;tsZ!;kmY!<)$[!;kmY!;tsZ
-!;kmY!;YaZ!9WDDioU4@qW7bXqrRt\k2l[Bjo>D[jo>DWjo>DYjo>DYjo>DZjo>DWjo>DZjo>DV
-jo>DSk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[J1X8i7uX9/I(X8r7$rrE#!!!)u!!!)qu!!)qu!!*#"rrDqt!!)qu!!)u!
-!!)nt!!)nt!!)eqrrCuY!!)u!!s#F(!<&u!!<0&"!<&u!!<&u!!<0&"!<&u!!;`bs!<&u!!;iht
-!;W\r!;iht!<&u!!<0&"!;3Gnmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@u8g&M-Ng&h?/g&V-+rrE#O!!)uO!!)rN!!)rN!!*#PrrDrM!!)rN!!)uO
-!!)oM!!)oM!!)fJrrD!2!!)uO!s%'/!<(UO!<1[P!<(UO!<(UO!<1[P!<(UO!;bCL!<(UO!;kIM
-!;Y=K!;kIM!<(UO!<1[P!;5(Gs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2[Pjo>DZjoYVGjoGDCrrE#[!!)u[!!)rZ!!)rZ!!*#\rrDrY!!)rZ!!)u[
-!!)oY!!)oY!!)fVrrD!>!!)u[!s%KG!<)$[!<2*\!<)$[!<)$[!<2*\!<)$[!;bgX!<)$[!;kmY
-!;YaW!;kmY!<)$[!<2*\!;5LSs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[J2XSr5!XSr5"XSr2#X8r1"r;cetquH\srW!#$!!*#"quH\sr;cbsquH_t
-r;cYp!!(oXr;cetr;churW)u"rW)nurW)nur;c_rr;cbsquH\squHYrr;chur;cSns6fm:s+C@O
-p=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=g+g4@u9gAV*OgAV*PgAV'Qg&V')r;cfMquH]LrW!#R!!*#PquH]Lr;ccLquH`M
-r;cZI!!(p1r;cfMr;ciNrW)uPrW)oNrW)oNr;c`Kr;ccLquH]LquHZKr;ciNr;cTGs8W)Ps+14M
-p=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf?:k(2[Qk5GA[k5GA\k5G>]joG>Ar;cfYquH]XrW!#^!!*#\quH]Xr;ccXquH`Y
-r;cZU!!(p=r;cfYr;ciZrW)u\rW)oZrW)oZr;c`Wr;ccXquH]XquHZWr;ciZr;cTSs8W)Ks+C@O
-p=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXF[J#X8i76X8i6OXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@u*g&M,dg&M,(gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2[Bjo>Cpjo>C4k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[J$X8i75X8i6OXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@u+g&M,cg&M,(gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2[Cjo>Cojo>C4k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[J(XSi.4XSi-NXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@u/gAM#bgAM#'gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2[Gk5>:nk5>:3k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJW'!!.h5&XQQ\bmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g8<R(!.ijTg?72is8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,.8@!.j9`k3(n,s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJDot!.h5&XQchdmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g8*F&!.ijTg?I>ks8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k+q,>!.j9`k3;%.s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJW'!!.h5&XQQ\bmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g8<R(!.ijTg?72is8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,.8@!.j9`k3(n,s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJW'!!.h5&XQQ\bmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g8<R(!.ijTg?72is8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,.8@!.j9`k3(n,s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJDot!.h5&XQchdmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g8*F&!.ijTg?I>ks8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k+q,>!.j9`k3;%.s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJMuu!.h5&XQZbcmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g83L'!.ijTg?@8js8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,%2?!.j9`k31t-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXJW'!!.h5&XQQ\bmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g8<R(!.ijTg?72is8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k,.8@!.j9`k3(n,s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8j-X8i6OXF[I(XOjQRmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g`g&M,(g4@t/g=P'Ys8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?ojo>C4k(2ZGk1Abqs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8j,X8i6OXF[I(XOsWSmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g_g&M,(g4@t/g=Y-Zs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?njo>C4k(2ZGk1Jhrs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8j,X8i6OXF[I(XOsWSmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g_g&M,(g4@t/g=Y-Zs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?njo>C4k(2ZGk1Jhrs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8j,X8i6OXF[I(XOsWSmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g_g&M,(g4@t/g=Y-Zs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?njo>C4k(2ZGk1Jhrs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8j,X8i6OXF[I(XOsWSmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g_g&M,(g4@t/g=Y-Zs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?njo>C4k(2ZGk1Jhrs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8j+X8i6OXF[I(XP']Tmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g^g&M,(g4@t/g=b3[s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?mjo>C4k(2ZGk1Snss8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8j,X8i6OXF[I(XOsWSmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g_g&M,(g4@t/g=Y-Zs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?njo>C4k(2ZGk1Jhrs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8j,X8i6OXF[I(XOsWSmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g_g&M,(g4@t/g=Y-Zs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?njo>C4k(2ZGk1Jhrs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8j,X8i6OXF[I(XOsWSmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g_g&M,(g4@t/g=Y-Zs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?njo>C4k(2ZGk1Jhrs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8j,X8i6OXF[I(XOsWSmf(c:KE(uDKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g_g&M,(g4@t/g=Y-Zs8LaPJcGcBJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?njo>C4k(2ZGk1Jhrs8LRKKE(uDKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8j,X8i6OXF[I(XOsWSmf(c:K)krCKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g_g&M,(g4@t/g=Y-Zs8LaPJH5`AJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?njo>C4k(2ZGk1Jhrs8LRKK)krCKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8j-X8i6OXF[I(XOjQRmf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g`g&M,(g4@t/g=P'Ys8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?ojo>C4k(2ZGk1Abqs8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i6OXF[I(XH0I_mf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M,(g4@t/g5jtfs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>C4k(2ZGk)\[)s8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtX8i6OXF[I(XH9O`mf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hRg&M,(g4@t/g5t%gs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@ajo>C4k(2ZGk)ea*s8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtX8i6OXF[I(XH9O`mf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hRg&M,(g4@t/g5t%gs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@ajo>C4k(2ZGk)ea*s8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtX8i6OXF[I(XH9O`mf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hRg&M,(g4@t/g5t%gs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@ajo>C4k(2ZGk)ea*s8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtX8i6OXF[I(XH9O`mf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hRg&M,(g4@t/g5t%gs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@ajo>C4k(2ZGk)ea*s8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jsX8i6OXF[I(XHBUamf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hQg&M,(g4@t/g6(+hs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@`jo>C4k(2ZGk)ng+s8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtX8i6OXF[I(XH9O`mf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hRg&M,(g4@t/g5t%gs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@ajo>C4k(2ZGk)ea*s8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtX8i6OXF[I(XH9O`mf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hRg&M,(g4@t/g5t%gs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@ajo>C4k(2ZGk)ea*s8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtX8i6OXF[I(XH9O`mf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hRg&M,(g4@t/g5t%gs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@ajo>C4k(2ZGk)ea*s8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtX8i6OXF[I(XH9O`mf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hRg&M,(g4@t/g5t%gs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@ajo>C4k(2ZGk)ea*s8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtX8i6OXF[I(XH9O`mf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hRg&M,(g4@t/g5t%gs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@ajo>C4k(2ZGk)ea*s8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i6OXF[I(XH0I_mf(c:KCJmFeYN6-k.LbF~>
-!<E0!johC3g4=hSg&M,(g4@t/g5jtfs8LaPJai[Dg7eQ/k.1PC~>
-!<E0!johL1eVf@bjo>C4k(2ZGk)\[)s8LRKKCJmFeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:K)iUWrs=>Xs4*qFk2s>WJ,~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJH3RZrs=8Vs4X1Hk2s5TJ,~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKK)iUWrs=>Xs4*qFk2s>WJ,~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:K*&ads7k.EK*f6ks4*qFk2s>WJ,~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJHE^gs7k=JJI03ns4X1Hk2s5TJ,~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKK*&ads7k.EK*f6ks4*qFk2s>WJ,~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE&Xbs7t4FK*f6ks4*qFk2s>WJ,~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcEUes7tCKJI03ns4X1Hk2s5TJ,~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE&Xbs7t4FK*f6ks4*qFk2s>WJ,~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KE&Xbs8(:GKE&Xbrs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJcEUes8(ILJcEUers%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKE&Xbs8(:GKE&Xbrs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KDrRas81@HKE&Xbrs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJc<Ods81OMJcEUers%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKDrRas81@HKE&Xbrs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KDrRas8:FIKDrRars%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJc<Ods8:UNJc<Odrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKDrRas8:FIKDrRars%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KDiL`s8CLJKDrRars%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJc3Ics8C[OJc<Odrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKDiL`s8CLJKDrRars%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KDiL`s8LRKKDiL`rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJc3Ics8LaPJc3Icrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKDiL`s8LRKKDiL`rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KD`F_s8UXLKDiL`rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJc*Cbs8UgQJc3Icrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKD`F_s8UXLKDiL`rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KD`F_rrU`'KD`F_rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJc*CbrrUo*Jc*Cbrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKD`F_rrU`'KD`F_rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KDW=^s8IZK^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJc!:as8ITI_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKDW=^s8IZK^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KDW=`s+>t$^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJc!:cs+,au_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKDW=`s+>t$^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XGa1[mf(c:KDN:]KDW@^rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g5F\bs8LaPJbm7`Jc!=ars%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk)8C%s8LRKKDN:]KDW@^rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMmXaeWmYUB2ec19u]`<]]^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+s+13$s,$dTgAca#_>o/`_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:s+13$s,$dTec19u]`<]]^&S*:eYN6-k.LbF~>
-!<E0!jo_F0eS9['JaS*WM!k8ms+Bh@#1]OLk2s>WJ,~>
-!<E0!jo_=2g4=hTJcC<$M#[J.s+0\>#25dNk2s5TJ,~>
-!<E0!jo_F0eVf"YJcC<$M#[J)s+Bh@#1]OLk2s>WJ,~>
-!<E0!joD3.eUc8%eUl<OKCAgEeYN6-k.LbF~>
-!<E0!joD*+g4@t/g4J#YJa`UCg7eQ/k.1PC~>
-!<E0!joD3.eUc8%eUl<OKCAgEeYN6-k.LbF~>
-!<E0!joD3.eUc8%eUc9=eHMcKk2s>WJ,~>
-!<E0!joD*+g4@t/g4@uGg'+2Mk2s5TJ,~>
-!<E0!joD3.eUc8%eUc9=eHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eUc9=eHMcKk2s>WJ,~>
-!<E0!joD*+g4@t/g4@uGg'+2Mk2s5TJ,~>
-!<E0!joD3.eUc8%eUc9=eHMcKk2s>WJ,~>
-!<E0!joM:.JV/N+JV/Z/ldZ07s5rIW!.Y~>
-!<E0!joM10JUrB'JUrN+le2N9s5rIT!.Y~>
-!<E0!joM:.JV/N+JV/Z/ldZ07s5rIW!.Y~>
-!<E0!joM:.JV/N+JV/]0!<;B8"f21\k.LbF~>
-!<E0!joM10JUrB'JUrQ,!<;B="ektYk.1PC~>
-!<E0!joM:.JV/N+JV/]0!<;B8"f21\k.LbF~>
-!<E0!jo_F0K7id/!WTias+13$s/H#"^&S-)^&S,ueHMcKk2s>WJ,~>
-!<E0!jo_=2JV!F0!WU#fs+13$s/H#"_Z0Z._Z0Z%g'+2Mk2s5TJ,~>
-!<E0!jo_F0K7id/!WTias+13$s/H#"^&S-)^&S,ueHMcKk2s>WJ,~>
-!<E0!jo_F0K7ij1s8N+P]n-37s+13MrrIbcrVuT)s8VE8"f21\k.LbF~>
-!<E0!jo_=2JV!L2s8N+N_L_`<s+13MrrI\frVuT.s8VE="ektYk.1PC~>
-!<E0!jo_F0K7ij1s8N+P]n-37s+13MrrIbcrVuT)s8VE8"f21\k.LbF~>
-!<Bh3S-%5nKD3(Ys8R]Q^&S+`eUc8%eZIC%K)iU^s7j;-s6J2=S@tG_!!%N~>
-!<B_0R0))nJbR%\s8RWO_Z0Xeg4@t/g9'*/JH3Ras7jJ2s6JABRC\fS!!%N~>
-!<Bh3S-%5nKD3(Ys8R]Q^&S+`eUc8%eZIC%K)iU^s7j;-s6J2=S@tG_!!%N~>
-!!)uB".[noKDE4Zrrpr*K>%<bJ^o>%J^pmQs+:Hfs8UX"rVu`-s8VE8"e<iN]po(Q~>
-!!)u?".@koJbd1]rrq,-J\qHeJ_G\/J_I6[s+(<is8Ug,rVu`2s8VE="e!NE\sWPK~>
-!!)uB".[noKDE4Zrrpr*K>%<bJ^o>%J^pmQs+:Hfs8UX"rVu`-s8VE8"e<iN]po(Q~>
-!<CCD]`XeTK7j'7rVulIs+:Bds8RZ#J^o>%Xk!H(!knX6rRLlHr4W.1ldZ0/c+Uf\!.Y~>
-!<C:A\c\ASJV!^8rVulNs+(6gs8RZ(J_G\/XkNf+!lG!;rS%5Mr5/L6le2N1b.>0P!.Y~>
-!<CCD]`XeTK7j'7rVulIs+:Bds8RZ#J^o>%Xk!H(!knX6rRLlHr4W.1ldZ0/c+Uf\!.Y~>
-!<CCD]`XeTK7j-9rVufGs+:Bds8RZ#J^o>%Xk!H(!knX6qpkZFrk8@3ldZ0/c+Uf\!.Y~>
-!<C:A\c\ASJV!d:rVufLs+(6gs8RZ(J_G\/XkNf+!lG!;qqD#Krke^8le2N1b.>0P!.Y~>
-!<CCD]`XeTK7j-9rVufGs+:Bds8RZ#J^o>%Xk!H(!knX6qpkZFrk8@3ldZ0/c+Uf\!.Y~>
-!<CCD]`jqVK7gkNrVu`Es+:Bds8RZ#J^o>%Xk!H(!knX6q:5HD!knX6ldZ0/c+Uf\!.Y~>
-!<C:A\cnMUJUt\TrVu`Js+(6gs8RZ(J_G\/XkNf+!lG!;q:bfI!lG!;le2N1b.>0P!.Y~>
-!<CCD]`jqVK7gkNrVu`Es+:Bds8RZ#J^o>%Xk!H(!knX6q:5HD!knX6ldZ0/c+Uf\!.Y~>
-!<CCD]`FYRqh+[os+:Bds8RZ#J^o>%Xk!H(!knX6pso=qs8VE8"e<iN]po(Q~>
-!<C:A\cJ5QqgnOrs+(6gs8RZ(J_G\/XkNf+!lG!;ptG[ts8VE="e!NE\sWPK~>
-!<CCD]`FYRqh+[os+:Bds8RZ#J^o>%Xk!H(!knX6pso=qs8VE8"e<iN]po(Q~>
-!<CCD]`jqVK7gkNrIasss+:Bds8RZ#J^o>%Xk!H(!knX6q:5Fr!knX6ldZ0/c+Uf\!.Y~>
-!<C:A\cnMUJUt\TrIOh!s+(6gs8RZ(J_G\/XkNf+!lG!;q:bdu!lG!;le2N1b.>0P!.Y~>
-!<CCD]`jqVK7gkNrIasss+:Bds8RZ#J^o>%Xk!H(!knX6q:5Fr!knX6ldZ0/c+Uf\!.Y~>
-!<CCD]`XeTK7j-9rIb$us+:Bds8RZ#J^o>%Xk!H(!knX6qpkXtrk8@3ldZ0/c+Uf\!.Y~>
-!<C:A\c\ASJV!d:rIOn#s+(6gs8RZ(J_G\/XkNf+!lG!;qqD""rke^8le2N1b.>0P!.Y~>
-!<CCD]`XeTK7j-9rIb$us+:Bds8RZ#J^o>%Xk!H(!knX6qpkXtrk8@3ldZ0/c+Uf\!.Y~>
-!<CCD]`XeTK7j'7rIb+"s+:Bds8RZ#J^o>%Xk!H(!knX6rRLk!r4W.1ldZ0/c+Uf\!.Y~>
-!<C:A\c\ASJV!^8rIOt%s+(6gs8RZ(J_G\/XkNf+!lG!;rS%4$r5/L6le2N1b.>0P!.Y~>
-!<CCD]`XeTK7j'7rIb+"s+:Bds8RZ#J^o>%Xk!H(!knX6rRLk!r4W.1ldZ0/c+Uf\!.Y~>
-!<CCD]`XeTK7j!5rIY:(K7gl;s+/^OeUc8Qec17)^&S,_ebt-s^&S,ueHMJf]tKp9J,~>
-!<C:A\c\ASJV!X6rIG.+JUt]<s+/mTg4@t[gAc^,_Z0YigAQU!_Z0Z%g'*ne]"4:0J,~>
-!<CCD]`XeTK7j!5rIY:(K7gl;s+/^OeUc8Qec17)^&S,_ebt-s^&S,ueHMJf]tKp9J,~>
-!<CCD]`XeTK7ip3r.>'as8RZ#J^o>%Xk!H(!knX6rIamYs8VE8"e<iN]po(Q~>
-!<C:A\c\ASJV!R4r.+pds8RZ(J_G\/XkNf+!lG!;rIOa\s8VE="e!NE\sWPK~>
-!<CCD]`XeTK7ip3r.>'as8RZ#J^o>%Xk!H(!knX6rIamYs8VE8"e<iN]po(Q~>
-!<CCD]`XeTK7ij1rdt9cs8RY&JV/N+X+LPgs8R_(p:^M+ldZ0/c+Uf\!.Y~>
-!<C:A\c\ASJV!L2rdb-fs8RY$JUrB'X+:Djs8RY$p;6k0le2N1b.>0P!.Y~>
-!<CCD]`XeTK7ij1rdt9cs8RY&JV/N+X+LPgs8R_(p:^M+ldZ0/c+Uf\!.Y~>
-!<CCD]`XeTK7id/!e\2dJV/N+JV0tT!knVdoY(;)ldZ0/c+Uf\!.Y~>
-!<C:A\c\ASJV!F0!eJ5gJUrB'JUshP!lFtgoYUY.le2N1b.>0P!.Y~>
-!<CCD]`XeTK7id/!e\2dJV/N+JV0tT!knVdoY(;)ldZ0/c+Uf\!.Y~>
-!<CCD]`XeTK7eaTJcC<$L]?\j"e<iN]po(Q~>
-!<C:A\c\ASJUrCPJcC<$L]?\o"e!NE\sWPK~>
-!<CCD]`XeTK7eaTJcC<$L]?\j"e<iN]po(Q~>
-!<CCD]`O_SK7X&Rs+13)s6J2=SB\a\S,e'~>
-!<C:A\cS;RJV!iPs+13)s6JABREE+PR/ha~>
-!<CCD]`O_SK7X&Rs+13)s6J2=SB\a\S,e'~>
-!<CCD]`=RReUc8%eUc9=eHMJf]tKp9J,~>
-!<C:A\cA.Lg4@t/g4@uGg'*ne]"4:0J,~>
-!<CCD]`=RReUc8%eUc9=eHMJf]tKp9J,~>
-!<CCC^%%VDUk,=mUlM5N^%.Znc2PBWS,e'~>
-!<C:@]()2>Tn/ngToPfH](26hb5SsQR/ha~>
-!<CCC^%%VDUk,=mUlM5N^%.Znc2PBWS,e'~>
-!\j]"rOqgI!53s`JcC<$NrSXork/B'!&9!~>
-!^m%2rOVUC!4ma]JcC<$NrSXlrji0!!(;>~>
-!bq_[rOqgI!53s`JcC<$NrSXork/B'!-<Y~>
-!\j]"n%A^kJ`_OGJ``!T!6suG!h96NJ,~>
-!^m%2n%&LeJ`_OGJ``!T!6XcA!gs$VJ,~>
-!cn@dn%A^kJ`_OGJ``!T!6suG!h973J,~>
-s#C,\S=K,_!1\W&J`_OGNog>dn\+sm!WY58J,~>
-s$QngR@3TV!1AE#J`_OGNog>an[eag!WYVVJ,~>
-s)S5AS=K,_!1\W&J`_OGNog>dn\+sm!W[:_J,~>
-">Mnk!!)MYJ\?WJJ\@&VnXTUZs"OL6J,~>
-r^?bdn<nj=J\$EDNOnYJrrE$dJ,~>
-rcA)>n=5'CJ\?WJNP4kPrrE%>J,~>
-rAaj4JH16$JH16$li7#?r]'s5J,~>
-r'Z)9JH16$JH5$:r'Z&~>
-r,[DhJH16$JH5$:r,[A~>
-%%EndData
-showpage
-%%Trailer
-end
-%%EOF
diff --git a/lib/et/doc/src/megaco_tracer.gif b/lib/et/doc/src/megaco_tracer.gif
deleted file mode 100644
index cc4f747f03..0000000000
--- a/lib/et/doc/src/megaco_tracer.gif
+++ /dev/null
Binary files differ
diff --git a/lib/et/doc/src/megaco_tracer.png b/lib/et/doc/src/megaco_tracer.png
new file mode 100644
index 0000000000..b4b65a9f47
--- /dev/null
+++ b/lib/et/doc/src/megaco_tracer.png
Binary files differ
diff --git a/lib/et/doc/src/megaco_tracer.ps b/lib/et/doc/src/megaco_tracer.ps
deleted file mode 100644
index da1e1b6ba0..0000000000
--- a/lib/et/doc/src/megaco_tracer.ps
+++ /dev/null
@@ -1,2508 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: GIMP PostScript file plugin V 1.12 by Peter Kirchgessner
-%%Title: /home/hakan/picts/megaco_tracer.ps
-%%CreationDate: Mon Oct 14 17:35:19 2002
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%Pages: 1
-%%BoundingBox: 14 14 443 516
-%%EndComments
-%%BeginProlog
-% Use own dictionary to avoid conflicts
-10 dict begin
-%%EndProlog
-%%Page: 1 1
-% Translate for offset
-14.173228 14.173228 translate
-% Translate to begin of first scanline
-0.000000 501.599409 translate
-428.031496 -501.599409 scale
-% Image geometry
-512 600 8
-% Transformation matrix
-[ 512 0 0 600 0 0 ]
-% Strings to hold RGB-samples per scanline
-/rstr 512 string def
-/gstr 512 string def
-/bstr 512 string def
-{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
-true 3
-%%BeginData: 143198 ASCII Bytes
-colorimage
-">Mns0fadbJH16$MZ<c<1&a1`~>
-r'Z)9JH16$MZEZCJ,~>
-rc8*TF+F=B!.b-.!;png~>
-"?A1s!!)Qh!53s`JcC<$fDbiaa8c/>!\l\qJ,~>
-r^?bdnc&U'JcC<$JcF@%!5?MRrrE$dJ,~>
-rcA)>nc&U&JcC<$JcF@%!56GQrrE%>J,~>
-">Mn:s8VWG!53s6J^o>%f@9l7a56ja!WY58J,~>
-s$Qngs8VWC!5=$8J_#D'f@Br9a4gR]!WYVVJ,~>
-s)S5As8VWG!53s6J^o>%f@9l7a56ja!W[:VJ,~>
-!]^8\n(n&XJ^o>%J^rB&!56A.!lY."J,~>
-!^m%gn(IcUJ_#D'J_&H(!5?G+!l=q*J,~>
-!cnAAn(n&XJ^o>%J^rB&!56A.!lY.\J,~>
-!\j]Tn(n&XJ^qcj!6(hc!6'N>n'qEO`SL[8!',Q~>
-!^m%gn(IcUJ_%il!QrigecEqAJ_'>A!5?G+!l=q*J,~>
-!bq`8n(n&XJ^qcj!6(hc!6'N>n'qEO`SL[8!-<Y~>
-!<E/fh>k6HeH(;L`75%1Ut*/*HiB90eH(;LYLN]fH[GaVs4%.&HgoPdUqMW8!57RPpRLp5s.'&E
-s.'#D!NZ9O~>
-!<E/fg&SjEf)L<>edTEhf"Q]`R?<W_eq&CUed9'AI@64[f%,D'nC@W6^5:D@^?=5ERJ#;6RJkk>
-RJbb>XoNt~>
-!<E/fh>k6HeH(;L`75%1Ut*/*HiB90eH(;LYLN]fH[GaVs4%.&HgoPdUqMW8!57RPpRLp5s.'&E
-s.'#D!NZ9O~>
-!<E/thZ',ChZ',Eh>k7dec0srMuM6.UjIaFeH*Y&eCFGC!/(-u!J>a^eI9ELe^_X/K6r6@c./'U
-HNBA]r-JI&^&-=l`I"uBMgNFnPa'_KK6u/!`P&V.%?#SPeWc<KeUr5!e]#5oeH3+)`JW1G^$"8H
-SG(h<SH%IESGh:FX8mb~>
-!<E/tf)M08f)M0:ec<G]df4^qNW.?-Tm_XGdK.4neC">Jr-\R!qU5CpkL'dQL!nDhR>$'CS]]BG
-qgAO.dXh@F!K"PfdLj?I[aL.``m0^/daE\tdaH"@ZdK;BIE'QpOj_[/J^Vu`[e.uL[XGlIdK%#E
-f(YU+f);$:f);$8ecDoRJ,~>
-!<E/thZ',ChZ',Eh>k7dec0srMuM6.UjIaFeH*Y&eCFGC!/(-u!J>a^eI9ELe^_X/K6r6@c./'U
-HNBA]r-JI&^&-=l`I"uBMgNFnPa'_KK6u/!`P&V.%?#SPeWc<KeUr5!e]#5oeH3+)`JW1G^$"8H
-SG(h<SH%IESGh:FX8mb~>
-!<E/uhYiuChYiuDh>k7dec'n!c.1?sH\9o"!J>aKec1!o^&$7[K6ue3)l0"S`IiN=]qg"-c,IB0
-H[EH>`RT<^]tL4gKDX1&Mj2cBK7!LG"bV0PeUr4TeH(;Lqpbk&He$Z!Hh5bgP`(FL!57RPpRLs6
-pRM3=!NZ9O~>
-!<E/uf);$8f);$9ec<G]df+Xub0n^lI>-8#s+/\J!J,[t\cBJ@df4m]dMo$Rd`-idV7NLOL!%9D
-\p]"<]#)mHJ\&FdI>RjL"c8MmdXcuHdf4mudf4m)df4mqdf4mudf4midK,ViMUDL=kLTBqp=Au+
-rRM"P!.Y~>
-!<E/uhYiuChYiuDh>k7dec'n!c.1?sH\9o"!J>aKec1!o^&$7[K6ue3)l0"S`IiN=]qg"-c,IB0
-H[EH>`RT<^]tL4gKDX1&Mj2cBK7!LG"bV0PeUr4TeH(;Lqpbk&He$Z!Hh5bgP`(FL!57RPpRLs6
-pRM3=!NZ9O~>
-!<E/uhY`oDhY`oCh>k7deJ!:^HaM>BH\6t$e]!GnK='1Z`K^=J'\10eH[C[ie^^aZH[C[qeZ=[U
-Mlcg+!2TU@*lX%qXGb&^H[C[ie^^aZH[C[qe]!GnK='1ZMi4Zpo[WtgqUPV((T`PFK6u.fP^@b8
-`RWLsMnOai[+3^GPl5t.eHLlEeWbE^rm_(GH^t)cs*O^ps*Oaqs*O[o"MK/qeXZVc#gJ!Ke^];!
-eYN1ks2>D)H\8]UeVf?eMq*H,qpk_)'"rpE['YI4[+3^GMgL)`e^_X'rHf7/`KY^rMoF5sXG_FP
-Mp9eRMgLA`psfA7rd+pqK6u/!K6u.Erd4[a%?#Rc[+3]bMl_ie]mIGNeH!;GhY3Q5hYE]>h>s\X
-J,~>
-!<E/uf)1s9f)1s8ec<G]dM%%_IBq;<JUrO'd__,pKsK.T_NFeF'[k!`JUNNldaG:TI=6spd]SFT
-M6?a(!29C?*l<nrV2`KWJUNNldaG:TI=6spd__,pKsK.TNK'coo[3bkIJVClN>JFNdXctt`fYh#
-NP<ihNK(N'J[3_P_NFeFrmCt0]$cjlY5ZiNV1"p6dK+oIrR1^srmLgpr6b_ZICdjprd>'pJUu7t
-JUu7CrdFg`%$>slZI70\NMVW_JV!^Hs,@Z"Kn6D8Kn6PXd__,pKsK.T_NFeF'[k!`JUNNldaG:T
-I=6spd]SFTM6?X%!1Eh7#g.^LdaE\td\6Ygs2#5-I>+uTdZ'6_NRG7`\r4u:^?=)ARJ#/,RJbV:
-XoNt~>
-!<E/uhY`oDhY`oCh>k7deJ!:^HaM>BH\6t$e]!GnK='1Z`K^=J'\10eH[C[ie^^aZH[C[qeZ=[U
-Mlcg+!2TU@*lX%qXGb&^H[C[ie^^aZH[C[qe]!GnK='1ZMi4Zpo[WtgqUPV((T`PFK6u.fP^@b8
-`RWLsMnOai[+3^GPl5t.eHLlEeWbE^rm_(GH^t)cs*O^ps*Oaqs*O[o"MK/qeXZVc#gJ!Ke^];!
-eYN1ks2>D)H\8]UeVf?eMq*H,qpk_)'"rpE['YI4[+3^GMgL)`e^_X'rHf7/`KY^rMoF5sXG_FP
-Mp9eRMgLA`psfA7rd+pqK6u/!K6u.Erd4[a%?#Rc[+3]bMl_ie]mIGNeH!;GhY3Q5hYE]>h>s\X
-J,~>
-!<E/teb>U4eH!;[bq4:4H^)dNP_4V5`IifVP^CBoK7h.fK6tkVXM(ufMp8&EMmTje`N4EN]p*lF
-r66G)H[EHNK6rNP]r\oSH]-.EH],8<UrC<*K>!Lr`Qa$^Mkp!is*O^XrlldBH]+]EK6tkVXM(uf
-Mp9M!H]+D@K?_YnK>l)fHd0gSHd0f^Hc?!/!kir5rltIirQY@hs31V@H].gH,+O#!c,G$V^!21V
-c-:lfc,G$V]u>VV]p*l_c%CA$Us4gMqopaGH]+D@H]+D@K?_AfK>!Lr`Qa$f`Qa$^c+U3l[!R_U
-UjJ$,[%t[BH^)4.H`[%f+2rSR^!21Vc-:lfc,G$V]u>VV]p*l_c%CA$Us6l*S;YVl^$!oGSGC\8
-SFkA/SGUh;X8mb~>
-!<E/tdeB1.dK%#Yc7OI8I?i*SR>$@?b(58XQ$pZpJVCtdKmh7\Y.h>mM9_rGM6aRi`i=HP^6O,H
-r6?M+JUPD\JUNBO^952YI>Q7GI>P8<WlE24Kt<Ot`m0-`M5Bji!J,[t\gbeIc@LD#V9XXCcG$Hq
-[XF"Xc@LD#Tm_X?b(58`c@p\lcGkFXc@(,\rltS^I>.[G!J,[tcMrFucH;u3Oo3KKTmar+`drQT
-c@LPlc@LPl`drQT`driTQ$pZtJUNBOcA@DTc7XZrNM1cKNM1cScH:]l\s7]`b(58`c@p\l^952Y
-I>Q7GI>P8<WlD&eQ+iN3Wqjp^`drQTc@LPlc@LPl`drQT`driTQ$pZtJUNBOcGk:+Mp;=:kL'?u
-q9f82o[<W)qpGMJ!.Y~>
-!<E/teb>U4eH!;[bq4:4H^)dNP_4V5`IifVP^CBoK7h.fK6tkVXM(ufMp8&EMmTje`N4EN]p*lF
-r66G)H[EHNK6rNP]r\oSH]-.EH],8<UrC<*K>!Lr`Qa$^Mkp!is*O^XrlldBH]+]EK6tkVXM(uf
-Mp9M!H]+D@K?_YnK>l)fHd0gSHd0f^Hc?!/!kir5rltIirQY@hs31V@H].gH,+O#!c,G$V^!21V
-c-:lfc,G$V]u>VV]p*l_c%CA$Us4gMqopaGH]+D@H]+D@K?_AfK>!Lr`Qa$f`Qa$^c+U3l[!R_U
-UjJ$,[%t[BH^)4.H`[%f+2rSR^!21Vc-:lfc,G$V]u>VV]p*l_c%CA$Us6l*S;YVl^$!oGSGC\8
-SFkA/SGUh;X8mb~>
-!<E/sebPa5eH!;[bnk`&P^CZ5["F"UXF$J^XF%%MH^r@*K7!UB#K=B/K?]$q`Vn$cK6tS^`I!77
-blr`Hc-:lfrQPSd]n:s^K6tT9bmCIuSB\-^XNcBEqoo5=H[CDCc22hj^!4fSHiD7jK7!UB)o]LC
-K?_YnHc=6VHd/X=SB]<2Hd0g:Pg.I"Hi;1j`Hut2c2W.hc2;nhMoGV=!L.s1bnu([c-:lfc-:lf
-c-:lfc)c8^c)c8nc%CB:bnu([`Q`aV`Q`aVc)c8^c)c8nXF$J^c%CBBbm25$K7hF$Hc>s.#(q9A
-c,G$^prsY.Hd0ffHd0ffHd0ffHd/X=SB\-^XNcBErQP@iP`*cd^$!oGSGC\8SFkA/SGUh;X8mb~>
-!<E/sdeT=/dK%#Yc51o*Ob(Z3ZA""XY'm"dY'mIYI@\[/KmisG#K"3+L!GC#_YqaaM1*Ch`dN^@
-cMrIqc2rQFb5TZk_S1STc@p\`rQYbQIA+fdIBLkHIEMK5"/UEoM>YX!Jc'p&^<Y#TIEKj\JV!gG
-)oB=?L!ItpIE'Q`J^1QLS^,N7IEp-@Q-RO#IJqFmb'e^;c2iKErQYCorI"^'_Yh[[Q$rYWs+13q
-s+13qs+13qs+(R'Y'm"dY'mIuJUP]8c5;+\b0GQdb0GQhcE;Shb-$/qZ@/:hc@p]Gc3M5#JVDC'
-IDYs.#)RcJcGk9hps/njs3CXqs3CXqs3CXq$dPo'TusNdY0MTHb5TZeI?f`9!5@XE!1EZ2!1EK-
-qjI?0!NlEQ~>
-!<E/sebPa5eH!;[bnk`&P^CZ5["F"UXF$J^XF%%MH^r@*K7!UB#K=B/K?]$q`Vn$cK6tS^`I!77
-blr`Hc-:lfrQPSd]n:s^K6tT9bmCIuSB\-^XNcBEqoo5=H[CDCc22hj^!4fSHiD7jK7!UB)o]LC
-K?_YnHc=6VHd/X=SB]<2Hd0g:Pg.I"Hi;1j`Hut2c2W.hc2;nhMoGV=!L.s1bnu([c-:lfc-:lf
-c-:lfc)c8^c)c8nc%CB:bnu([`Q`aV`Q`aVc)c8^c)c8nXF$J^c%CBBbm25$K7hF$Hc>s.#(q9A
-c,G$^prsY.Hd0ffHd0ffHd0ffHd/X=SB\-^XNcBErQP@iP`*cd^$!oGSGC\8SFkA/SGUh;X8mb~>
-!<E/rebbm6eH!;[bmJfnXF$aic%CYnV#5T>U^qgJc-:lfc+Sa^MgL*$H[G\8s*Oais*OXf&;,>S
-c%CAfc+Sa^MgL*$H[G\8!2TO>"/O1oHi)%i`P&t(r6>7gqTT%nHiD85K6tkVK7f)/K?_YnHd0ff
-Hd/@5Us7/:Hd0g"XNf":Hc?!/!kir5rltIirQY@hs0MdFqTT&*HiD8#K6tkfK6tkfK6tkfK6tk=
-r-JOAc%CB:bmT/Nc-:lfc-:lfc(t8as.g0PUs7/:Hd06VK8Y)/c$Og8c2W.ic2W.cbn#GRc-:lf
-c-:lfc-:lfc(t8a"/O1oHi;1iH^'H5!58<\!582u!58*V!1`l8!1``4q4.B5!NZ9O~>
-!<E/rdefI0dK%#Yc3eurY'm<ub(YPpV>PcAV%8!JcH_,lcFS^\NI?N+I=;%=!J,[ucMr=icMrIq
-cMrIqc3V"8JW5)3c@(-=c2a^=I06=kJV!^D!6Y;Xr6>=oIJV7hJc<spJKN1KKn553L!ItpJ^2Pl
-J^1*?U!Cr;IEp-#Y0P=@IE)93!lBA>rltOqIJqIkJcE:]_YVOYQ$rYWs+13qs+13qs+13qs+(3r
-V>P`DV9XXCp<N\hs3CXqs3CXq!R@P>IK-,SIA+s3Kmh7XKn553L!G*pr6>=oIK%OlIJD+fJcF$q
-JcF$qJcF$qJH=&mr-\[Dc@LQFc2i?YMp;=:r6bSVq3_5op<ir/q9f82p!WZ(r6bVK!.Y~>
-!<E/rebbm6eH!;[bmJfnXF$aic%CYnV#5T>U^qgJc-:lfc+Sa^MgL*$H[G\8s*Oais*OXf&;,>S
-c%CAfc+Sa^MgL*$H[G\8!2TO>"/O1oHi)%i`P&t(r6>7gqTT%nHiD85K6tkVK7f)/K?_YnHd0ff
-Hd/@5Us7/:Hd0g"XNf":Hc?!/!kir5rltIirQY@hs0MdFqTT&*HiD8#K6tkfK6tkfK6tkfK6tk=
-r-JOAc%CB:bmT/Nc-:lfc-:lfc(t8as.g0PUs7/:Hd06VK8Y)/c$Og8c2W.ic2W.cbn#GRc-:lf
-c-:lfc-:lfc(t8a"/O1oHi;1iH^'H5!58<\!582u!58*V!1`l8!1``4q4.B5!NZ9O~>
-!<E/qebu$7eH!;[bm\rp`Hurrc%CYnXF$K9bn7%(SB]<*Hd.Iqc-:lnc%CAVrQPP!Hc=7KH\;4?
-&VGGTc%CAfc&6qnc%CYnK6t<1blXtnSG^V4K7!16s*OUe!J>auboq^dc&6qnc%CYnc%CAfc%CAf
-XF$J^c$Of^c$RFSc'3RVrlkM?H^t)[s*O^hs*OLb(8Q;rc-:lfc-:lfc-:lfc-:lfc)c8^r657p
-HhP\nK6tkfK6tkfK6tkEH^t&Z&Zg>Lc-:T^c&6qnc%CYnK6t<1bm&fI`QcAKKD<\'K6tkfK6tkf
-K6tkfK6tkEH^t#Y!J>aublYk2S;YVl^&6FTSG(J5SGC\8SG(M-SGgt=X8mb~>
-!<E/qdf#U1dK%#Yc4#,t`dN9#c@pttY'm#Bc4R4-REis+IEmh'b0G]pc@p\\rQYV(IE'RPI>RjH
-s+13qs+13q$&sMYc@pttKmg]6c2t.sU&<49Jb%(eJURC?s+10ps+)9;NIf6tKn[gtJUu+lJUu+L
-I@8C'JUPhdIE'RXQ$o\3c2s\fRJtJ4JURLBs+0pi(86/rcH^ulcH^ulcH^ulcH^ulcE;Shr6G=n
-p<N\hs3CXqs3CXq"4"&tU&E7KY'l_`b(4udNIf6tKn[g+ID5[*#)RcJcGk9hps/njs3CXqs3CXq
-s3CXq"4"&tU&<49Jc<pr`dOP=c2bTVdeB1'dK#^2dK#^/deB1.dK-KNJ,~>
-!<E/qebu$7eH!;[bm\rp`Hurrc%CYnXF$K9bn7%(SB]<*Hd.Iqc-:lnc%CAVrQPP!Hc=7KH\;4?
-&VGGTc%CAfc&6qnc%CYnK6t<1blXtnSG^V4K7!16s*OUe!J>auboq^dc&6qnc%CYnc%CAfc%CAf
-XF$J^c$Of^c$RFSc'3RVrlkM?H^t)[s*O^hs*OLb(8Q;rc-:lfc-:lfc-:lfc-:lfc)c8^r657p
-HhP\nK6tkfK6tkfK6tkEH^t&Z&Zg>Lc-:T^c&6qnc%CYnK6t<1bm&fI`QcAKKD<\'K6tkfK6tkf
-K6tkfK6tkEH^t#Y!J>aublYk2S;YVl^&6FTSG(J5SGC\8SG(M-SGgt=X8mb~>
-!<E/pec208eH!;[bq4:<c&6qMc%CYnc%CA=[&gXRH[DQHH[F"qH`X;qHbHM-K<2bf`N4EN]p*lF
-qop48HaM%MHd0fnH`X;qHbHM-K<2bf`Qa$^UpR51c%CB6c2W.g[/\AOK7!UB)hWL^MgMP,H[EHN
-K6tkfK6tk^H[DQHH[F#EMuLs,]mG+%[%r&$`W"-^Hi;4hHhYc*]mI-2c%CAfc%CAfc%CAfc%CAM
-`IiN5[&gXZK7!UB!K2U-bq=Wqc-:lfc-:lfc-:lfUpR51`Hus-MgKfqMgMP,H[EH-H\8E5XMq8f
-PeE<.XSC$WK6tkfK6tkfK6tkfK6suEK6sE$XL-6)HiD7k[!TKEblGHTeb>U-eGu-8eGu-5ebu$<
-ebu$:eH)`OJ,~>
-!<E/pcMs1*c2bTUat8%8b)(PLb(YPl`eAi;[]ZpQI=7fGI=97pIB';qID2_0Ks%ka_Q&$L\s7]?
-qoU";[email protected]]c,lIB';qID2_0Ks%ka_T%:XV7*P4b(5-7aoR'Ar3?FEb(5-Cb5[#1b)(PHWdT<0
-b(5,db(5,d_L6j+M1'fpZAJS'#ekk<TsCA?J\qE/!J,[tb5[%earS'AY0+n<J]c,dJ]c,dJ]c,l
-IC@"HIAOBTZH@`LrlY7tqo\qis2t@ms2t@m,g+,\IAOBTZGM$<To"2Gb)(PHWdT<0WdTT([]73E
-I?hC/IAQ_]s+13ms+13ms+13m%#KD@_M*E7[]ZpYJV!gC!j6s[Mol%6r6G&%p<EZ'q9Au*p<NW%
-s3CS.rQYGH!.Y~>
-!<E/pec208eH!;[bq4:<c&6qMc%CYnc%CA=[&gXRH[DQHH[F"qH`X;qHbHM-K<2bf`N4EN]p*lF
-qop48HaM%MHd0fnH`X;qHbHM-K<2bf`Qa$^UpR51c%CB6c2W.g[/\AOK7!UB)hWL^MgMP,H[EHN
-K6tkfK6tk^H[DQHH[F#EMuLs,]mG+%[%r&$`W"-^Hi;4hHhYc*]mI-2c%CAfc%CAfc%CAfc%CAM
-`IiN5[&gXZK7!UB!K2U-bq=Wqc-:lfc-:lfc-:lfUpR51`Hus-MgKfqMgMP,H[EH-H\8E5XMq8f
-PeE<.XSC$WK6tkfK6tkfK6tkfK6suEK6sE$XL-6)HiD7k[!TKEblGHTeb>U-eGu-8eGu-5ebu$<
-ebu$:eH)`OJ,~>
-!<E/feH!;[bq+4;c+U4'c%CYnc,GooH\8EEXFl/4K6tkMK6s,aH^r?^MgKf/`QbK:H\8Erboa<F
-HbG&Yc-<VJH^pmYSB\-nH[C[ic,GooH\8EEK7!16qKi=Xc%CBBbo;:^c*W+MS>:M%c%CAfc%CAf
-c)cPM["E_MS>?,.#/ugZH\7j-rQY@hrQY@hp<EVqs32C5Hd0ffHd0ffHd0gBK6t;NP^@b0XNcBE
-rlkIrHi)&>K6tkfK6tkfK6tkf`KY^rK<3>!K7gO`Hd/pMH^pmYSB\-nH[C[ic)cPEK<4gl(k[1[
-c%CAfc%CAfc*W+M]u?4_H\8EEK7!UBs,2cZ!58<\!582u!58*VpRLp,s.'&<s.'#;!NZ9O~>
-!<E/fc2bTUat.t7b.=Umb(YPlb/0EpI>+iHY(;;4Kn7CTKmfMcI@86XM1'f/^<3:+I>+]tardp?
-J\$D`b0%/HI@['[REDOdI=6sdb/0EpI>+iHJV!C7!.k#q"1lX+Jc<glJJlV=KmfMcI@86/J]c,d
-J]c-<JVCC`J]aCSrQ5>YQ%=@;RDSpF!J,[tb5[%db5[J$b5[%mb5[%mb5[%mapbS,J\&^`JUN6T
-b(5-Cb5[%ib5[%mb5[%mb5[%mas"WeJUN6Tb-$;LZA!kP[Y9.#Tm`?OWel.PM8%-/KmeZTpWEMe
-s2t@ms2t@ms2kbUJUtDLQ%=@;Y0)<HrlY8#MTPq5r6>;Nq3:rgp<NDtp!3T&rQbG.r6>>G!.Y~>
-!<E/feH!;[bq+4;c+U4'c%CYnc,GooH\8EEXFl/4K6tkMK6s,aH^r?^MgKf/`QbK:H\8Erboa<F
-HbG&Yc-<VJH^pmYSB\-nH[C[ic,GooH\8EEK7!16qKi=Xc%CBBbo;:^c*W+MS>:M%c%CAfc%CAf
-c)cPM["E_MS>?,.#/ugZH\7j-rQY@hrQY@hp<EVqs32C5Hd0ffHd0ffHd0gBK6t;NP^@b0XNcBE
-rlkIrHi)&>K6tkfK6tkfK6tkf`KY^rK<3>!K7gO`Hd/pMH^pmYSB\-nH[C[ic)cPEK<4gl(k[1[
-c%CAfc%CAfc*W+M]u?4_H\8EEK7!UBs,2cZ!58<\!582u!58*VpRLp,s.'&<s.'#;!NZ9O~>
-!<E/feH!;EblN0DOj+#UK?]%^hou5AK<3&:!IKIac2)be^#mQ@XFnKLblGGqeH)`OJ,~>
-!<E/fc2bT@ao]S2Kp'R^`dNQ`Kt?0a!lBMb`l\A&I>-t/qL&@Tk/mb*J\m;e!5?Cs!NlEQ~>
-!<E/feH!;EblN0DOj+#UK?]%^hou5AK<3&:!IKIac2)be^#mQ@XFnKLblGGqeH)`OJ,~>
-!<E/fblGHB`<N]6Uo]K$S<h,"[$7AfMgLu$KAFKI]qifi#.0VjXG_Fqa2J(T]ns].]u8.rX8mb~>
-!<E/faoK0@`Wil6WiD&,TpE\([ZRSiNI@M/J_e<H^7i]h#.BYoWf;G#a2S.R^59i0^;S.pXoNt~>
-!<E/fblGHB`<N]6Uo]K$S<h,"[$7AfMgLu$KAFKI]qifi#.0VjXG_Fqa2J(T]ns].]u8.rX8mb~>
-!<E/fblGHB`<Er>K6r6HQ,O$BP_4=8UrC$SUr<MNP_4=8Uk-M/`;mTiblOmGJ,~>
-!<E/faoK0@`Wa)=JUN6GQ,X*DOb%q7TuOgXUrESPOb%q7Tn15-`W3`kaoSXFJ,~>
-!<E/fblGHB`<Er>K6r6HQ,O$BP_4=8UrC$SUr<MNP_4=8Uk-M/`;mTiblOmGJ,~>
-!<E/fblGG.`IZ!Z`Ri'/]u8.rX8mb~>
-!<E/faoK/,`du-\`n/31^;S.pXoNt~>
-!<E/fblGG.`IZ!Z`Ri'/]u8.rX8mb~>
-!!%S&JV/N+K7a.(J,~>
-!!%S$JUrB'K7O"&J,~>
-!!%S&JV/N+K7a.(J,~>
-!<E0!joD3.s+13$s,I$^V#TT>]`<Q~>
-!<E0!joD*+s+13$s,I$^U&X9;\c@6~>
-!<E0!joD3.s+13$s,I$^V#TT>]`<Q~>
-!<E0!joD3.s+13$s,R*`K;AP0k.LbF~>
-!<E0!joD*+s+13$s,R*`JYE,+k.1PC~>
-!<E0!joD3.s+13$s,R*`K;AP0k.LbF~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys8(:A!!:[N!:A>:!<(IH!7TKs!;Y1F!!:[N!:eV>!9Vi-!!^sR!7fU"!9Vi3!<1OK
-!;Y1F!.i[Oe`bQ`K*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IF!!:jS!:AM?!<(XM!7T[#!;Y@K!!:jS!:eeC!9W#2!!_-W!8?-,!9W#8!<1^P
-!;Y@K!.ijTg?@8jJH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:A!!:[N!:A>:!<(IH!7TKs!;Y1F!!:[N!:eV>!9Vi-!!^sR!7fU"!9Vi3!<1OK
-!;Y1F!.i[Oe`bQ`K*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!;b7G!:A>:!<(IJ!7KEt!<:UL!;b7G!!:[N!:eV>!9Vi3!;b7G!<:UL!9Vi3
-!<1OK!;Y1F!.i[Oe`bQ`K*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IL!;bFL!:AM?!<(XO!7KU$!<:dQ!;bFL!!:jS!:eeC!9W#8!;bFL!<:dQ!9W#8
-!<1^P!;Y@K!.ijTg?@8jJH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:G!;b7G!:A>:!<(IJ!7KEt!<:UL!;b7G!!:[N!:eV>!9Vi3!;b7G!<:UL!9Vi3
-!<1OK!;Y1F!.i[Oe`bQ`K*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<:UL!!LgP!7fWu!<:UL!<:UL!<:UL!<:UJ!<:UL
-!!:[N!;+hA!;k=F!<:UL!!LgP!7fWu!<1OI!<:UJ!<:UJ!<:UL!!:[N!;+hA!<(IJ!!CaO!7h#J
-s4.&Js4.,L!n@8No[WsArmh#Ks4.&Js4.,L"k<SQeGoT#eUc9=ec17*V#TT>]`<Q~>
-!<E0!joV7Vs8(IL!<(XO!!M!U!8?0*!:nkD!<:dQ!!M!U!8?0*!<:dQ!<:dQ!<:dQ!<:dO!<:dQ
-!!:jS!;,"F!;kLK!<:dQ!!M!U!8?0*!<1^N!<:dO!<:dO!<:dQ!!:jS!;,"F!<(XO!!CpT!8@AO
-s4[DOs4[JQ!nmVSo\0<Frn@APs4[DOs4[JQ"kiqVg&M,(g4@uGgAc^-U&X9;\c@6~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<:UL!!LgP!7fWu!<:UL!<:UL!<:UL!<:UJ!<:UL
-!!:[N!;+hA!;k=F!<:UL!!LgP!7fWu!<1OI!<:UJ!<:UJ!<:UL!!:[N!;+hA!<(IJ!!CaO!7h#J
-s4.&Js4.,L!n@8No[WsArmh#Ks4.&Js4.,L"k<SQeGoT#eUc9=ec17*V#TT>]`<Q~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@s4.,L*7Y#heGoU"eGoU"!!(R"!!(R"!!(OL
-!7fU"!7guIo[WsAr71fIs4.,L+OpGleGoU"!!(R"!!(OL!7fU"!7fU"!7fU"!7fU"!7guIo[WsA
-rRLoJ&(LX[e^XX"e^XX"e^XX"ebfF>ec,XKec,UVeGoU"eGoU"!!(RK!!:[N!.i[OeaM&gK*A(N
-k2s>WJ,~>
-!<E0!joV7Vs8(IL!<(XO!"%?Z!87DQg=cN,o@j3Es4[JQ*81Amg&M-,g&M-,!!(a,!!(a,!!(^Q
-!8?-,!8@>No\0<Fr7_/Ns4[JQ+PHeqg&M-,!!(a,!!(^Q!8?-,!8?-,!8?-,!8?-,!8@>No\0<F
-rS%8O&)%!`g=cN,g=cN,g=cN,gACsCgA_0PgA_-[g&M-,g&M-,!!(aP!!:jS!.ijTg@*bqJH_bI
-k2s5TJ,~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@s4.,L*7Y#heGoU"eGoU"!!(R"!!(R"!!(OL
-!7fU"!7guIo[WsAr71fIs4.,L+OpGleGoU"!!(R"!!(OL!7fU"!7fU"!7fU"!7fU"!7guIo[WsA
-rRLoJ&(LX[e^XX"e^XX"e^XX"ebfF>ec,XKec,UVeGoU"eGoU"!!(RK!!:[N!.i[OeaM&gK*A(N
-k2s>WJ,~>
-!<E0!joV@Ys8(:D!"@BX!7_&LeGoU"eGoU@ec,XLec,UheGoU"!!(R"!!(R"!!(OL!7_&Le^XX"
-e^XX"ec#R>ec,XIec,XLec,U[eGoU"!!(OL!7fU"!7_&Lqpk]Hs4.,Ls4.,L!7h&Ko%!X<'%Hs^
-eGoU"eGoU"eGoU"eGoU"rW)N>q>_)W!!(R"!!(OL!7_&Le^XX"J^o>%n(%Gj"f21\k.LbF~>
-!<E0!joV7Vs8(II!"@Q]!87DQg&M-,g&M-EgA_0QgA_-mg&M-,!!(a,!!(a,!!(^Q!87DQg=cN,
-g=cN,gAV*CgA_0NgA_0QgA_-`g&M-,!!(^Q!8?-,!87DQqqD&Ms4[JQs4[JQ!8@DPo%O!A'&!<c
-g&M-,g&M-,g&M-,g&M-,rW)NCq>_)\!!(a,!!(^Q!87DQg=cN,J_G\/n(Rem"ektYk.1PC~>
-!<E0!joV@Ys8(:D!"@BX!7_&LeGoU"eGoU@ec,XLec,UheGoU"!!(R"!!(R"!!(OL!7_&Le^XX"
-e^XX"ec#R>ec,XIec,XLec,U[eGoU"!!(OL!7fU"!7_&Lqpk]Hs4.,Ls4.,L!7h&Ko%!X<'%Hs^
-eGoU"eGoU"eGoU"eGoU"rW)N>q>_)W!!(R"!!(OL!7_&Le^XX"J^o>%n(%Gj"f21\k.LbF~>
-!<E0!joV@Ys8(:G!<(IJ!!CaO!7grHo$n!Ge^XZMeGoU"qZ-ZHrr<;S!!(OL!7fWs!!:[N!:eV>
-!;tCI!<:UL!!^sR!7_&Leb]=JeGoUHec,XLec,XLec,UNeGoU>ec,XJec,UTeGoU"eGoU"eb]=J
-eGoU>ec,XKec,ULeb]=QeGoU"!!(R"!!%T#J^s5>s+:KNs5rIW!.Y~>
-!<E0!joV7Vs8(IL!<(XO!!CpT!8@;Mo%F?Lg=cP\g&M-,qZ-ZMrr<;X!!(^Q!8?0(!!:jS!:eeC
-!;tRN!<:dQ!!_-W!87DQgA:jOg&M-MgA_0QgA_0QgA_-Sg&M-CgA_0OgA_-Yg&M-,g&M-,gA:jO
-g&M-CgA_0PgA_-QgA:jVg&M-,!!(a,!!%T(J_KSHs+(?Is5rIT!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!!CaO!7grHo$n!Ge^XZMeGoU"qZ-ZHrr<;S!!(OL!7fWs!!:[N!:eV>
-!;tCI!<:UL!!^sR!7_&Leb]=JeGoUHec,XLec,XLec,UNeGoU>ec,XJec,UTeGoU"eGoU"eb]=J
-eGoU>ec,XKec,ULeb]=QeGoU"!!(R"!!%T#J^s5>s+:KNs5rIW!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!!UmQ!7_&Lma_79s4.,L!n@8Nqpk]H$.T"UeGoU"eGoUIec,X>ec,XI
-ec,XLec,UTeGoU"!!(OL!;tCI!;k=H!<:UL!<:UL!!:[N!:eV>!<(IJ!".6V!7fU"!7fU"!;tCI
-!:eV>!<1OK!!:[N!;tCI!!^sR!7fU"!.i[OeaM&gK*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IL!<(XO!!V'V!87DQmb7U>s4[JQ!nmVSqqD&M$/,@Zg&M-,g&M-NgA_0CgA_0N
-gA_0QgA_-Yg&M-,!!(^Q!;tRN!;kLM!<:dQ!<:dQ!!:jS!:eeC!<(XO!".E[!8?-,!8?-,!;tRN
-!:eeC!<1^P!!:jS!;tRN!!_-W!8?-,!.ijTg@*bqJH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:G!<(IJ!!UmQ!7_&Lma_79s4.,L!n@8Nqpk]H$.T"UeGoU"eGoUIec,X>ec,XI
-ec,XLec,UTeGoU"!!(OL!;tCI!;k=H!<:UL!<:UL!!:[N!:eV>!<(IJ!".6V!7fU"!7fU"!;tCI
-!:eV>!<1OK!!:[N!;tCI!!^sR!7fU"!.i[OeaM&gK*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"n^[X>rmh#K#1W\Re^XX"rmh#Ks4.,Lrmh#Ks4.,L
-!n@8NnC@O=s4.&Js4.,L(tATdeGoU"!!(R"!!(OL!7fU"!7fU"!7h&Ks4.,L!n@8Nn^[X>rRLoJ
-#LreSe^XX"ec#RKec,UNeGoU>ec,XKec,UVeGoU"eGoU"!!(RK!!:[N!.i[OeaM&gK*A(Nk2s>W
-J,~>
-!<E0!joV7Vs8(IL!<(XO!"%?Z!87DQg=cN,n_4!Crn@AP#20%Wg=cN,rn@APs4[JQrn@APs4[JQ
-!nmVSnCmmBs4[DOs4[JQ(tnrig&M-,!!(a,!!(^Q!8?-,!8?-,!8@DPs4[JQ!nmVSn_4!CrS%8O
-#MK.Xg=cN,gAV*PgA_-Sg&M-CgA_0PgA_-[g&M-,g&M-,!!(aP!!:jS!.ijTg@*bqJH_bIk2s5T
-J,~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"n^[X>rmh#K#1W\Re^XX"rmh#Ks4.,Lrmh#Ks4.,L
-!n@8NnC@O=s4.&Js4.,L(tATdeGoU"!!(R"!!(OL!7fU"!7fU"!7h&Ks4.,L!n@8Nn^[X>rRLoJ
-#LreSe^XX"ec#RKec,UNeGoU>ec,XKec,UVeGoU"eGoU"!!(RK!!:[N!.i[OeaM&gK*A(Nk2s>W
-J,~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:\P=!<1OK!<:UJ!<(IJ!<:UL!<(IH!<:UL!:SJ:!<:UJ
-!<:UL!!LgP!7fWu!<1OI!<(IJ!<:UJ!<:UL!:eV>!<(IJ!!:[N!<1OK!<:UJ!<:UL!:eV>!<1OK
-!<:UJ!<:UL!!UmQ!7_&LJ^o>%ma_>i"f21\k.LbF~>
-!<E0!joV7Vs8(IL!<(XO!!M!U!8?0*!:\_B!<1^P!<:dO!<(XO!<:dQ!<(XM!<:dQ!:SY?!<:dO
-!<:dQ!!M!U!8?0*!<1^N!<(XO!<:dO!<:dQ!:eeC!<(XO!!:jS!<1^P!<:dO!<:dQ!:eeC!<1^P
-!<:dO!<:dQ!!V'V!87DQJ_G\/mb7\l"ektYk.1PC~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:\P=!<1OK!<:UJ!<(IJ!<:UL!<(IH!<:UL!:SJ:!<:UJ
-!<:UL!!LgP!7fWu!<1OI!<(IJ!<:UJ!<:UL!:eV>!<(IJ!!:[N!<1OK!<:UJ!<:UL!:eV>!<1OK
-!<:UJ!<:UL!!UmQ!7_&LJ^o>%ma_>i"f21\k.LbF~>
-!<E0!joV@Ys+/_"ec,W#eUc9:ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/n'gA_/(g4@uDgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/_"ec,W#eUc9:ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/_"ec,W#eUc9:ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/n'gA_/(g4@uDgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/_"ec,W#eUc9:ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/_"ec,W#eUc9:ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/n'gA_/(g4@uDgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/_"ec,W#eUc9:ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+,fRK7SZ9K*A(Nk2s>WJ,~>
-!<E0!joV7Vs+,`PJUrB5JH_bIk2s5TJ,~>
-!<E0!joV@Ys+,fRK7SZ9K*A(Nk2s>WJ,~>
-!<E0!joM:XJV/N+JV/u8"f21\k.LbF~>
-!<E0!joM1UJUrB'JUri4"ektYk.1PC~>
-!<E0!joM:XJV/N+JV/u8"f21\k.LbF~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.e`#'V!;=tC!;P+E!!:[N!;k=H!9_o4!.i[Oea_/nV#TT>]`<Q~>
-!<E0!joD*+g>Uc`!;>.H!;P:J!!:jS!;kLM!9`)9!.ijTg@<l#U&X9;\c@6~>
-!<E0!joD3.e`#'V!;=tC!;P+E!!:[N!;k=H!9_o4!.i[Oea_/nV#TT>]`<Q~>
-!<E0!joD3.e`#'Y!<:UL!;G%D!;4nB!;k=H!9_o4!.i[Oea_/nV#TT>]`<Q~>
-!<E0!joD*+g>Ucc!<:dQ!;G4I!;5(G!;kLM!9`)9!.ijTg@<l#U&X9;\c@6~>
-!<E0!joD3.e`#'Y!<:UL!;G%D!;4nB!;k=H!9_o4!.i[Oea_/nV#TT>]`<Q~>
-!<E0!joD4Keb9%=eb]?&ec,XKec,XLeboLJeboLJeboLJec,UNeGoUHec,XIeboLJec,XKec,XL
-eboLJec,W#eUc9@eHMcKk2s>WJ,~>
-!<E0!joD+Hg@kRBgA:l+gA_0PgA_0QgAM$OgAM$OgAM$OgA_-Sg&M-MgA_0NgAM$OgA_0PgA_0Q
-gAM$OgA_/(g4@uJg'+2Mk2s5TJ,~>
-!<E0!joD4Keb9%=eb]?&ec,XKec,XLeboLJeboLJeboLJec,UNeGoUHec,XIeboLJec,XKec,XL
-eboLJec,W#eUc9@eHMcKk2s>WJ,~>
-!<E0!joD4KebB(DKDF't!//o&!<1OK!#X5d!7fU"!7fU"!7fU"!7fU"!7_&LeGoUHec,XJec,XL
-ec,UNeGoUKec,UUeGoU"eGoU"!!%T#J^s;@"f21\k.LbF~>
-!<E0!joD+Hg@tUIJbe%"!/0)+!<1^P!#XDi!8?-,!8?-,!8?-,!8?-,!87DQg&M-MgA_0OgA_0Q
-gA_-Sg&M-PgA_-Zg&M-,g&M-,!!%T(J_KYJ"ektYk.1PC~>
-!<E0!joD4KebB(DKDF't!//o&!<1OK!#X5d!7fU"!7fU"!7fU"!7fU"!7_&LeGoUHec,XJec,XL
-ec,UNeGoUKec,UUeGoU"eGoU"!!%T#J^s;@"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XJec,UOeGoU"r;ciIr;clJquHcIr;`_FrrE&Krr<DV!!(R"!!(R"
-!!)oHrr<5Q!!(OL!;k=H!<(IJ!<:UL!<:UL!"IHY!7fU"!7fU"!7_&LJ^o>%n^Rf=s5rIW!.Y~>
-!<E0!joD+HgAh3LgAca"gA_0OgA_-Tg&M-,r;ciNr;clOquHcNr;`_KrrE&Prr<D[!!(a,!!(a,
-!!)oMrr<5V!!(^Q!;kLM!<(XO!<:dQ!<:dQ!"IW^!8?-,!8?-,!87DQJ_G\/n_+/?s5rIT!.Y~>
-!<E0!joD4Kec5[Gec19tec,XJec,UOeGoU"r;ciIr;clJquHcIr;`_FrrE&Krr<DV!!(R"!!(R"
-!!)oHrr<5Q!!(OL!;k=H!<(IJ!<:UL!<:UL!"IHY!7fU"!7fU"!7_&LJ^o>%n^Rf=s5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tec,XJebT:Gec,UReGoU"eGoUJec,UReGoU"eGoTIec,XKec,ULeb]@H
-ec,XKebfCNeGoU"!!)oHrrE#JqZ-ZHrr<2P!!(R"qZ$]J!!%T#J^s;@"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA_0OgA1gLgA_-Wg&M-,g&M-OgA_-Wg&M-,g&M,NgA_0PgA_-QgA:mM
-gA_0PgACpSg&M-,!!)oMrrE#OqZ-ZMrr<2U!!(a,qZ$]O!!%T(J_KYJ"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tec,XJebT:Gec,UReGoU"eGoUJec,UReGoU"eGoTIec,XKec,ULeb]@H
-ec,XKebfCNeGoU"!!)oHrrE#JqZ-ZHrr<2P!!(R"qZ$]J!!%T#J^s;@"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tebfCIec#RKec,XLec,UReGoU"eGoUKec,XLec,XLec,WIec,XKec,UN
-eGoUHec,XLec,XLec,UQeGoU"!!)oHrrE#JrrDoGrW)rJrrDuIrr@W#J^s;@"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gACpNgAV*PgA_0QgA_-Wg&M-,g&M-PgA_0QgA_0QgA_/NgA_0PgA_-S
-g&M-MgA_0QgA_0QgA_-Vg&M-,!!)oMrrE#OrrDoLrW)rOrrDuNrr@W(J_KYJ"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tebfCIec#RKec,XLec,UReGoU"eGoUKec,XLec,XLec,WIec,XKec,UN
-eGoUHec,XLec,XLec,UQeGoU"!!)oHrrE#JrrDoGrW)rJrrDuIrr@W#J^s;@"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKeb]=Heb]@GeGoUKeb]?Eec,XLec,XLec,XLec,XLec,UL
-ec#RKec,UQeGoU"!!)oHrrE#JrrE)LrrE&KrW)rJrrE)Lrr<,N!!%T#J^s;@"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA_0OgA_0PgA:jMgA:mLg&M-PgA:lJgA_0QgA_0QgA_0QgA_0QgA_-Q
-gAV*PgA_-Vg&M-,!!)oMrrE#OrrE)QrrE&PrW)rOrrE)Qrr<,S!!%T(J_KYJ"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKeb]=Heb]@GeGoUKeb]?Eec,XLec,XLec,XLec,XLec,UL
-ec#RKec,UQeGoU"!!)oHrrE#JrrE)LrrE&KrW)rJrrE)Lrr<,N!!%T#J^s;@"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKec,XIec,XHec,XKec,WEebfFGeboLHec,XLec#OKeboIL
-eGoUHeb]=HeboLGeGoUIeboLJec,W#eUc9@eHMcKk2s>WJ,~>
-!<E0!joD+HgAh3LgAca"gA_0OgA_0PgA_0NgA_0MgA_0PgA_/JgACsLgAM$MgA_0QgAV'PgAM!Q
-g&M-MgA:jMgAM$Lg&M-NgAM$OgA_/(g4@uJg'+2Mk2s5TJ,~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKec,XIec,XHec,XKec,WEebfFGeboLHec,XLec#OKeboIL
-eGoUHeb]=HeboLGeGoUIeboLJec,W#eUc9@eHMcKk2s>WJ,~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKec,XLec,UUeGoU"eGoU"!!)uJrrE)Lrr@W#J^o>%e("Vt
-s5rIW!.Y~>
-!<E0!joD+HgAh3LgAca"gA_0OgA_0PgA_0QgA_-Zg&M-,g&M-,!!)uOrrE)Qrr@W(J_G\/e(Ou!
-s5rIT!.Y~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKec,XLec,UUeGoU"eGoU"!!)uJrrE)Lrr@W#J^o>%e("Vt
-s5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tec,XJec,XJeboLIeboLJebfFIeboK!eUc8%e^DtOV#TT>]`<Q~>
-!<E0!joD+HgAh3LgAca"gA_0OgA_0OgAM$NgAM$OgACsNgAM#&g4@t/g="[YU&X9;\c@6~>
-!<E0!joD4Kec5[Gec19tec,XJec,XJeboLIeboLJebfFIeboK!eUc8%e^DtOV#TT>]`<Q~>
-!<E0!joD4Kec5[EK7VR(eUc8JeHMcKk2s>WJ,~>
-!<E0!joD+HgAh3JJUuO+g4@tTg'+2Mk2s5TJ,~>
-!<E0!joD4Kec5[EK7VR(eUc8JeHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8dec,XJeboLIeboK!e_em\V#TT>]`<Q~>
-!<E0!joD*+g4@tngA_0OgAM$NgAM#&g>CTfU&X9;\c@6~>
-!<E0!joD3.eUc8dec,XJeboLIeboK!e_em\V#TT>]`<Q~>
-!<E0!joD3.eUc8feboLIec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD*+g4@tpgAM$NgA_0QgA_-Wg&M-,g&M,(g>LZgU&X9;\c@6~>
-!<E0!joD3.eUc8feboLIec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD*+g4@tngA_0PgA_0QgA_-Wg&M-,g&M,(g>LZgU&X9;\c@6~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD*+g4@tngA_0PgA_0QgA_-Wg&M-,g&M,(g>LZgU&X9;\c@6~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD*+g4@tngA_0PgA_0QgA_-Wg&M-,g&M,(g>LZgU&X9;\c@6~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD*+g4@tngA_0PgA_0QgA_-Wg&M-,g&M,(g>LZgU&X9;\c@6~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD4Keb4Xkec,XKec,UNeGoUIec,XAeb]@,ebK2reZ77#!<1OK!<:UL!!^sR!7fU"!.i\Y
-eHMcKk2s>WJ,~>
-!<E0!joD+Hg@g*ngA_0PgA_-Sg&M-NgA_0FgA:m1gA(`"g8is-!<1^P!<:dQ!!_-W!8?-,!.ik^
-g'+2Mk2s5TJ,~>
-!<E0!joD4Keb4Xkec,XKec,UNeGoUIec,XAeb]@,ebK2reZ77#!<1OK!<:UL!!^sR!7fU"!.i\Y
-eHMcKk2s>WJ,~>
-!<E0!joD4Keb=[rs7t4F!<1OK!;Y1F!;+hA!8Q-)!.i\!ec,XKec,XLec,UReGoU"eGoT#e_ns]
-V#TT>]`<Q~>
-!<E0!joD+Hg@p-us7tCK!<1^P!;Y@K!;,"F!8Q<.!.ik&gA_0PgA_0QgA_-Wg&M-,g&M,(g>LZg
-U&X9;\c@6~>
-!<E0!joD4Keb=[rs7t4F!<1OK!;Y1F!;+hA!8Q-)!.i\!ec,XKec,XLec,UReGoU"eGoT#e_ns]
-V#TT>]`<Q~>
-!<E0!joD4Kec19uXT/=rec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE#Jrr</O!!(RJ!<:RM!7h&K
-!7h&Kp!s'BrRLiHJ^q!TrrE#Jr;ciIr;_E!hphn+s5rIW!.Y~>
-!<E0!joD+HgAca#0`V1KgA_0PgA_-\g&M-,g&M-,!!(a,r;c]JrrE#Orr</T!!(aO!<:aR!8@DP
-!8@DPp"KEGrS%2MJ_I?^rrE#Or;ciNr;_E&hqA7-s5rIT!.Y~>
-!<E0!joD4Kec19u@fQK(ec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE#Jrr</O!!(RJ!<:RM!7h&K
-!7h&Kp!s'BrRLiHJ^q!TrrE#Jr;ciIr;_E!hphn+s5rIW!.Y~>
-!<E0!joD4Kec19uXT/=rec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<(IE!<:UL!".6V!7fU"
-!7fU"!;=tC!<1OK!<:UL!.i[OeUc9MeHMcKk2s>WJ,~>
-!<E0!joD+HgAca#0`V1KgA_0PgA_-Wg&M-,!!(aP!!_-W!8?-,!;kLM!<(XJ!<:dQ!".E[!8?-,
-!8?-,!;>.H!<1^P!<:dQ!.ijTg4@uWg'+2Mk2s5TJ,~>
-!<E0!joD4Kec19u@fQK(ec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<(IE!<:UL!".6V!7fU"
-!7fU"!;=tC!<1OK!<:UL!.i[OeUc9MeHMcKk2s>WJ,~>
-!<E0!joD4Kec19uXT/=rebT7WeGoU"!!(R"!!(OL!7fU"!;k=E!!(RK!<:UL!<:UL!"7<W!7fU"
-!7fU"!7grHrRLoJrmh#Ks4.,LJ^o>%J^sbM"f21\k.LbF~>
-!<E0!joD+HgAca#0`V1KgA1d\g&M-,!!(a,!!(^Q!8?-,!;kLJ!!(aP!<:dQ!<:dQ!"7K\!8?-,
-!8?-,!8@;MrS%8Orn@APs4[JQJ_G\/J_L+W"ektYk.1PC~>
-!<E0!joD4Kec19u@fQK(ebT7WeGoU"!!(R"!!(OL!7fU"!;k=E!!(RK!<:UL!<:UL!"7<W!7fU"
-!7fU"!7grHrRLoJrmh#Ks4.,LJ^o>%J^sbM"f21\k.LbF~>
-!<E0!joD4Kec19uXT/=rec,XKec,UVeGoU"!!(R"!!(RH!;k=H!<(IJ!<1OK!<:UL!".6V!7fU"
-!7fU"!;=tC!<1OK!<:UL!.i[OeUc9MeHMcKk2s>WJ,~>
-!<E0!joD+HgAca#0`V1KgA_0PgA_-[g&M-,!!(a,!!(aM!;kLM!<(XO!<1^P!<:dQ!".E[!8?-,
-!8?-,!;>.H!<1^P!<:dQ!.ijTg4@uWg'+2Mk2s5TJ,~>
-!<E0!joD4Kec19u@fQK(ec,XKec,UVeGoU"!!(R"!!(RH!;k=H!<(IJ!<1OK!<:UL!".6V!7fU"
-!7fU"!;=tC!<1OK!<:UL!.i[OeUc9MeHMcKk2s>WJ,~>
-!<E0!joD4Kec19uXT/=rec,XKec,UXeGoU"!!(R"!!(OL!;G%D!<(IJ!<1OK!<:UL!"7<W!7fU"
-!7fU"!7grHrRLoJrmh#Ks4.,LJ^o>%J^sbM"f21\k.LbF~>
-!<E0!joD+HgAca#0`V1KgA_0PgA_-]g&M-,!!(a,!!(^Q!;G4I!<(XO!<1^P!<:dQ!"7K\!8?-,
-!8?-,!8@;MrS%8Orn@APs4[JQJ_G\/J_L+W"ektYk.1PC~>
-!<E0!joD4Kec19u@fQK(ec,XKec,UXeGoU"!!(R"!!(OL!;G%D!<(IJ!<1OK!<:UL!"7<W!7fU"
-!7fU"!7grHrRLoJrmh#Ks4.,LJ^o>%J^sbM"f21\k.LbF~>
-!<E0!joD4Kec19uXT/=rec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<(IJ!<1OK!<:UL!".6V
-!7fU"!7fU"!;=tC!<1OK!<:UL!.i[OeUc9MeHMcKk2s>WJ,~>
-!<E0!joD+HgAca#0`V1KgA_0PgA_-Wg&M-,!!(aP!!_-W!8?-,!;kLM!<(XO!<1^P!<:dQ!".E[
-!8?-,!8?-,!;>.H!<1^P!<:dQ!.ijTg4@uWg'+2Mk2s5TJ,~>
-!<E0!joD4Kec19u@fQK(ec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<(IJ!<1OK!<:UL!".6V
-!7fU"!7fU"!;=tC!<1OK!<:UL!.i[OeUc9MeHMcKk2s>WJ,~>
-!<E0!joD4Kec19uXT/=rec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE#JrrE#Jr;clJrrE)LrrE)L
-rrDcCrrE#Jr;bI"JV1dkJ^rr6"f21\k.LbF~>
-!<E0!joD+HgAca#0`V1KgA_0PgA_-\g&M-,g&M-,!!(a,r;c]JrrE#OrrE#Or;clOrrE)QrrE)Q
-rrDcHrrE#Or;bI'JUtXgJ_K;@"ektYk.1PC~>
-!<E0!joD4Kec19u@fQK(ec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE#JrrE#Jr;clJrrE)LrrE)L
-rrDcCrrE#Jr;bI"JV1dkJ^rr6"f21\k.LbF~>
-!<E0!joD4Kec19ss+/]#eU`@iK)kq&e`YHdV#TT>]`<Q~>
-!<E0!joD+HgAca!s+/l(g4=glJH5_$g?7/nU&X9;\c@6~>
-!<E0!joD4Kec19ss+/]#eU`@iK)kq&e`YHdV#TT>]`<Q~>
-!<E0!joD3.e`YK_K7U_r^#B!Be`YHdV#TT>]`<Q~>
-!<E0!joD*+g?72iJUt\u_VtNGg?7/nU&X9;\c@6~>
-!<E0!joD3.e`YK_K7U_r^#B!Be`YHdV#TT>]`<Q~>
-!<E0!joD3.e`YK_K7U_r^#]1pKE(t&e`YHdV#TT>]`<Q~>
-!<E0!joD*+g?72iJUt\u_W:^uJcGb$g?7/nU&X9;\c@6~>
-!<E0!joD3.e`YK_K7U_r^#]1pKE(t&e`YHdV#TT>]`<Q~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(kLp*5s5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(kLp*5s5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(kLp*5s5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(kLp*5s5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(kLp*5s5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(kLp*5s5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(kLp*5s5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(kLp*5s5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD4Keb9%=ec,XKec,UNeGoUIec,XAec,XKec,XFec,WYec18Q^#Qg+s7OnCKE(Vps+C@O
-J^rr6"f21\k.LbF~>
-!<E0!joD+Hg@kRBgA_0PgA_-Sg&M-NgA_0FgA_0PgA_0KgA_/^gAc_T_W/N5s7P(HJcGDss+14M
-J_K;@"ektYk.1PC~>
-!<E0!joD4Keb9%=ec,XKec,UNeGoUIec,XAec,XKec,XFec,WYec18Q^#Qg+s7OnCKE(Vps+C@O
-J^rr6"f21\k.LbF~>
-!<E0!joD4KebB(DKDF't!<1OK!;Y1F!;+hA!<1OK!;Y1F!4UMYK7U_r^&S-*eH(=&p!s(ps8RZ#
-kLBa3s5rIW!.Y~>
-!<E0!joD+Hg@tUIJbe%"!<1^P!;Y@K!;,"F!<1^P!;Y@K!4U\^JUt\u_Z0Z/g&Zd)p"KFss8RZ(
-kLp*5s5rIT!.Y~>
-!<E0!joD4KebB(DKDF't!<1OK!;Y1F!;+hA!<1OK!;Y1F!4UMYK7U_r^&S-*eH(=&p!s(ps8RZ#
-kLBa3s5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE&Krr<__!!(OL!7fU"!7fU"
-!7_&LeGoUKeboLJec,XLec,XLec,UQeGoU"!!(a's+>m9j1YKmp!j(qs7OqBKE(t&e`YHdV#TT>
-]`<Q~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-\g&M-,g&M-,!!(a,r;c]JrrE&Prr<_d!!(^Q!8?-,!8?-,
-!87DQg&M-PgAM$OgA_0QgA_0QgA_-Vg&M-,!!(a,s+,a<j21irp"BFts7P+GJcGb$g?7/nU&X9;
-\c@6~>
-!<E0!joD4Kec5[Gec19tec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE&Krr<__!!(OL!7fU"!7fU"
-!7_&LeGoUKeboLJec,XLec,XLec,UQeGoU"!!(a's+>m9j1YKmp!j(qs7OqBKE(t&e`YHdV#TT>
-]`<Q~>
-!<E0!joD4Kec5[Gec19tec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<1OK!!(RK!".6V!7_&L
-eGoU"ec#O`eGoU"!!(R"!!(OL!7fU"!7fU"!7h&K!n@8NgXZ=VJ\C*Ws8V_D!<;YCs8RZ#kLBa3
-s5rIW!.Y~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-Wg&M-,!!(aP!!_-W!8?-,!;kLM!<1^P!!(aP!".E[!87DQ
-g&M-,gAV'eg&M-,!!(a,!!(^Q!8?-,!8?-,!8@DP!nmVSgY2[YJ\pHas8V_B!<;YAs8RZ(kLp*5
-s5rIT!.Y~>
-!<E0!joD4Kec5[Gec19tec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<1OK!!(RK!".6V!7_&L
-eGoU"ec#O`eGoU"!!(R"!!(OL!7fU"!7fU"!7h&K!n@8NgXZ=VJ\C*Ws8V_D!<;YCs8RZ#kLBa3
-s5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tebT7WeGoU"!!(R"!!(OL!7fU"!;k=H!<1OK!!h$S!7fU"!7h#Jrmh#K
-s4.,L(tATde^XX"e^XX"eGoU"!!(R"!!(R"!!(d(s+>m9j1PHmjFdL4J^rr6"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA1d\g&M-,!!(a,!!(^Q!8?-,!;kLM!<1^P!!h3X!8?-,!8@AOrn@AP
-s4[JQ(tnrig=cN,g=cN,g&M-,!!(a,!!(a,!!(d-s+,a<j2(frjFR@2J_K;@"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tebT7WeGoU"!!(R"!!(OL!7fU"!;k=H!<1OK!!h$S!7fU"!7h#Jrmh#K
-s4.,L(tATde^XX"e^XX"eGoU"!!(R"!!(R"!!(d(s+>m9j1PHmjFdL4J^rr6"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XKec,UVeGoU"!!(R"!!(RH!;k=H!<1OK!!h$S!7fU"!7h#Jrmh#K
-s4.,L(tATde^XX"e^XX"eGoU"!!(R"!!(R"!!(d(s+>n&_uG;<kLBa3s5rIW!.Y~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-[g&M-,!!(a,!!(aM!;kLM!<1^P!!h3X!8?-,!8@AOrn@AP
-s4[JQ(tnrig=cN,g=cN,g&M-,!!(a,!!(a,!!(d-s+,b$_uG;AkLp*5s5rIT!.Y~>
-!<E0!joD4Kec5[Gec19tec,XKec,UVeGoU"!!(R"!!(RH!;k=H!<1OK!!h$S!7fU"!7h#Jrmh#K
-s4.,L(tATde^XX"e^XX"eGoU"!!(R"!!(R"!!(d(s+>n&_uG;<kLBa3s5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tec,XKec,UXeGoU"!!(R"!!(OL!;G%D!<1OK!%l_$!7fU"!7_&LeGoU"
-eGoU"eGoU"!!(R"!!(R"!!(OL!7_&Le^XX"e^XX"gXQ:VJcEUeJ^rr6"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-]g&M-,!!(a,!!(^Q!;G4I!<1^P!%ln)!8?-,!87DQg&M-,
-g&M-,g&M-,!!(a,!!(a,!!(^Q!87DQg=cN,g=cN,gY)XYJcEUeJ_K;@"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tec,XKec,UXeGoU"!!(R"!!(OL!;G%D!<1OK!%l_$!7fU"!7_&LeGoU"
-eGoU"eGoU"!!(R"!!(R"!!(OL!7_&Le^XX"e^XX"gXQ:VJcEUeJ^rr6"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XKec,UReGoU"!!(RK!!^sR!7fU"!;b7G!$B_k!7fU"!7fU"!7_&L
-e^XX"eGoU"eGoU"!!(R"!!*#KrrE)LrrE&KrrE)Lrr@W#J^o>%"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-Wg&M-,!!(aP!!_-W!8?-,!;bFL!$Bnp!8?-,!8?-,!87DQ
-g=cN,g&M-,g&M-,!!(a,!!*#PrrE)QrrE&PrrE)Qrr@W(J_G\/"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tec,XKec,UReGoU"!!(RK!!^sR!7fU"!;b7G!$B_k!7fU"!7fU"!7_&L
-e^XX"eGoU"eGoU"!!(R"!!*#KrrE)LrrE&KrrE)Lrr@W#J^o>%"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XKec,UWeGoU"eGoU"!!(R"r;cZDquHcIrrE)Lrr<,N!!*#Kr;clJ
-rrE)Lr;cfHrrE)LrrE&KrrE)Lrr@W#J^o>%"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-\g&M-,g&M-,!!(a,r;cZIquHcNrrE)Qrr<,S!!*#Pr;clO
-rrE)Qr;cfMrrE)QrrE&PrrE)Qrr@W(J_G\/"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tec,XKec,UWeGoU"eGoU"!!(R"r;cZDquHcIrrE)Lrr<,N!!*#Kr;clJ
-rrE)Lr;cfHrrE)LrrE&KrrE)Lrr@W#J^o>%"f21\k.LbF~>
-!<E0!joD4Kec5[EK7VR(eUc8JeHMcKk2s>WJ,~>
-!<E0!joD+HgAh3JJUuO+g4@tTg'+2Mk2s5TJ,~>
-!<E0!joD4Kec5[EK7VR(eUc8JeHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^mbKDX1&V#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<TlJc".)U&X9;\c@6~>
-!<E0!joD3.eUc8%eY^mbKDX1&V#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^mcK)krKeHMcKk2s>WJ,~>
-!<E0!joD*+g4@t/g8<TmJH5`Ig'+2Mk2s5TJ,~>
-!<E0!joD3.eUc8%eY^mcK)krKeHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eY^msKDN7]KDN:]s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(Jbm4`Jbm7`s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKDN7]KDN:]s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKDW=_s+C0]s8VuH"f21\k.LbF~>
-!<E0!joD*+g4@t/g8<U(Jc!:bs+1$`s8VuM"ektYk.1PC~>
-!<E0!joD3.eUc8%eY^msKDW=_s+C0]s8VuH"f21\k.LbF~>
-!<E0!joD3.eUc8%eY^msKDW=`s+>t$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD*+g4@t/g8<U(Jc!:cs+,au_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD3.eUc8%eY^msKDW=`s+>t$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eY^msKD`F_s8R`K^&S-0eHMcKk2s>WJ,~>
-!<E0!joD*+g4@t/g8<U(Jc*Cbs8RZI_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD3.eUc8%eY^msKD`F_s8R`K^&S-0eHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eY^msKD`F_rrU`'KD`F_s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(Jc*CbrrUo*Jc*Cbs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKD`F_rrU`'KD`F_s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKDiL`s8UXLKD`F_s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(Jc3Ics8UgQJc*Cbs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKDiL`s8UXLKD`F_s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKDiL`s8LRKKDiL`s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(Jc3Ics8LaPJc3Ics81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKDiL`s8LRKKDiL`s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKDrRas8CLJKDiL`s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(Jc<Ods8C[OJc3Ics81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKDrRas8CLJKDiL`s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKDrRas8:FIKDrRas81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(Jc<Ods8:UNJc<Ods81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKDrRas8:FIKDrRas81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE&Xbs81@HKDrRas81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcEUes81OMJc<Ods81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE&Xbs81@HKDrRas81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE&Xbs8(:GKE&Xbs81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcEUes8(ILJcEUes81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE&Xbs8(:GKE&Xbs81=MV#TT>]`<Q~>
-!<E0!joD4>eH#X+eH#XIeH#WVeH#X+eH#XIeH#XIec,TWec5[IeH#XCeH#X%eH#XIec5ZpeH#X=
-ec5[Jec5Zkec17'^&S-.ec1:%^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+;g&M-0g&M-Ng&M,[g&M-0g&M-Ng&M-NgAV)\gA_0Ng&M-Hg&M-*g&M-NgA_/ug&M-B
-gA_0OgA_/pgAc^*_Z0Z3gAca(_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4>eGoU+eGoUIeGoTVeGoU+eGoUIeGoUIec#QWec,XIeGoUCeGoU%eGoUIec,WpeGoU=
-ec,XJec,Wkec17'^&S-.ec1:%^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4>eH#X+eH#XIeH#WVeH#X+eH#XIeH#XJeH#XKeH#WXeH#WaeH#WpeH#X<eH#XIeH#Wk
-ec17'^&S--ec17'^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+;g&M-0g&M-Ng&M,[g&M-0g&M-Ng&M-Og&M-Pg&M,]g&M,fg&M,ug&M-Ag&M-Ng&M,p
-gAc^*_Z0Z2gAc^*_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4>eGoU+eGoUIeGoTVeGoU+eGoUIeGoUJeGoUKeGoTXeGoTaeGoTpeGoU<eGoUIeGoTk
-ec17'^&S--ec17'^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4Jec5XPec42"s8CLHs8LRKs8UUTs4./"s8UXLs8LRKrrUaNs7t4Ds8UXJs2*=drrgmP
-ec5[Jec#OIec5[LeHl3*s4./Lec5[Kec5XNec5[Fec#OJec#LMec41Mr;QiKs8W)Krr;uJs8W)K
-!WU^Ls5VW3s4./Lrm_&Lec,UKec5[IeH#XJec5[Lec5XMec5Tus8W,L"96pOs8LRKs8CIKs4.&I
-!nI>NqUPWG!S.5Kec5[Jec,U,ec5[Jec5[LeH>j%s8W)KrVuoJ!WU^Ls8UXLs8:CIs8:CIs8CLJ
-s8LOLs4.,Kf@BnRs8VbE!knX6qpbkGs5rIW!.Y~>
-!<E0!joD+GgA_-Ug&Th,!<(XM!<1^P!<:aY!87G,!!(^Q!<1^P!!:jS!;Y@I!<:dO!5dIi!!M!U
-g&M-OgAM$NgA_0Qg'@]4!87DQg&M-PgA_-Sg&M-KgAM$OgAM!Rg&Tj\qu?fP!!*#PrW)rOrrE&P
-!<CjQ!9;c8!87DQrn7AQgAV*PgA_0Ng&M-OgA_0QgA_-Rg&V**rrE)Q!s%$T!<1^P!<(UP!8@>N
-!nmVSqV(rL!SRPPgA_0OgAV*1gA_0OgA_0Qg&h?/!!*#Pr;clO!<CjQ!<:dQ!;tON!;tON!<(XO
-!<1[Q!8@DPf@p7Us8VbC!lG!;qq;4Is5rIT!.Y~>
-!<E0!joD4Jec,UPeH","!<(IH!<1OK!<:RT!7_)"!!(OL!<1OK!!:[N!;Y1D!<:UJ!5d:d!!LgP
-eGoUJeboLIec,XLeHc0*!7_&LeGoUKec,UNeGoUFeboLJeboIMeH".Mqu?fK!!*#KrW)rJrrE&K
-!<C[L!9;T3!7_&Lrm_#Lec#RKec,XIeGoUJec,XLec,UMeH#QurrE)L!s$jO!<1OK!<(FK!7guI
-!n@8NqUPTG!S%2Kec,XJec#R,ec,XJec,XLeH5g%!!*#Kr;clJ!<C[L!<:UL!;t@I!;t@I!<(IJ
-!<1LL!7h&Kf@BnRs8VbE!knX6qpbkGs5rIW!.Y~>
-!<E0!joD4KeH>j%ec5Tu!<<#J!<<#J$3/Q+s4./"s4./JeH#XKeH>j%ec5Ep!<;uI!<9mc"96p%
-s8CIJs8CIJs8CISs4,["ec42"ec5Tu!<<&K"96p%s7k+Es8:CIs8LOXs4./"s4,["e^a]Mec5Qt
-"96p%s8LOKs52?/s4,["rm_#KrRD#Me^a]ueH#XIeHc-)ec42"ec5Tu!<<&K"96p%s8CIJs8CIJ
-s8CIMs4,["qUG`Kec42"rRCoJrm_,Ne^a]YeIV]1ec41Ms4,["e^a]Mec5X!!<;uI!<<#J"96p%
-s8CIJs8:CIs8LONs4,["rm_#KeCFSO!<;YCs8VuH"f21\k.LbF~>
-!<E0!joD+Hg&h?/g&V**!!)uO!!)uO#lr]5!87G,!87GOg&M-Pg&h?/g&Up%!!)rN!!'jh!s%'/
-!<(UO!<(UO!<(UX!8?-,g&Th,g&V**!!*#P!s%'/!;P7J!;tON!<1[]!87G,!8?-,g=cP\g&V')
-!s%'/!<1[P!8lK4!8?-,rn7>PrRq>Rg=cQ*g&M-Ng'7W3g&Th,g&V**!!*#P!s%'/!<(UO!<(UO
-!<(UR!8?-,qUu&Pg&Th,rRq5Orn7GSg=cPcg(+2;g&Tj\!8?-,g=cP\g&V-+!!)rN!!)uO!s%'/
-!<(UO!;tON!<1[S!8?-,rn7>PeCsqR!<;YAs8VuM"ektYk.1PC~>
-!<E0!joD4KeH5g%eH#Qu!!)uJ!!)uJ#lrN+!7_)"!7_)JeGoUKeH5g%eH#Bp!!)rI!!'jc!s$m%
-!<(FJ!<(FJ!<(FS!7fU"eH","eH#Qu!!*#K!s$m%!;P(E!;t@I!<1LX!7_)"!7fU"e^XZMeH#Nt
-!s$m%!<1LK!8l</!7fU"rm^uKrRCuMe^XZueGoUIeHZ*)eH","eH#Qu!!*#K!s$m%!<(FJ!<(FJ
-!<(FM!7fU"qUG]KeH","rRClJrm_)Ne^XZYeIMZ1eH".M!7fU"e^XZMeH#U!!!)rI!!)uJ!s$m%
-!<(FJ!;t@I!<1LN!7fU"rm^uKeCFSO!<;YCs8VuH"f21\k.LbF~>
-!<E0!joD4KeHQ!'ec41Mrr;rI!<<#Jrr<#K#636Rec41Mrr;uJ"96p%s7k+Es8:CIs2!4hs4,["
-e^a[!rRCoJrRLoIs4%>Rec42"e^a[!rm_,Ne^a]peH#XIeH#XKeI)?,s4./"ec41Ms8LRKs8LRJ
-s8CIJs52?/s4,["rm_#KrRLoIr7(fIr7)&Pe^a]Ms4./JeH#XKeHQ!'ec41Mrr;rI!<<#J"96p%
-s8(7Ks4./"s8CIJs8LONs4,["iRIr.r7),Re^a]Mec41Ms8LOKs8:CIs8CIMs4,["rRCoJr7(fI
-rmh#JrRCoJeCFSOo"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+Hg'%K1g&Tj\rW)oN!!)uOrW)uP"p!?Wg&Tj\rW)rO!s%'/!;P7J!;tON!5[@m!8?-,
-g=lN+rRq5OrS%5Ns4RYWg&Th,g=lN+rn7GSg=cQ%g&M-Ng&M-Pg'Ri6!87G,g&Tj\!<1^P!<1^O
-!<(UO!8lK4!8?-,rn7>PrS%5Nr7V,Nr7VAUg=cP\!87GOg&M-Pg'%K1g&Tj\rW)oN!!)uO!s%'/
-!;bCP!87G,!<(UO!<1[S!8?-,iS"83r7VGWg=cP\g&Tj\!<1[P!;tON!<(UR!8?-,rRq5Or7V,N
-rn@>OrRq5OeCsqRo"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4KeHGs'eH".MrW)oI!!)uJrW)uK"p!0ReH".MrW)rJ!s$m%!;P(E!;t@I!5[1h!7fU"
-e^aX!rRClJrRLlIs4%;ReH","e^aX!rm_)Ne^XZpeGoUIeGoUKeHu<,!7_)"eH".M!<1OK!<1OJ
-!<(FJ!8l</!7fU"rm^uKrRLlIr7(cIr7)#Pe^XZM!7_)JeGoUKeHGs'eH".MrW)oI!!)uJ!s$m%
-!;b4K!7_)"!<(FJ!<1LN!7fU"iRIo.r7))Re^XZMeH".M!<1LK!;t@I!<(FM!7fU"rRClJr7(cI
-rmguJrRClJeCFSOo"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4KeHl3*ec42"e^a]ueJ%u5ec42"e^a]Mec42"e^a]Mec5X!"96p%s7k+Ns4,["e^a]M
-ec3S<#liH*s4./"ec5Tu'E?V5s4./"ec41Ms4./"ec41Ms8LONs4,["psffQe^a]Mec41Ms8UX"
-rr3,Os4,["r7)#Oe^a]Mec5X!!<:s,"96p%s8LOKs8CIMs4,["rRCoJr7)&Pe^a]Ms4./JeH#XK
-eHl3*ec42"e^a]ueH#XJeH>j%ec5Kr"TR$Pec5Tu!<<&K"96p%s5DK=s4,["e^a]Mec41Ms4,["
-rm_5Qe^a]Mec5Tu"96p%s8CIJs8:CIs8LONs4,["rm_#KeCFSOnGiC9"f21\k.LbF~>
-!<E0!joD+Hg'@]4g&Th,g=cQ*g(OJ?g&Th,g=cP\g&Th,g=cP\g&V-+!s%'/!;P7S!8?-,g=cP\
-g&T(F#QWT4!87G,g&V**'*-b?!87G,g&Tj\!87G,g&Tj\!<1[S!8?-,pt?,Vg=cP\g&Tj\!!(a,
-rW!)T!8?-,r7V>Tg=cP\g&V-+!!(p1!s%'/!<1[P!<(UR!8?-,rRq5Or7VAUg=cP\!87GOg&M-P
-g'@]4g&Th,g=cQ*g&M-Og&h?/g&V!'"9@-Ug&V**!!*#P!s%'/!9)WB!8?-,g=cP\g&Tj\!8?-,
-rn7PVg=cP\g&V**!s%'/!<(UO!;tON!<1[S!8?-,rn7>PeCsqRnGiC>"ektYk.1PC~>
-!<E0!joD4KeHc0*eH","e^XZueIqr5eH","e^XZMeH","e^XZMeH#U!!s$m%!;P(N!7fU"e^XZM
-eH!P<#QWE*!7_)"eH#Qu'*-S5!7_)"eH".M!7_)"eH".M!<1LN!7fU"psfcQe^XZMeH".M!!(R"
-rW!)O!7fU"r7(uOe^XZMeH#U!!!(p,!s$m%!<1LK!<(FM!7fU"rRClJr7)#Pe^XZM!7_)JeGoUK
-eHc0*eH","e^XZueGoUJeH5g%eH#Hr"9?sPeH#Qu!!*#K!s$m%!9)H=!7fU"e^XZMeH".M!7fU"
-rm_2Qe^XZMeH#Qu!s$m%!<(FJ!;t@I!<1LN!7fU"rm^uKeCFSOnGiC9"f21\k.LbF~>
-!<E0!joD4Jec,UKec5XMec5Tus8W)Ks8W)K!rpgNrmh&K!S.5Lec5[Cec5[Jec5Zdec,UKec5XM
-ec5Tus8W)Ks8W)K!rpgNrmh&K!S.5Lec5[Cec5[Jec5[LeH#XHec5XNec42!s8CLJs8LRIs5DN-
-s8LRIs8LRKs8LRHrrCUHrrpsQec5["q>UcOs8UXLs4./"ec#OIec5[FeHZ'(s4./LeboIIec5XM
-ec4UYs8W&Js8W,Lrr3&Ms8W)Ks8W,LrVulIs8W)Kr;QcIr;ZfIs8W)KrVtI!s+BqC!e^OQqpbkG
-s5rIW!.Y~>
-!<E0!joD+GgAV*PgA_-Rg&V**rrE&PrrE&P!W^pSrn@AP!SRPQgA_0HgA_0OgA_/igAV*PgA_-R
-g&V**rrE&PrrE&P!W^pSrn@AP!SRPQgA_0HgA_0OgA_0Qg&M-MgA_-Sg&Tk+!<(XO!<1^N!9)Z2
-!<1^N!<1^P!<1^M!!(aM!!V'Vg&M-,q#C`T!!(^Q!87G,gAM$NgA_0Kg'.Q2!87DQgACsNgA_-R
-g&U*crrE#OrrE)QrW!#R!!*#PrrE)Qr;ciNrrE&Pqu?`NquHcNrrE&Pr;bF&s+0eA!eLCOqq;4I
-s5rIT!.Y~>
-!<E0!joD4Jec#RKec,UMeH#QurrE&KrrE&K!W^aNrmh#K!S%2Lec,XCec,XJec,Wdec#RKec,UM
-eH#QurrE&KrrE&K!W^aNrmh#K!S%2Lec,XCec,XJec,XLeGoUHec,UNeH"/!!<(IJ!<1OI!9)K-
-!<1OI!<1OK!<1OH!!(RH!!UmQeGoU"q#C`O!!(OL!7_)"eboLIec,XFeHQ$(!7_&LebfFIec,UM
-eH"RYrrE#JrrE)LrW!#M!!*#KrrE)Lr;ciIrrE&Kqu?`IquHcIrrE&Kr;bF!s+BqC!e^OQqpbkG
-s5rIW!.Y~>
-!<E0!joD4HeH#X-eH#WNeH#X-eH#X7ec,TjeH#WgeH#W#e`,-ZKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD+Eg&M-2g&M,Sg&M-2g&M-<gAV)og&M,lg&M,(g>^idJcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD4HeGoU-eGoTNeGoU-eGoU7ec#QjeGoTgeGoT#e`,-ZKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD4Kec,U-ec5[JebfBVec,U-ec5[JebfBWec#Niec5[JebfAtea(ccKE(uFec1:%s81=M
-V#TT>]`<Q~>
-!<E0!joD+HgAV*2gA_0OgA:l[gAV*2gA_0OgA:l\gAM#ngA_0OgA:l$g?[JmJcGcDgAca(s81LR
-U&X9;\c@6~>
-!<E0!joD4Kec#R-ec,XJeb]?Vec#R-ec,XJeb]?WeboKiec,XJeb]>tea(ccKE(uFec1:%s81=M
-V#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#X5ec5[Jec5[Lec5[>ec5ZmeH#XEeH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcK
-k2s>WJ,~>
-!<E0!joD+?g&M-:gA_0OgA_0QgA_0CgA_/rg&M-Jg&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2M
-k2s5TJ,~>
-!<E0!joD4BeGoU5ec,XJec,XLec,X>ec,WmeGoUEeGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcK
-k2s>WJ,~>
-!<E0!joD4BeH#X4eH#XIeH#XKeH#X=eH#WmeH#XEeH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcK
-k2s>WJ,~>
-!<E0!joD+?g&M-9g&M-Ng&M-Pg&M-Bg&M,rg&M-Jg&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2M
-k2s5TJ,~>
-!<E0!joD4BeGoU4eGoUIeGoUKeGoU=eGoTmeGoUEeGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcK
-k2s>WJ,~>
-!<E0!joD4BeH#XAec5[Kec5[HeH#XIeH#XKec,UJec5[Iec5[KeH>j%s8W)K!<;cCs8W&Js8W,L
-$3/QUs4,["ec5[Jec5[Jec5[Kec#OEeH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M-FgA_0PgA_0Mg&M-Ng&M-PgAV*OgA_0NgA_0Pg&h?/!!*#P!!)`HrrE#OrrE)Q
-#lrZZ!8?-,g&M-OgA_0OgA_0PgAM$Jg&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUAec,XKec,XHeGoUIeGoUKec#RJec,XIec,XKeH5g%!!*#K!!)`CrrE#JrrE)L
-#lrKU!7fU"eGoUJec,XJec,XKeboLEeGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#XBeH>j%ec5Tu!<;uI!<;uI!<<&K"96p%s8CIJs8LOSs4,["e^a]Ms8CIJs7b%e
-s4,["e^a]Mec41Ms4,["e^a]Mec41Ms4,["e^a]Mec5X!!<;iE!<7r,!<7r,!<8qHs+C@Op=91q
-s8VuH"f21\k.LbF~>
-!<E0!joD+?g&M-Gg&h?/g&V**!!)rN!!)rN!!*#P!s%'/!<(UO!<1[X!8?-,g=cP\!<(UO!;G1j
-!8?-,g=cP\g&Tj\!8?-,g=cP\g&Tj\!8?-,g=cP\g&V-+!!)fJ!!%o1!!%o1!!&nMs+14Mp=fOt
-s8VuM"ektYk.1PC~>
-!<E0!joD4BeGoUBeH5g%eH#Qu!!)rI!!)rI!!*#K!s$m%!<(FJ!<1LS!7fU"e^XZM!<(FJ!;G"e
-!7fU"e^XZMeH".M!7fU"e^XZMeH".M!7fU"e^XZMeH#U!!!)fE!!%o,!!%o,!!&nHs+C@Op=91q
-s8VuH"f21\k.LbF~>
-!<E0!joD4BeH#XBeH#XIec,UHeH#XIeH#XKeHQ!'ec41Mrr;uJ!<;uIs8VW>!<;uI&c^D3s4,["
-e^a]Mec41Ms4,[!s8LOKs81=Hs7k+Es,,>,s,,>,s/+?HKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-Gg&M-NgAV*Mg&M-Ng&M-Pg'%K1g&Tj\rW)rO!!)rNrrDTC!!)rN&HLP=!8?-,
-g=cP\g&Tj\!8?0+!<1[P!;kIM!;P7J!/fJ1!/fJ1!2eKMJcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD4BeGoUBeGoUIec#RHeGoUIeGoUKeHGs'eH".MrW)rJ!!)rIrrDT>!!)rI&HLA3!7fU"
-e^XZMeH".M!7fX!!<1LK!;k:H!;P(E!/f;,!/f;,!2e<HKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD4BeH#XBeHl3*ec42"e^a]teH#XIeH#XKeHl3*ec42"e^a^!eHl3*ec41Ms4./JeH#XD
-eKOtCec41Ms4,["e^a]Mec41Ms4,["e^a]Mec41Ms4,["rm_,Ne^a]seH#W,eH#W,eH#WHec1:%
-s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M-Gg'@]4g&Th,g=cQ)g&M-Ng&M-Pg'@]4g&Th,g=cQ+g'@]4g&Tj\!87GOg&M-I
-g*$IMg&Tj\!8?-,g=cP\g&Tj\!8?-,g=cP\g&Tj\!8?-,rn7GSg=cQ(g&M,1g&M,1g&M,MgAca(
-s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUBeHc0*eH","e^XZteGoUIeGoUKeHc0*eH","e^X[!eHc0*eH".M!7_)JeGoUD
-eKFqCeH".M!7fU"e^XZMeH".M!7fU"e^XZMeH".M!7fU"rm_)Ne^XZseGoT,eGoT,eGoTHec1:%
-s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#XAec5[Kec5XOec41Mr;QcIq#C?Ds8N,Ms8LRKs8UXLrrUaNs8LOKs7Y"Cs8CLJ
-s8UXKrrCUIrs%$Rs4,["s8CLJs8:FIs8(7Gs,,>,s,,>,s/+?HKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-FgA_0PgA_-Tg&Tj\qu?`Np]1<Irr<)R!<1^P!<:dQ!!:jS!<1[P!;>.H!<(XO
-!<:dP!!(aN!!_-W!8?-,!<(XO!;tRN!;bCL!/fJ1!/fJ1!2eKMJcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD4BeGoUAec,XKec,UOeH".Mqu?`Ip]1<Drr<)M!<1OK!<:UL!!:[N!<1LK!;=tC!<(IJ
-!<:UK!!(RI!!^sR!7fU"!<(IJ!;tCI!;b4G!/f;,!/f;,!2e<HKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W5ec,XGeH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,:gA_0Lg&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT5ec,XGeGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W5eboLGeH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,:gAM$Lg&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT5eboLGeGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W4eb]@HeH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,9gA:mMg&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT4eb]@HeGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeVO8+s,,>,s,,>,s/+?HKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD+?g5#`dg&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeVF3_eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W4eb]@HeH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,9gA:mMg&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT4eb]@HeGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W4ec#RHeH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,9gAV*Mg&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT4ec#RHeGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W5ec,XGeH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,:gA_0Lg&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT5ec,XGeGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#X5eH#W\eH#X9eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M-:g&M,ag&M->g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoU5eGoT\eGoU9eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#X5eH#W\eH#X9eH#W,eH#W,eH#WHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M-:g&M,ag&M->g&M,1g&M,1g&M,MgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoU5eGoT\eGoU9eGoT,eGoT,eGoTHec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#XBeH,^#rr<#Ks8W)KrVm2Ss8UXLs4,["ec#LLec5[JeH#XCec5[Jec5[LeHu9+
-s8UX"s4./LrRLrJrRLrJrmguImaV=;MU__,MU__,VUb^!s8VfCs+C@OqpbkGs5rIW!.Y~>
-!<E0!joD+?g&M-Gg&V3-rW)uPrrE&Pr;[/X!!(^Q!8?-,gAM!Qg&M-Og&M-HgA_0OgA_0Qg'Ic5
-!!(a,!87DQrS%8OrS%8Orn@;Nmb.X@MV8%1MV8%1VV;'$s8VfHs+14Mqq;4Is5rIT!.Y~>
-!<E0!joD4BeGoUBeH#[#rW)uKrrE&Kr;[/S!!(OL!7fU"eboILeGoUJeGoUCec,XJec,XLeHl6+
-!!(R"!7_&LrRLoJrRLoJrmgrImaV:;MU_\,MU_\,VUb^!s8VfCs+C@OqpbkGs5rIW!.Y~>
-!<E0!joD4BeH#XAeH#XJeH>j%ec5X!!<<#J"96p%s8LOKs8CIMs4,["rm_#KpXLGee^a]Mec41M
-s4,["e^a]Mec41Ms4,["e^a]Mec41Ms8LOKs6S89s,,>,s,,>,s/+?HKE(uFec1:%s81=MV#TT>
-]`<Q~>
-!<E0!joD+?g&M-Fg&M-Og&h?/g&V-+!!)uO!s%'/!<1[P!<(UR!8?-,rn7>PpY$bjg=cP\g&Tj\
-!8?-,g=cP\g&Tj\!8?-,g=cP\g&Tj\!<1[P!:8D>!/fJ1!/fJ1!2eKMJcGcDgAca(s81LRU&X9;
-\c@6~>
-!<E0!joD4BeGoUAeGoUJeH5g%eH#U!!!)uJ!s$m%!<1LK!<(FM!7fU"rm^uKpXLDee^XZMeH".M
-!7fU"e^XZMeH".M!7fU"e^XZMeH".M!<1LK!:859!/f;,!/f;,!2e<HKE(uFec1:%s81=MV#TT>
-]`<Q~>
-!<E0!joD4BeH#XAeH#XJec,UIeH#XJeH>j%ec5X!!<<#J"96p%s7=b@s8:CZs4,["e^a]Mec41M
-s4,["e^a[!rm_#Kqpb]Hm*u+9MU__,MU__,VUb^!s8VfCs+C@OqpbkGs5rIW!.Y~>
-!<E0!joD+?g&M-Fg&M-OgAV*Ng&M-Og&h?/g&V-+!!)uO!s%'/!;"nE!;tO_!8?-,g=cP\g&Tj\
-!8?-,g=lN+rn7>Pqq;#Mm+MF>MV8%1MV8%1VV;'$s8VfHs+14Mqq;4Is5rIT!.Y~>
-!<E0!joD4BeGoUAeGoUJec#RIeGoUJeH5g%eH#U!!!)uJ!s$m%!;"_@!;t@Z!7fU"e^XZMeH".M
-!7fU"e^aX!rm^uKqpbZHm*u(9MU_\,MU_\,VUb^!s8VfCs+C@OqpbkGs5rIW!.Y~>
-!<E0!joD4BeH#XAeH#XJeH>j%ec5X!#liH*s4./"ec5X!!<<#J"96p%s8LOKs7b%es4,["e^a]M
-ec41Ms4,["e^a]Mec41Ms4,["e^a]Mec5X!"96p%s6nJ<s,,>,s,,>,s/+?HKE(uFec1:%s81=M
-V#TT>]`<Q~>
-!<E0!joD+?g&M-Fg&M-Og&h?/g&V-+#QWT4!87G,g&V-+!!)uO!s%'/!<1[P!;G1j!8?-,g=cP\
-g&Tj\!8?-,g=cP\g&Tj\!8?-,g=cP\g&V-+!s%'/!:SVA!/fJ1!/fJ1!2eKMJcGcDgAca(s81LR
-U&X9;\c@6~>
-!<E0!joD4BeGoUAeGoUJeH5g%eH#U!#QWE*!7_)"eH#U!!!)uJ!s$m%!<1LK!;G"e!7fU"e^XZM
-eH".M!7fU"e^XZMeH".M!7fU"e^XZMeH#U!!s$m%!:SG<!/f;,!/f;,!2e<HKE(uFec1:%s81=M
-V#TT>]`<Q~>
-!<E0!joD4BeH#XBec#OIec5[Iec5[Kec5XNec41urrCUKrrpsQs4,["p=93CrRLrJs4.,K!7h#I
-#1`bRe^a^"rRLrJr71iImaV=;MU__,MU__,VUb^!s8VfCs+C@OqpbkGs5rIW!.Y~>
-!<E0!joD+?g&M-GgAM$NgA_0NgA_0PgA_-Sg&Tk*!!(aP!!V'V!8?-,p=fNHrS%8Os4[GP!8@>N
-#20%Wg=cN,rS%8Or7_/Nmb.X@MV8%1MV8%1VV;'$s8VfHs+14Mqq;4Is5rIT!.Y~>
-!<E0!joD4BeGoUBeboLIec,XIec,XKec,UNeH".u!!(RK!!UmQ!7fU"p=90CrRLoJs4.)K!7guI
-#1W\Re^XX"rRLoJr71fImaV:;MU_\,MU_\,VUb^!s8VfCs+C@OqpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%s7CsDs81=MV#TT>]`<Q~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca(s7CmBs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%s7CsDs81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec17%s7:mCs81=MV#TT>]`<Q~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc^(s7:gAs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec17%s7:mCs81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XGec,W5eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-LgA_/:g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUGec,W5eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XJeboK2eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-OgAM#7g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUJeboK2eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH5d$eb]?0eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&_9.gA:l5g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeH,a$eb]?0eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeVO8+s,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g5#`dg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeVF3_eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH5d$ebfE0eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&_9.gACr5g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeH,a$ebfE0eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XJeboK2eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-OgAM#7g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUJeboK2eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XGec,W5eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-LgA_/:g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUGec,W5eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#X.ec5[EeH#W\eH#XKeH#XGeH5d$s8CIJs-_C;s,,>,s/+?HKCZ_Us81=MV#TT>
-]`<Q~>
-!<E0!joD+?g&M-3gA_0Jg&M,ag&M-Pg&M-Lg&_9.!<(UO!1DO@!/fJ1!2eKMJb$\Xs81LRU&X9;
-\c@6~>
-!<E0!joD4BeGoU.ec,XEeGoT\eGoUKeGoUGeH,a$!<(FJ!1D@;!/f;,!2e<HKCZ_Us81=MV#TT>
-]`<Q~>
-!<E0!joD4BeH#X-eH#XEeH#W\eH#XKeH#XGeHGp&s4,[!s-_C;s,,>,s/+?HKCZ_Us81=MV#TT>
-]`<Q~>
-!<E0!joD+?g&M-2g&M-Jg&M,ag&M-Pg&M-Lg&qE0!8?0+!1DO@!/fJ1!2eKMJb$\Xs81LRU&X9;
-\c@6~>
-!<E0!joD4BeGoU-eGoUEeGoT\eGoUKeGoUGeH>m&!7fX!!1D@;!/f;,!2e<HKCZ_Us81=MV#TT>
-]`<Q~>
-!<E0!joD4BeH#XAec,UJec5[LeH>j%s8W&Jrr;fErVuoJ!WU^LrrUaNs8LONs4./LrRLoIq:,NG
-ec,UKec5[Jec5XLec,RMec5[Kec5[Jec,UKec#LKec5Nsr;ZcH!<8J;!<7r,!<8qHs+BmUs8VuH
-"f21\k.LbF~>
-!<E0!joD+?g&M-FgAV*OgA_0Qg&h?/!!)uOrW)cJr;clO!<CjQ!!:jS!<1[S!87DQrS%5Nq:YiL
-gAV*PgA_0OgA_-QgAV'Rg&M-PgA_0OgAV*PgAM!Pg&V$(quH`M!!&G@!!%o1!!&nMs+0aXs8VuM
-"ektYk.1PC~>
-!<E0!joD4BeGoUAec#RJec,XLeH5g%!!)uJrW)cEr;clJ!<C[L!!:[N!<1LN!7_&LrRLlIq:,KG
-ec#RKec,XJec,ULec#OMeGoUKec,XJec#RKeboIKeH#KsquH`H!!&G;!!%o,!!&nHs+BmUs8VuH
-"f21\k.LbF~>
-!<E0!joD4BeH#XBeH#XIeIV]1ec41Ms4,["e^a]Mec5Ep!<;uI!<;rH!<<&K#636(s4,["p!j'B
-rRDbbe^a]Mec41Ms4,["e^a]Mec41Ms4,["qpb]Hrm_#KqUGZIec5Tu!<8J;!<7r,!<8qHs+BmU
-s8VuH"f21\k.LbF~>
-!<E0!joD+?g&M-Gg&M-Ng(+2;g&Tj\!8?-,g=cP\g&Up%!!)rN!!)oM!!*#P"p!B2!8?-,p"BBG
-rRr(gg=cP\g&Tj\!8?-,g=cP\g&Tj\!8?-,qq;#Mrn7>PqUtuNg&V**!!&G@!!%o1!!&nMs+0aX
-s8VuM"ektYk.1PC~>
-!<E0!joD4BeGoUBeGoUIeIMZ1eH".M!7fU"e^XZMeH#Bp!!)rI!!)oH!!*#K"p!3(!7fU"p!j$B
-rRD_be^XZMeH".M!7fU"e^XZMeH".M!7fU"qpbZHrm^uKqUGWIeH#Qu!!&G;!!%o,!!&nHs+BmU
-s8VuH"f21\k.LbF~>
-!<E0!joD4BeH#XAec5[Kec,UJeHu9+ec41Ms4,["psfBEr7(fIrRLoIrm_,Ne^a^!ec5[DeH#XJ
-ec,UJeI2E-ec41Ms4,["e^a[!rRLrJrRCoJrm_#KqUGZIec5Tu!<8J;!<7r,!<8qHs+BmUs8VuH
-"f21\k.LbF~>
-!<E0!joD+?g&M-FgA_0PgAV*Og'Ic5g&Tj\!8?-,pt>]Jr7V,NrS%5Nrn7GSg=cQ+gA_0Ig&M-O
-gAV*Og'[o7g&Tj\!8?-,g=lN+rS%8OrRq5Orn7>PqUtuNg&V**!!&G@!!%o1!!&nMs+0aXs8VuM
-"ektYk.1PC~>
-!<E0!joD4BeGoUAec,XKec#RJeHl6+eH".M!7fU"psf?Er7(cIrRLlIrm_)Ne^X[!ec,XDeGoUJ
-ec#RJeI)B-eH".M!7fU"e^aX!rRLoJrRClJrm^uKqUGWIeH#Qu!!&G;!!%o,!!&nHs+BmUs8VuH
-"f21\k.LbF~>
-!<E0!joD4BeH#X?eIqo4ec41Ms4,["e^a]Mec41Ms7k+Ks4,["e^a^!eH>j%ec5X!"96p%s8:CI
-s7k+Es8CI_s4,["e^a]Mec41Ms4,["e^a]Mec5Qt!<<&K"TR$&s8VuHr;ZcH!<8J;!<7r,!<8qH
-s+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&M-Dg(FD>g&Tj\!8?-,g=cP\g&Tj\!;P7P!8?-,g=cQ+g&h?/g&V-+!s%'/!;tON
-!;P7J!<(Ud!8?-,g=cP\g&Tj\!8?-,g=cP\g&V')!!*#P"9@00!!)oMquH`M!!&G@!!%o1!!&nM
-s+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoU?eIhl4eH".M!7fU"e^XZMeH".M!;P(K!7fU"e^X[!eH5g%eH#U!!s$m%!;t@I
-!;P(E!<(F_!7fU"e^XZMeH".M!7fU"e^XZMeH#Nt!!*#K"9@!&!!)oHquH`H!!&G;!!%o,!!&nH
-s+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#XBec,UIec5[Lec,RSec5["ec5["s7k.Es8UXJs8UXLrrUaNec,RNec5["rr;cD
-rVulIs8W&Jrr;uJs8N8Qs4,["s8LRJs8:FIrrL[MqUG`Kec41MrVr>:!<7r,!<8qHs+BmUs8VuH
-"f21\k.LbF~>
-!<E0!joD+?g&M-GgAV*NgA_0QgAV'Xg&M-,g&M-,!;P:J!<:dO!<:dQ!!:jSgAV'Sg&M-,rW)`I
-r;ciNrrE#OrW)rOrr<5V!8?-,!<1^O!;tRN!!1dRqUu&Pg&Tj\r;`;?!!%o1!!&nMs+0aXs8VuM
-"ektYk.1PC~>
-!<E0!joD4BeGoUBec#RIec,XLec#OSeGoU"eGoU"!;P+E!<:UJ!<:UL!!:[Nec#ONeGoU"rW)`D
-r;ciIrrE#JrW)rJrr<5Q!7fU"!<1OJ!;tCI!!1UMqUG]KeH".Mr;`;:!!%o,!!&nHs+BmUs8VuH
-"f21\k.LbF~>
-!<E0!joD4BeH#WFeH#X5eH#XGeH5d$s-2%6s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M,Kg&M-:g&M-Lg&_9.!0l1;!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoTFeGoU5eGoUGeH,a$!0l"6!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#WGec,U5eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,LgAV*:g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoTGec#R5eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5ec,XGeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,:gA_0Lg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5ec,XGeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5eboLGeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,:gAM$Lg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5eboLGeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W4eb]@HeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,9gA:mMg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4eb]@HeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeU[^_!!*%VeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g496c!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeU[^^!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W4eb]@HeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,9gA:mMg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4eb]@HeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W4ec#RHeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,9gAV*Mg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4ec#RHeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5ec,XGeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,:gA_0Lg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5ec,XGeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#X.ec5[DeH#XIeH#XIeH#XFec5[BeH#X7eH5d$s8CIJs7t1Fs,,>,s,,>,s/+?H
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-3gA_0Ig&M-Ng&M-Ng&M-KgA_0Gg&M-<g&_9.!<(UO!;Y=K!/fJ1!/fJ1!2eKM
-Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoU.ec,XDeGoUIeGoUIeGoUFec,XBeGoU7eH,a$!<(FJ!;Y.F!/f;,!/f;,!2e<H
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#X-eH#XFec,UIec5[Jec5[EeH#XBeH#X7eHGp&s4,[!s7t1Fs,,>,s,,>,s/+?H
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-2g&M-KgAV*NgA_0OgA_0Jg&M-Gg&M-<g&qE0!8?0+!;Y=K!/fJ1!/fJ1!2eKM
-Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoU-eGoUFec#RIec,XJec,XEeGoUBeGoU7eH>m&!7fX!!;Y.F!/f;,!/f;,!2e<H
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#XAec,UJec5[LeH>j%s8W&Jrr;`C!<<&K!rpgNrm_)Mec5Eprr<#Ks8N5Ps8UX"
-rVulIs8W&Jrr;fEr;ZcH!<;lF!<7r,!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&M-FgAV*OgA_0Qg&h?/!!)uOrW)]H!!*#P!W^pSrn7DRg&Up%rW)uPrr<2U!!(a,
-r;ciNrrE#OrW)cJquH`M!!)iK!!%o1!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoUAec#RJec,XLeH5g%!!)uJrW)]C!!*#K!W^aNrm_&MeH#BprW)uKrr<2P!!(R"
-r;ciIrrE#JrW)cEquH`H!!)iF!!%o,!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#XBeH#XIeIV]1ec41Ms4,["e^a]Mec5Bo%0+l.s4,["e^a]Mec5Ep$3/Q+s4,["
-e^a^!eH#XJeHZ'(ec41Ms7OnDs4./JeH#XFeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-Gg&M-Ng(+2;g&Tj\!8?-,g=cP\g&Um$$io#8!8?-,g=cP\g&Up%#lr]5!8?-,
-g=cQ+g&M-Og'.Q2g&Tj\!;5%I!87GOg&M-Kg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUBeGoUIeIMZ1eH".M!7fU"e^XZMeH#?o$ini.!7fU"e^XZMeH#Bp#lrN+!7fU"
-e^X[!eGoUJeHQ$(eH".M!;4kD!7_)JeGoUFeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XAec5[Kec,UJeHu9+ec41Ms4,["pXK?Fe^aTt!7h#Iq:,fOe^a]Mec41Ms8LOK
-s8CLIs8CLJs7b%Fs4./JeH#XFeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-FgA_0PgAV*Og'Ic5g&Tj\!8?-,pY#ZKg=lH)!8@>Nq:Z,Tg=cP\g&Tj\!<1[P
-!<(XN!<(XO!;G1K!87GOg&M-Kg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUAec,XKec#RJeHl6+eH".M!7fU"pXK<Fe^aQt!7guIq:,cOe^XZMeH".M!<1LK
-!<(II!<(IJ!;G"F!7_)JeGoUFeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#X?eIqo4ec41Ms4,["e^a]Mec41Ms7b%Ds8:CIs8:CIs7k+Ns4,["e^a]Mec5X!
-#liH*s4./"ec5Qt!<;lFr;ZcH!<;lF!<7r,!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&M-Dg(FD>g&Tj\!8?-,g=cP\g&Tj\!;G1I!;tON!;tON!;P7S!8?-,g=cP\g&V-+
-#QWT4!87G,g&V')!!)iKquH`M!!)iK!!%o1!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoU?eIhl4eH".M!7fU"e^XZMeH".M!;G"D!;t@I!;t@I!;P(N!7fU"e^XZMeH#U!
-#QWE*!7_)"eH#Nt!!)iFquH`H!!)iF!!%o,!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#XBec,UIec5[Lec,RSec5["ec5["s8(:Es8CIJs8:CIs7t4Ds8CLJs8:FIs8LRK
-s8LRJs7b%Hs4./"ec#OEeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-GgAV*NgA_0QgAV'Xg&M-,g&M-,!;bFJ!<(UO!;tON!;Y@I!<(XO!;tRN!<1^P
-!<1^O!;G1M!87G,gAM$Jg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUBec#RIec,XLec#OSeGoU"eGoU"!;b7E!<(FJ!;t@I!;Y1D!<(IJ!;tCI!<1OK
-!<1OJ!;G"H!7_)"eboLEeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#WZeH#X1eH5d$s7FhAs,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M,_g&M-6g&_9.!;+tF!/fJ1!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoTZeGoU1eH,a$!;+eA!/f;,!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W\ec5ZueH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,agA_0%g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT\ec,WueGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5ec,XGeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,:gA_0Lg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5ec,XGeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5eboLGeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,:gAM$Lg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5eboLGeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W4eb]@HeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,9gA:mMg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4eb]@HeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeU[^_!!*%VeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g496c!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeU[^^!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W4eb]@HeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,9gA:mMg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4eb]@HeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W4ec#RHeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,9gAV*Mg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4ec#RHeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5ec,XGeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,:gA_0Lg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5ec,XGeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#X(eH#X7eH#XIeH#XIeH#XFec5[BeH#X9eH#W,eH#W,eH#WHec19m^&S-0eHMcK
-k2s>WJ,~>
-!<E0!joD+?g&M--g&M-<g&M-Ng&M-Ng&M-KgA_0Gg&M->g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2M
-k2s5TJ,~>
-!<E0!joD4BeGoU(eGoU7eGoUIeGoUIeGoUFec,XBeGoU9eGoT,eGoT,eGoTHec19m^&S-0eHMcK
-k2s>WJ,~>
-!<E0!joD4BeH#Wgec,UIec5[Jec5[EeH#XBeH#X9eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD+?g&M,lgAV*NgA_0OgA_0Jg&M-Gg&M->g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5T
-J,~>
-!<E0!joD4BeGoTgec#RIec,XJec,XEeGoUBeGoU9eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD4BeH#XBeH,^#rr<#Ks8W&Js8W&Js8W&Js8W,Ls8W,Ls8W,Ls8VfC!<<&K!rpgNrm_)M
-ec5Eprr<#Ks8N5Ps8UX"rVulIs8W&Jrr;iF!<7r,!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&M-Gg&V3-rW)uPrrE#OrrE#OrrE#OrrE)QrrE)QrrE)QrrDcH!!*#P!W^pSrn7DR
-g&Up%rW)uPrr<2U!!(a,r;ciNrrE#OrW)fK!!%o1!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoUBeH#[#rW)uKrrE#JrrE#JrrE#JrrE)LrrE)LrrE)LrrDcC!!*#K!W^aNrm_&M
-eH#BprW)uKrr<2P!!(R"r;ciIrrE#JrW)fF!!%o,!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#XAeH#XJeIV]1ec41Ms4,["e^a]Mec5Tu!<<&K!<<&K"om-Qe^a]oeI;K.ec41M
-s4,["e^a]peHu9+ec41Ms4,["rm_#KrRD,Pe^a]Mec5Bo!<7r,!<7r,!<8qHs+BmUs8VuH"f21\
-k.LbF~>
-!<E0!joD+?g&M-Fg&M-Og(+2;g&Tj\!8?-,g=cP\g&V**!!*#P!!*#P"T[6Vg=cQ$g'du8g&Tj\
-!8?-,g=cQ%g'Ic5g&Tj\!8?-,rn7>PrRqGUg=cP\g&Um$!!%o1!!%o1!!&nMs+0aXs8VuM"ektY
-k.1PC~>
-!<E0!joD4BeGoUAeGoUJeIMZ1eH".M!7fU"e^XZMeH#Qu!!*#K!!*#K"T['Qe^XZoeI2H.eH".M
-!7fU"e^XZpeHl6+eH".M!7fU"rm^uKrRD)Pe^XZMeH#?o!!%o,!!%o,!!&nHs+BmUs8VuH"f21\
-k.LbF~>
-!<E0!joD4BeH#XAeH#XJec,UJeH#XIec,UHeH#XJeHGp&s4,[!s7XtEs4,ZtrrCUIs7t1Os4,["
-e^a]Mec5X!!<<#Jrr;rIs8VoF!<7r,!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&M-Fg&M-OgAV*Og&M-NgAV*Mg&M-Og&qE0!8?0+!;>+J!8?0)!!(aN!;Y=T!8?-,
-g=cP\g&V-+!!)uOrW)oNrrDlK!!%o1!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoUAeGoUJec#RJeGoUIec#RHeGoUJeH>m&!7fX!!;=qE!7fWt!!(RI!;Y.O!7fU"
-e^XZMeH#U!!!)uJrW)oIrrDlF!!%o,!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#XAeH#XJeIV]1ec41Ms4,["e^a]Mec5Tu!<<#J#liHTe^a]Mec5Bo!<;uI!<;uI
-!<;iE$3/Q+s4,["e^a^!eHl3*ec42"e^a]teH#XGeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD+?g&M-Fg&M-Og(+2;g&Tj\!8?-,g=cP\g&V**!!)uO#QWQYg=cP\g&Um$!!)rN!!)rN
-!!)fJ#lr]5!8?-,g=cQ+g'@]4g&Th,g=cQ)g&M-Lg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5T
-J,~>
-!<E0!joD4BeGoUAeGoUJeIMZ1eH".M!7fU"e^XZMeH#Qu!!)uJ#QWBTe^XZMeH#?o!!)rI!!)rI
-!!)fE#lrN+!7fU"e^X[!eHc0*eH","e^XZteGoUGeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD4BeH#XBec#OIec5[Jec5[Jec5[KeboIHeH#XJec5[Eec#OHeH#XIeH#XFec#OHec5[I
-ec5[Kec5[Kec,UEeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-GgAM$NgA_0OgA_0OgA_0PgACsMg&M-OgA_0JgAM$Mg&M-Ng&M-KgAM$MgA_0N
-gA_0PgA_0PgAV*Jg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUBeboLIec,XJec,XJec,XKebfFHeGoUJec,XEeboLHeGoUIeGoUFeboLHec,XI
-ec,XKec,XKec#REeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#WHeH#X3eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,Mg&M-8g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoTHeGoU3eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#WJec5[2eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,OgA_07g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoTJec,X2eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5ec,XGeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,:gA_0Lg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5ec,XGeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5eboLGeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,:gAM$Lg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5eboLGeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W4eb]@HeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,9gA:mMg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4eb]@HeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeU[^O!1<fes/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g496T!13b`gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeU[^O!13b`ec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W4eb]@HeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,9gA:mMg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4eb]@HeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W4ec#RHeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,9gAV*Mg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4ec#RHeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5ec,XGeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,:gA_0Lg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5ec,XGeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#X.ec5[EeH#Wnec5[>eHc-)s4./"ec1WZ!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&M-3gA_0Jg&M,sgA_0Cg'7W3!87G,g&R,d!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoU.ec,XEeGoTnec,X>eHZ*)!7_)"eGtTZ!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#X-eH#XEeH#WmeH#X>eH>j%s4.)JNR\%/MU__,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&M-2g&M-Jg&M,rg&M-Cg&h?/!8@AONS4@4MV8%1VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoU-eGoUEeGoTmeGoU>eH5g%!7h#JNR\"/MU_\,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#XAec,UJec5[LeH>j%s8W&Jrr;fErVuoJ!WU^LrrUaNs8LONs4./LrRLoIq:,NG
-ec,UKec5[LeH>j%s8W#I#QN?)s8UXLs7t4Bs8UULs,GP/s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-FgAV*OgA_0Qg&h?/!!)uOrW)cJr;clO!<CjQ!!:jS!<1[S!87DQrS%5Nq:YiL
-gAV*PgA_0Qg&h?/!!)rN#6<K3!!(^Q!;Y@G!<:aQ!0,\4!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoUAec#RJec,XLeH5g%!!)uJrW)cEr;clJ!<C[L!!:[N!<1LN!7_&LrRLlIq:,KG
-ec#RKec,XLeH5g%!!)rI#6<<)!!(OL!;Y1B!<:RL!0,M/!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#XBeH#XIeIV]1ec41Ms4,["e^a]Mec5Ep!<;uI!<;rH!<<&K#636(s4,["p!j'B
-rRD5Se^a]Mec41Ms8CIJs8LONs4,["psfWLec42"e^a\ZeH#W,eH#WHec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD+?g&M-Gg&M-Ng(+2;g&Tj\!8?-,g=cP\g&Up%!!)rN!!)oM!!*#P"p!B2!8?-,p"BBG
-rRqPXg=cP\g&Tj\!<(UO!<1[S!8?-,pt>rQg&Th,g=cOdg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5T
-J,~>
-!<E0!joD4BeGoUBeGoUIeIMZ1eH".M!7fU"e^XZMeH#Bp!!)rI!!)oH!!*#K"p!3(!7fU"p!j$B
-rRD2Se^XZMeH".M!<(FJ!<1LN!7fU"psfTLeH","e^XYZeGoT,eGoTHec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD4BeH#XAec5[Kec,UJeHu9+ec41Ms4,["psfBEr7(fIrRLoIrm_,Ne^a^!ec5[DeH#XJ
-ec,UJeH>j%ec5Tu!<<&K"96p%s7k+Ls4./"s4,["NR\%/MU__,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&M-FgA_0PgAV*Og'Ic5g&Tj\!8?-,pt>]Jr7V,NrS%5Nrn7GSg=cQ+gA_0Ig&M-O
-gAV*Og&h?/g&V**!!*#P!s%'/!;P7Q!87G,!8?-,NS4@4MV8%1VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoUAec,XKec#RJeHl6+eH".M!7fU"psf?Er7(cIrRLlIrm_)Ne^X[!ec,XDeGoUJ
-ec#RJeH5g%eH#Qu!!*#K!s$m%!;P(L!7_)"!7fU"NR\"/MU_\,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#X?eIqo4ec41Ms4,["e^a]Mec41Ms7k+Ks4,["e^a^!eH>j%ec5X!"96p%s8:CI
-s7k+Es8CISs4,["e^a]Mec5Tu!<<&K"96p%s7t4Bs8UULs,GP/s,,>,s/+?HKCZ_Us81=MV#TT>
-]`<Q~>
-!<E0!joD+?g&M-Dg(FD>g&Tj\!8?-,g=cP\g&Tj\!;P7P!8?-,g=cQ+g&h?/g&V-+!s%'/!;tON
-!;P7J!<(UX!8?-,g=cP\g&V**!!*#P!s%'/!;Y@G!<:aQ!0,\4!/fJ1!2eKMJb$\Xs81LRU&X9;
-\c@6~>
-!<E0!joD4BeGoU?eIhl4eH".M!7fU"e^XZMeH".M!;P(K!7fU"e^X[!eH5g%eH#U!!s$m%!;t@I
-!;P(E!<(FS!7fU"e^XZMeH#Qu!!*#K!s$m%!;Y1B!<:RL!0,M/!/f;,!2e<HKCZ_Us81=MV#TT>
-]`<Q~>
-!<E0!joD4BeH#XBec,UIec5[Lec,RSec5["ec5["s7k.Es8UXJs8UXLrrUaNec,RNec5["rr;cD
-rVulIs8W)Krr;uJr;ZfIs8ViD"96pOeboH-eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-GgAV*NgA_0QgAV'Xg&M-,g&M-,!;P:J!<:dO!<:dQ!!:jSgAV'Sg&M-,rW)`I
-r;ciNrrE&PrW)rOquHcNrrDfI!s%$TgACr2g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUBec#RIec,XLec#OSeGoU"eGoU"!;P+E!<:UJ!<:UL!!:[Nec#ONeGoU"rW)`D
-r;ciIrrE&KrW)rJquHcIrrDfD!s$jOebfE-eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#WIeH#XBeH#XCeHGp&s4..,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,Ng&M-Gg&M-Hg&qE0!87F1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoTIeGoUBeGoUCeH>m&!7_(,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#WJec#ODec5[>eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,OgAM$IgA_0Cg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoTJeboLDec,X>eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XGec,W5eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-LgA_/:g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUGec,W5eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XJeboK2eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-OgAM#7g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUJeboK2eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH5d$eb]?0eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&_9.gA:l5g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeH,a$eb]?0eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeU[^O!1<fes/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g496T!13b`gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeU[^O!13b`ec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH5d$ebfE0eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&_9.gACr5g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeH,a$ebfE0eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XJeboK2eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-OgAM#7g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUJeboK2eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XGec,W5eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-LgA_/:g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUGec,W5eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#X.ec5[DeH#XJec5[Jec5[Fec5[BeH#X7eH5d$s8CIJs7t1Fs,,>,s,,>,s/+?H
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-3gA_0Ig&M-OgA_0OgA_0KgA_0Gg&M-<g&_9.!<(UO!;Y=K!/fJ1!/fJ1!2eKM
-Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoU.ec,XDeGoUJec,XJec,XFec,XBeGoU7eH,a$!<(FJ!;Y.F!/f;,!/f;,!2e<H
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#X-eH#XFec,UJeHu9+ec41Ms4,["q:,KFp!j'BlI?%;ec41Mrr;fE!<7r,!<7r,
-!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&M-2g&M-KgAV*Og'Ic5g&Tj\!8?-,q:YfKp"BBGlIl@@g&Tj\rW)cJ!!%o1!!%o1
-!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoU-eGoUFec#RJeHl6+eH".M!7fU"q:,HFp!j$BlI?";eH".MrW)cE!!%o,!!%o,
-!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#XAec,UJec5[LeH>j%s8W&Jrr;`C!<;rH#636(s4,["q:5KEs4./L"P*PPe^aWu
-rmh&KrRLoIq:5ECrm_#Kq:,KFMU__,MU__,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&M-FgAV*OgA_0Qg&h?/!!)uOrW)]H!!)oM"p!B2!8?-,q:bfJs4[JQ"PNhUg=lK*
-rn@APrS%5Nq:b`Hrn7>Pq:YfKMV8%1MV8%1VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoUAec#RJec,XLeH5g%!!)uJrW)]C!!)oH"p!3(!7fU"q:5HEs4.,L"P!JPe^aTu
-rmh#KrRLlIq:5BCrm^uKq:,HFMU_\,MU_\,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#XBeH#XIeIV]1ec41Ms4,["e^a]Mec5Bo!<;uI!<<#Js8VlE$3/Q+s4,["e^a^!
-eH#XJeHZ'(ec41Ms7OnDs4./JeH#XFeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-Gg&M-Ng(+2;g&Tj\!8?-,g=cP\g&Um$!!)rN!!)uOrrDiJ#lr]5!8?-,g=cQ+
-g&M-Og'.Q2g&Tj\!;5%I!87GOg&M-Kg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUBeGoUIeIMZ1eH".M!7fU"e^XZMeH#?o!!)rI!!)uJrrDiE#lrN+!7fU"e^X[!
-eGoUJeHQ$(eH".M!;4kD!7_)JeGoUFeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XAec5[Kec,UJeHu9+ec41Ms4,["pXK9DrRCoJrRD#Me^a]qeHu9+ec41Ms4,["
-rm_#KrRLoIrRLrJpXK?Fec5Tu!<;lF!<7r,!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&M-FgA_0PgAV*Og'Ic5g&Tj\!8?-,pY#TIrRq5OrRq>Rg=cQ&g'Ic5g&Tj\!8?-,
-rn7>PrS%5NrS%8OpY#ZKg&V**!!)iK!!%o1!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoUAec,XKec#RJeHl6+eH".M!7fU"pXK6DrRClJrRCuMe^XZqeHl6+eH".M!7fU"
-rm^uKrRLlIrRLoJpXK<FeH#Qu!!)iF!!%o,!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#X?eIqo4ec41Ms4,["e^a]Mec41Ms7b%Ds8LOKs8:CLs4,["q:,fOe^a]Mec41M
-s8LOSs4,["ec41Ms8:CIs7t4Cs8LOKs7t1Fs,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-Dg(FD>g&Tj\!8?-,g=cP\g&Tj\!;G1I!<1[P!;tOQ!8?-,q:Z,Tg=cP\g&Tj\
-!<1[X!8?-,g&Tj\!;tON!;Y@H!<1[P!;Y=K!/fJ1!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoU?eIhl4eH".M!7fU"e^XZMeH".M!;G"D!<1LK!;t@L!7fU"q:,cOe^XZMeH".M
-!<1LS!7fU"eH".M!;t@I!;Y1C!<1LK!;Y.F!/f;,!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#XBec,UIec5[Lec,RSec5["ec5["s8(:Es8UXJs8LRKs7t4Ds8CLJs8:FIs8LRK
-s8LRJs7b%Hs4./"ec#OEeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-GgAV*NgA_0QgAV'Xg&M-,g&M-,!;bFJ!<:dO!<1^P!;Y@I!<(XO!;tRN!<1^P
-!<1^O!;G1M!87G,gAM$Jg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUBec#RIec,XLec#OSeGoU"eGoU"!;b7E!<:UJ!<1OK!;Y1D!<(IJ!;tCI!<1OK
-!<1OJ!;G"H!7_)"eboLEeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#WZeH#X1eH5d$s7FhAs,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M,_g&M-6g&_9.!;+tF!/fJ1!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoTZeGoU1eH,a$!;+eA!/f;,!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W\ec5ZueH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,agA_0%g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT\ec,WueGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XGec,W5eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-LgA_/:g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUGec,W5eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XJeboK2eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-OgAM#7g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUJeboK2eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH5d$eb]?0eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&_9.gA:l5g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeH,a$eb]?0eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeU[^O!1<fes/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g496T!13b`gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeU[^O!13b`ec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH5d$ebfE0eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&_9.gACr5g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeH,a$ebfE0eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XJeboK2eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-OgAM#7g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUJeboK2eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XGec,W5eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-LgA_/:g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUGec,W5eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#X5ec5[Jec5[Lec5[>ec5ZmeH#XEeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD+?g&M-:gA_0OgA_0QgA_0CgA_/rg&M-Jg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5T
-J,~>
-!<E0!joD4BeGoU5ec,XJec,XLec,X>ec,WmeGoUEeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD4BeH#X4eH#XIeH#XKeH#X=eH#WmeH#XEeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD+?g&M-9g&M-Ng&M-Pg&M-Bg&M,rg&M-Jg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5T
-J,~>
-!<E0!joD4BeGoU4eGoUIeGoUKeGoU=eGoTmeGoUEeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD4BeH#XAec5[Kec5[HeH#XIeH#XKec,UJec5[Iec5[KeH>j%s8W)K!<;cCs8W&Js8W,L
-$3/QUs4,["ec5[Jec5[Jec5[Kec#OEeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-FgA_0PgA_0Mg&M-Ng&M-PgAV*OgA_0NgA_0Pg&h?/!!*#P!!)`HrrE#OrrE)Q
-#lrZZ!8?-,g&M-OgA_0OgA_0PgAM$Jg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUAec,XKec,XHeGoUIeGoUKec#RJec,XIec,XKeH5g%!!*#K!!)`CrrE#JrrE)L
-#lrKU!7fU"eGoUJec,XJec,XKeboLEeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XBeH>j%ec5Tu!<;uI!<;uI!<<&K"96p%s8CIJs8LOSs4,["e^a]Ms8CIJs7b%e
-s4,["e^a]Mec41Ms4,["e^a]Mec41Ms4,["e^a]Mec5X!!<;iE!<7r,!<7r,!<8qHs+BmUs8VuH
-"f21\k.LbF~>
-!<E0!joD+?g&M-Gg&h?/g&V**!!)rN!!)rN!!*#P!s%'/!<(UO!<1[X!8?-,g=cP\!<(UO!;G1j
-!8?-,g=cP\g&Tj\!8?-,g=cP\g&Tj\!8?-,g=cP\g&V-+!!)fJ!!%o1!!%o1!!&nMs+0aXs8VuM
-"ektYk.1PC~>
-!<E0!joD4BeGoUBeH5g%eH#Qu!!)rI!!)rI!!*#K!s$m%!<(FJ!<1LS!7fU"e^XZM!<(FJ!;G"e
-!7fU"e^XZMeH".M!7fU"e^XZMeH".M!7fU"e^XZMeH#U!!!)fE!!%o,!!%o,!!&nHs+BmUs8VuH
-"f21\k.LbF~>
-!<E0!joD4BeH#XBeH#XIec,UHeH#XIeH#XKeHQ!'ec41Mrr;uJ!<;uIs8VW>!<;uI&c^D3s4,["
-e^a]Mec41Ms4,[!s8LOKs81=Hs7k+Es,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-Gg&M-NgAV*Mg&M-Ng&M-Pg'%K1g&Tj\rW)rO!!)rNrrDTC!!)rN&HLP=!8?-,
-g=cP\g&Tj\!8?0+!<1[P!;kIM!;P7J!/fJ1!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoUBeGoUIec#RHeGoUIeGoUKeHGs'eH".MrW)rJ!!)rIrrDT>!!)rI&HLA3!7fU"
-e^XZMeH".M!7fX!!<1LK!;k:H!;P(E!/f;,!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#XBeHl3*ec42"e^a]teH#XIeH#XKeHl3*ec42"e^a^!eHl3*ec41Ms4./JeH#XD
-eKOtCec41Ms4,["e^a]Mec41Ms4,["e^a]Mec41Ms4,["rm_,Ne^a]seH#W,eH#W,eH#WHec19m
-^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-Gg'@]4g&Th,g=cQ)g&M-Ng&M-Pg'@]4g&Th,g=cQ+g'@]4g&Tj\!87GOg&M-I
-g*$IMg&Tj\!8?-,g=cP\g&Tj\!8?-,g=cP\g&Tj\!8?-,rn7GSg=cQ(g&M,1g&M,1g&M,MgAc`p
-_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUBeHc0*eH","e^XZteGoUIeGoUKeHc0*eH","e^X[!eHc0*eH".M!7_)JeGoUD
-eKFqCeH".M!7fU"e^XZMeH".M!7fU"e^XZMeH".M!7fU"rm_)Ne^XZseGoT,eGoT,eGoTHec19m
-^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XAec5[Kec5XOec41Mr;QcIq#C?Ds8N,Ms8LRKs8UXLrrUaNs8LOKs7Y"Cs8CLJ
-s8UXKrrCUIrs%$Rs4,["s8CLJs8:FIs8(7Gs,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-FgA_0PgA_-Tg&Tj\qu?`Np]1<Irr<)R!<1^P!<:dQ!!:jS!<1[P!;>.H!<(XO
-!<:dP!!(aN!!_-W!8?-,!<(XO!;tRN!;bCL!/fJ1!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoUAec,XKec,UOeH".Mqu?`Ip]1<Drr<)M!<1OK!<:UL!!:[N!<1LK!;=tC!<(IJ
-!<:UK!!(RI!!^sR!7fU"!<(IJ!;tCI!;b4G!/f;,!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W5ec,XGeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,:gA_0Lg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT5ec,XGeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W5eboLGeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,:gAM$Lg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT5eboLGeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W4eb]@HeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,9gA:mMg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT4eb]@HeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeVO8+s,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g5#`dg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeVF3_eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W4eb]@HeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,9gA:mMg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT4eb]@HeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W4ec#RHeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,9gAV*Mg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT4ec#RHeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W5ec,XGeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,:gA_0Lg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT5ec,XGeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#X5eH#W\eH#X9eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-:g&M,ag&M->g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoU5eGoT\eGoU9eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#X5eH#W\eH#X9eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-:g&M,ag&M->g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoU5eGoT\eGoU9eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XBeH,^#rr<#Ks8W)KrVm2Ss8UXLs4,["ec#LLec5[JeH#XCec5[Jec5[LeHu9+
-s8UX"s4./LrRLrJrRLrJrmguImaV=;MU__,MU__,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&M-Gg&V3-rW)uPrrE&Pr;[/X!!(^Q!8?-,gAM!Qg&M-Og&M-HgA_0OgA_0Qg'Ic5
-!!(a,!87DQrS%8OrS%8Orn@;Nmb.X@MV8%1MV8%1VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoUBeH#[#rW)uKrrE&Kr;[/S!!(OL!7fU"eboILeGoUJeGoUCec,XJec,XLeHl6+
-!!(R"!7_&LrRLoJrRLoJrmgrImaV:;MU_\,MU_\,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#XAeH#XJeH>j%ec5X!!<<#J"96p%s8LOKs8CIMs4,["rm_#KpXLGee^a]Mec41M
-s4,["e^a]Mec41Ms4,["e^a]Mec41Ms8LOKs6S89s,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-Fg&M-Og&h?/g&V-+!!)uO!s%'/!<1[P!<(UR!8?-,rn7>PpY$bjg=cP\g&Tj\
-!8?-,g=cP\g&Tj\!8?-,g=cP\g&Tj\!<1[P!:8D>!/fJ1!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoUAeGoUJeH5g%eH#U!!!)uJ!s$m%!<1LK!<(FM!7fU"rm^uKpXLDee^XZMeH".M
-!7fU"e^XZMeH".M!7fU"e^XZMeH".M!<1LK!:859!/f;,!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#XAeH#XJec,UIeH#XJeH>j%ec5X!!<<#J"96p%s7=b@s8:CZs4,["e^a]Mec41M
-s4,["e^a[!rm_#Kqpb]Hm*u+9MU__,MU__,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&M-Fg&M-OgAV*Ng&M-Og&h?/g&V-+!!)uO!s%'/!;"nE!;tO_!8?-,g=cP\g&Tj\
-!8?-,g=lN+rn7>Pqq;#Mm+MF>MV8%1MV8%1VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoUAeGoUJec#RIeGoUJeH5g%eH#U!!!)uJ!s$m%!;"_@!;t@Z!7fU"e^XZMeH".M
-!7fU"e^aX!rm^uKqpbZHm*u(9MU_\,MU_\,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#XAeH#XJeH>j%ec5X!#liH*s4./"ec5X!!<<#J"96p%s8LOKs7b%es4,["e^a]M
-ec41Ms4,["e^a]Mec41Ms4,["e^a]Mec5X!"96p%s6nJ<s,,>,s,,>,s/+?HKCZ_Us81=MV#TT>
-]`<Q~>
-!<E0!joD+?g&M-Fg&M-Og&h?/g&V-+#QWT4!87G,g&V-+!!)uO!s%'/!<1[P!;G1j!8?-,g=cP\
-g&Tj\!8?-,g=cP\g&Tj\!8?-,g=cP\g&V-+!s%'/!:SVA!/fJ1!/fJ1!2eKMJb$\Xs81LRU&X9;
-\c@6~>
-!<E0!joD4BeGoUAeGoUJeH5g%eH#U!#QWE*!7_)"eH#U!!!)uJ!s$m%!<1LK!;G"e!7fU"e^XZM
-eH".M!7fU"e^XZMeH".M!7fU"e^XZMeH#U!!s$m%!:SG<!/f;,!/f;,!2e<HKCZ_Us81=MV#TT>
-]`<Q~>
-!<E0!joD4BeH#XBec#OIec5[Iec5[Kec5XNec41urrCUKrrpsQs4,["p=93CrRLrJs4.,K!7h#I
-#1`bRe^a^"rRLrJr71iImaV=;MU__,MU__,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&M-GgAM$NgA_0NgA_0PgA_-Sg&Tk*!!(aP!!V'V!8?-,p=fNHrS%8Os4[GP!8@>N
-#20%Wg=cN,rS%8Or7_/Nmb.X@MV8%1MV8%1VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoUBeboLIec,XIec,XKec,UNeH".u!!(RK!!UmQ!7fU"p=90CrRLoJs4.)K!7guI
-#1W\Re^XX"rRLoJr71fImaV:;MU_\,MU_\,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XGec,W5eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-LgA_/:g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUGec,W5eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XJeboK2eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-OgAM#7g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUJeboK2eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH5d$eb]?0eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&_9.gA:l5g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeH,a$eb]?0eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeVO8+s,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g5#`dg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeVF3_eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH5d$ebfE0eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&_9.gACr5g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeH,a$ebfE0eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XJeboK2eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-OgAM#7g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUJeboK2eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XGec,W5eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-LgA_/:g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUGec,W5eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#X(eH#X7eH#XJec5[Jec5[Fec5[BeH#X9eH#W,eH#W,eH#WHec19m^&S-0eHMcK
-k2s>WJ,~>
-!<E0!joD+?g&M--g&M-<g&M-OgA_0OgA_0KgA_0Gg&M->g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2M
-k2s5TJ,~>
-!<E0!joD4BeGoU(eGoU7eGoUJec,XJec,XFec,XBeGoU9eGoT,eGoT,eGoTHec19m^&S-0eHMcK
-k2s>WJ,~>
-!<E0!joD4BeH#Wgec,UJeHu9+ec41Ms4,["q:,KFp!j'Bm*u+9MU__,MU__,VUb^!o"G)'qpbkG
-s5rIW!.Y~>
-!<E0!joD+?g&M,lgAV*Og'Ic5g&Tj\!8?-,q:YfKp"BBGm+MF>MV8%1MV8%1VV;'$o"tG,qq;4I
-s5rIT!.Y~>
-!<E0!joD4BeGoTgec#RJeHl6+eH".M!7fU"q:,HFp!j$Bm*u(9MU_\,MU_\,VUb^!o"G)'qpbkG
-s5rIW!.Y~>
-!<E0!joD4BeH#XBeH,^#rr<#Ks8W&Js8W&Js8W&Js8W,Ls8W,Ls8W,Ls8VfC!<;rH#636(s4,["
-q:5KEs4./L"P*PPe^aWurmh&KrRLoIqUGTGMU__,MU__,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&M-Gg&V3-rW)uPrrE#OrrE#OrrE#OrrE)QrrE)QrrE)QrrDcH!!)oM"p!B2!8?-,
-q:bfJs4[JQ"PNhUg=lK*rn@APrS%5NqUtoLMV8%1MV8%1VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoUBeH#[#rW)uKrrE#JrrE#JrrE#JrrE)LrrE)LrrE)LrrDcC!!)oH"p!3(!7fU"
-q:5HEs4.,L"P!JPe^aTurmh#KrRLlIqUGQGMU_\,MU_\,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#XAeH#XJeIV]1ec41Ms4,["e^a]Mec5Tu!<<&K!<<&K"om-Qe^a]oeH#XIeH#XJ
-ec5[EeHu9+ec41Ms4,["rm_#KrRD,Pe^a]Mec5Bo!<7r,!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&M-Fg&M-Og(+2;g&Tj\!8?-,g=cP\g&V**!!*#P!!*#P"T[6Vg=cQ$g&M-Ng&M-O
-gA_0Jg'Ic5g&Tj\!8?-,rn7>PrRqGUg=cP\g&Um$!!%o1!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoUAeGoUJeIMZ1eH".M!7fU"e^XZMeH#Qu!!*#K!!*#K"T['Qe^XZoeGoUIeGoUJ
-ec,XEeHl6+eH".M!7fU"rm^uKrRD)Pe^XZMeH#?o!!%o,!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#XAeH#XJec,UJeH#XIec,UHeH#XJeHGp&s4,[!s7XtCs8CIJs8CIMs4,["q:,fO
-e^a]Mec41Ms8LOKs8CLIs8CLJs7t1Fs,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-Fg&M-OgAV*Og&M-NgAV*Mg&M-Og&qE0!8?0+!;>+H!<(UO!<(UR!8?-,q:Z,T
-g=cP\g&Tj\!<1[P!<(XN!<(XO!;Y=K!/fJ1!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoUAeGoUJec#RJeGoUIec#RHeGoUJeH>m&!7fX!!;=qC!<(FJ!<(FM!7fU"q:,cO
-e^XZMeH".M!<1LK!<(II!<(IJ!;Y.F!/f;,!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#XAeH#XJeIV]1ec41Ms4,["e^a]Mec5Tu!<<#J#liHTe^a]Mec5Bo!<<&K!<;uI
-"96p%s7t1Os4,["e^a]Mec5X!#liH*s4./"ec5Qt!<;oG!<7r,!<7r,!<8qHs+BmUs8VuH"f21\
-k.LbF~>
-!<E0!joD+?g&M-Fg&M-Og(+2;g&Tj\!8?-,g=cP\g&V**!!)uO#QWQYg=cP\g&Um$!!*#P!!)rN
-!s%'/!;Y=T!8?-,g=cP\g&V-+#QWT4!87G,g&V')!!)lL!!%o1!!%o1!!&nMs+0aXs8VuM"ektY
-k.1PC~>
-!<E0!joD4BeGoUAeGoUJeIMZ1eH".M!7fU"e^XZMeH#Qu!!)uJ#QWBTe^XZMeH#?o!!*#K!!)rI
-!s$m%!;Y.O!7fU"e^XZMeH#U!#QWE*!7_)"eH#Nt!!)lG!!%o,!!%o,!!&nHs+BmUs8VuH"f21\
-k.LbF~>
-!<E0!joD4BeH#XBec#OIec5[Jec5[Jec5[KeboIHeH#XJec5[Eec#OJec#OIec5[Fec#OHec5[I
-ec5[Kec5[Kec,UEeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-GgAM$NgA_0OgA_0OgA_0PgACsMg&M-OgA_0JgAM$OgAM$NgA_0KgAM$MgA_0N
-gA_0PgA_0PgAV*Jg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUBeboLIec,XJec,XJec,XKebfFHeGoUJec,XEeboLJeboLIec,XFeboLHec,XI
-ec,XKec,XKec#REeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#WHeH#X3eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,Mg&M-8g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoTHeGoU3eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#WJec5[2eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,OgA_07g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoTJec,X2eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XGec,W5eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-LgA_/:g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUGec,W5eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XJeboK2eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-OgAM#7g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUJeboK2eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH5d$eb]?0eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&_9.gA:l5g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeH,a$eb]?0eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeU[^O!1<fes/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g496T!13b`gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeU[^O!13b`ec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH5d$ebfE0eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&_9.gACr5g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeH,a$ebfE0eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XJeboK2eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-OgAM#7g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUJeboK2eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XGec,W5eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-LgA_/:g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUGec,W5eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XAeH#Wnec5[>eH5d$s8CIJs6%o4s,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-Fg&M,sgA_0Cg&_9.!<(UO!9`&9!/fJ1!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoUAeGoTnec,X>eH,a$!<(FJ!9_l4!/f;,!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#XAeH#WmeH#X>eHGp&s4,[!s6%o4s,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-Fg&M,rg&M-Cg&qE0!8?0+!9`&9!/fJ1!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoUAeGoTmeGoU>eH>m&!7fX!!9_l4!/f;,!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#XBec#OJeH,^#rr3&Ms8W)K"96pOs8CLIs7t1Gs4.,Ks4./Ls4%5Oec5[IeHc-)
-ec5["s8VoFr;ZcH!<;64!<7r,!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&M-GgAM$Og&V3-rW!#R!!*#P!s%$T!<(XN!;Y=L!8@DPs4[JQs4RPTg&M-Ng'7W3
-g&M-,!!)iKquH`M!!)39!!%o1!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoUBeboLJeH#[#rW!#M!!*#K!s$jO!<(II!;Y.G!7h&Ks4.,Ls4%2OeGoUIeHZ*)
-eGoU"!!)iFquH`H!!)34!!%o,!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#XAeH#XIeH#XHeH#XKeHZ'(ec41Ms7OnBs8CISs4,["e^a]Mec5Tu!<<&K"96p%
-s7k+Gs4./JeH#X4eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-Fg&M-Ng&M-Mg&M-Pg'.Q2g&Tj\!;5%G!<(UX!8?-,g=cP\g&V**!!*#P!s%'/
-!;P7L!87GOg&M-9g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUAeGoUIeGoUHeGoUKeHQ$(eH".M!;4kB!<(FS!7fU"e^XZMeH#Qu!!*#K!s$m%
-!;P(G!7_)JeGoU4eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XAeH#XIeH#XJec,UJeH>j%ec5X!s8ViD!<<#Jrr;uJ"96p%s8CIJs8LONs4,["
-psfHGec5Tu!<;64!<7r,!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&M-Fg&M-Ng&M-OgAV*Og&h?/g&V-+rrDfI!!)uOrW)rO!s%'/!<(UO!<1[S!8?-,
-pt>cLg&V**!!)39!!%o1!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoUAeGoUIeGoUJec#RJeH5g%eH#U!rrDfD!!)uJrW)rJ!s$m%!<(FJ!<1LN!7fU"
-psfEGeH#Qu!!)34!!%o,!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#XAeHZ'(ec41Ms8LONs4,["rm_,Ne^a]teH#XEeH#XJeHu9+ec41Ms4,["rRCoJ
-rm_,Ne^a]qeboIHeH#X4eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-Fg'.Q2g&Tj\!<1[S!8?-,rn7GSg=cQ)g&M-Jg&M-Og'Ic5g&Tj\!8?-,rRq5O
-rn7GSg=cQ&gACsMg&M-9g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUAeHQ$(eH".M!<1LN!7fU"rm_)Ne^XZteGoUEeGoUJeHl6+eH".M!7fU"rRClJ
-rm_)Ne^XZqebfFHeGoU4eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#X@ec5[Lec#OJec5XNec42!rr^gOs4.,Kpso?Crmh&Krmh#JrmgrHs4./LpXKEH
-ec41MrVu*3!<7r,!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&M-EgA_0QgAM$OgA_-Sg&Tk+!!CpT!8@DPptGZHrn@APrn@>Orn@8Ms4[JQpY#`M
-g&Tj\r;c'8!!%o1!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoU@ec,XLeboLJec,UNeH"/!!!CaO!7h&Kpso<Crmh#KrmguJrmgoHs4.,LpXKBH
-eH".Mr;c'3!!%o,!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#WgeH#XBeH#XCeH5d$s5MQ/s,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M,lg&M-Gg&M-Hg&_9.!92]4!/fJ1!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoTgeGoUBeGoUCeH,a$!92N/!/f;,!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#Whec#ODec5ZueH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,mgAM$IgA_0%g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoTheboLDec,WueGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5ec,XGeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,:gA_0Lg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5ec,XGeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5eboLGeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,:gAM$Lg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5eboLGeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W4eb]@HeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,9gA:mMg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4eb]@HeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeU[^O!1<fes/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g496T!13b`gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeU[^O!13b`ec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W4eb]@HeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,9gA:mMg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4eb]@HeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W4ec#RHeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,9gAV*Mg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4ec#RHeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5ec,XGeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,:gA_0Lg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5ec,XGeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#X5ec5[Jec5[Lec5[>ec5[<eH#X!eH#XGec5[>eH5d$s8CIJs/XZMs,,>,s/+?H
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-:gA_0OgA_0QgA_0CgA_0Ag&M-&g&M-LgA_0Cg&_9.!<(UO!3=fR!/fJ1!2eKM
-Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoU5ec,XJec,XLec,X>ec,X<eGoU!eGoUGec,X>eH,a$!<(FJ!3=WM!/f;,!2e<H
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#X4eH#XIeH#XKeH#X=eH#X<eH#X!eH#XFeH#X>eHGp&s4,[!s/XZMs,,>,s/+?H
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-9g&M-Ng&M-Pg&M-Bg&M-Ag&M-&g&M-Kg&M-Cg&qE0!8?0+!3=fR!/fJ1!2eKM
-Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoU4eGoUIeGoUKeGoU=eGoU<eGoU!eGoUFeGoU>eH>m&!7fX!!3=WM!/f;,!2e<H
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#XAec5[Kec5[HeH#XIeH#XKec,UJec5[Iec5[KeH>j%s8W)K!<;fDrVuoJ!WU^L
-rrUaNs8LONs4./LrRLoIq:,NGec,UKec5[LeH>j%s8W#I#QN?)s8UXLs7t4Cs8LOKs/XZMs,,>,
-s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-FgA_0PgA_0Mg&M-Ng&M-PgAV*OgA_0NgA_0Pg&h?/!!*#P!!)cIr;clO!<CjQ
-!!:jS!<1[S!87DQrS%5Nq:YiLgAV*PgA_0Qg&h?/!!)rN#6<K3!!(^Q!;Y@H!<1[P!3=fR!/fJ1
-!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoUAec,XKec,XHeGoUIeGoUKec#RJec,XIec,XKeH5g%!!*#K!!)cDr;clJ!<C[L
-!!:[N!<1LN!7_&LrRLlIq:,KGec#RKec,XLeH5g%!!)rI#6<<)!!(OL!;Y1C!<1LK!3=WM!/f;,
-!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#XBeH>j%ec5Tu!<;uI!<;uI!<<&K"96p%s8CIJs8LOSs4,["e^a]Ms8CIJs7XtC
-s8:CIs81=Hs8LOQs4,["e^a]meH#XJeHu9+ec42"s4,["rRCoJrm_,Ne^a]peH5d$s8CIJs/XZM
-s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-Gg&h?/g&V**!!)rN!!)rN!!*#P!s%'/!<(UO!<1[X!8?-,g=cP\!<(UO!;>+H
-!;tON!;kIM!<1[V!8?-,g=cQ"g&M-Og'Ic5g&Th,!8?-,rRq5Orn7GSg=cQ%g&_9.!<(UO!3=fR
-!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoUBeH5g%eH#Qu!!)rI!!)rI!!*#K!s$m%!<(FJ!<1LS!7fU"e^XZM!<(FJ!;=qC
-!;t@I!;k:H!<1LQ!7fU"e^XZmeGoUJeHl6+eH","!7fU"rRClJrm_)Ne^XZpeH,a$!<(FJ!3=WM
-!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#XBeH#XIec,UHeH#XIeH#XKeHQ!'ec41Mrr;uJ!<;uIs8VT=!<;uI!<<#Jrr;uJ
-"96p%s8LRKs7b%Ds8CLIs8UXLs8UULs8CIJs8LONs4,["psfHGec5Tu!<9+M!<7r,!<8qHs+BmU
-s8VuH"f21\k.LbF~>
-!<E0!joD+?g&M-Gg&M-NgAV*Mg&M-Ng&M-Pg'%K1g&Tj\rW)rO!!)rNrrDQB!!)rN!!)uOrW)rO
-!s%'/!<1^P!;G1I!<(XN!<:dQ!<:aQ!<(UO!<1[S!8?-,pt>cLg&V**!!'(R!!%o1!!&nMs+0aX
-s8VuM"ektYk.1PC~>
-!<E0!joD4BeGoUBeGoUIec#RHeGoUIeGoUKeHGs'eH".MrW)rJ!!)rIrrDQ=!!)rI!!)uJrW)rJ
-!s$m%!<1OK!;G"D!<(II!<:UL!<:RL!<(FJ!<1LN!7fU"psfEGeH#Qu!!'(M!!%o,!!&nHs+BmU
-s8VuH"f21\k.LbF~>
-!<E0!joD4BeH#XBeHl3*ec42"e^a]teH#XIeH#XKeHl3*ec42"e^a^!eHl3*ec41Ms4./JeH#XC
-eHZ'(ec41Ms8LONs4,["rm_,Ne^a]teH#XEeH#XJeHu9+ec42"s4,["rRCoJrm_,Ne^a]qeboIH
-eH#WMeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-Gg'@]4g&Th,g=cQ)g&M-Ng&M-Pg'@]4g&Th,g=cQ+g'@]4g&Tj\!87GOg&M-H
-g'.Q2g&Tj\!<1[S!8?-,rn7GSg=cQ)g&M-Jg&M-Og'Ic5g&Th,!8?-,rRq5Orn7GSg=cQ&gACsM
-g&M,Rg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUBeHc0*eH","e^XZteGoUIeGoUKeHc0*eH","e^X[!eHc0*eH".M!7_)JeGoUC
-eHQ$(eH".M!<1LN!7fU"rm_)Ne^XZteGoUEeGoUJeHl6+eH","!7fU"rRClJrm_)Ne^XZqebfFH
-eGoTMeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XAec5[Kec5XOec41Mr;QcIq#C?Ds8N,Ms8LRKs8UXLrrUaNs8LOKs7OqBs8UXJ
-s8UXLrrUaNec,RNec5["rr;cDrVulIs8W,LrVulIr;ZfIs8ViD"TR$Pe^aWuXOR=NMU__,VUb^!
-o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&M-FgA_0PgA_-Tg&Tj\qu?`Np]1<Irr<)R!<1^P!<:dQ!!:jS!<1[P!;5(G!<:dO
-!<:dQ!!:jSgAV'Sg&M-,rW)`Ir;ciNrrE)Qr;ciNquHcNrrDfI"9@-Ug=lK*XP*XSMV8%1VV;'$
-o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoUAec,XKec,UOeH".Mqu?`Ip]1<Drr<)M!<1OK!<:UL!!:[N!<1LK!;4nB!<:UJ
-!<:UL!!:[Nec#ONeGoU"rW)`Dr;ciIrrE)Lr;ciIquHcIrrDfD"9?sPe^aTuXOR:NMU_\,VUb^!
-o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,ec5[BeH#XCeH5d$s/+<Hs,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M,1gA_0Gg&M-Hg&_9.!2eHM!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,ec,XBeGoUCeH,a$!2e9H!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,ec#ODec5Z9eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1gAM$IgA_/>g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eboLDec,W9eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W5ec,XGeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,:gA_0Lg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT5ec,XGeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W5eboLGeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,:gAM$Lg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT5eboLGeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W4eb]@HeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,9gA:mMg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT4eb]@HeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeVO8+s,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g5#`dg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeVF3_eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W4eb]@HeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,9gA:mMg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT4eb]@HeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W4ec#RHeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,9gAV*Mg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT4ec#RHeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W5ec,XGeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,:gA_0Lg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT5ec,XGeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#X5ec5[Jec5[Lec5[>ec5[:eH#X?ec5[Jec5[KeH#XBeH#XKeH#Wrec5[>eH5d$
-s8CIJs4,X"s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-:gA_0OgA_0QgA_0CgA_0?g&M-DgA_0OgA_0Pg&M-Gg&M-Pg&M-"gA_0Cg&_9.
-!<(UO!7fd'!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoU5ec,XJec,XLec,X>ec,X:eGoU?ec,XJec,XKeGoUBeGoUKeGoTrec,X>eH,a$
-!<(FJ!7fU"!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#X4eH#XIeH#XKeH#X=eH#X;eH#X=eH#XIeH#XJeH#XCeH#XKeH#WqeH#X>eHGp&
-s4,[!s4,X"s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-9g&M-Ng&M-Pg&M-Bg&M-@g&M-Bg&M-Ng&M-Og&M-Hg&M-Pg&M-!g&M-Cg&qE0
-!8?0+!7fd'!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoU4eGoUIeGoUKeGoU=eGoU;eGoU=eGoUIeGoUJeGoUCeGoUKeGoTqeGoU>eH>m&
-!7fX!!7fU"!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#XAec5[Kec5[HeH#XIeH#XKec,UJec5[Iec5[KeH>j%s8W)K!<;`B!<<#Js8W)K
-s8VuH!<;uI!<<#J!<;fDrVluMs8UXKrrUaNs8LONs4./LrRLoIq:,NGec,UKec5[LeH>j%s8W#I
-#QN?)s8UXLs7t4Cs8LOKs4,X"s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-FgA_0PgA_0Mg&M-Ng&M-PgAV*OgA_0NgA_0Pg&h?/!!*#P!!)]G!!)uOrrE&P
-rrDrM!!)rN!!)uO!!)cIr;ZrR!!(aP!!:jS!<1[S!87DQrS%5Nq:YiLgAV*PgA_0Qg&h?/!!)rN
-#6<K3!!(^Q!;Y@H!<1[P!7fd'!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoUAec,XKec,XHeGoUIeGoUKec#RJec,XIec,XKeH5g%!!*#K!!)]B!!)uJrrE&K
-rrDrH!!)rI!!)uJ!!)cDr;ZrM!!(RK!!:[N!<1LN!7_&LrRLlIq:,KGec#RKec,XLeH5g%!!)rI
-#6<<)!!(OL!;Y1C!<1LK!7fU"!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#XBeH>j%ec5Tu!<;uI!<;uI!<<&K"96p%s8CIJs8LOSs4,["e^a]Ms8CIJs7XtC
-s8CIMs4,["rRCoJr7(fIr7(fIr7(fIpXK9Drm_)Mec5Ns!<<&K#636(s4,["p!j'BrRD5Se^a]M
-ec41Ms8CIJs8LONs4,["psfHGec5Tu!<:U"!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&M-Gg&h?/g&V**!!)rN!!)rN!!*#P!s%'/!<(UO!<1[X!8?-,g=cP\!<(UO!;>+H
-!<(UR!8?-,rRq5Or7V,Nr7V,Nr7V,NpY#TIrn7DRg&V$(!!*#P"p!B2!8?-,p"BBGrRqPXg=cP\
-g&Tj\!<(UO!<1[S!8?-,pt>cLg&V**!!(R'!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoUBeH5g%eH#Qu!!)rI!!)rI!!*#K!s$m%!<(FJ!<1LS!7fU"e^XZM!<(FJ!;=qC
-!<(FM!7fU"rRClJr7(cIr7(cIr7(cIpXK6Drm_&MeH#Ks!!*#K"p!3(!7fU"p!j$BrRD2Se^XZM
-eH".M!<(FJ!<1LN!7fU"psfEGeH#Qu!!(R"!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#XBeH#XIec,UHeH#XIeH#XKeHQ!'ec41Mrr;uJ!<;uIs8VT=!<<#J!<;uIrr;oH
-!<;uI!<;uI!<;fD!<<&K!rpgNrRLoIrm_,Ne^a^!ec5[DeH#XJec,UJeH>j%ec5Tu!<<&K"96p%
-s7k+Gs4./JeH#X"eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-Gg&M-NgAV*Mg&M-Ng&M-Pg'%K1g&Tj\rW)rO!!)rNrrDQB!!)uO!!)rNrW)lM
-!!)rN!!)rN!!)cI!!*#P!W^pSrS%5Nrn7GSg=cQ+gA_0Ig&M-OgAV*Og&h?/g&V**!!*#P!s%'/
-!;P7L!87GOg&M-'g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUBeGoUIec#RHeGoUIeGoUKeHGs'eH".MrW)rJ!!)rIrrDQ=!!)uJ!!)rIrW)lH
-!!)rI!!)rI!!)cD!!*#K!W^aNrRLlIrm_)Ne^X[!ec,XDeGoUJec#RJeH5g%eH#Qu!!*#K!s$m%
-!;P(G!7_)JeGoU"eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XBeHl3*ec42"e^a]teH#XIeH#XKeHl3*ec42"e^a^!eHl3*ec41Ms4./JeH#XC
-eH#XJeHl3*ec42"e^a]teH#XIeH#XIeH#XDeHZ'(ec5["s8LONs4,["rm_,Ne^a]teH#XEeH#XJ
-eHu9+ec41Ms4,["rRCoJrm_,Ne^a]qeboIHeH#X"eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-Gg'@]4g&Th,g=cQ)g&M-Ng&M-Pg'@]4g&Th,g=cQ+g'@]4g&Tj\!87GOg&M-H
-g&M-Og'@]4g&Th,g=cQ)g&M-Ng&M-Ng&M-Ig'.Q2g&M-,!<1[S!8?-,rn7GSg=cQ)g&M-Jg&M-O
-g'Ic5g&Tj\!8?-,rRq5Orn7GSg=cQ&gACsMg&M-'g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUBeHc0*eH","e^XZteGoUIeGoUKeHc0*eH","e^X[!eHc0*eH".M!7_)JeGoUC
-eGoUJeHc0*eH","e^XZteGoUIeGoUIeGoUDeHQ$(eGoU"!<1LN!7fU"rm_)Ne^XZteGoUEeGoUJ
-eHl6+eH".M!7fU"rRClJrm_)Ne^XZqebfFHeGoU"eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XAec5[Kec5XOec41Mr;QcIq#C?Ds8N,Ms8LRKs8UXLrrUaNs8LOKs7OnBs8CLJ
-s8LRKrr^gOe^aTt!7h#Is4%,Lp!s*B!7h#Is4./L!nI>$rr3)Ns8UXKs7k.Cs8LRKs8LRJs8LRH
-s8UXLs7b%Hs4./"ec#O!eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-FgA_0PgA_-Tg&Tj\qu?`Np]1<Irr<)R!<1^P!<:dQ!!:jS!<1[P!;5%G!<(XO
-!<1^P!!CpTg=lH)!8@>Ns4RGQp"KEG!8@>Ns4[JQ!nmY.rW!&S!!(aP!;P:H!<1^P!<1^O!<1^M
-!<:dQ!;G1M!87G,gAM$&g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUAec,XKec,UOeH".Mqu?`Ip]1<Drr<)M!<1OK!<:UL!!:[N!<1LK!;4kB!<(IJ
-!<1OK!!CaOe^aQt!7guIs4%)Lp!s'B!7guIs4.,L!n@;$rW!&N!!(RK!;P+C!<1OK!<1OJ!<1OH
-!<:UL!;G"H!7_)"eboL!eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#WYeH#X2eH#X?eH#X$eH#XBeH#XCeH5d$s3T9rs,,>,s/+?HKCZ_Us81=MV#TT>
-]`<Q~>
-!<E0!joD+?g&M,^g&M-7g&M-Dg&M-)g&M-Gg&M-Hg&_9.!79F"!/fJ1!2eKMJb$\Xs81LRU&X9;
-\c@6~>
-!<E0!joD4BeGoTYeGoU2eGoU?eGoU$eGoUBeGoUCeH,a$!796r!/f;,!2e<HKCZ_Us81=MV#TT>
-]`<Q~>
-!<E0!joD4BeH#WXeH#X4eH#X>eH#X%ec#ODec5ZceH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,]g&M-9g&M-Cg&M-*gAM$IgA_/hg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoTXeGoU4eGoU>eGoU%eboLDec,WceGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W5ec,XGeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,:gA_0Lg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT5ec,XGeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W5eboLGeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,:gAM$Lg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT5eboLGeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W4eb]@HeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,9gA:mMg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT4eb]@HeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeVO8+s,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g5#`dg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeVF3_eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W4eb]@HeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,9gA:mMg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT4eb]@HeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W4ec#RHeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,9gAV*Mg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT4ec#RHeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W5ec,XGeH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,:gA_0Lg&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT5ec,XGeGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XCec5[;ec5[Kec5[4ec5[BeH5d$s8CIJs5DK.s,,>,s,,>,s/+?HKCZ_Us81=M
-V#TT>]`<Q~>
-!<E0!joD+?g&M-HgA_0@gA_0PgA_09gA_0Gg&_9.!<(UO!9)W3!/fJ1!/fJ1!2eKMJb$\Xs81LR
-U&X9;\c@6~>
-!<E0!joD4BeGoUCec,X;ec,XKec,X4ec,XBeH,a$!<(FJ!9)H.!/f;,!/f;,!2e<HKCZ_Us81=M
-V#TT>]`<Q~>
-!<E0!joD4BeH#XBeH#X:eH#XJeH#X3eH#XBeHGp&s4,[!s5DK.s,,>,s,,>,s/+?HKCZ_Us81=M
-V#TT>]`<Q~>
-!<E0!joD+?g&M-Gg&M-?g&M-Og&M-8g&M-Gg&qE0!8?0+!9)W3!/fJ1!/fJ1!2eKMJb$\Xs81LR
-U&X9;\c@6~>
-!<E0!joD4BeGoUBeGoU:eGoUJeGoU3eGoUBeH>m&!7fX!!9)H.!/f;,!/f;,!2e<HKCZ_Us81=M
-V#TT>]`<Q~>
-!<E0!joD4BeH#XBec,UJec5[KeH>j%s8W&Jrr;rI!<<#Js8VlEs8W#Is8W)K"96pOs7t4Cs8LOK
-s5DK.s,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-GgAV*OgA_0Pg&h?/!!)uOrW)oN!!)uOrrDiJrrDuNrrE&P!s%$T!;Y@H!<1[P
-!9)W3!/fJ1!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoUBec#RJec,XKeH5g%!!)uJrW)oI!!)uJrrDiErrDuIrrE&K!s$jO!;Y1C!<1LK
-!9)H.!/f;,!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#XBeH>j%ec5Tu!<<&K$3/Q+s4,["e^a]ueH#XKeH>j%ec5Bo!<<&K#liH*s4,["
-ec5Bo!rpgNrRCoJiRIr.MU__,MU__,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&M-Gg&h?/g&V**!!*#P#lr]5!8?-,g=cQ*g&M-Pg&h?/g&Um$!!*#P#QWT4!8?-,
-g&Um$!W^pSrRq5OiS"83MV8%1MV8%1VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoUBeH5g%eH#Qu!!*#K#lrN+!7fU"e^XZueGoUKeH5g%eH#?o!!*#K#QWE*!7fU"
-eH#?o!W^aNrRClJiRIo.MU_\,MU_\,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#XBeHQ!'ec41Mrr;uJ$3/Q+s4,["e^a]ueH#XKec,UDec,UJeH#XIec5[CeH5d$
-s8CIJs5DK.s,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-Gg'%K1g&Tj\rW)rO#lr]5!8?-,g=cQ*g&M-PgAV*IgAV*Og&M-NgA_0Hg&_9.
-!<(UO!9)W3!/fJ1!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoUBeHGs'eH".MrW)rJ#lrN+!7fU"e^XZueGoUKec#RDec#RJeGoUIec,XCeH,a$
-!<(FJ!9)H.!/f;,!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#XBeHl3*ec42"e^a^!eHu9+ec41Ms4,["rRCoJrm_,Ne^a]reH>j%ec5X!#liH*
-s4,["ec5Epr;ZcH!<;$.!<7r,!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&M-Gg'@]4g&Th,g=cQ+g'Ic5g&Tj\!8?-,rRq5Orn7GSg=cQ'g&h?/g&V-+#QWT4
-!8?-,g&Up%quH`M!!)!3!!%o1!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoUBeHc0*eH","e^X[!eHl6+eH".M!7fU"rRClJrm_)Ne^XZreH5g%eH#U!#QWE*
-!7fU"eH#BpquH`H!!)!.!!%o,!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#XCec,RSec5["s8UXLec,RTec5["ec5["s4.&Is4./LpsoEE!S.5Lec5[Lec5XN
-ec5[EeHGp&s4,Zus5MQ/s,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-HgAV'Xg&M-,!!(^QgAV'Yg&M-,g&M-,!8@>Ns4[JQptG`J!SRPQgA_0QgA_-S
-g&M-Jg&qE0!8?0*!92]4!/fJ1!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoUCec#OSeGoU"!!(OLec#OTeGoU"eGoU"!7guIs4.,LpsoBE!S%2Lec,XLec,UN
-eGoUEeH>m&!7fWu!92N/!/f;,!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#WTeH5d$s4l-)s,,>,s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&M,Yg&_9.!8Q9.!/fJ1!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoTTeH,a$!8Q*)!/f;,!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XGec,W5eH#W,eH#W,eH#WHec19ks81=MV#TT>]`<Q~>
-!<E0!joD+?g&M-LgA_/:g&M,1g&M,1g&M,MgAc`ns81LRU&X9;\c@6~>
-!<E0!joD4BeGoUGec,W5eGoT,eGoT,eGoTHec19ks81=MV#TT>]`<Q~>
-!<E0!joD4BeH#XJeboK2eH#W,eH#W,eH#WHec17%^%D=+KE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&M-OgAM#7g&M,1g&M,1g&M,MgAc^(_Y!j0JcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUJeboK2eGoT,eGoT,eGoTHec17%^%D=+KE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH5d$eb]?0eH#W,eH#W,eH#WHec17'^&S--ec17'^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&_9.gA:l5g&M,1g&M,1g&M,MgAc^*_Z0Z2gAc^*_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeH,a$eb]?0eGoT,eGoT,eGoTHec17'^&S--ec17'^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeU[^O!1<fes/+?HKE&Xbs7t4FK*&ads81=MV#TT>]`<Q~>
-!<E0!joD+?g496T!13b`gAca(_Z0Z3gAc^*_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeU[^O!13b`ec1:%^&S-.ec17'^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH5d$ebfE0eH#W,eH#W,eH#WHec1:%^&S-/ec1:%^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&_9.gACr5g&M,1g&M,1g&M,MgAca(_Z0Z4gAca(_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeH,a$ebfE0eGoT,eGoT,eGoTHec1:%^&S-/ec1:%^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XJeboK2eH#W,eH#W,eH#WHec1:$^&S-0ec1:%^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-OgAM#7g&M,1g&M,1g&M,MgAca'_Z0Z5gAca(_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUJeboK2eGoT,eGoT,eGoTHec1:$^&S-0ec1:%^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#XGec,W5eH#W,eH#W,eH#WHec1:$^&S-1ec1:$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M-LgA_/:g&M,1g&M,1g&M,MgAca'_Z0Z6gAca'_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoUGec,W5eGoT,eGoT,eGoTHec1:$^&S-1ec1:$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:#^&S-2ec1:$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca&_Z0Z7gAca'_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:#^&S-2ec1:$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:#^&S-3ec1:#^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca&_Z0Z8gAca&_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:#^&S-3ec1:#^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:"^&S-4ec1:#^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca%_Z0Z9gAca&_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:"^&S-4ec1:#^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:"^&S*6eUrMP^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca%_Z0W;g4=hQ_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:"^&S*6eUrMP^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:!]`A*3KD`F_s81=MV#TT>]`<Q~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca$_>sW8Jc*Cbs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:!]`A*3KD`F_s81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:!]`S4dKDW@^s81=MV#TT>]`<Q~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca$_?0agJc!=as81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:!]`S4dKDW@^s81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19u^&N`^^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca#_Z,2a_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19u^&N`^^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19u]`<]]^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAca#_>o/`_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19u]`<]]^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19ks81=MV#TT>]`<Q~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,MgAc`ns81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19ks81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHeGt6js81=MV#TT>]`<Q~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,Mg&Q]ms81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHeGt6js81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#W/eHMcKk2s>WJ,~>
-!<E0!joD+?g&M,1g&M,1g&M,1g&M,4g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoT/eHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD4SeU`@(K7SZXKBC\fV#TT>]`<Q~>
-!<E0!joD+Pg4=g+JUrBTJ`bYiU&X9;\c@6~>
-!<E0!joD4SeU`@(K7SZXKBC\fV#TT>]`<Q~>
-!<E0!joD4SeU`@(K7SZYK)kr6eHMcKk2s>WJ,~>
-!<E0!joD+Pg4=g+JUrBUJH5`4g'+2Mk2s5TJ,~>
-!<E0!joD4SeU`@(K7SZYK)kr6eHMcKk2s>WJ,~>
-!<E0!joD4Sec19n]`J/H]`3PrJ\@A_s8V`)s8V63"f21\k.LbF~>
-!<E0!joD+PgAc`q_?'\R]`3Q"J\m_is8V`.s8V68"ektYk.1PC~>
-!<E0!joD4Sec19n]`J/H]`3PrJ\@A_s8V`)s8V63"f21\k.LbF~>
-!<E0!joD4Sec19p^&S*5K>"tu!/#j9J\@A_rVuT)s8V63"f21\k.LbF~>
-!<E0!joD+PgAc`s_Z0W:J\o,#!.f^<J\m_irVuT.s8V68"ektYk.1PC~>
-!<E0!joD4Sec19p^&S*5K>"tu!/#j9J\@A_rVuT)s8V63"f21\k.LbF~>
-!<Bh3SGUk:KD3(Ys8R]Q^&S,Jec18Q]n*k_^&.j)^&S,peHMJVS=BQZJ,~>
-!<B_0RJY_<JbR%\s8RWO_Z0YOgAc_T_L]Ri_YaB._Z0Yug'*nUR@+$TJ,~>
-!<Bh3SGUk:KD3(Ys8R]Q^&S,Jec18Q]n*k_^&.j)^&S,peHMJVS=BQZJ,~>
-!!)uB!1`r:s+C-\rVm&OK7gl;s1m1bK7U^e]p?A3s8UXJs8'G/s5qi8SB\a\S,e'~>
-!!)u?!1E`<s+1!_rVm&TJUt]<s1m@gJUt[h_Nr(=s8UgOs8'V4s5r#=REE+PR/ha~>
-!!)uB!1`r:s+C-\rVm&OK7gl;s1m1bK7U^e]p?A3s8UXJs8'G/s5qi8SB\a\S,e'~>
-!<CCD]`=T"ec1:!^&A!1ec17'^&S,Jec18Q]n*k_^&S-2ec#OG^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca$_YsN6gAc^*_Z0YOgAc_T_L]Ri_Z0Z7gAV'L_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:!^&A!1ec17'^&S,Jec18Q]n*k_^&S-2ec#OG^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec1:#^&A!/ec17'^&S,Jec18Q]n*k_^&S-0ec#OI^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca&_YsN4gAc^*_Z0YOgAc_T_L]Ri_Z0Z5gAV'N_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:#^&A!/ec17'^&S,Jec18Q]n*k_^&S-0ec#OI^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec1:%^&A!-ec17'^&S,Jec18Q]n*k_^&S-.ec#LL^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca(_YsN2gAc^*_Z0YOgAc_T_L]Ri_Z0Z3gAV$Q_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:%^&A!-ec17'^&S,Jec18Q]n*k_^&S-.ec#LL^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ebb!oec17'^&S,Jec18Q]n*k_^&S--ebt.#s5qi8SB\a\S,e'~>
-!<C:A\cA/qgA?HrgAc^*_Z0YOgAc_T_L]Ri_Z0Z2gAQU&s5r#=REE+PR/ha~>
-!<CCD]`=T"ebb!oec17'^&S,Jec18Q]n*k_^&S--ebt.#s5qi8SB\a\S,e'~>
-!<CCD]`=T"ec1:%^&<T[ec17'^&S,Jec18Q]n*k_^&S-.ebt+%^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca(_Yo&^gAc^*_Z0YOgAc_T_L]Ri_Z0Z3gAQR(_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:%^&<T[ec17'^&S,Jec18Q]n*k_^&S-.ebt+%^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec1:#^&<T]ec17'^&S,Jec18Q]n*k_^&S-0ebt."^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca&_Yo&`gAc^*_Z0YOgAc_T_L]Ri_Z0Z5gAQU%_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:#^&<T]ec17'^&S,Jec18Q]n*k_^&S-0ebt."^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec1:!^&<T_ec17'^&S,Jec18Q]n*k_^&S-2ebt-u^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca$_Yo&bgAc^*_Z0YOgAc_T_L]Ri_Z0Z7gAQU#_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:!^&<T_ec17'^&S,Jec18Q]n*k_^&S-2ebt-u^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec19t^&<QeeUrLfs8Tmbs+>m9J\@A_s8W,LrIas[s8V63"e<iN]po(Q~>
-!<C:A\cA/qgAca"_Yo#hg4=gls8Tmgs+,a<J\m_is8W,QrIOg^s8V68"e!NE\sWPK~>
-!<CCD]`=T"ec19t^&<QeeUrLfs8Tmbs+>m9J\@A_s8W,LrIas[s8V63"e<iN]po(Q~>
-!<CCD]`=T"ec19r^&3Ka^&S,Jec18Q]n*k_^&S-2KD<.[s5qi8SB\a\S,e'~>
-!<C:A\cA/qgAc`u_Yerd_Z0YOgAc_T_L]Ri_Z0Z7Jb[+^s5r#=REE+PR/ha~>
-!<CCD]`=T"ec19r^&3Ka^&S,Jec18Q]n*k_^&S-2KD<.[s5qi8SB\a\S,e'~>
-!<CCD]`=T"ec19p^&EWc^&S,HK7U^e]p?A3s8R`F^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAc`s_Z#)f_Z0YMJUt[h_Nr(=s8RZD_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec19p^&EWc^&S,HK7U^e]p?A3s8R`F^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec19n]`Ni"s1O&9]n*k_]`J.coY(;)k1'X*c+Uf\!.Y~>
-!<C:A\cA/qgAc`q_?,;*s1Nu7_L]Ri_?'[foYUY.k1U!,b.>0P!.Y~>
-!<CCD]`=T"ec19n]`Ni"s1O&9]n*k_]`J.coY(;)k1'X*c+Uf\!.Y~>
-!<CCD]`=T"ec18Qs+13$s02OceHMJf]tKp9J,~>
-!<C:A\cA/qgAc_Ts+13$s02Ocg'*ne]"4:0J,~>
-!<CCD]`=T"ec18Qs+13$s02OceHMJf]tKp9J,~>
-!<CCD]`=T"eGt5Qs+13$s0)IbeHMJf]tKp9J,~>
-!<C:A\cA/qg&Q\Ts+13$s0)Ibg'*ne]"4:0J,~>
-!<CCD]`=T"eGt5Qs+13$s0)IbeHMJf]tKp9J,~>
-!<CCD]`=RReUc8%eW&)_SB\a\S,e'~>
-!<C:A\cA.Lg4@t/g5XeiREE+PR/ha~>
-!<CCD]`=RReUc8%eW&)_SB\a\S,e'~>
-!<CCC^%%VDUk,=mUogEm^%.Znc2PBWS,e'~>
-!<C:@]()2>Tn/ngTrk!g](26hb5SsQR/ha~>
-!<CCC^%%VDUk,=mUogEm^%.Znc2PBWS,e'~>
-!]^8*rOqgI!53s`JcC<$XoIq9rk/B'!<7Q~>
-!^m%2rOVUC!4ma]JcC<$XoIq6rji0!!<7Q~>
-!cn@drOqgI!53s`JcC<$XoIq9rk/B'!<7Q~>
-!\j]"n%A^kJ`_OGJ`a)s!6suG!h98jJ,~>
-!^m%2n%&LeJ`_OGJ`a)s!6XcA!gs&gJ,~>
-!cn@dn%A^kJ`_OGJ`a)s!6suG!h98jJ,~>
-s#C,\S=K,_!1\W&J`_OGXl]W.n\+sm!W`9#J,~>
-s$QngR@3TV!1AE#J`_OGXl]W+n[eag!W`9#J,~>
-s)S5AS=K,_!1\W&J`_OGXl]W.n\+sm!W`9#J,~>
-">Mnk!!)MYJ\?WJJ\A.unXTUZrr7K~>
-r^?bdn<nj=J\$EDXLdqirrE&uJ,~>
-"DW"!!!)MYJ\?WJJ\A.unXTUZrr7K~>
-"?A1s0fadbJH16$MZE\TJ,~>
-r'Z)9JH16$MZE\TJ,~>
-rc8*TF+F=B!.b-.!;ukI~>
-%%EndData
-showpage
-%%Trailer
-end
-%%EOF
diff --git a/lib/et/doc/src/note.gif b/lib/et/doc/src/note.gif
deleted file mode 100644
index 6fffe30419..0000000000
--- a/lib/et/doc/src/note.gif
+++ /dev/null
Binary files differ
diff --git a/lib/et/doc/src/notes.gif b/lib/et/doc/src/notes.gif
deleted file mode 100644
index e000cca26a..0000000000
--- a/lib/et/doc/src/notes.gif
+++ /dev/null
Binary files differ
diff --git a/lib/et/doc/src/notes.xml b/lib/et/doc/src/notes.xml
index 5abab9766c..8611955d3d 100644
--- a/lib/et/doc/src/notes.xml
+++ b/lib/et/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2002</year><year>2009</year>
+ <year>2002</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>Event Tracer (ET) Release Notes</title>
@@ -28,12 +28,50 @@
<rev>%VSN%</rev>
<file>notes.xml</file>
</header>
- <p>This document describes the changes made to the Event Tracer (ET) system
- from version to version. The intention of this document is to
- list all incompatibilities as well as all enhancements and
- bugfixes for every release of Event Tracer (ET). Each release of Event Tracer (ET)
- thus constitutes one section in this document. The title of each
- section is the version number of Event Tracer (ET).</p>
+ <p>This document describes the changes made to the <c>Event Tracer
+ (ET)</c> system from version to version. The intention of this
+ document is to list all incompatibilities as well as all
+ enhancements and bugfixes for every release of <c>Event Tracer
+ (ET)</c>. Each release of <c>Event Tracer (ET) </c> thus constitutes
+ one section in this document. The title of each section is the
+ version number of <c>Event Tracer (ET)</c>.</p>
+
+<section><title>ET 1.4</title>
+
+ <section><title>Improvements and New Features</title>
+ <list>
+ <item>
+ <p>Thanks to Olle Mattsson the GUI parts are rewritten to
+ use <c>wxWidgets</c>. For the time being it is still
+ possible to use the old <c>GS</c> based version of the tool,
+ but it is deprecated. The <c>wxWidgets</c> based version is
+ started by default.</p>
+
+ <p>A print function has been added, in order to enable
+ printing of sequence charts.</p>
+
+ <p>A new tutorial has been added to the documentation. It is
+ based on <c>Jayson Vantuyl's</c> article
+ <c>http://souja.net/2009/04/making-sense-of-erlangs-event-tracer.html</c>.</p>
+
+ <p>The functions <c>et:trace_me/4</c> and
+ <c>et:trace_me/5</c> has been introduced in order to replace
+ the deprecated functions <c>et:report_event/4</c> and
+ <c>et:report_event/5</c>. Hopefully the new names makes it a
+ little more obvious what the intended usage of the functions
+ are.</p>
+
+ <p>The <c>max_events</c> configuration parameter to
+ <c>et_viewer</c> is not used any more. Now the event cache
+ in the <c>Viewer</c> only contains those events that
+ actually are displayed in the GUI.</p>
+
+ <p>Own Id: OTP-8058</p>
+ </item>
+ </list>
+ </section>
+
+</section>
<section><title>ET 1.3.3</title>
@@ -130,8 +168,8 @@
<section>
<title>Improvements and new features</title>
- <p>This is the first release of the Event Tracer (ET) as
- a stand-alone application.</p>
+ <p>This is the first release of the <c>Event Tracer (ET)</c> as
+ a stand-alone application separated from the Megaco application.</p>
</section>
</section>
</chapter>
diff --git a/lib/et/doc/src/part.xml b/lib/et/doc/src/part.xml
index d0375ffaf9..627aee866d 100644
--- a/lib/et/doc/src/part.xml
+++ b/lib/et/doc/src/part.xml
@@ -4,7 +4,7 @@
<part xmlns:xi="http://www.w3.org/2001/XInclude">
<header>
<copyright>
- <year>2002</year><year>2009</year>
+ <year>2002</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>Event Tracer (ET) Users Guide</title>
@@ -32,7 +32,8 @@
and provides tools for collection and graphical viewing of trace data.</p>
</description>
<xi:include href="et_intro.xml"/>
- <xi:include href="et_architecture.xml"/>
+ <xi:include href="et_tutorial.xml"/>
+ <xi:include href="et_desc.xml"/>
<xi:include href="et_examples.xml"/>
</part>
diff --git a/lib/et/doc/src/ref_man.gif b/lib/et/doc/src/ref_man.gif
deleted file mode 100644
index b13c4efd53..0000000000
--- a/lib/et/doc/src/ref_man.gif
+++ /dev/null
Binary files differ
diff --git a/lib/et/doc/src/sim_trans.gif b/lib/et/doc/src/sim_trans.gif
deleted file mode 100644
index e3ab0bd3f1..0000000000
--- a/lib/et/doc/src/sim_trans.gif
+++ /dev/null
Binary files differ
diff --git a/lib/et/doc/src/sim_trans.png b/lib/et/doc/src/sim_trans.png
new file mode 100644
index 0000000000..0a3a8fdcb5
--- /dev/null
+++ b/lib/et/doc/src/sim_trans.png
Binary files differ
diff --git a/lib/et/doc/src/sim_trans.ps b/lib/et/doc/src/sim_trans.ps
deleted file mode 100644
index efc48162b7..0000000000
--- a/lib/et/doc/src/sim_trans.ps
+++ /dev/null
@@ -1,6595 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: (ImageMagick)
-%%Title: (sim_trans.ps)
-%%CreationDate: (Mon Oct 14 16:45:00 2002)
-%%BoundingBox: 0 0 512 426
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 1
-%%Orientation: Portrait
-%%PageOrder: Ascend
-%%Pages: 1
-%%EndComments
-
-%%BeginDefaults
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/DirectClassPacket
-{
- %
- % Get a DirectClass packet.
- %
- % Parameters:
- % red.
- % green.
- % blue.
- % length: number of pixels minus one of this color (optional).
- %
- currentfile color_packet readhexstring pop pop
- compression 0 eq
- {
- /number_pixels 3 def
- }
- {
- currentfile byte readhexstring pop 0 get
- /number_pixels exch 1 add 3 mul def
- } ifelse
- 0 3 number_pixels 1 sub
- {
- pixels exch color_packet putinterval
- } for
- pixels 0 number_pixels getinterval
-} bind def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- systemdict /colorimage known
- {
- columns rows 8
- [
- columns 0 0
- rows neg 0 rows
- ]
- { DirectClassPacket } false 3 colorimage
- }
- {
- %
- % No colorimage operator; convert to grayscale.
- %
- columns rows 8
- [
- columns 0 0
- rows neg 0 rows
- ]
- { GrayDirectClassPacket } image
- } ifelse
-} bind def
-
-/GrayDirectClassPacket
-{
- %
- % Get a DirectClass packet; convert to grayscale.
- %
- % Parameters:
- % red
- % green
- % blue
- % length: number of pixels minus one of this color (optional).
- %
- currentfile color_packet readhexstring pop pop
- color_packet 0 get 0.299 mul
- color_packet 1 get 0.587 mul add
- color_packet 2 get 0.114 mul add
- cvi
- /gray_packet exch def
- compression 0 eq
- {
- /number_pixels 1 def
- }
- {
- currentfile byte readhexstring pop 0 get
- /number_pixels exch 1 add def
- } ifelse
- 0 1 number_pixels 1 sub
- {
- pixels exch gray_packet put
- } for
- pixels 0 number_pixels getinterval
-} bind def
-
-/GrayPseudoClassPacket
-{
- %
- % Get a PseudoClass packet; convert to grayscale.
- %
- % Parameters:
- % index: index into the colormap.
- % length: number of pixels minus one of this color (optional).
- %
- currentfile byte readhexstring pop 0 get
- /offset exch 3 mul def
- /color_packet colormap offset 3 getinterval def
- color_packet 0 get 0.299 mul
- color_packet 1 get 0.587 mul add
- color_packet 2 get 0.114 mul add
- cvi
- /gray_packet exch def
- compression 0 eq
- {
- /number_pixels 1 def
- }
- {
- currentfile byte readhexstring pop 0 get
- /number_pixels exch 1 add def
- } ifelse
- 0 1 number_pixels 1 sub
- {
- pixels exch gray_packet put
- } for
- pixels 0 number_pixels getinterval
-} bind def
-
-/PseudoClassPacket
-{
- %
- % Get a PseudoClass packet.
- %
- % Parameters:
- % index: index into the colormap.
- % length: number of pixels minus one of this color (optional).
- %
- currentfile byte readhexstring pop 0 get
- /offset exch 3 mul def
- /color_packet colormap offset 3 getinterval def
- compression 0 eq
- {
- /number_pixels 3 def
- }
- {
- currentfile byte readhexstring pop 0 get
- /number_pixels exch 1 add 3 mul def
- } ifelse
- 0 3 number_pixels 1 sub
- {
- pixels exch color_packet putinterval
- } for
- pixels 0 number_pixels getinterval
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % class: 0-PseudoClass or 1-Grayscale.
- %
- currentfile buffer readline pop
- token pop /class exch def pop
- class 0 gt
- {
- currentfile buffer readline pop
- token pop /depth exch def pop
- /grays columns 8 add depth sub depth mul 8 idiv string def
- columns rows depth
- [
- columns 0 0
- rows neg 0 rows
- ]
- { currentfile grays readhexstring pop } image
- }
- {
- %
- % Parameters:
- % colors: number of colors in the colormap.
- % colormap: red, green, blue color packets.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- /colors colors 3 mul def
- /colormap colors string def
- currentfile colormap readhexstring pop pop
- systemdict /colorimage known
- {
- columns rows 8
- [
- columns 0 0
- rows neg 0 rows
- ]
- { PseudoClassPacket } false 3 colorimage
- }
- {
- %
- % No colorimage operator; convert to grayscale.
- %
- columns rows 8
- [
- columns 0 0
- rows neg 0 rows
- ]
- { GrayPseudoClassPacket } image
- } ifelse
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % compression: 0-none or 1-RunlengthEncoded.
- % hex color packets.
- %
- gsave
- /buffer 512 string def
- /byte 1 string def
- /color_packet 3 string def
- /pixels 768 string def
-
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Times-Roman findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
- showpage
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 512 426
-DisplayImage
-0 0
-512 426
-12.000000
-512 426
-1
-0
-0
-256
-020202
-0a0a0a
-6272a4
-fea602
-fe0202
-bec2be
-fefefe
-c6c6d6
-424242
-7a86ae
-0202fe
-bebece
-717ace
-bebabe
-e6e6e6
-42568a
-6a72c6
-969296
-6272b6
-5a6e9e
-4a464a
-969ade
-9696d6
-5a6a96
-fefafe
-b6baee
-2a3662
-323e72
-f6f6f6
-324272
-9696ce
-5a6696
-7286c6
-6272ae
-969ab6
-e6e2e6
-f6f2f6
-3a4a8a
-969ac6
-728ac6
-526297
-626ea6
-7a8bce
-42569e
-9696be
-d6d6d6
-eeeeee
-555e9e
-828282
-dedade
-727eb6
-5a6aa6
-828eb5
-4a528a
-3a4a82
-5a6eae
-8a92ce
-52669e
-eeeaee
-4a5a9e
-6a7ac6
-9ea6d6
-627abe
-a6aac6
-a6aade
-7982ae
-4a5296
-424e96
-7278a6
-a7acce
-828ec6
-a6a6de
-727ac6
-5266ae
-bec2d6
-dedef6
-5a6eb6
-7282ce
-6a72bd
-8a96b6
-8a9ad1
-5a6aae
-969ad6
-808ad6
-cecece
-4256a6
-9e9ed6
-969bbe
-8a92d6
-d6dad6
-8292c6
-5a5e96
-dedede
-6266a6
-7a82ce
-8a96d6
-525d8a
-757eae
-5262a6
-e6e6f6
-3a4e8a
-969ed6
-626aae
-aeafd6
-9696b6
-6a6e9e
-5a66a6
-32427a
-7a86bd
-f6f6fe
-bebed6
-969ace
-dedfee
-9ea6de
-424a7f
-6276b6
-b6bade
-969ece
-7282c6
-424642
-a3a6c6
-8a8eb6
-8296ce
-6a72ae
-7986ce
-626a9e
-626eb6
-ced2ee
-8286b6
-cfd1e6
-707aae
-828ed6
-626ebe
-4a5ea6
-424e82
-3a427a
-4a5996
-3a4672
-4a569e
-8a96c6
-969ede
-b6bede
-96a2d6
-4a4a4a
-d6daee
-8292ce
-5a6296
-727ab8
-5a669e
-5a72be
-8a92b6
-626aa6
-9ea2de
-6a76a1
-6a6ea6
-7a82b7
-525a9e
-eeeef6
-4a5682
-42528a
-b6beee
-9e9ec6
-d4d6e6
-8a96be
-5a66b6
-a6aed6
-6a7ece
-6a7fc6
-8286ae
-7580a6
-525a96
-5a6ab6
-6a76be
-7a82d6
-a6a2a6
-7a8ac6
-eeeaf6
-c6c6ee
-9ea1ce
-d6d2d6
-7a86c6
-626eae
-525eae
-8a96de
-828ace
-e6e6ee
-8292de
-8a92c6
-c6c2d6
-6276be
-6b76ae
-435282
-acb5de
-828abe
-5262af
-626e9e
-6a7ab6
-727ece
-8a92be
-9ea2d6
-aeaaae
-e6e2f6
-8a92de
-9696c6
-828ebe
-c6cce5
-3a467a
-9e9ebe
-828ac6
-4a5e8a
-6a72a4
-424e8a
-5266b6
-62669e
-7a82c6
-96a2c6
-4a5e96
-5a62a6
-9eaad6
-424a8a
-7a86d6
-525ea6
-7a8aba
-4a56a6
-8a96ce
-6a76c6
-425296
-8a8ebe
-7282bc
-828ece
-6272be
-828ab6
-626696
-6a7abe
-626ab6
-5a66ae
-32466a
-5a6a9e
-5a629e
-a7aec6
-727ec6
-e6eaf6
-828aae
-e6e2ee
-4a5aa6
-d6dae6
-525e96
-727ebe
-324672
-dee2f6
-6a7aa6
-bec2e6
-3a4682
-5a6ebe
-4a578a
-8292d6
-ec89f8ecf800000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-00000089f889f8898787870000060606060606060606060606060606061aa0a0a0a0a0a0
-a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0
-a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0
-a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0
-a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a019191919191919191919191919191919191919
-191919191919191919191919191919191919191919191919191919191919191919191919
-191919191919191919191919191919191919191919191919191919191919191919191919
-191919191919191919191919191919191919191919191919191919191919191919191919
-191919191919191919191919191919191919191919191919191919191919191919191919
-191919191919191919191919191919191919191919191919191919191919191919191919
-191919191919191919191919191919191919191919191919191919191919191919191919
-191919191919191919191919191919191919191919191919191919191919191919191919
-1919191919191919191919191919191919191919191919c01a0606060606060606060606
-060606060606060606ae0606060606060606060606060606060606060606ae0606060606
-06060606060606060606060000878787ecec0006062d2d2d313131315c5c5c2323230e0e
-0e1abacabacabacabacabacabacabacabacabacabacabacabacabacabacabacabacabaca
-bacabacabacabacabacabacabacabacabacabacabacabacabacabacabacabacabacabaca
-bacabacabacabacabacabacabacabacabacabacabacabacabacabacabacabacabacabaca
-bacabacabacabacabaca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca
-83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca
-83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca
-83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca83ca8383838383838383838383838383
-838383838383838383838383838383838383838383838383838383838383838383838383
-838383838383838383838383838383838383838383838383838383838383838383838383
-838383838383838383838383838383838383838383838383838383838383838383838383
-838383838383838383838383838383838383838383838383838383838383838383838383
-838383838383838383838383838383838383838383838383838383838383ba831a0654b3
-b3b32d2d2d313131315c5c5c2323230e0eae0654b3b3b32d2d2d313131315c5c5c232323
-0e0eae0654b3b3b32d2d2d313131315c5c5c23060600ec891d0006b32d2d2d313131315c
-5c5c2323230e0e0e231ac5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5
-c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5
-c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5
-c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c548c548c50cc548c50cc548c50cc548c50cc548
-c50c4d48c50c4d48c50cad48c50cad48c50cdc48c50cdc48c50cdc48c50cdc48c50cdc48
-c50c5348c50cb8c5c50cb8c5c50cb8c5c54883c5c54883c5c54883c5c54883c5c54858c5
-c548cac5c548cac5c548cac5c5485fadc5485fadc5485fadc548b7adc50cb7adc5c5b7ad
-c5a615adc5a615adc5a615adc5a615adc5a615adc5a615adc5a615adc5a615adc5a615ad
-c5a615adc5a615adc5a68cadc5a68cadc5a68cadc5a68cadc5a68cadc5a68cadc5a68cad
-c5a68cadc5a68cadc5a68cdcc5a68cdcc5a68cdcc5a68cdcc5a68cdcc5a68cdcc5a68cdc
-c5a68cdcc5a68cdcc5a68cdcc5a68cdcc5a68cdcc5a68cdcc5a68cdcc5a68cdcc5a68cdc
-c5a68cdcc5a68cdcc5a68cdcc5a68cdcc5a68cdcc5a68cdcc5a68cdcc5a68cdcc5a68cdc
-c5c58cc51a06b3b3b32d2d2d313131315c5c5c2323230e0e23ae06b3b3b32d2d2d313131
-315c5c5c2323230e0e23ae06b3b3b32d2d2d313131315c5c5c2323230e54001d1d00062d
-2d2d313131315c5c5c2323230e0e0e3a0e1aac3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c
-3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c
-3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3cc5464d3c3c3c3c3c3c3c3c3c3c3c3c3c3c
-3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c0c3c0c3c3c0c3c0c3c0c3c
-0c3c0c3c0c3c0c3c0ca70c3c0ca60c3c0cc50c3c0cc50c3c0c4d0c3c0c4d0c3c0c4d0c3c
-0c7c3c0c3cb4a60c3c7ca63c0c53a70c3c53a70c3c53a60c3c53a63c0ce5c53c0ce5c53c
-0c58c53c0cffc53c0c38c50c3c58c50c3c5fc50c3c580c0c3c580c0c3c580c0c3c5f0c3c
-3c504d3c3c504d3c0c504d3c0c504d3c0c154d3c0c154d3c0c154d3c0c154d3c0c654d3c
-0c654d3c0c654d3c0c654d3c0c654d3c0c654d3c0c654d3c0c654d3c0c654d3c0c8e4d3c
-0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c
-0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c
-0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c0c8e4d3c
-0c8e4d3c0c8e4d3c3c98c5e11a06b3b32d2d2d313131315c5c5c2323230e0e0e3aae06b3
-b32d2d2d313131315c5c5c2323230e0e0e3aae06b3b32d2d2d313131315c5c5c2323230e
-0e54008900062d2d2d313131315c5c5c2323230e0e0e3a3a231ae1acacacacacacacacac
-acacacacacacacacacacacacacacacacacacacacac4b4bacacacacacacacacacacacacac
-acacacacacacacacacacacacacacacacacacacacacacac5fb1ac6518067f4b4bacac1c18
-acacacacacacacacacacacacacacacacacacacacacacacacacacacacacace1ace110e110
-e110ac10ac6d1810ac6d1810ac10ac103c10ac104810ac104810ac10c510ac10c510ac10
-c510ac105ee1acb171e1e110b4e1ac10dce1ac10b40cac10b848e110b848e110b848e110
-8348e1108348e110910ce1105848e110580ce1105f48e1105f48e11016c5e11052c5e110
-52c5e11052c5e110150ce1e115c5e1e165c5e1e165c5e1e165a6e1e165a6e1e165a6e1e1
-65a6e1e156a6e1e156a6e1e198a6e1e198a6e1e198a6e1e198a6e1e1984de1e1984de1e1
-984de1e1984de1e1714de1e1714de1e1714de1e1714de1e1475ee1e1475ee1e1475ee1e1
-475ee1e1475ee1e1475ee1e1475ee1e1475ee1e1475ee1e1475ee1e1475ee1e1475ee1e1
-475ee1e1475ee1e1475ee1e1475ee1e1475ee1e1475ee1e1475ee1e1475ee1e1475ee1e1
-475ee1e1475ee1e1475ee1e1475ee1e1475ee1e11a18542d2d2d313131315c5c5c232323
-0e0e0e3a3aae18542d2d2d080808080808080808080e0e0e3a3aae18542d2d2d31080831
-5c5c5c0808230e0e0e3a0d0000062d2d31313108085c5c2323230e08083a3a3a231aeaea
-eaeaeaeaeaeaeaeaeaeaeab815eaeaeaeaeaeaeaeaeaeaeaeaeaeaea84907ffceaeaeaea
-eaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeab8181e436306
-aa898181fc846d6d1beab815eaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea
-eaeaea84847e847e84848484ea6d6d1bea6d6d1b8484841284ea84107e84841084848438
-658484ac8484843c128484481284ea4006d684c5e6847ef04e8484d69aea84d610ea84d6
-10ea845e10ea845e108484b8108484b8108484b810848446e1847e83e1848438e1848438
-e1847ee0e1847ee03c847e5f3c8484163ceaea58e1eaea16e1abea16e1abea16aceaea16
-aceaea1648eaea1648eaea1648eaea1548eaea1548eaea1548eaea1548eaea1548eaab15
-48abea1548abea1548abea56e1eaab56e1eaab56e1eaab56e1eaea5648eaea5648eaea8e
-48eaea8e48eaea8e48eaea8e48eaea8e48eaea8e48eaea8e48eaea8e48eaea8e48eaea8e
-48eaea8e48eaea8e48eaea8e48eaea8e48eaea8e48eaea8e48eaea8e48eaea8e48eaea8e
-48eaea8e48eaea8e48eaea8e48eaea8e48eaea9848eaea98488484ea1a182d2d2d593131
-315c5c5c2323230e0e0e3a3a3aae062d2d2d59080808080808087777080e0e3a3a3aae06
-2d2d2d5908080808315c777708080e0e3a3a0d0000062d31312d080808082323230e0877
-14143a2e231aababababababababababababab6d18f4abababababababababababababab
-a451fcfcabababababababababababababababababababababababababababababababab
-abab63811b3b1c181bc2c2fcfca46d241bab6d18f4ababababababababababababababab
-abababababababababababa451a4aba4aba4aba4ab6d6d1bab6d6d1b51a451a4abab4ca4
-aba484a451a4e66d18dfe6ab51a4bd51aba4ac51aba43c377ff35151aba43ceaaba4c5ea
-ababc5eaa4ab7684a4ab76e6a4ab76e6aba4b484aba4b48451a4af84aba4af84aba446e6
-51a446e6aba45ae6ab51914eab51e04eab51e04eabab8b4eabab5facabab5facabab5fac
-abab5facabab50acabab50e9a4ab6fe9a4ab6f3ca4ab6fe9a4ab6fe9a4ab75e9a4ab75e9
-a4ab75e9a4ab75e9a4ab75e9a4ab75e9a4ab653cabab8e3cabab8e3cabab8e3cabab8e3c
-a4ab8e3ca4abc73ca4abc73ca4abc73ca4abc73ca4abc73ca4abc73ca4abc73ca4abc73c
-a4abc73ca4abc73ca4abc73ca4abc73ca4abc73ca4abc73ca4abc73ca4abc73ca4abc73c
-a4abc73ca4abc73ca4abc73ca4abc73ca4abc73ca4abc73ca4ab8ee9a4ab8ec4a4a456ab
-1a182d2d313131315c5c5c2323230e0e0e3a3a3a2eae182d2d2d311a0808080808770808
-770e3a3a3a2eae182d2d31b3080808080808080877770e3a3a3a0d000006313131310808
-080808230e77080814142e2e231aa4d4a4d4a4d47c4b189d8ea48d0606067cd4a4d4a4d4
-a4cd065fd4a4c09dc26d18a4d47c4b189d8ea4c0067cd4cd06b4a4cdfba4204b189d8ea4
-d4c9f9c0c9d4a4d4a49106a9fccd060606e96d18a4d46d6d1b8d0606067c7c4b189d8ea4
-d4c9f9c0c9d46d18a4d4a4d4a4d4da631806b0e9d4dab006b0dad449d46d6d1bd46d6d1b
-d4204b189d8e49d4da631806b0a78d06060627dab006b0dad412d4f9f974c94938068249
-493e84d449e9fdd4d43c84d4d4a74cd449a784d4d4764ca4497612d4492095d449b412a4
-49afe6d4d4af4ed449e5e649a4e5bdc2c291bdc2c291bdc2c238bdc2c25f73d4d47aacd4
-d4e0bdd4a4e0bdd4a48bbdd4d4e0bdd4d4e0bdd4d4503ed4d4503ed4d4503ea4d4503ea4
-d4503ea4d4503ea4d45093d4d475e9d4d465e9d4d465e9d4d4653ea4d465c4a4d48ec4a4
-d48ec4a4d48ec4d4d48ec4a4d48e3ca4d48e3ca4d48e3ca4d48e3ca4d48e3ca4d48e3ca4
-d48e3ca4d48e3ca4d48e3ca4d48e3ca4d48e3ca4d48e3ca4d48e3ca4d48e3ca4d48e3ca4
-d48e3ca4d48e3ca4d48e3ca4d48e3ca4d48e3ca4d48e3ca4d48e3ca4d48e3ca4d48e3ca4
-d48e3c49d48e3cc21a1c2d313131315c5c5c2323230e0e0e3a3a3a2e2eae1c2d31313108
-08081a0808777708083a3a3a2e2eae1c2d3131313108080808777708080e3a3a3a2e0d00
-0006313131312d080808770808081414142e2e9d311af4b6b6b6b6ea6d9d9abc06337e6d
-18f61bdfb6b6b6b6b6bb066e42b6b0456b6d241bea6d9d9abc0633d60696df9d0696df6d
-413b6d9d9abc0633b66d064b401bb6b6b674068642126d18601d6d6d1b9c6d241b7e6d18
-60866d9d9abc0633b66d064bda1b63c91bb6b6b6b6a506c94199689fd706cd174a0675b6
-b66d241b9c6d241b5d6d9d694a0633a506f94199680feb6d18602206cd174a06b2c2b66d
-06703f6b3206ef424ec2b69c10d9b69ce1d9b6b610d99cb63cd99cb693a4b6b6f7a4b69c
-f05db69c765db69c5e5db69cb466b69cb4eab69cafeab6b6b8eab6b6b8eab6b646eab6b6
-46eab69c467eb6b6e312b6b6bb12b6b6bb12b6b6bb12b6b63812b6b6e37bb6b6e37bb6b6
-384eb685384eb685384eb685384eb685384eb6b61e4eb6b61e4eb6b61eacb6b61eacb685
-6facb6b66facb6b66facb6b66facb6b66facb6b66facb6856facb6856facb6856facb685
-6facb6856facb6856facb6856facb6856facb6856facb6856facb6856facb6856facb685
-6facb6856facb6856facb6856facb6856facb6856facb6856facb6856facb6856facb685
-6facb6856fac85b66facb6b675acf4b61a1c313131315c5c5c2323230e0e0e3a3a3a2e2e
-2eae1c3131313108315c23235c0e0e0e143a3a2e2e2eae1c31313131312d080877080877
-0e3a3a3a2e2e0d000006315c5c5c232308087777140814143a2e24245c1adfdfdfdfdf75
-063f258b06f22b6d6d1be2dfdfdfdfdff485241864f00628256d6d1b6f063f258b06f23b
-064a2818b00b5106ce26063f258b06a82b6d18726bfc55dff481061b55f46d6d1b2b6d6d
-1bf46d6d1bf46d6d1b26063f258b06a82b6d18726b25f41b1b55dfdff49d06606b43e225
-63069ece49060e25f46d6d1bf46d6d1b52063f648b06a82e06601b2be264556d6d1b6306
-9efceb06b964f46d18ce1be249060764c2f4f47ec2f4f47ec2dff412c2f4f44e49f4f44e
-498a8ac449f4f493a4f4f4f0a4f4f4f051f4f47651f4f47651f4f4b4513bf46c33f4f4de
-29f4f4d04cf4f4d037f4f4b8668adfd0eadf8ad066df8ad0eadf8ad066df8ad0668af45a
-eadff45aeadf3b5a668af4bb668af4bb7e8af4bb7e8af48b7e8adfbb7e8a8abb7e8a3b8b
-7e8a3b8b7e8adfbb4cdf8abb4cdf8a8b4cdf8a1e7edf3b6f4cdf3b6f37dff46f37dff46f
-37dff46f37dff46f37dff46f37dff46f37dff46f37dff46f37dff46f37dff46f37dff46f
-37dff46f37dff46f37dff46f37dff46f37dff46f37dff46f37dff46f37dff46f37dff46f
-37dff46f37dff46f37dff46f7edf3b6f7edff42612f4f4551a1c31315c5c5c2323230e0e
-0e3a3a3a2e2e2e2424ae1c31313131082323230e0e0e3a3a082e2e2e2424ae1c31315c5c
-5c230808777708773a3a2e2e2e240d0000065c5c5c2323230e7708081414142e2e242424
-311af4f4f4f43ba50606060606cf436d6d1bf4f4f4f4f4f4f4f48d06f2744b1be26d241b
-a50606060606cf43902479a20b6357f31b670606060606a1256d6d1b55f4f4f4f4cd061b
-df3b6d241bdf6d241bf46d241bf46d6d1ba50606060606a1256d6d1bdfdfdff4f4f4f4f4
-df06061be28af4f418061b2b3b06066b3b6d241bf46d241ba50606060606cf06061df485
-2bf4626d6d1b18061b2b6a06061b516d6d1b49b6850607fc3bdf7eb6f4df12c2f43b7e62
-f4f41262f4f47b493bf4c4c23b55c4d93bdff7d93bdff75df4dff76af4dfe45d3bdf9beb
-3bdf6c33f48a6c37f42bc14c3b8ad07ef4dfd07ef4f4467ef43b467ef43b467ef43b467e
-f43b467ef4f4d07ef4f4467ef43b467ef4f4e312f4f4e3123bf4e3123bf4bb123bf48b12
-3bf48b123bf4bb123bf4bb123bf48b12f43b8b123b3b5012f43b6f12f43b1e12f43b1e12
-f43b1e73f43b1e73f43b1e73f43b1e73f43b1e73f43b1e73f43b1e73f43b1e73f43b1e73
-f43b1e73f43b1e73f43b1e73f43b1e73f43b1e73f43b1e73f43b1e73f43b1e73f43b1e73
-f43b1e73f43b1e73f43b1e73f43b1e73f43b1e73f4f41e73f43b1e12dff41e3b1a24315c
-5c31ae0808080808141408ae2e2e24242eae24315c5c5c0823230e0e0e3a3a3a8f2e2e24
-242eae24315c5c5c2308770808080814142e2e2e24240d0000065c5c2323230e0e0e1414
-08142e2e2424241c311a8a8a8a8a422606ef1b1b1b1bfc6d6d1b8a8a8a8a8a8a8a423206
-b324c66b2b6d6d1b2606ef1b1b1b1bfca50631b29606f5a51b2606ef1b1b1b1b256d6d1b
-428a8a8a8ac0069e2b8a6d6d1b426d6d1b8a6d6d1b8a6d6d1b2606ef1b1b1b1b256d6d1b
-8a8a8a8a8a8a8a8a8ab0061f8a428a8a630635426606631b2b6d6d1b426d6d1b2606ef1b
-1b1b1bf1061f8a8a42dd3b6d6d1bf10635dd9a06631b3b6d6d1b858a66063f878a662f8a
-8ab5dd8a8a29dd8a8a21628a8a7b628a8abe628a8abed98a8a93d98a8a936a8a8a616a8a
-8a326a8a8a9b6a8a8a9b5d8a8a9b5d8a8a9beb8a8a805d8a8ac1668a8ac1668a8ac1668a
-8ac1668a8ac1668a8acc668a8acc298a8acc298a8acc298a8a46298a8ae3b58a8ac6b58a
-8ac6298a8a96b58a8ac6298a8abb298a8a8b298a8a8b298a8a8bb58a8a8b298a8acb212b
-8acb218a8a26218a8a26218a8a267b8a8a267b8a8a267b8a8a267b8a8a267b8a8a267b8a
-8a267b8a8a267b8a8a267b8a8a267b8a8a267b8a8a267b8a8a267b8a8a267b8a8a267b8a
-8a267b8a8a267b8a8a267b8a8a267b8a8a267b8a8a267b8a8a267b8a8a26218a8a26218a
-8a269a421a9d5c5c5c2377777777770814148f8f2e2424241cae245c5c5c2308230e0e0e
-3a3a3a2e8f2e2424241cae245c5c5c23770877777714141414142e2424240d0000065c23
-23230e0e0e3a3a14142e2e2424241c24311a428a8a8a8a629d18269bbb808a6306d2628a
-8a8a8a42428a42b00606d3fc8a6d241b629d18269bbb808ad606060202060699fc629d18
-a19bbbc18a6d241b8a8a8a428a93064143426d241b8a6d241b426d241b426306d2b59d18
-a19bbbc18a6d241b428ab9638a8a8a8a8ab206b9bb9b2666a1064abecd06961b426d241b
-8a6d241b629d18a16cbbc1b206b9969b75668a6306d2a5064ac4cd064f1b8a6d241b8a42
-d7067d87669c8a42b59c8a4229b6424229628a429a628a42be628a42be5b8a42c4d98a42
-93d98a4232d98a4232d98a42e4d98a429b6a8a4280338a426c668a42c1668a42c15d8a8a
-c1978a8ac1668a8ac1668a8ac1668a8acc298a8accb5428accb5428acc7e428accb5428a
-e3b5428ac6b5428ac6b5428ac6b58a8ac6b58a8abbb5428abb7e428a8bb58a8a8b218a8a
-8b218a8a8b218a8acb21428acb21428a267b428a267b428a267b428a267b428a267b428a
-267b428a267b428a267b428a267b428a267b428a267b428a267b428a267b428a267b428a
-267b428a267b428a267b428a267b428a267b428a267b428a267b428a267b428a267b422b
-267b422b267b8a8acb7b8a2b1a245c5c2323080808081414141414142424241c24ae245c
-5c2323770e0e0e3a3a3a2e2e142424241c24ae245c5c235c087708083a3a1414148f2424
-241c0d0000062323230e0e0e3a3a3a2e2e2e2424241c1c1c311a4242424242427d4a1c06
-b079dbe3241869db424242424242426706071bdb426d6d1b42974a1c06b079db9c061889
-d318066bdb425d4a1c06b079db6d6d1b424242354235a2a2db426d6d1b426d6d1b426d6d
-1b42e32418d26a4a1c06b079db6d6d1b4242246d1b42354242424f700618f3e8d3226306
-f1681b87426d6d1b426d6d1b425d4a1c06b0793596700618f3e8dbe32418d2570e06f157
-1b87426d6d1b425b70a21b9c9c42427d9c42425d9c424229f642429add3542699c42427b
-5b4242be5b42424492424282ee424282924242619235429b9442429b6a42429b6a424280
-5d4242805d4242a85d4235805d4235805d423580d54242805d4242a8974242807d424280
-974242c17d4242e35d4242e35d4242795d4242e35d4235e35d424279974242e3294242e3
-7d4242797d4242797d4242797d42429629424296294242969a4242966942429669424296
-694242966942429669424296694242966942429669424296694242966942429669424296
-694242966942429669424296694242966942429669424296694242966942429669424296
-69424296694242966942422c7d42352c294242421a2e5c232323ae7708081408148f8fc8
-24241c1c1cae2e5c23232308777708141414148f1424241c1c1cae2e5c230e0e0e7777f1
-3a0e2e8f142424241c1c0d00000623230e0e0e3a3a3a2e2e2e2424241c1c1c18b31a35db
-35db353535d3871b1b1bdb35fc1b06060606060606443535ce1b1b3535421a1b3535d387
-1b1b1b7235351b1b35351b1b35353525871b1b1bfc351b1a3535db3535357d242c35d31b
-1b35d31b1b35351b1b3535721b1b8625871b1b1bdb351b1bdb35421b1a35db35353535fc
-1b1b1b1b2535871b1b1b6b4235d31b1b35421a1b353564871b1b1bdb35fc6b1b1b1bfefe
-721b1b866b1b1b1b6b355baa1b1b5b7824d187aa3535d5aa3535d5aa35357d9c35357df6
-db359af63535695b35359a5b3535d25b3535d25b3535445b3535445b3535615b35359392
-353541ee353541d53535a8d535dba8d5db35a8d5353580d5353580d5353580d5353580d5
-353580d5353580d53535e7d5353579d5353579d5353579d5353579d5353579d5353579d5
-3535797d353579693535797d3535797d3535797d35352c7d35352c7d35352c7d35352c69
-35352c6935352c6935352c6935352c6935352c6935352c6935352c6935352c6935352c69
-35352c6935352c6935352c6935352c6935352c6935352c6935352c6935352c6935352c69
-35352c6935352c6935352c6935352c6935352c693535c66935db2c351a2e2323230e0e0e
-3a3ab02e2e2e2424241c1c1c1cae2e2323230e0e0e3a3a3a2e2e2e2424241c1c1c1cae2e
-2323230e0e0e3a3a3a2e2e2e2424241c1c1c0d000006230e0e0e3a3a3a2e2e2e2424241c
-1c1c18182d1ad3d335d3d3d3d343d3d3d3d3d335649f0f1b1b1b1b1b1b1bfcd3644243d3
-d39f43d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d364d3d39fd3d3d3d3d3d343d343d3d3d3d3
-d3d39f7dcf25d364d3d3d3644364d3d3d3d3d3d3d3d39fd3d3d3d3d364d3d39fd3d3d3e2
-d342d3d3d3d364d3d3d3d3d3439fd3436443d3d39fd36464d39f43d3d30fd3d3d39fd3d3
-9f8a9f64d38a0f64d3880f9f43aa424343284264d3288878281b9f64d3ee8ad3d3178a64
-d31faa64d3c3d89fd37dd864d302aad36402aad3d3be92d3d39992d3d3999264d34462d3
-d3932fd3d36139d364611fd3d34192d3d34192d3354192d3d34192d3d34117d3d3de17d3
-d3de17d3d3de17d3d3e717d3d3e7edd3d3e717d3d3e717d3d3e717d3d3e717d3d3e71fd3
-d3e71fd3d33417d3d35a1386d39617d3d39613d3d3966964d3c6c364d3966964d3966964
-d39669d3d3967dd3d3c67dd3d3c67dd3d3c67dd3d3c67dd3d3c67dd3d3c67dd3d3c67dd3
-d3c67dd3d3c67dd3d3c67dd3d3c67dd3d3c67dd3d3c67dd3d3c67dd3d3c67dd3d3c67dd3
-d3c67dd3d3c67dd3d3c67dd3d3c67dd3d3c67dd3d3967dd3d3967dd3d34f69d335967dd3
-1a3a23230e0e0e3a3a3a2e2e2e2424241c1c1c1818ae2e23230e0e0e3a3a3a2e2e2e2424
-241c1c1c1818ae2e23230e0e0e3a3a3a2e2e2e2424241c1c1c180d0000060e0e0e3a3a3a
-2e2e2e2424241c1c1c181818b31a7272368672db86868686863672db86dbdb723672db25
-72db648686368686867286dbdb8686d3868672db8686862586648672db86db868686db72
-64728686db8686dbdb727236728786dbdb8686db7272db25db72db86db86db8686867272
-72dbdbdb6472db7286368636db7286866472db868625867286868686db8672db86db8672
-db7286869f86727235bf8686fe9f7286febf257288bf868660358686f6356472726486db
-929e867292fe86861ffe86867dfe72727daa7286c3aa862569aa8672d2aa3686d2603686
-99f67286fa2f368644928672a9287272a9282586415b86db419286724192868641928686
-091fdb86091f8686091f8686091f7286a81f8686f21f8686f21f8686f21fdb86f21fdb86
-f21fdb86f21f8686341f8686341fdb86341786863417648679178686797d8686967d8686
-967d7286967d8686967d86864f7d86864f7d86864f7d86864f7d86864f7d86864f7d8686
-4f7d86864f7d86864f7d86864f7d86864f7d86864f7d86864f7d86864f7d86864f7d8686
-4f7d86864f7d86864f7d86864f7d86864f7d86864f7d86864f7d86864f7d86864f7d7272
-4fd53672967d72361a2e230e0e0e3a3a3a2e2e2e2424241c1c1c18181cae2e230e0e0e3a
-3a3a2e2e2e2424241c1c1c18181cae2e230e0e0e3a3a3a2e2e2e2424241c1c1c18180d00
-00060e3a3a3a2e2e2e2424241c1c1c1818180606b31af4f4dff43bdfdfdfdfdff4f43bdf
-3b3bf4f4f43b3bf43b3bdfdf3bdfdfdff48af43bdff48adfdff43bdfdfdf3bdf8adff43b
-df3bdfdfdf3bf48af4f48a3bf4df3b3bf4f4f4df3bdf3b3bf4df3bf4f43b3b3bf43bdf3b
-f43bdfdfdff4f4f43b3b3b8af43bf4df3bdf3bf4f4f48adff43bdf8a3bdff4dff4dfdf3b
-dff43bdf3bdff43bf4dfdf8adff4f4df3bf4df8af4f4df8af43bf43b3b3bdf3bdff4dfdf
-3bdff4f4f48af4dff4dff43bdf3bdfdff48a8a8a3bf4f43b3bf48a8a8af43b8a8a3b3bf4
-3b3b8a8af43bdff43bf4df3b8af48af43bdff48a8af43bdf8a3b8a8a3bf43b8a3bf4f48a
-3bdfdf3b3bdf8adf8af48a8a8adf8a8a8a8adf8a8af4df8a8adfdfdf8a8adf8a8adfdf8a
-df3bdf3b3b3b8af43b3bdf3bf4f48a8a3bdfdf42df8a42424242424242df42424242df42
-4242424242df4242dfdf4242df42df4242df4242df42df4242df42df4242df4242df42df
-4242df4242df42df4242df4242df42df4242df4242df42df4242df4242df42df4242df42
-42df42df4242df4242df42df4242df4242df42df4242df4242df42df4242df4242df42df
-42df4242dfdfdfdfdfdfdf8adfdf42421a3a0e0e3a3a3a2e2e2e2424241c1c1c18181806
-06ae3a0e0e3a3a3a2e2e2e2424241c1c1c1818180606ae3a0e0e3a3a3a2e2e2e2424241c
-1c1c181818060d000011111111111111111111111111111111111111111a010101010101
-010101010101010101010101010101010101010101010101010100010101010101010101
-010101010101010101010101010101010101010101010101000101010101010101010101
-010101010101010101010101010101010101010100010101010101010001010101010101
-010101010001010101010101010101010101010101010101010101010100010100010001
-010101010101010101010001010101010101010101010101010101010100010101010101
-010101010101010101010101010100010101010101010100010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010100010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-0101010101010101010101010101010101010101010101011a1111111111111111111111
-111111111111111111ae1111111111111111111111111111111111111111ae1111111111
-111111111111111111111111111111000006230e0eae0606060606060606060606060606
-060606060606060606060606060606060606061818181818060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060618060606180606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606ae18230e0d0000060e0e23ae060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-0606060606060606060606060606060606060606060606061830ae060e0e0d0000060e0e
-0eae06065959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959593030ae06
-0e0e0d0000060e0e23ae0606595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959593030ae060e0e0d0000060e0e0eae060659595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959593030ae060e0e0d0000060e0e0eae06065959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959592d3030ae060e0e0d0000060e0e0eae0606
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959593030ae060e0e0d00
-00060e0e0eae060659595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595959592d
-3030ae060e0e0d0000060e0e0eae06065959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959593030ae060e0e0d0000060e0e0eae0606595959595959590000000000
-000000590000595959595959595959595959595959595959595900005959595900000000
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959590000000059595959595959590000590000595959595959595959
-595959595959590000595959595959595959595959595959595959595959595959595959
-000000000000000059000059590000595959595959595959595959595959595959595959
-595959595959000059595900005959595959595959000059595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959592d3030ae060e0e0d0000060e0e0eae060659595959
-595959000059595959595959000059595959595959595959595959595959595959590000
-595959590000595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595900005959000059595959595959000059000059
-595959595959595959595959595959000059595959595959595959595959595959595959
-595959595959595900005959595959595900005959000059595959595959595959595959
-595959595959595959595959595900005959590000595959595959595900005959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959593030ae060e0e0d0000060e0e
-0eae06065959595959595900005959595900005900005959000000005959595959595959
-595959595959590000595900005900005959000000005959000059590000595900005959
-000000005959000059000059595959595959595959595959000059595959595900000000
-595900005900005959000000005959590000000059590000000059590000000059590000
-590000595959595959595959595959590000595959590000590000590000000059590000
-000059590000590000595959595959595959595959590000595959000059590000000059
-590000590000590000595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959592d3030ae06
-0e0e0d0000060e0e0eae0606595959595959590000595959590000590000590000595900
-005959595959595959595959595959000059590000590000590000595900005900005959
-000059590000590000595900005900000000005959595959595959595959595900005959
-595959000059590000590000590000590000595900005900005959000059590000595900
-005959000059000000000059595959595959595959595959000059595959000059000059
-590000595900005959000059000000000059595959595959595959595959000059595900
-005900005959000059000059000000590000595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959593030ae060e0e0d0000060e0e0eae060659595959595959000000000059000059
-000059000059590000595959595959595959595959595900005959000059000059000059
-590000595900005900005900005959000059590000590000005959595959595959595959
-595959590000595959595900005959000059000059000059000059590000590000595959
-595959000059590000595900005900000059595959595959595959595959595900000000
-005900005900005959000059590000595900005900000059595959595959595959595959
-595900000000000000590000595900005900005900005959000059595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959592d3030ae060e0e0d0000060e0e0eae06065959595959595900
-005959595900005900005900000000000059595959595959595959595959595900595900
-595900005900000000000059590000590000590000595900000000000059000059595959
-595959595959595959595959000059595959590000595900005900005900005900000000
-000059000059595959595900005959000059590000590000595959595959595959595959
-595959590000595959590000590000595900005959000000000000590000595959595959
-595959595959595959590000595959000059000000000000590000590000595900005959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959593030ae060e0e0d0000060e0e0eae0606
-595959595959590000595959590000590000590000595959595959595959595959595959
-595959590000000059590000590000595959595959000059000059000059590000595959
-595900005959595959595959595959595959595900005959595959000059590000590000
-590000590000595959595900005959595959590000595900005959000059000059595959
-595959595959595959595959000059595959000059000059590000595900005959595959
-000059595959595959595959595959595959000059595900005900005959595959000059
-000059590000595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959592d3030ae060e0e0d00
-00060e0e0eae060659595959595959000059595959000059000059000059590000595959
-595959595959595959595959590000595959000059000059590000595959000059590000
-595959000059590000590000595959595959595959595959595959595900005959000000
-005959000059000059000059000059590000590000595900005959000059000000595900
-005900005959595959595959595959595959595900005959595900005900005959000059
-000000595900005900005959595959595959595959595959595900005959590000590000
-595900005900005900000059000059595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-3030ae060e0e0d0000060e0e0ed706065959595959595900005959595900005900005959
-000000005959595959595959595959595959595959000059595900005959000000005959
-595900005959000059595959000000005959000059595959595959595959595959595959
-595900000000595900000000595900005900005959000000005959590000000059595959
-000059590000000059590000595959595959595959595959595959590000595959590000
-590000595959000059590000000059590000595959595959595959595959595959590000
-595959000059590000000059590000590000590000595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959592d3030ae060e0e0d0000060e0e0eae0606595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959000059595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959593030ae060e0e0d0000060e0e0eae060659595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595900005959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595459
-59595959595959595959595959595959595959595959592d3030ae060e0e0d0000060e0e
-0eae06065959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959590000595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595954
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595459545954595954595954595959595959595959595959593030ae06
-0e0e0d0000060e0e0eae0606595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595459595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595954595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959545959595959595459595459595459545959595459545959595959595959595959
-595959545959545959545959595959595959595959595959595959595959595959595959
-5959592d3030ae060e0e0d0000060e0e0eae060659595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595954595959545959595459595954595959545959595459595954595959545959
-595959595959595959595959595954595959545959595459595954595959595959595959
-595459595459545959545954595959595954595459545954595954595959545959595459
-595954595959545959595459595954595959545959595459595954595959545959595459
-595954595959545959595459595954595959545959595459595954595959545959595459
-595959595954595959595959595459595959595959595959595959595959595959595959
-545959545959545959595959595959595959595959595959595959595959595959595959
-5954595959595959595959593030ae060e0e0d0000060e0ef9ae06065959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595459
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595954595954595459595959595959595959595959595959595959595959595959595959
-595959595959595959595459545954595459545959595959595959595959595959595959
-595459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595459595959595459595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959592d3030ae060e0e0d0000060e0e0eae0606
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595954595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595459
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595954595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959593030ae060e0e0d00
-00060e0e0eae061c59595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595459595959595959595959595959595959595959595959595959
-595959595959595959595959595954595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595959592d
-3030ae060e0e0d0000060e0e0eae0606303030303030303030303030303030303030a930
-3030a930a93030a930a930fa30303030a930303030303030303030303030303030303030
-30303030303030303030303030a93030a93030a9303030a93030a930fa30303030a93030
-303030303030303030303030303030303030303030303030303030303030303030303030
-3030303030a9303030fa3030a93030fa3030a930fa303030a93030303030303030303030
-3030303030303030303030a9303030a9303030a9303030a930fa30303030a93030303030
-303030303030303030303030303030a9303030a9303030a93030a93030a93030a930a930
-30a93030a930a93030a930a93030a930a93030a930a93030a930a93030a93030a93030a9
-303030a93030a930a93030a930a93030a930a93030a930a930a93030a930a930a93030a9
-3030a93030a930a930a930a93030a93030a930a930a930a93030a930a93030fa30a93030
-a930a93030a930a93030fa3030a930a93030fa3030a930a93030fa3030a930a93030fa30
-30a930a93030fa3030a930a93030fa3030a930a93030fa3030a930a93030fa3030a93030
-a930a93030a930a93030a930a93030a93030a93030a93030a93030a93030a930303030a9
-3030a930a930a93030a93030a930a930a93030a93030a930a93030a93030a93030fa30fa
-303030a9303030303030ae180e0e0d0000060e0e0eae0630303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030ae060e0e0d0000060e0e0eae59592d2d2d2d
-2d2d2d54592d2d2d2d2d2d2d2d5459595959595959595959595959592d54592d54592d2d
-2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d54595959595959
-595959595959595959545954592d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d
-2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d54595459595959595959595959595959
-5954592d2d2d2d2d54592d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d545959595959595959
-595959595959545954592d2d2d54592d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d5459595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959592d5459592d2d2d2d2d2dae060e0e0d0000060e0e
-0ed759595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595959ae06
-0e0e0d0000060e0e0eae2d59595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959545959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959ae060e0e0d0000060e0e0e22595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959ae060e0e0d0000060e0e0eae59595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959ae060e0e0d0000060e0e0eae5959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595954
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959ae060e0e0d00
-00060e0e0eae595959595959595959595959595959595959595959595954595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595954595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959ae060e0e0d0000060e0e0e2259595959595959595959595959595959595959545959
-595959545959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959ae060e0e0d0000060e0e0eae5959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595459595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595459595959595954595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959545959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959ae060e0e0d0000060e0e0e22595959595959
-595959595959595959595959595959595959595959595459595959595959595959595959
-595959595959595959595959595959595959595959595959595959545959595959595959
-595954595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959545959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959ae060e0e0d0000060e0e
-0eae59595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959545959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595459595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959000000000059595959595959595459590000
-595959595959595959000059000059595959595900005959595959595959595959595959
-595959595959595959595959000059595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595954595959595959595959595959595959ae06
-0e0e0d0000060e0e0e225959595959595959595959595959595959595959595959595959
-595959595959595959595954595959595959545959545959595459595959595959595959
-595959595959595959595959595959595959595959595959595954595959595959595959
-595959595459595959545959545959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595954595959595900005959000059595959
-595959595959000059595959595959595959595900005959595959590000595959595959
-595959545959595959595959595959595959595900005959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959ae060e0e0d0000060e0e0eae59595959545954595954595959591c1c1c1c
-1c1c1c1c1c1c1c5959595959595959000000000000595959595959595959595959595959
-595959595459595459595959595959595959595959595959595959595959595959595959
-545959545959545959595959595959595959595959595959595959595459595459595459
-595959595959595959595959595959595959595959595954595959595959595959590000
-595959000059590000000059590000000059590000000059590000590000595959595959
-000059595959590000000059590000595959000059590000000059590000595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959545959595959595959595959595959595959
-5959595959595959595959595959ae060e0e0d0000060e0e0ed759595959595959595959
-595959591c061c061c061c061c1c30595959595959595900005959595959545959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959000059595900005900005959000059590000595900005959000059000059
-000059595959595900005959595900005959000059000059595900005900005959000059
-000059595959545959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595954595954595959545959545959595459595954595459
-545959595459595459595459595459595954595959595459595959545959595959595959
-59595959595959595959595959595959595959595959ae060e0e0d0000060e0e0eae5959
-5959595959595959595959591c0659595959595959303059595959595959590000595959
-590000590000590000000059595900000000595900000000005959000000005959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595900005959590000590000595900005959000059595959
-595900005900005900005959595959590000595959590000595900005959000059000059
-590000595900005900005959595959595954595954595959545959595459595459595459
-595459545959545959595959595959595959595959595959595959595959595959595959
-595954595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595954595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595954595959595959595959595959595459595959595959595959595959ae060e0e0d00
-00060e0e0ed7595959595959595959595959595906065959595959595930305959595959
-595959000059595959000000000000005959000059000059590000595959590000590000
-595900005959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959590000595959000059000000000000
-595900005959590000000000590000590000595959595959000059595959000000000000
-595900005900005959000000000000590000595959595959595959595959595959595959
-595959595959595959595959595959595459595954595959545959595459595954595459
-595459595954595959595959545959595954595959545959595459595954595959545959
-595459595959595959595459545959595959595959595959595959545959595959595954
-595959595959595459595959595959545959595959595954595959595959595459595959
-595959545959595959595954595959595959595954595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959ae060e0e0d0000060e0e0eae59595959595959595959595959590606595959595959
-593030595959595959595900000000005900000059590000595900005900005959000059
-595900005959000059590000595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959000059595900
-005900005959595959590000595900005959000059000059000059595959595900005959
-595900005959595959595900000059595900005959595959000059595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959545954595959595959595459545959545959595459595959
-595459545959595959545954595959595954595459595959595459545959595959545954
-595959595954595459595959595459545959595959545959545959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595954595959595959595959595959595459
-59595959595959595959d7060e0e0d0000060e0e0ed75959595959595959595959595959
-060659595959595959303059595959595959590000595959590000595959000000000000
-590000000000005959590059595900000000000059595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595900005959000059590000595900005959000059000000595900005900005900005959
-595959590000595959590000595900005959590000005959590000595900005900005959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959ae060e0e0d0000060e0e0eae595959595959
-595959595959595906065959595959595930305959595959595959000059595959000059
-595900005959595959000059595959595900005959590000595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959590000000000595959590000000059595959000059590000005900
-000000590000595959595959000000000000590000000059595959590059595959590000
-000059590000595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959ae060e0e0d0000060e0e
-0ed75959595959595959595959595959061c5959595959595930fa595959595959595900
-005959595900005959590000595900005900005959000059000059595959000059590000
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959545959595959595959595959595959595959595959595959ae06
-0e0e0d0000060e0e0eae59595959595959595959595959591c0659595959595959303059
-595959595959590000595959590000595959590000000059595900000000595900000000
-005959000000005959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595954595959
-595959595959ae060e0e0d00001c0e0e0ed75959595959595959595959595959061c3030
-303030303030305959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959545959595954595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959ae060e0e0d0000060e0e0eae59595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959545959595959595959ae060e0e0d00001c0e0e5cd75959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959ae060e0e0d00
-00060e0e0eae595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595459595959595959595959595959595959cd5959595959cd595959
-595959cd5959595959595959595959595959595954595959595959595959595959595954
-595959595959595959595959595959545959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959ae060e0e0d0000060e0e5cd759595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595954595959cd5959595959cd595959595959
-cd5959595959cd595959595959cd595959cd595959595959545959595959595959595959
-595959595959595959595459595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959ae060e0e0d0000060e0e0eae5959595959595959595959595959
-595959595954595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595459595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959590100595959590100010059595901000100
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959545959595959595959595959595959
-595959595459595959595959595959595959595959595959595959595959595959545959
-595959595959595959545959595959595959ae060e0e0d00001c0e0e0ed7595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595954
-595959595959595959595959595959545959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590000000159595900005959
-000159000059590001595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595459595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959ae060e0e0d0000060e0e
-0eae59595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595459595959595959595959595959595959
-595959595959595959595959595959595459595959595959595954595959595959595959
-595954595959595959595959595459595959595954595959595959595959595959595900
-005959590000595900005900005959000059595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595459595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595959ae06
-0e0e0d00001c0e0e59d75959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959545959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959590000595959000059590000590000595900005959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959545959595959595959595959595959595959595959595959595959595959
-595959595959ae060e0e0d0000060e0e2eae595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959545959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595954595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959000059595900005959000059000059590000595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959ae060e0e0d0000060e5c0e2259595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595459595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959545959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595900005959590000595900005900
-005959000059595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959545959595959595959595959
-59595459595959595959595959595959595959595959ae060e0e0d0000060e0e0eae5959
-5959595959595959595959591c1c1c1c1c1c1c1c1c1c1c59595959595959590000595959
-000059000059595959590000595959595959595959595959590000000000015959595959
-595959595959595959595959595959595959595959595959590100010001000100595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595459595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959590000595959
-000059590000590000595900005959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59cd59595959595959595959595959595959595959545959595959595959ae060e0e0d00
-001c0e0e0ed759595959595959595959595959591c1c061c1c1c1c1c061c305959595959
-595959000059595900005959595959595959000059595959595959595959595959000059
-595959595959595959595959595959595959595959595959595959595959595959595959
-000059595959595959595959595959595959595959595959595959595959595959595959
-595959595959cd5959595959595959595959595959595959595959595959595959595959
-595959595959595959595459595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959000059595900005959000059000059590000595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959ae060e0e0d0000060e0e0eae59595959595959595959595959591c06595959595959
-593030595959595959595900005959590000590000595900005900005959000000005959
-595959595900005959595900005901005901000001595901590100015901000159595959
-5959595959595959000059595959010000015959595959595959cd595959cd5959595959
-595959595959595959595959595959595959595959595959595459595959595959595959
-595959595959595959595959595959595959595954595954595959595959595959595959
-595959595959595959595954595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595900005959595900000000595959000000005959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959ae060e0e0d00001c0e0e0e4f5959595959595959595959595959
-06065959595959595930a959595959595959590000595959000059000059000059000000
-590000595900005959595959590000595959590000000000000059590000590000595900
-005959000159595959595959595959590000595959000059590001595959595959595959
-5959595959595959cd595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595459595959595959595959595954
-5959595959545959595959595959595959595959595959595959595959cd595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-cd5959595959595959595959595959595959ae060e0e0d0000060e0e0eae595959595959
-595959595959595906065959595959595930305959595959595959000000000000005900
-005900005959000059000059590000595959595959000000000059000000595900005959
-000059000059590000595900005901010000000059595959000059595900005959000059
-59595959595959595959595959595959595959595959cd59595959595959595959595959
-595959595959545954595959595959545954595959545959595954595959595959595959
-595959595959595959545959595959545954595459595459595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959cd5959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959545959595959595959ae060e0e0d00001c0e0e
-0ed759595959595959595959595959590606595959595959593030595959595959595900
-005959590000590000590000595900005900000000000059595959595900005959595900
-005959590000595900005900005959000059590000595959595959595959595900005959
-590000595900005959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959545954595959595959595959595959595959
-595959595959595959595959545959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959cd59595959cd
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595954595959595959595959595959
-595959595959595959595959595959595959545959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595959ae06
-0e0e0d0000060e0e0eae5959595459595959595959595959060659595959595959303054
-595959595959590000595959000059000059000059590000590000595959595959595959
-590000595959590000595959000059590000590000595900005959000059000000000000
-595959590000595959000059590000595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595954595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959cd59595959595959595959
-595959595959595959595959cd5959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595905595959055959
-590559595959595959055959590559595905595959055959595905595959055959595959
-595959595959595959595959595959cd5959595959595959595959595959595959595459
-595959595959ae060e0e0d00001c0e0e0ed75959595959595959595959595959061c5959
-595959595930305959595959595959000059595900005900005900005900000059000059
-590000595959595959000059595959000059595900005959000059000059590000595900
-005959595959595959595959000059595900005959000059595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959545959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959590559595959595959595959595959595959595959595959595959595959595959
-595959595959590559595959595959595959590559595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959ae060e0e0d0000060e0e0eae59595959595959595959
-595959590606595959595959593030595959595959595900005959590000590000595900
-005900005959000000005959595959595900005959595900005959595900000000595900
-005959000059590000595959595959595959595900005959595900000000595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-a930a93030a93030a93030a930303030a93030a930fa3030fa3030a930a93030a93030a9
-30a93030fa3030fa3030a930a93030a93030a930a930fa30fa30fa30fa30fa30fa30fa30
-fafa3027fa30fa27fafa30273027fafa30fa30fa27fafa30fa30fa3027fafafafafafafa
-fafafafafafafafafafafafafa30273027fafafafafafafafa30273027fafafafafafafa
-fafafafafafa30fa30fa30fa30fa3030303030fa30303030303030303030303030303030
-3030fa3030fa30fafa30fafa595959595959595959595905595959595959590559595959
-595959055959595959595905595959595959590559595959590559595959590559595905
-595959595959595959595959595959595959595959055959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959ae060e0e0d00001c0e0e0ed75959
-595959595959595959595959061c30303030303030303059595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595930303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-30303030303030303030303030303030303030f159595959595905595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959ae060e0e0d00
-00060e0e5cae595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959593030050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-05050505050505050505050505050505050505050505050505050505050505051c1c0606
-060606061c0618181c061c061c06061c1c1c1c1c1c1c1c1c2e1c2e1c5959595959595959
-595959595959055959595959595905595959595959590559595959595959055959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959ae060e0e0d00001c0e0e0ed759595954595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959303005050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050606060606060606060606060606060606060606061c1c1c1c1c1c1c1c301cf1
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959cd595959595959
-59595959595959595959ae060e0e0d0000060e0e0eae5959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959cd595959595959595959595959595930300505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505060659595959595959595959595930065959595959595959
-5959595930301c1c59595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595459595959595959ae060e0e0d00001c0e0e0ed7595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959cd59595959
-595959593030050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050506065959595959595959595959593006
-59595959595959595959595930301c2e5959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959ae060e0e0d0000060e0e
-0eae59595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959cd595959595959595959595959595959595959595959
-595959595959595959595959303005050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050606595959595959
-595959595959300659595959595959595959595930301c1c595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595959ae06
-0e0e0d00001c0e0e0ed75959595959595959595959595959595959595959545959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959cd59595959595959
-595959595959595959595959595959595959595930300505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-0606595959595959595959595959300659595959595959595959595930301c2e59595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959590559595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959ae060e0e0d0000060e0e0eae595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959543030050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050506065959595959595959595959593006595959595959595959595959
-30301c1c5959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959cd5959595959595959
-5959595959595459595959595959ae060e0e0d00001c0e0e0ed759595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595954595959595959595959595959
-59595959595959595959cd59595959595959595959595959595959595959595959595959
-303005050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050606595959595959595959595959300659595959
-595959595959595930301c2e595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959cd5959595959595959595959
-59595959595959595959595959595959595959595959ae060e0e0d0000060e0e0eae5959
-595959595959595959595959595959595959595954595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595930300505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505060659595959595959595959
-5959300659595959595959595959595930301c1c59595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595905595959595959
-595959595959595959595959595959595959595959595959595959595959ae060e0e0d00
-001c0e0e59d7595959545959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959cd59595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595930fa050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050506065959
-59595959595959595959301c59595959595959595959595930301c2e5959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595905595959595959
-59595959595959595959595959595959595959595959cd59595959595959595959595959
-5959ae060e0e0d0000060e0e0eae59595959595959595959595959591c1c1c1c1c1c1c1c
-1c1c1c595959595959595900005959590000590000595959595900005959595959595959
-595959595900005959590000595959595959595900005959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959303005050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505051c06595959595959595959595959300659595959595959595959595930301c1c
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595459595959595959ae060e0e0d00001c0e0e0ed75959595959595959595959595959
-1c1c061c06060606061ca959595959595959590000595959000059595959595959590000
-595959595959595959595959590000595959000059595959595959590000595959595959
-595959595959595959595959595954595959595959595959595959055959595959595959
-5959595959595959cd595959595959595959595959595959595959595959595930300505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-0505050505050505050505050606595959595959595959595959301c5959595959595959
-5959595930301cf159595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959ae060e0e0d0000060e0e0eae595959595959
-59595959595959591c065959595959595930305959595959595959000059595900005900
-005959000059000059590000000059595959595959000059595900005900005900005959
-000059590000590000590000595959000000005959000059590000595901015901015901
-015959595959595959595959595959595959595959595959595959595959595954595959
-595959593030050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050506065959595959595959595959593006
-59595959595959595959595930301c1c5959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959ae060e0e0d00001c0e0e
-0ed759595959595959595959595959590606595959595959593030595959595959595900
-005959590000590000590000590000005900005959000059595959595900005959590000
-590000005900005900005900005959000000590000590000595900005900005959000059
-590000590001015901015959595959595959595959595959595959595959595959cd5959
-595959595959595959595959303005050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050606303030303030
-303030303030301c30303030303030303030303030301c2e595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595959ae06
-0e0e0d0000060e0e0eae59595959595959595959595959591c0659595959595959303059
-595959595959590000000000000059000059000059590000590000595900005959595959
-590000595959000059000059590000590000000059595900005959000059000059590000
-595900005900005900005959000059590000595959595959595959595959595959595959
-595959595959595959595959595959595959595930300505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-0630303030303030303030303030303030303030303030303030303030301c1c59595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595954
-595959595959ae060e0e0d00001c0e0e59d75959595459595959595959595959061c5959
-595959595930fa5959595959595959000059595900005900005900005959000059000000
-000000595959595959000059595900005900005959000059000000005959590000595900
-005900005959000059590000590000590000595900005959000159595959595959595959
-59595959595959595959595959595959595959595959595959595959fa301c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c2e1c2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e
-2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e
-2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e1c1c1c
-1c1c1c1c1c1c06060606060606060606060606060606061c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1cf15959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959cd59595959595959595959595959595959
-5959595959595959595959595959ae060e0e0d0000060e0e0eae59595959595959595959
-595959590606595959595959593030595959595959595900005959590000590000590000
-595900005900005959595959595959595900005959590000590000595900005900005900
-005959000059590000590000595900005959000059000059000059590000595900005959
-595959595959595959595959595959595959595959595959595959595959595959595959
-301c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c2e1c1c2e1c1c2e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c0606060606060606060606060606060606060606060606060606
-060606060606060606061c1c595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959ae060e0e0d00001c0e0e0ed75959
-595959595959595959595959061c59595959595959303059595959595959590000595959
-000059000059000059000000590000595900005959595959595900005900005959000059
-590000590000595900005900005959000059000059590000595959000059590000595959
-0000595900015959595959595959595959595959cd595959595959595959595959595959
-545959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959055959590559595959595959595959595959595959595959595959595959
-595905595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959ae060e0e0d00
-00060e0e0eae595959595959595959595959595906065959595959595930305459595959
-595959000059595900005900005959000059000059590000000059595959595959590000
-000000595900005959000059000059595900000000595900005959000000005959595900
-005959000059595900005959000059595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959590559595905595959595959595959595959590559595959595959595959595959
-595959595959595959595959595905595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595459595959
-5959ae060e0e0d00001c0e0e0ed75959595959595959595959595959061c303030303030
-303030595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595905
-595959055959590559595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959cd59595959595959595959595959cd5959595959
-59595959595959595959ae060e0e0d0000060e0e0eae5959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595905595959595959595959055959595959
-590559595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959ae060e0e0d00001c0e0e59d7595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959cd5959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595905595959595959595905595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59fa30fa30fa30fa3030a930fa30fa30a93030a9595959595959ae060e0e0d0000060e0e
-0eae59595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595905595959595959595959595959595959
-5959595959595959593030303030303030303030303030303030301c595959595959ae06
-0e0e0d00001c0e0e0ed75959595459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959593030050505050505053005050505050505061c
-595959595959ae060e0e0d0000060e0e0eae595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959055959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595930300505050505051c3005
-0505050505051c06595959595959ae060e0e0d00001c0e2e59d759595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959590559595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959055959590559595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959303005
-05050505051c3030050505050505061c595959595959ae060e0e0d0000060e0e0eae5959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959303005050505051c1c30300505050505050606595959595959ae060e0e0d00
-001c0e0e0ed7595959595959595959595959595959595959595954595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959055959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595954595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595905595959595959595959595959
-595959595959595959595959055959595959595959595959595905595959595959595959
-59595959595959595959595959303005050505051c1c5930300505050505061c59595959
-5959ae060e0e0d0000060e0e0eae59595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959cd59595959595954595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595954
-595959595959595459595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959055959595959595959595959595959595959593030050505051c1c59593030050505
-05050606595959595959ae060e0e0d00001c0e0e0ed75959595959595959595959595959
-595954595959595954595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595459595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959545959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595905595959
-595959595959595959595959595959595959595959595959595959595930300505050506
-1c5959593030050505050606595959595959ae060e0e0d0000060e0e0eae595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5930300505051c1c595959593030050505050606595959595959ae060e0e0d00001c0e0e
-0ed759595459595959595959595959595959595959595959595459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959593030050505061c59595959593030050505061c595959595959ae06
-0e0e0d0000060e0e0eae5959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595954595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959303005051c0659595959595930300505050606
-595959595959ae060e0e0d00001c0e0e0ed7595959595959595959595959595959595959
-595959595959595954595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959545959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595930300505061c5959595959
-595930300505061c595959595959ae060e0e0d0000060e0e59ae59595959595959595959
-595959595959595959595959595959595959595459595959595959595959595959595954
-595959595959595959545959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959040459595959595959595959595904045959595904045959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959045959595959595959595959595959595904
-595959595959595959595959595959595959595959595959595959595959595959545959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959080559595959
-595959595959595959595908045959595959595959595959595959080459595959595959
-595959595959595959595959595959590559595959595959595959595959595959303005
-1c065959595959595959303005050606595959595959ae060e0e0d00001c0e0e0ed75959
-59595959595959595959590303595903030303590303030303590303590303cd03030359
-cd0303595903035903030303035903030359595959545959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959045959595959595959595959595904595959595904595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959590459595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959b354085959595959595959595959595959cd
-045959595959595959595959595959595959595959595959595959595959595959595959
-5959595959303005061c5959595959595959593030050606595959595959ae060e0e0d00
-00060e0e0eae5959595954595959595959595959035959035959037f59037f59037f0359
-7f59035959037f5903597f037f03597f59037f59037f5903595959595959595459595459
-595959595954595459595959545959595954595959595954595459545959595959595959
-595959595959595959595959595959595959595959595959595905595959590404cd0459
-590404cd0404595959595959595959040404595904040459595959040459595959590459
-595959590459595959595959595959595959595959595959595959595959595959595959
-545959595959595959595959595959595959595959595959595959595959595959595959
-595959595959590404590459590459040459595959040459595959040404595959040459
-595904045959595959595959595904040404590404590459595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959590804cd08545908540408545959590804cd
-595959080404cd59590404595959080459595959595959595959592d04595959590804cd
-5959590804cd595904590804595959080459595908540408045959595959595959595959
-5959595959595959595959595930301c0630303030303030303030303005060659595959
-5959ae060e0e0d00001c0e0e0ed759595959595959595959595959590359590359590303
-5903595903035959595903035903595903595903590359035903595903037f0359595459
-595959595959595954595459595959595959595959595459595959595459595959595959
-59545959595959595959595959595959cd59595959595959055959595959595959595959
-5959cd045904590459590459cd04595959595959595904595959597f0459590459590459
-5904595959cd0459595959cd045959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595904cd04590459cd04595904595904595904595904cd
-595959595959045959595959045959595959595959597f0459597f04cd04590459595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595954045904590454590454
-5904595904595408595904cd595959595959045959545905085959595959595959595959
-045959590459540859590459590459590454045959590459cd04592d590459cd59595959
-595959595959595959595905595959595959595959303006303030303030303030303030
-3030061c595959595959ae060e0e0d0000060e0e0eae595959595959595959595959597f
-03595903595903590303595903590359595903590303595903595903590359037f035959
-035903035959595959595959595959595959595959595959545959595959595959595959
-59595959595959595959595959595959595959cd59595959595959595959595959595959
-595959595959595959595904590459045959045959045959595959595959590404595959
-04cd59045959040404595959595904595959595904595959595959595959595959595959
-595959595959595959595954595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959045904590459590459cd045959
-040404cd595959040459595959cd0459595904040459595959595959595959047f595904
-59047f045959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595904
-7f0459045959045959045959040404b35959590404595959595904595959040404595959
-595959595959595904cd5959045959045959045959595959040459595959040404595959
-540459595959595959595959595959595959595959595959595959595930300505050505
-050505050505050505050606595959595959ae060e0e0d00001c0e0e0ed7595959595959
-595959595959595903595903595903595903595903595903595903595903595903595903
-595903590359595903595903595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595904cd045904595904595904595959595959
-5959cd59590459590459590459cd04595904595959590459595959590459595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959597f0459045904
-59590459590459cd045959045959595959045959595904595904cd5904595959595959cd
-595959045959040459047f04595959595959595959595959595959595459595959595959
-595959595905595959595959595959595959595959595959595959595959055959595959
-595959595959590459045904595904595904cd59045959045959595959045959cd590459
-590459590459595959595959595959590459595904595904545904595904597f04590459
-59cd04595904595959045959595959595959595959595959595959595959595959595959
-593030060606061c1c061c061c0606060606061c595959595959ae060e0e0d0000060e0e
-0eae595959595959595459595959595959030359590303595903590303037f5903030359
-5903597f5903035959590359035959030359590359595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959045904590404595904
-045959595959595959590404045959040404590404595904045959590404040404590404
-040404595959595959595959595959595959595959595459595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959590459047f0404040404590404595904045959590404047f59590404040404590404
-590459595959595959595959040459045904590404595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959590559
-595959595959595959595959595959047f04590404040404590404595904045959590404
-045959590404040404590404cd04595959595959595904040404047f5904045959595904
-04595904047f040459595904045959590404040459595959595959595959595959595959
-59595959595959595930301c06060606060606060606060606300606595959595959ae06
-0e0e0d00001c0e0e0ed7595959595959595959595959595959597f59597f5959597f5959
-59595959595959595959595959597f595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959cd59597f0459595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959545959595959595959595959595959595959595959590559595959595959590559
-5959595959595959595959595959595959595959595959595959597f597f595959595959
-5959cd595959cd59595959595959597f5959595959595959595959595959595959595959
-597f595959597f595959595959595959595959597f595959595959595959595959595959
-595959595959595959595959595959595930300606595959595959595959595930300606
-595959595959ae060e0e0d0000060e0e59ae595959595959595959595959595959595959
-595959595959595959595959597f59595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590404595959590404040404045959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959597f595959597f59595959595959
-5959595959595959597f5959595959595959590404040404045959595959595959595959
-595959595954595954595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959055959595959595959595959
-595959595959595959595959595959595959595959595959595959595959590404040404
-0459595959595959595959595959595959595959595959595959595959595959595959cd
-595959595959595959595959595959595959595959595959593030060659595959595959
-5959595930300606595959595959ae060e0e0d00001c0e0e0ed759595959595959595959
-597f59595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5905595959595959595959595959595959595959595959cd595959597f59595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959cd59595959595959cd5959595959595959595959cd59595959595959597f59595959
-597f59595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959cd5959cd59595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959303006
-0659595959595959595959593030061c595959595959ae060e0e0d0000060e0e0eae5959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595459595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959597f5959cd5959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595930300606595959595959595959595930300606595959595959ae060e0e0d00
-001c0e0e0ed7595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59cd59595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959cd595959595959595959595959595959595959595959595959595959
-5959595954595959595959595930300606595959595959595959592d3030060659595959
-5959ae060e0e0d0000060e0e0eae59595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959cd59595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959cd5959595959595959595959595959595959595959
-595959595959595959595959595959595459595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595954595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959545959303006065959595959595959595959
-30300606595959595959ae060e0e0d00001c0e0e59d75959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959cd5959595959595959595959595959595959
-595959595959595959595959595959595959595959055959590559595905595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959cd595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959055959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959055959595959595959595959595959595959593030061c595959
-595959595959592d3030061c595959595959ae060e0e0d0000060e0e0eae595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959cd595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959cd595959cd595959cd595959595959595959595959595959595959
-595959595959595959595959595959595959595959595905595959595959595959595959
-595959595905595959055959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5930300606595959595959595959595930300606595959595959ae060e0e0d00001c0e0e
-0ed759595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595905
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959cd595959cd595959595959595959595959595959cd5959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595905595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959592d3030061c595959595959595959592d30300606595959595959ae06
-0e0e0d0000060e0e0eae5959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959cd595959595959595959595959
-59595959595959595959595959595959cd5959595959cd59595959595959595959595959
-595959595959595959595959595905595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959cd595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595930300606595959595959595959595930300606
-595959595959ae060e0e0d00001c0e0e0e4f595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959cd595959cd595959cd595959cd595959cd595959595959cd595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959cd5959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959590559595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959cd595959595959595959595959595959595959595959cd
-59595959cd59595959595959cd5959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959592d3030061c59595959595959
-5959592d3030061c595959595959ae060e0e0d0000060e0e0eae59595959595959595959
-5959595959cd59595959595959595959595959595959595959595959595959595959cd59
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959cd59595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595954595959595959595959595959595959595959
-595959595959595959595959595959595959595905595959055959595959595959595959
-5959595959595959595959595959595959595959595959595959cd595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959303006
-06595959595959595959595930300606595959595959ae060e0e0d00001c0e0e0ed75959
-5959cd595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959cd59595959cd59595959
-59595959595959595959595959595959595959595959595959595959595959cd59595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959cd595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959cd595959595959595959595959595959595959595959595959595959
-595959592d3030061c595959595959595959592d30300606595959595959ae060e0e0d00
-00060e0e0eae595959595959595959595959595959595959595959595959595959595959
-595959595959cd5959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595905595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959cd59595959cd595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959cd59595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959055959
-595959595959595959595959593030060659595959595959595959593030060659595959
-5959ae060e0e0d00001c0e0e0e4f59595959595959595959595959595959595959595959
-59595959595959595959595959595959cd59595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959cd59595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595959cd59
-5959595959595959595959595959cd5959595959595959595959595959cd595959595959
-595959595959595959595959055959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959592d3030061c595959595959595959592d
-3030061c595959595959ae060e0e0d0000060e0e0eae5959595959595959595959595959
-59595959cd59595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595905595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959cd5959595959
-595959595959595959595959cd59595959595959595959595959595959cd595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959cd59595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959cd5959595959595959595959
-595959595959595959595959595959595959595959595959595959595930300606595959
-595959595959595930300606595959595959ae060e0e0d00001c0e0e0ed75959595959cd
-5959595959595959595959595959595959cd5959cd5959cd595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959cd5959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959cd59595959595959
-5959595959595959595959595959595959595959595959595959595959595959cd595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959cd59595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-2d3030061c595959595959595959592d30300606595959595959ae060e0e0d0000060e0e
-0eae59595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959cd595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959590559595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959cd5959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595930300606595959595959595959595930300606595959595959ae06
-0e0e0d00001c0e0e0ed75959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959cd59595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959595959595959cd
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595905595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959055959595959595959595959
-595959595959595459595959595959592d3030061c595959595959595959592d3030061c
-595959595959ae060e0e0d0000060e0e0eae595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959055959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595905595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959cd595959595959595959
-595959cd5959595959595959595959595959595959595959595959cd5959595959595959
-5959595959595959595959595959595959595959595959595930300606303030a9303030
-3030303030300606595959595959ae060e0e0d00001c0e0e0ed759595959595959cd5959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959cd5959595959595959595959595959595959cd5959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959590559
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959592d30301c
-30303030303030303030303030300606595959595959ae060e0e0d0000060e0e0eae5959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959cd59595959595959595959595959cd595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959590559595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959cd59595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595930300505050505050505050505050505050606595959595959ae060e0e0d00
-001c590e0ed7595959595959595959595959595959595959595959595903595959595959
-59595959595959595959595959595959595959cd59595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959cd5904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-5959595959595959595959595959595959cd595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959593030050505050505050505050505050505061c59595959
-5959ae060e0e0d0000060e0e0eae59595959595959595959595959595959595959595959
-59035959595959595959595959595959595959cd59595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959cd5959595959595959
-595959590559595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595904cd5959595959595959595959595959595959cd045959
-595959595959595959595959595959045959595959595959595959595959595959595959
-595959045959595959595959595959595959595959595959595959595959595905595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959055959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5904cd595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959303005050505050505050505050505
-05050606595959595959ae060e0e0d00001c0e0e0ed75959595959595959595959595959
-595959595959595959035959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959cd5959595959595959595959
-595959595904595959595959595959595959595959595904595959595959595959595959
-59595959595959595959cd04595959595959595959595959595959595959595959595959
-595959595959595959cd59595959595959595959595959595959595959595959cd045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595905595959595959595959cd595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595930300505050505
-05050505050505050505061c595959595959ae060e0e0d0000060e0e59ae595959595959
-595959595959cd5959595959595959595903595959595959595959cd5959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595905595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959590404045959040404045959040459595959045904040459040404045959
-595959595959590404595904045904045959040404045959590404595959045904040459
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959cd5959595959055959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959cd5959595959595904595959595959595959595959595959595959
-59595959595959595959595959595959595959cd59595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5930300505050505050505050505050505050606595959595959ae060e0e0d00001c2e0e
-0ed7595959595959595959595959595959595959595959597f0359595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959cd5959595959595904cd5959595959045959cd5959cd0459595959045959
-59cd5904cd5959595959595959590459590459cd0459cd0459595904cd59595904cd5904
-5959cd0459cd595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959055959595959590559595959595959595959595959595959
-5959595959595959cd5959595959595959595959595959cd590459595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595959cd59
-595959595959595959595959595959595959595959595959595959595959595959595459
-59595959595959595930300505050505050505050505050505050606595959595959ae06
-0e0e0d0000060e0e0eae5959595959595959595959595959595959595959595959035959
-59cd59595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595904045959595904595959590404
-04595959cd045959595959045959595959595959595904cd5904595904595904cd595904
-59595959040404cd59595904595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959590459595959cd595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-5959595959595959cd595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959055959590559595959
-595959595959595959595959595959595930300505050505050505050505050505050606
-595959595959ae060e0e0d00001c0e2e59d7595959595959595959595959595959595959
-595959595903595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959cd5959595959595959595959595959
-5959595959595959595959595959595959590559595959595959595959595959cd595959
-595959595959595959595959595959595904595959595959595959595959595959045959
-590459590404595904595959590459595959590459590459595959595959045959045959
-045959045959590459590459045959045959590459595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959cd04595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959cd045959595959595959595959595959595959595959595959595959cd595959
-595959595959595959595959595959595959cd5959595959595959595959595959595959
-595959595959595959595959595959595959595959595959543030050505050505050505
-050505050505061c595959595959ae060e0e0d0000060e0e0eae59595959595959595959
-5959595959595959595959595903cd595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595904040459595959590404595904045904595904040404595959590404595959595959
-595959040459595959040459045959590404cd5959040459595904040404595959590559
-595959595959595959595959595959595959595959595959595959595959595959595959
-5904595959595959595959595959595959595959595959595959595959595959cd595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959590559595959595959595959595959595959595959595959595959
-5959595959595959595959595904595959595959cd595959595959cd5959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595459595959303005
-05050505050505050505050505050606595959595959ae060e0e0d00001c0e0e0ed75959
-595959595959595959595959595959595959595959035959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959cd595959cd595959cd595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595959cd59
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959cd5959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959590559595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595930fa050505050505050505050505050505061c595959595959ae060e0e0d00
-00060e0e0ed7595959595959595959595959595959595959595959595903595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59cd595959cd595959595959595959595959595959595959590559595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959cd5959595959595959595959595959595959595959595959
-5959595959595959cd5959040404040404cd595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-5959595959595959cd595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959593030050505050505050505050505050505060659595959
-5959ae060e0e0d00001c0e0e0ed759595959595959595959595959595959595959595959
-5903595959595959595959595959595959595959595959595959595959cd5959cd5959cd
-5959cd5959cd595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959cd595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959cd5959cd5959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959cd5959
-595959595959595959cd5959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595905595959595959590559595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959303005050505050505050505050505
-0505061c595959595959ae060e0e0d0000060e0e0eae5959595959595959595959595959
-595959595959595959c8595959595959595959595959595959595959595959cd59595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595904595959595959595959cd59595959
-5959595959595959595959595959595959595959cd595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959595959cd045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959cd0459cd595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595930300505050505
-050505050505050505050606595959595959ae060e0e0d00001c0e0e59d7595959595959
-59595959595959595959595959595959590359595959595959595959595959595959cd59
-5959595959595959595959595959595959595959595959595959595959595959595959cd
-595959595905595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959cd04595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595901015959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595459595959595959595959
-5930fa050505050505050505050505050505061c595959595959ae060e0e0d0000060e0e
-0eae59595959595959595959595959595959595959595959590359595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959cd5959595959595959595959595959
-5904595959595959595959595959595959595959595959595959595959595959cd595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959590100010159595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595905595959055959595959
-595959595959595959590559595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-59595959cd59595959595959595959595959595959595959595959595959595959595959
-595959595959595959590559595959595959595959595959595959595959595959595959
-5959595959595959593030050505050505058d050505050505050606595959595959ae06
-0e0e0d00001c0e0e0e4f59595959595959cd595959595959595959595959595959035959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959055959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959cd595959595959
-5959cd5959595959595959595900000101010159cd045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959055959595959595959595959590559595959595959590559
-59595959cd5959595959595959595959cd59595959595959595959595959595959045959
-5959595959595959595959595959595959595959595959595959cd595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-54595959595959595959595959595959593030050505050505050505050505050505061c
-595959595959ae060e0e0d0000060e0e0ec8595959595959595959595959595959595959
-5959595959035959595959595959595959cd595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595901010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101000000000000000001010104595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959545959593030050505050505050505
-0505050505050606595959595959ae060e0e0d00001c0e0e0e4f59595959595959595959
-59cd5959595959595959595959c859595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595905595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-5959595959595959595959595959595959595c5959595959595c59595959595c59595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595900000000000059
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959540859595959595959595959595959595959595959595959
-595959595959595959595959595959cd5959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595930fa05
-0505050505050505050505050505061c595959595959ae060e0e0d0000060e0e0ed75959
-5959595959595959595959595959595959595959590359595959595959cd595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590000005959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959590559595959595959595959595959595959595959595959595959595959
-595959595959595959595959cd5959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590559595959595959595959595959595959055959595959595959595959595959595959
-595959595930300505050505050505050505050505050606595959595959ae060e0e0d00
-001c0e0e0ed7595959595959595959595959595959595959595959595903595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959cd595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595900005959595959595904595959595959595959595959595959595959
-595959595959595959595959595959590559595959595959595959595959595959595959
-595959590559595959595959595959595959595959595959595959595959595959595959
-5959cd595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959593030050505050505050505050505050505061c59595959
-5959ae060e0e0d0000060e0e0eae59595959595959595959595959595959595959595959
-590359595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959cd595959cd59595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595904cd595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595905595959595959595959055959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959590559595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959303005ef0505050505050505050505
-05050606595959595959ae060e0e0d00001c0e0e0ed75959595959595959595959595959
-595959595959595959c85959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959cd59595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959cd045959595959595959595959595959595959595959595959595959
-59595959595959595959595959cd59595959595959595959595959595959595959595959
-595959595959595959595959595959595954595959595959595959595930300505050505
-05050505050505050505061c595959595959ae060e0e0d0000060e0e59ae595959595959
-595959595959595959595959595959595903595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959055959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959cd5959595959595959595959595959045959cd595959595959595959595959595959
-59595959595959595959595959cd59595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595459
-5930300505050505050505050505050505050606595959595959ae060e0e0d00001c0e0e
-0ed759595959595959595959cd5959595959595959595959590359595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959055959595959595959595959595959595959
-59595959595959595959cd5959595959595959595959595959595959595959595959597f
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959590559595959
-595959595959595959590559595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-5959cd5959cd595959595959595959595959595959595959595959595959595959595959
-595959595959595959590559595959595959595959595959595959595959595959595959
-5959595959595959593030050505050505050505050505050505061c595959595959ae06
-0e0e0d0000060e0e0ed75959595959595959595959595959595959595959595959035959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959590559595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595905595959595905595959595959595905595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595930300505050505050505058d05050505050606
-595959595959ae060e0e0d00001c0e0e0ed7595959595959595959595959595959595959
-5959595959c8595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959cd59595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959cd590459cd59595959
-cd5959595959595959595959595959595959590559595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959055959595959595959595959cd59595959595959595959595959595959595959
-59595959590459595959cd5959595959595959595959595959cd59595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595930fa050505050505050505
-0505050505050606595959595959ae060e0e0d0000060e0e59ae59595959595959595959
-595959595959595959595959590359595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959055959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959597f0459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5904595959595959595959cd595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959cd59595959590459595959595959595959595959595959595959595959
-59cd59595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959545959303005
-05050505050505050505050505050606595959595959ae060e0e0d00001c0e0e0ed75959
-595959595959595959595959595959595959595959035959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595954085959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959545959595959
-59595959593030050505050505050505050505050505061c595959595959ae060e0e0d00
-00060e0e0eae595959595959595959595959595959595959595959595903595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-055959595959595959595959595959595959595959595959595959595959595959595905
-595959595905595959595959590559595959595905595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959593030050505050505050505050505050505060659595959
-5959ae060e0e0d00001c0e0e59d7595959595959595959cd595959595959595959595959
-59c859595959595959595959595959595959595959595959595959595959595959595959
-595959595905595959595959595959595959595959595959595959595959595959055959
-595959595959595959595959595959595959595959595959595959cd5959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959055959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595930fa05050505050505050505050505
-0505061c595959595959ae060e0e0d0000060e0e0ed75959595959595959595959595959
-595959595959595959035959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595905595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959597f045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595904cd59
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959590559595959595959595959595959595959595959595959595930300505050505
-050505050505050505050606595959595959ae060e0e0d00001c0e0e0ed7595959595959
-595959595959595959595959595959595903595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959cd5959595959595959
-cd5959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595905595959595959595959595959590559595959
-595905595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959590559595959595959595959595959595459595959595959595959595959595959
-593030050505050505050505050505050505061c595959595959ae060e0e0d0000060e0e
-0ed759595959595959595959595959595959595959595959590359595959595959595959
-595959595959595959595959595959595959595959590559595959595959595959595959
-595959595905595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959045959595959590459595959590404595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959055959595959595959595959595959595959595905595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959cd0459595959595959595959
-5959595959595959595959595959595959cd595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595930300505050505050505050505050505050606595959595959ae06
-0e0e0d00001c0e0e0e4f5959595959595959595959595959595959595959595959c85959
-595959595959595959595959055959595959595959595959590559595959595959595959
-595959595959595959595959595959595959595959595959595959595905595959595959
-5959595959595959595959cd595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595904595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595954085959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595905595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595930fa050505050505050505050505050505061c
-595959595959ae060e0e0d0000060e0e0eae595959595959595959595959595959595959
-595959595903595959595959595959595959595959595959055959590559595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959597f04595959595959595959595904590404595959
-590404595904590459040459595959595959040404045959590404595959590404045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595905595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959cd595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959590559595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959593030050505050505050505
-0505050505050606595959595959ae060e0e0d00001c0e0e0ed759595959595959595959
-59595959595959595959595959c859595959595959595905595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-59590459cd04595904595904590459045904595959595959595959045959595959590459
-595904595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959590559595959595905595959595959
-05595959595959595959595905595959595959595959cd59595959595959595959595959
-5959595959595959595959595904595959595959595959cd595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595954595959595959595959303005
-0505050505050505050505050505061c595959595959ae060e0e0d0000060e0e0ed75959
-5959595959595959cd595959595959595959595959035959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959055959595959595959595959
-5959595959595959595959595959595959595959cd595959595959595959595959045959
-595959595959595959590459590459590404047f59045904590459595959595959595904
-595959595959045959590459590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595905595959595959595959595959595959590559595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959cd595959595959595959595959595959595904cd59595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959593030050505050505c005050505050505050606595959595959ae060e0e0d00
-001c0e0e2e4f5959595959595959595959595959595959595959595959c8595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595905595959595905595959595959595959
-59595959595959595959595959595959595959cd59595959595959595959595959595959
-595959595904595959595959595959595959045959047f59045959045959047f04595959
-595959595959590459590459597f04595959045959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959cd04595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959cd5959595959595959595959595908595959595959
-5959595959595959cd595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595930fa050505050505050505050505050505061c59595959
-5959ae060e0e0d0000060e0e0eae59595959595959595959595959595959595959595959
-590359595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590559595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959cd0459595959595959595959590404045904045959040459
-5959045904595959595959597f59595904047f5904040404047f590404cd045959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959590559595959
-595959595959595959595959590559595959595905595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959303005050505050505050505050505
-05050606595959595959ae060e0e0d00001c0e590ed75959595959595959595959595959
-5959595959595959590d59cd595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959cd595959595959595959045959cd5959595959595959597f59
-59595959595959597f59595959595959595959595959597f59595959595959cd59595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590559595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959cd595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595954595959595959595959595959595959595930300505050505
-05050505050505050505061c595959595959ae060e0e0d0000060e0e0ed7595959595959
-595959595959595959595959595959595903595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590559595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-cd5959595959595959595959597f59595959595959595904040404040459595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959cd595959595959
-595959595904cd5959595959595959595959595959595959595959590559595959595959
-595959595959595959595959595959595905595959595959595959595959595959595959
-595959590559595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595954595959595959
-5930300505050505050505050505050505050606595959595959ae060e0e0d00001c0e0e
-0e4f59595959595959595959595959595959595959595959590359595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595905595959595905595959595959595959595959
-59595959cd59595959595959595959595959595959595959595959595959595959595959
-59045959595959595959595959595959595959595959595959597f5959597f597f597f59
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959cd595959cd595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959590559595959
-595959595959595959595959595959595959595959595959055959595959595959595959
-595959595959595959595959595959595959595959595959cd0459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595930fa050505050505050505050505050505061c595959595959ae06
-0e0e0d0000060e0e0ec85959595959595959595959595959595959595959595959035959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959590559595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959cd59595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959cd595959cd595959cd595959cd595959cd5959595959595959595959
-5959595959595959595959595959595959595959590459595959cd595959595959595959
-595959595959595959595959595959595959595959595905595959595959595959595959
-595959595959595959590559595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959595959590459cd
-595959595959595959595959595959595959595959055959595959595959595959595959
-595959595959595959595905595959595959595959595959595959595959595959595959
-595959595959595959595959595959595930300505050505050505050505050505050606
-595959595959ae060e0e0d00001c0e0e0e4f595959595959595959595959595959595959
-5959595959c8595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959055959595959595959595959595959cd59595959595959595959595959
-595959595959595959595959595959597f04595959595959590000595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-cd5959595959595959595959595959595959595959595959595959595408595959595959
-595959595959595959595959595959595959595959595959595959595959595959590559
-595959595959595959595959595959595959595959055959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595905595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959593030050505050505050505
-050505050505061c595959595959ae060e0e0d0000060e0e0eef59595959595959595959
-595959595959595959595959590359595959595959595959595959595959595959595959
-595959595959595959595959595959055959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959010000005959
-595959597f59595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959cd595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959590559595959595959595959595959
-055959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959055959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959303005
-05050505050505050505050505050606595959595959ae060e0e0d00001c2e590e4f5959
-595959595959595959595959595959595959595959c85959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595905595959595905595959595959595959595959595959595959595959
-59595959595959595959cd59595959595959595959595959595959595959595959045959
-000000000000595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595905595959595959595959595959
-595959595959595959595959595959595905595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959cd5959595959595959595959
-595959595959cd5959595959595959595959595954085959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595905595959595959595959595959595959595959595959545959595959595959545959
-595959595930fa050505050505050505050505050505061c595959595959ae060e0e0d00
-00060e0e0ed759595959595959cd59595959595959595959595959595903595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595900000000000000000000000000000000000000000000010000010000010000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000100010000010001000100010001000100010000010000010001010000010001010101
-010101010101010101010101010100000004595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959055959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959055959595959595959595959595959595959595959595959595959
-595959595959595959595959595959055959595959590559595959595959595959595959
-595959595959595959595959593030050505050505050505050505050505060659595959
-5959ae060e0e0d00001c0e0e0ed759595959595959595959595959595959595959595959
-590d59595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959055959595959595959595959595959595905
-5959595905595959595959595959595959595959595959595959595959cd595959595959
-595959595959595959595959590459590000000000595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959055959595959595959595959595905
-595959590559595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959303005050505050505050505050505
-0505061c595959595959ae060e0e0d0000060e0e0eae5959595959595959595959595959
-595959595959595959035959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959590559595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595900000000595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595904cd59595959595905595959595959595959595959595959595959
-595959595959595959595959055959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595930300505050505
-050505050505050505050606595959595959ae060e0e0d00001c0e0e0e4f595959595959
-5959595959595959595959595959595959c8595959595959595959595959595959595959
-595959595959595959590559595959595959595959595959595959595959595959595959
-0559595959590559595959595959595959595959595959595959595959595959595959cd
-595959595959595959595959595959595959595959595959595959595904595959595959
-590000595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959590559595959595959595959595959595959595959595959055959595959
-5959595959595959595959595959595959595959595959cd595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595905595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595954595959595959
-5930fa050505050505050505050505050505061c595959595959ae060e0e0d0000060e0e
-0eef59595959595959595959595959595959595959595959590359595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959590559595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595904cd595959595959590559595959595959595959595959
-595959595959595959595959055959595959595959595959595959595959055959595905
-595959595959595959055959595905595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959055959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595930300505050505050505050505050505050606595959595959ae06
-0e0e0d00001c2e590e4f59595959595959595959595959595959595959595959590d5959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959590559595959595959595959595959595959595959595959595959595959595959
-590559595959595959595959595959595959595959595959595959595959cd5959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959592d085959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959055959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595954085959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959593030050505050505050505050505050505061c
-595959595959ae060e0e0d0000060e0e0eae595959595959595959595959595959595959
-595959595903595959595959595959595959595959595959595959055959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959055959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595905595959595959595959595959595959
-595959595959595959595959595959595959595959055959595959595959595959595959
-595959595959595959595959595959cd5959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595905595959595959595959595959595959595959595959595959
-595959595959595959595459595959595959595954595959593030050505050505050505
-8d05050505050606595959595959ae060e0e0d00001c0e0e0ed759595959595959595959
-59595959595959595959595959c859595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959055959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959055959595959
-595959590559595959595959055959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959cd5959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595930fa05
-0505050505050505050505050505061c595959595959ae060e0e0d0000060e0e0ed75959
-595959595959595959595959595959595959595959035959595959595959595959595959
-055959595959595959595959595959595959595959595959595959595959590559595959
-595959595959595959590559595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595904cd59595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959590559595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959cd59595959595959595904cd59595959595959595959595959
-595959595959595959595959595959055959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595930300505050505050505050505050505050606595959595959ae060e0e0d00
-001c2e592e4f5959595959cd5959595959595959595959595959595959c8595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959590559595959595959595959595959595959595959595905595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959597f595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959590559595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595905595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959593030050505050505050505050505050505061c59595959
-5959ae060e0e0d0000060e0e0eae59595959595959595959595959595959595959595959
-590359595959595959590559595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959055959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959055959595959595959055959595959595959595959595959
-595959055959595959595959590559595959595959595959595959055959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959590559595959595959595959
-595959595959595959595959595959595959595959595959595959595959055959595959
-595959595959595959595959595959595959595959303005050505050505050505050505
-05050606595959595959ae060e0e0d00001c0e0e0ed75959595959595959595959595959
-595959595959595959c85959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959cd5959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959545959595959595959592d085959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590559595959595959595959595959595959595959595959595959595905595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595954085959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595930fa0505050505
-05050505050505050505061c595959595959ae060e0e0d0000060e0e0ed7595959595959
-595959595959595959595959595959595903595959595959595959595959595959595959
-595959595959595959595959595959595959590559595959595959590559595959590559
-595959595905595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595905595959595959595959595959cd59595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595905595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5930300505050505050505050505050505050606595959595959ae060e0e0d00001c0e0e
-0ed75959595959595959595959595959595959595959595959c859595959595959595959
-595959595959595959595959055959595959595959595959595959595959055959595959
-595959595959595959595959595959595959595905595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595459
-595959595959595959595959590459595959595959595959595959595959055959595959
-595959595959595959595905595959595959595959055959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595905595959595959595959595959595959595959590559595959595959
-595959595959595905595959595959595959595959595959595959595959595959595959
-5959595459595959593030050505050505050505050505050505061c595959595959ae06
-0e0e0d0000060e0e0eae5959595959595959595959595959595959595959595959035959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959055959
-595959055959595959595959595959595959595959595959595959595959595959595959
-595959597f59595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595904cd59595959595959595959595959
-595959595959595959590559595959595959595959595959595959595959595959595959
-055959595905595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959055959595959595959590559595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595930300505050505050505050505050505050606
-595959595959ae060e0e0d00001c0e0e0e4f595959595959595959595959595959595959
-5959595959c8595959595959595959595959595959595959595959595959595959595959
-590559595959595959595959595959595959595959595905595959595959595959595959
-595959595959595959595959595959595959595959cd59595959595959cd595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595954
-595959545954595954595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959055959595959595959595959595959
-595959595959595959595959595959595959595959595959595905595959595959595959
-59595959595959595959595959595959595959595959595959595959595959cd59595959
-59595959cd04595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5905595959595959595959595959595959595959595959595930fa050505050505050505
-050505050505061c595959595959ae060e0e0d0000060e0e0eae59595959595959595959
-595959595959595959595959590359595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595905595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959045959595959595959595959595959595959595959595959595959595959595959
-595959590459595959045959595959595959595959595959595959040459595959595959
-59595954595959040459595959595959595959595959595959595959cd59595959595959
-590459595959595959595959595905595959595959055959595959595959595959595959
-595905595959595959595959055959595959595959595959590559595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595905595959595959595959
-595959595959595959595959595959595959590559595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959303005
-05050505050505050505050505050606595959595959ae060e0e0d00001c0e0e0ed75959
-595959595959595959595959595959595959595959c85959595959595959595959595959
-595959595959595959595959595959595959595959595959595959590559595959055959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959cd59595959595959597f045959
-595959595959595959595904595959595959595959595959595959595959595959595959
-59595959595959595959595959595959590459595959595959595459595954595459597f
-045954595954595959595959595959590459595959595959595959595959595959595959
-595959595959595954085959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-055959595959595959590559595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595954085959590559595959595959595959
-595959595959595959595959595905595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595954
-59595959593030050505050505050505050505050505061c595959595959ae060e0e0d00
-00060e0e0ed7595959595959595959595959595959595959595959595903595959595959
-595959595959055959595959595959595959595959595959595959590559595959595959
-595959595959595959595959595905595959595959595905595959595959055959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5459595959047f5959595959595959595959040404045959045904040404045904045959
-595959595904590459040459045904040459590404595959040404045959590404595959
-595959595959595904595959590404595959590404595959045904045959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959055959595959595959595905595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959590559595959595905595959595959595959590559595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595930300505050505050505058d0505050505060659595959
-5959ae060e0e0d00001c2e592e4f59595959595959595959595959595959595959595959
-590559595959595959595959595959595959595959595959595959590559595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959045959595959595959595959597f04597f59597f04597f
-597f04597f0459595959595959045904590459597f0459597f59597f045959597f04597f
-5959047f5904595959595959595959590459595904595904595904595904595904590459
-595959595959595959595959595959595959595959595959590459595905595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595905595959595959595959595959595959595959595959595959595959595959
-59595959595959595959cd5959595959595959cd59595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595905
-59595959595959595959595959595959595959595930fa05050505050505050505050505
-0505061c595959595959ae060e0e0d0000060e0e0eae5959595959595959595959595959
-595959595959595959035959595959595959595959595959595959595959595959595959
-595959595959595959595959055959595959595959595959055959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959cd59595959595959595959595959595959045959595959595959595959595904
-59595959590459595959045959045959595959597f047f047f0459595904595959595959
-0459595959045959595904040459595959595959595959590459595904597f0459590459
-7f59597f0404595959595959595959595959595959595959595959595959595959045959
-595959595959595959595905595959595959055959595959595959595959595959590559
-595959595959595959595959595959595959595959595959595959055959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959590559595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595459595959595959595959595930300505050505
-050505050505050505050606595959595959ae060e0e0d00001c0e0e0ed7595959595959
-5959595959595959595959595959595959c8595959595959595959595959595959595959
-595959595959595959590559595959595959595959595959595959595959595959595959
-595959595905595959595959055959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959597f04595959595959
-5959595959597f045959045959045959595904597f045959595959595959045904595959
-5904595959595959045959597f0459590459045959045959595959595959595904595959
-045959045959045959045959047f04595959595959595959595959595959595959595959
-595959cd5904595959595959590559595959595959595959595959595959055959595959
-595959595959595959595959595959595959595959595959595905595959595959595959
-595905595959595959055959595959595959595959595959595959595959595959595959
-595959595959595959595959595959cd5904595959595959055959595959595959595905
-595959595905595959595959595959595905595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-593030050505050505050505050505050505061c595959595959ae060e0e0d0000060e0e
-0eae59595959595959595959595959595959595959595959590359595959595959595959
-595959595959595959595959595959595959595959595959055959595959595905595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959590404595904040404595959040459595959595959
-5959047f0459595904040404595904040404045959590404597f59040459595959595959
-595904040404045959040459595959040459590404590404595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595905595959595959595959595905595959590559595959595959595959
-595959595959595959595959595959595959595959595959595959055959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959055959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595459595930300505050505050505050505050505050606595959595959ae06
-0e0e0d00001c0e0e59d75905595959595959595959595959595959595959595959c85959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959055959595959595905595959595959595959595959595959595905595959
-595905595959595959595959cd5959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959597f59597f597f5959595904
-7f5959595959595959595959595959597f597f595959597f597f59595959595959595959
-7f595959595959595959597f597f595959597f5959595959595959595959595959595959
-595959595959595959595959595959595959595954085959595959595959595959595959
-055959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959055959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595954085959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959055959595959595959595959595959595959055959
-595959595959595959595959595959595930fa050505050505050505050505050505061c
-595959595959ae060e0e0d0000060e0e0eef595959595959595959595959595959595959
-595959595903595959595959595959595959595959595959595905595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959cd595959595959
-595959595959595959595959595959597f04595959595959595959595959595959595959
-595959595904045959595904040404040459595959595959595959595959595959595959
-595959595959595959595904040404040459595959595959595959595959595959595959
-5959595959595959cd595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595905595959
-595959595959595959055959595959595959595959595959595959595905595959595959
-055959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595905595959595959590559595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959593030050505050505050505
-0505050505050606595959595959ae060e0e0d00001c0e2e59d759595959595959595959
-595959595959595959595959590559595959595959595959595959595959595959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-595959055959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-59595959595959595959595959597f5959595959597f59597f5959595959595959595959
-59595959595959595959595959595959595959595959597f595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959590559595959595959595959595959595905595959595959590559
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59cd59595959595959595959590459595959595959590559595959595959055959595959
-595959595959595905595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959303005
-0505050505050505050505050505061c595959595959ae060e0e0d0000060e0e0eae5959
-595959595959595959595959595959595959595959035959595959595959595959595959
-595959595959595959595959595959595959595959590559595959595959595959055959
-595959595905595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595904cd59595959595959595959595959595959055959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-055959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595904cd59595959595959595959595959
-595959595959595905595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595930300505050505050505050505050505050606595959595959ae060e0e0d00
-001c0e0e0ed75959595959595959595959595959595959595959595959c8595959595959
-595959595959595905595959595959590559595959595959595959595959595959595959
-595959595959595959595959595959595959595959595905595959595905595959595959
-5959595959595959595959cd595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959cd595959595959595959
-595959595959595959595959595959595408595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959055959595959595959
-055959595959595959595905595959595959055959595959595959595959595959595959
-59cd59595959595959595959595959595959595901015959595959595408595959595959
-595959590559595959595959595959595959595959595959595905595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595930fa050505050505050505050505050505061c59595959
-5959ae060e0e0d0000060e0e0eae59595959595959595959595959595959595959595959
-590359595959595959595959595959595959595959595959595959595959595959055959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-595959595959595959595959cd0459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959cd59595959cd595959595959595959590459595959595959595959
-595905595959595959595959595959595905595959595959595959595959055959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959cd59595959595959590000000159595959
-590459595959595959595959595959595959595959595959595959590559595959595959
-595959595905595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959303005050505050505050505050505
-05050606595959595959ae060e0e0d00001c0e0e0e4f5959595959595959595959595959
-595959595959595959c85959590559595959595959595959595959595959595959595959
-595959595959595959595959595959055959595959595905595959595959590559595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959cd59595959cd595959595959595959045959cd5959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959597f5959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959055959595959595959595959595905595959
-595959595959595959590559595959595959055959595959595959595959595959595959
-595959595959595959595959595959595959595959cd5959595959595959595959595959
-590000000000005959045959595959595959595959595959595905595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959545959595930300505050505
-05050505050505050505061c595959595959ae060e0e0d0000060e0e0eae595959595959
-595959595959595959595959595959595903595959595959595959055959595959595905
-595959595959595905595959595959595959595905595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595900000001000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000100010001000001000100010101000101010001000100
-000000000001010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010100000000000000000000000004595959595959595959595959595959595959
-595959590559595959595959595959595905595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5930300505050505050505050505050505050606595959595959ae060e0e0d00001c0e0e
-0ed759595959595959595959595959595959595959595959590559595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595905595959595905595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959045c59f9595cf95cf95cf95cf95cf95cf95cf9590e0ef9
-5cf95cf95cf95cf959f1590e0ef95cf95cf95cf95cf959f1590e0ef95cf959f1590e0e5c
-f95cf95cf95cf95cf95cf95cf95cf95cf95cf95cf95cf95cf95cf959f959f9595c59f959
-5c595c595959595959595959595959595900000000000059590459595959595959595905
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959590559595959595959595959595959595959595959595959595959595959
-59595959595959595930fa050505050505050505050505050505061c595959595959ae06
-0e0e0d0000060e0e0eae5959595959595959595959595959595959595959595959035959
-595959595959595959595959595959595959590559595959595959595959590559595959
-595959595959055959595959595905595959595959595959595959595959595959055959
-5959595959595959595959595959595959595959595959cd595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959000000595959595904cd59
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595930300505050505050505058d05050505050606
-595959595959ae060e0e0d00001c0e590e4f595959595959595959595959595959595959
-5959595959c8595959595959595959595905595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595905595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595900005959
-595959595908595959595959595959595959595959590559595959595959595959595905
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595905595959595959595959595959595959595959593030050505050505050505
-050505050505061c595959595959ae060e0e0d0000060e2e0eae59595959595959595959
-595959595959595959595959590359595959595959595959595959595959595959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959540459595959595959595959595959055959595959595959
-595959055959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959303005
-05050505050505050505050505050606595959595959ae060e0e0d00001c0e0e0e4f5959
-595959595959595959595959595959595959595959c85959595959595959595959595959
-590559595959595959595959595959595959595959595959595959595959595905595959
-595959595905595959595905595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959cd5959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959545959595959595959
-545959595930fa050505050505050505050505050505061c595959595959ae060e0e0d00
-00060e0e0eef595959595959595959595959595959595959595959595903595959595959
-595959595959595959595959595959590559595959595959595959595959590559595959
-595959595959595959595959595959595959595959595959055959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595905595959595959595959590559595959595959595959595905595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959593030050505050505050505050505050505060659595959
-5959ae060e0e0d00001c0e0e0e4f59595959595959595959595959595959595959595959
-590559595959595905595959595959595959595959595959595959595959595959595959
-595959595959055959595959595959055959595959595959595959595959595959595959
-595959590559595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-540859595959595959595959595959595959595959595959595959595959595959595959
-595905595959595959595959595959595959595905595959595959595959595959595959
-595959595959595959595959595959595959595959303005050505050505050505050505
-0505061c595959595959ae060e0e0d0000060e0e0eae5959595959595959595959595959
-595959595959595959035959595959595959595959595959595959590559595959595959
-595959055959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959592d045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959055959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595930300505050505
-050505050505050505050606595959595959ae060e0e0d00001c0e0e0e4f595959595959
-5959595959595959595959595959595959c8595959595959595959595905595959595959
-595959595959595959595959590559595959595959595959595959595959595959595959
-595905595959595959595959595905595959595959595959595959595905595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959597f04595959595959595959595959595959595959
-595959595959595905595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595954595959
-5930fa050505050505050505050505050505061c595959595959ae060e0e0d0000060e0e
-0eae59595959595959595959595959595959595959595959590359595959595959595959
-595959595959595959595959595905595959595959595959595959595959595959595959
-595959595959590559595959595959055959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595905595959595959055959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595930300505050505050505050505050505050606595959595959ae06
-0e0e0d00001c2e592e4f5959595959595959595959595959595959595959595959c85959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595905595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959cd59595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595954085959
-055959595959595959595959595959595959595959595959595959595905595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959593030050505050505050505050505050505061c
-595959595959ae060e0e0d0000060e0e0eae595959590559595959595959595959595959
-595959595903595959595959595959595959590559595959595959595959595959595959
-595959590559595959055959595959595959055959595959595959595959595959595959
-595959595959590559595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959055959595959595959595959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959593030050505050505050505
-0505050505050606595959595959ae060e0e0d00001c0e0e0ed759595959595959595959
-595959595959595959595959590559595959595959055959595959595959595905595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595905595959595959595959595959595959595959595959595959595959595959
-595959cd5959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959055959595959595959595959595959
-590559595959595959595959595959595959595959595959595959595959595959595959
-59595905595959595959595959595959595959595459595959595959595959595930fa05
-0505050505050505050505050505061c595959595959ae060e0e0d0000060e0e0eae5959
-595959595959595959595959595959595959595959035959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959055959595959595959595959595959595959
-595959595959595959595959595959595959595959595959cd5959597f59595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959597f045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595930300505050505050505050505050505050606595959595959ae060e0e0d00
-001c0e2e59d75959595959595959595959595959595959595959595959c8595959595959
-595959595959595959595959595959590559595959055959595959595959595959595959
-595959595959595959595959595959055959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959597f5904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959545959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595459595959595959595959595408595959595959
-595959595959595959595959595959595959595959590559595959595959595959595959
-595959595959595959595959055959595959595959595959595959595959055959595959
-595959595959595954595959593030050505050505050505050505050505061c59595959
-5959ae060e0e0d0000060e0e0eae59595959595959595959595959595959595959595959
-590359595959595959595959595959590559595959595959595959595959595959595959
-595905595959595905595959595959595959055959595959595959595959595959595959
-595959055959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959047f595959595959595959595959595959595959595959
-595959595959595959595959595959045959595959595959595959590404595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595459595459595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-2d0459595959595959595959055959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595930300505050505050505058d050505
-05050606595959595959ae060e0e0d00001c592e59d75959595959595959595959595959
-595959595959595959c85959595959590559595959595959595959595959595959595959
-595959590559595959595959595959595959590559595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959597f04595959595959595959595959
-7f0459595959595959595959595959595959595959595959595959595959595959545959
-59545959595959595959595959595959595954595959595959595959595959597f045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959590559595959595959595959595959
-595959595959590559595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595930fa0505050505
-05050505050505050505061c595959595959ae060e0e0d0000060e0e0eae595959595959
-595959595959595959595959595959595903595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959545959595904595959595959
-595959595959590404590459045904040459040459595904590404595959040404045959
-590404595959590404045959595959595959595959595959595959595959595959595459
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-545959595959595959595959595959595904595959595959595959595959595959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5930300505050505050505050505050505050606595959595959ae060e0e0d00001c0e0e
-0ed759595959595959595959595959595959595959595959590559595959595959590559
-595959595959595905595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959590559595959055959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-7f0459595954595959595459597f04597f047f597f04597f597f597f0459597f04597f04
-59597f047f59597f04597f04595904597f04595959595959545959595459595954595959
-545959545959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959597f0459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959540859595959595959595959
-595959595905595959595959595959595959595959595959590559595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959593030050505050505050505050505050505061c595959595959ae06
-0e0e0d0000060e0e0eae5959595959595959595959595959595959595959595959035959
-595959595959595959595959595959595959595959055959595959595959595959595959
-595959595959595959590559595959590559595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959590459590459595904595959590404
-0459595904595904595959045959595904040459597f0459590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959592d045959
-595959595959595959595959595959595959595959595959595905595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595930300505050505050505050505050505050606
-595959595959ae060e0e0d00001c0e0e0e4f595959055959595959595959595959595959
-5959595959c8595959595959595959595905595959595959595959595959595959595959
-595905595959590559595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595905595959cd59595959595959cd5959595959
-595959595959595959595959595959595904595959595959595959595959045959045959
-590459595904597f0459597f04595904595959045959045904597f045959045959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959055959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959545959595930fa050505050505050505
-050505050505061c595959595959ae060e0e0d0000060e0e0eef59595959595959595959
-595959595959595959595959590359595959595959595959595959595959595959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-595959595959595959595905595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959040404595904040404595904045904590404047f0404597f590404597f59040459
-595959040459045959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5904cd595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959303005
-05050505050505050505050505050606595959595959ae060e0e0d00001c0e0e59d75959
-595959595959595959595959595959595959595959c85959595959595959595959595959
-055959595959595959595959595959595959595959595959595959590559595959595959
-595959595959595959595905595959595959595959055959595959595959595959595959
-595959595959595959595959595959cd5959595959595959595959595959595959045959
-5959595959595959595959597f0459597f597f595959597f595959595959595959595959
-5959595959595959595959597f59cd595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959595959595959cd
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595954085959055959595905595959595959
-595959595959595905595959595905595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959593030050505050505050505050505050505061c595959595959ae060e0e0d00
-00060e0e0eae595959595959595905595959595959595959595959595903595959595959
-595959595959595959595959590559595959595959595959595959595959595959595959
-595959595959055959595959590559595959595959595959595959595959595959595959
-055959595959595959595959595959595959595959595959595959595959595959595959
-595959597f04595959595959595959595959040404595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959cd595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959592d04595959595959
-595959595959590559595959595959595959595959595959595959590559595959595959
-595959055959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959593030050505050505050505050505050505060659595959
-5959ae060e0e0d00001c0e0e0ed759595959595959595959595959595959595959595959
-590559595959595959595959595959595959595959595959055959595959595959595959
-595959595959595959595959595959595959595959595959595959595905595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595904595959595959595959595959597f5959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959cd5959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959cd595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595905595959595959595959595959595959595959595959595959590559595959595959
-59595959595959595959595959595959545959595930fa05050505050505050505050505
-0505061c595959595959ae060e0e0d0000060e0e0eae5959595959595959595959595959
-595959595959595959035959595959595959595959595959595959595959595959595959
-595959595905595959590559595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-5959595959cd595959cd5959595959cd59595959cd595959595959595959cd595959cd59
-5959cd595959cd5959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595930300505050505
-050505050505050505050606595959595959ae060e0e0d00001c0e0e0ed7595959595959
-5959595959595959595959595959595959c8595959595959595959055959595959595959
-595959595959595959595959595959595959595959595959055959595959590559595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-590000595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904cd595959595959595959595959595959595959595959595959595959cd59
-5959595959595959595959595959595959595959cd5959cd5959cd5959cd5959cd595959
-cd59595959595959595959595959595959595959595959cd595959595959595959595959
-595959595959595959595959595959595408595959595959590559595959595959595959
-055959595959595959590559595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959055959595959595959595959595959595959
-593030050505050505050505050505050505061c595959595959ae060e0e0d0000060e0e
-0eae59595959595959595959595959595959595959595959590359595959595959595959
-595959590559595959595959595959055959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959000000005959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959cd59595959595959595959595959595959595959595959cd59
-59595959595959cd595959cd5959595959595959595959592d0459595959595959595959
-595959590559595959595959590559595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595930300505050505050505058d05050505050606595959595959ae06
-0e0e0d00001c0e0e0e4f5959595959595959595959595959595959595959595959c85959
-595959595959595959595959595959595959595959595959595959595959595959590559
-595959595959595959595959595959595959055959595959595905595959590559595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959597f59045959000000000000595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959cd595959595959cd595959cd5959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959cd59595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595905595959595959595959595959595959595959595959595959
-595959595459595959595959595959595930fa050505050505050505050505050505061c
-595959595959ae060e0e0d0000060e0e0eef595959595959595959595959595959595959
-595959595903595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959590559595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595900000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000001010000000000
-010100000101000000000000010000000100000100000100000000010000010001010101
-010101010101000101010100010101010001000100010101010100010101000101010001
-010100010001000101010101010101010101010101010101010101010100010000010000
-010000000100000100010001000100000001010000000100010000010000000000000000
-000000000004cd5959595959595959590559595959595959595959595959595959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959593030050505050505050505
-0505050505050606595959595959ae060e0e0d00001c2e590e4f59595959595959595959
-595959595959595959595959590559595959590559595959595959595959595959055959
-595959595959595905595959595959595959595959590559595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959cd5959595959595959cd59595959595959590459590000000000595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595905595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595459595959303005
-0505050505050505050505050505061c595959595959ae060e0e0d0000060e0e0eae5959
-595959595959595959595959595959595959595959c85959595959595959595905595959
-590559595959595959595905595959595959595959595959590559595959595959595959
-595959595959595959055959595959595959595959595959595959595959595959590559
-595959595959595959595959595959595959595959595959595959595959595959045959
-595900000000595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959055959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595930300505050505050505050505050505050606595959595959ae060e0e0d00
-001c0e0e0ed75959595959595959595959595959595959595959595959c8595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959590559595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959590000595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595408595959595959
-595959595959595959595959595959595959055959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595930fa050505050505050505050505050505061c59595959
-5959ae060e0e0d0000060e0e0ed759595959595959595959595959595959595959595959
-590359595959595959595959595959595959595959595959595959595959595959595959
-055959595959595959595959595959595959595959595959595959595905595959590559
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959055959595959595959595959595959595959
-595959595959595959595959595959595959595959303005050505050505050505050505
-05050606595959595959ae060e0e0d00001c2e592e4f5959595959595905595959595959
-595959595959595959c85959595959595959595959595959595959595905595959595959
-595959595959595959595959595959595959595959595959595959055959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959055959595959590559595959595959
-055959595959055959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595930300505050505
-05050505050505050505061c595959595959ae060e0e0d0000060e0e0eae595959595959
-595959595959595959595959595959595903595959595959595959595959595959595959
-595959595959595905595959595959595959595959595959595959595959590559595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959cd59595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959590559595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5930300505050505050505050505050505050606595959595959ae060e0e0d00001c0e0e
-0ed759595959595959595959595959595959595959595959590559595959595959595959
-590559595959595959595959595959595959055959595959595959595959055959595959
-595959595959595959595905595959595959595959595959595959595959595959595959
-59595959cd59595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959540859595959595959595959
-595959595959595959595959595959595959595959595959590559595959595959595959
-595959595959595959595959595959590559595959595959595959595959595959595959
-59595959545959595930fa050505050505050505050505050505061c595959595959ae06
-0e0e0d0000060e0e0ed75959595959595959595959595959595959595959595959035959
-595959595905595959595959595959595959595905595959595959595959595959055959
-595959595959595959595959595959595959595959595959595959595905595959595959
-595959595959595959595959595959595959cd5959595959595959595959595959595959
-59cd59595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959592d045959
-595959595959595959595959055959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595930300505050505050505050505050505050606
-595959595959ae060e0e0d00001c2e592e4f595959595959595959595959595959595959
-5959595959c8595959595959595959595959595905595959595959595959595959595959
-595959595959595959595959590559595959595959595959595959595959590559595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959597f04595905595959595959595959595959595959595959055959595959055959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959593030050505050505050505
-050505050505061c595959595959ae060e0e0d0000060e0e0eae59595959595959595959
-595959595959595959595959590359595959595959595959595959595959595959595959
-595959595959595959055959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595905595959595959595959595959595959595959595959303005
-05050505050505050505050505050606595959595959ae060e0e0d00001c0e0e0ed75959
-595959595959595959595959595959595959595959c85959595959595959595959595959
-595905595959595959595959595959595959595959595959595959595959595905595959
-595959055959595959595959595959595959055959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595954085959595959595959595959595959
-595959595959595959595959595959055959595959590559595959595959595959595959
-590559595959595959595959595959595959595959595959595959595959595959595959
-545959595930fa050505050505050505050505050505061c595959595959ae060e0e0d00
-00060e0e0ed7595959595959595959595959595959595959595959595903595959595959
-595959595959595959595959595959595959595959595959595959595959590559595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-545959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595905595959595959055959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595930300505050505050505058d0505050505060659595959
-5959ae060e0e0d00001c0e0e0ed759595959595959595905595959595959595959595959
-590559595959595959595959595959595959595905595959595959595959595959595959
-595959595959595959595959595959595959595959590559595959590559595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959597f590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595905595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959303005050505050505050505050505
-0505061c595959595959ae060e0e0d0000060e0e0eae5959595959595959595959595959
-595959595959595959035959595959595905595959595959595959595959595959055959
-595959595959595959595959595959595959595959595905595959595959595959595959
-595959595959595959595959590559595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595954595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959055959
-595959595959055959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590559595959595959595959595959595930300505050505
-050505050505050505050606595959595959ae060e0e0d00001c0e0e0e4f595959595959
-5959595959595959595959595959595959c8595959595959595959055959595959595959
-595959595959595905595959590559595959595959595905595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959cd595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959597f04595459595959595959595959595959595959595959595959595959595959
-595959595959595954595959595954595459595459545954595459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595408595959595959595959055959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5930fa050505050505050505050505050505061c595959595959ae060e0e0d0000060e0e
-0eef59595959595959595959595959595959595959595959590359595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595905595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959590a0a595959595959595959595959595959595959
-595959595959595959595959595959595959595959590a595959590a5959595959595959
-595959595959595959595959595959595459595959595959595959595959595959595959
-595959595959595959595959590459595954595459545959545954595954595959595459
-545959545959595459595954595959595959595959595959595959595959595959595959
-595954595959595959545959595959595959595959595959595959595959595959595959
-5959595959595959595459595959595959595959595959592d0459595959595959595959
-595959595959595959595959595959595959595959595959595905595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595930300505050505050505050505050505050606595959595959ae06
-0e0e0d00001c0e2e594f5959595959595959595959595959595959595959595959c85959
-595959595959595959595959595959595959595959595959595959595959595905595959
-595959595905595959595959055959595959590559595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959cd5959595959595959
-595959595959595959045959595959595959595959595959590a59595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595959590a
-595959595959595959595959595459595959595959545959595959595959595959595959
-59595959595959595959595959595959595959597f045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959545959595959595959595959545959595959595459595959
-59595459595959595959595959595959595959595959595959595959595959597f045959
-595959595959595959595959595959595959595959595959055959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595954595959593030050505050505050505050505050505061c
-595959595959ae060e0e0d0000060e592eef595959595959595959595959595959595959
-595959595903595959595959595959595959595959590559595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595905595959
-595959595959595959595959595959595905595959595959595959595959595959595959
-5959595959595959595959597f59595959047f5959595959595959595959590a0a0a5959
-590a0a595959595959595959590a0a595959590a0a59590a0a590a59590a0a590a595959
-590a0a5959590a0a0a0a5959595954595959595959595959595959595959595959595959
-595959595959595959595459595959595959545959545959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959545959545959595959595959595959595959595959
-595959595904595959595959595959595959055959595905595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959593030050505050505050505
-0505050505050606595959595959ae060e0e0d00001c0e2e594f59595959595959595959
-595959595959595959595959590559595959595959595959055959595959595959055959
-595959595959595959595959595905595959595959595959595959595959595959595959
-595959595959595959595959595959595959055959595959595959595959595959595959
-59595959595959595959595959595959595959595959597f590459595959595959545959
-59590a59590a59590a59590a59595959545959590a59590a59590a59590a590a590a590a
-590a590a590a595959590a595959590a5959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959540859590559595959595959595959595959595959595959
-595959595959590559595959595959595959595959595959595959590559595959595959
-05595959595959595959595959595959595959595959595959595959595959595930fa05
-0505050505050505050505050505061c595959595959ae060e0e0d0000060e0e0eef5959
-595959595959595959595959595959595959595959035959595959595959595959595959
-595959595959595959595905595959595959595959595959595959595959595959595959
-595959055959595959595959595959595959055959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959590a59590a59590a59590a59595959595959590a59595959590a59
-590a590a590a590a590a590a590a595959590a595959590a595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959592d045959595959595959595959595959
-595959595959590559595959595959595959595959590559595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595930300505050505050505050505050505050606595959595959ae060e0e0d00
-001c0e2e59d75959595959595959595959595959595959595959595959c8595959595959
-595959595959595959595959595959595959595959590559595959595959595959595959
-595905595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959597f045954595959595959595959590a59590a59590a59590a5959595959595959
-0a59590a59590a59590a590a590a590a590a590a590a595959590a595959590a59590a59
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-055959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959593030050505050505050505050505050505061c59595959
-5959ae060e0e0d0000060e0e0eae59595959595959595959595959595959595959595959
-590359595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595905595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595904595959595959595959595959590a0a590a59590a0a59
-5959595959595959590a0a595959590a0a59590a590a590a0a0a590a590a0a590a0a0a0a
-0a5959590a0a595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959cd59595959595959595959
-590459595959595959595959595959595959590559595959595959595959595959590559
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959303005050505050505050505050505
-05050606595959595959ae060e0e0d00001c0e2e59d75959595959595959595959595959
-595959595959595959c85959595959595959595959590559595959595905595959595959
-595959595959595959595959055959595959595959055959595959595959595959595959
-055959595959595959595959595959595959595959595905595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595954085959595959595959595959055959595959595959595959590559
-595959595959595959595905595959595959595959595959595959595959595959595959
-590559595959595959595959595959595959595959595959545959595930fa0505050505
-05050505050505050505061c595959595959ae060e0e0d0000060e592ed7595959595959
-595959595959595959595959595959595903595959595959595905595959595959595959
-595959595959595959595959595959595905595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959cd59595959595959595959595959595904595959595959
-59595959595959595959595959595959590a0a0a0a0a0a59595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959cd04595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959592d04595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5930300505050505050505050505050505050606595959595959ae060e0e0d00001c0e2e
-59d759595959595959595959595959595959595959595959590559595959595959595959
-595959595959595959595959595959595959590559595959595959595959595959595959
-595959590559595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959cd5959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959590559595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959593030050505050505050505050505050505061c595959595959ae06
-0e0e0d0000060e0e0eae5959595959595959595959595959595959595959595959c85959
-595959595959595959595959590559595959595905595959595959595959595959595959
-595959055959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959597f045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595905595959
-595959595959595959595959595959595930300505050505050505058d05050505050606
-595959595959ae060e0e0d00001c0e2e59d7595959595959595905595959595959595959
-5959595959c8595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595905595959590559595959590559
-5959595959595959595959595959595959595959595959595959595959cd595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595408595959595959590559595959590559595959055959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959545959595930fa050505050505050505
-050505050505061c595959595959ae060e0e0d0000060e592ed759595959595959595959
-595959595959595959595959590359595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-cd5959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959cd5959cd59595959
-5959595959595959595959592d0459595959595959595959595959595959595959595959
-595959595959590559595959595905595959595959595959595959595959595959595959
-595959595959595959595959595959590559595959595959595959595959595959303005
-05050505050505050505050505050606595959595959ae060e0e0d00001c0e2e59d75959
-595959595959595959595959595959595959595959c85959595959595959590559595959
-595959595959595959590559595959590559595959595959595959595959055959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959cd5959cd595959cd5959595959595959595959595959cd595959
-59595959595959597f045959595959595959595959595959595959595959595959595959
-5959cd59595959595959595959595959595959595959595959cd59595959595959cd5959
-595959595959cd595959cd59595959595959cd595959595959595959595959cd59595959
-59595959595959595959595959595959595959597f045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959593030050505050505050505050505050505061c595959595959ae060e0e0d00
-00060e0e0eae595959595959595959595959595959595959595959595903595959595959
-595959595959595959590559595959595959595959595959595959595905595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959cd04595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959cd595959cd595959cd595959595959595959595959595959cd595959cd5959
-5959595959595959595959595959595959047f5959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-cd5959595959595959cd595959595959595959595959cd59595959595959cd5959595959
-5959595959595959595959595959595959cd595959595959595959595904595959595959
-595959595959595959595959595959055959595959595959595959595959595959055959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959593030050505050505050505050505050505060659595959
-5959ae060e0e0d00001c0e2e59d759595959595959595959595959595959595959595959
-590559595959595959595959595959595959595959595959595959595959595959595959
-595959590559595959595959590559595959595959595959595959055959595959595959
-595959595959595959595959595959055959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959cd595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-540859590559595959595905595959595959595959595959590559595959595959055959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595930fa05050505050505050505050505
-0505061c595959595959ae060e0e0d0000060e0e0ed75959595959595959595959595959
-595959595959595959035959595959595959595959590559595959595959595959595959
-595959595959595959595959595959595959595959595959595905595959590559595959
-595959590559595959595959595959595959595959595959595959595959595959595959
-59595959595959595959cd59595959595959595959045959595959595459595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959cd595959595959cd595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959055959595959595959595959
-595959595959595959595959595959595959595959055959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595930300505050505
-050505050505050505050606595959595959ae060e0e0d00001c0e2e59d7595959595959
-5959595959595959595959595959595959c8595959595959595959595959595959595959
-595905595959590559595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595459595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595959cd59
-595959597f04595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959590559
-595959595959595959595959595959595959595959595959595959595959595954595959
-593030050505050505050505050505050505061c595959595959ae060e0e0d0000060e0e
-0eef59595959595959595959595959595959595959595959590359595959595959595959
-595959595959590559595959595959595959595905595959595959595959590559595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959cd595959595959
-590459595959595959595459595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959590559595959595959055959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595930300505050505050505050505050505050606595959595959ae06
-0e0e0d00001c0e2e594f5959595959595959590559595959595959595959595959c85959
-595959590559595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-055959595959595959595959595959595959595959cd5959595959595959595959595959
-595959595959597f59045959595959595959595959595959545959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595954085959
-595959595959595959595959590559595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595930fa050505050505050505050505050505061c
-595959595959ae060e0e0d0000060e592eef595959595959595959595959595959595959
-595959595903595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959590559595959595959595959595959055959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959545959595959595959
-595959595959595959595959595959595959595959595959595959595959595954595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904cd59595959cd
-595959595959cd595959595959595959595959595959595959595959595959595959cd59
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959592d04595959595959595959055959595959595959595959595959595959595959
-595959595959595905595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959593030050505050505050505
-0505050505050606595959595959ae060e0e0d00001c2e590e4f59595959595959595959
-595959595959595959595959590559595959595959595905595959595959595959595959
-595959595959595959595959590559595959595959595959595959055959595905595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959597f0459595959595959595959
-595459595959595459595959595959595959595459595959595459595959595959595959
-545959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959590559
-595959595959055959595959595959595959595959595959595959595959595959595959
-055959595959595959595959595959595959595959595959595959595959595959303005
-0505050505050505050505050505061c595959595959ae060e0e0d0000060e2e0eae5959
-595959595959595959595959595959595959595959035959595959595959595959595959
-055959595959590559595959055959595959055959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959545959545959545959595959545959595959
-545959545959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959590459595959595959595959595959595959cd595959595959595959
-5959595959595959cd595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595930300505050505050505058d05050505050606595959595959ae060e0e0d00
-001c0e2e59d75959595959595959595959595959595959595959595959c8595959595959
-595959595959595959595959595959595959595959595959595959595959595959590559
-595959595959595959595959595959595959595959590559595959595959595959595959
-59595959595959595959595959595959595959595959cd59595959595959595959595959
-595959597f04595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595459595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959cd5959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959cd59595959595959595959595408595959595959
-595959595959595959595959595959595959595959595959595905595959595959595959
-595959595959595959595959595959595959595959595959595959595959055959595959
-5959595959595959545959595930fa050505050505050505050505050505061c59595959
-5959ae060e0e0d0000060e0e2ed759595959595959595959595959595959595959595959
-590359595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590559595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959cd5959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-2d0459595959595959595959055959595905595959595959590559595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959303005050505050505050505050505
-05050606595959595959ae060e0e0d00001c0e0e59d75959595959595959595959595959
-595959595959595959c85959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590559595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959595959cd045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959cd595959595959595959595959595959595959595959595959595959595959
-59595959cd5959595959cd5959595959595959595959cd59595959595959595959595959
-59595959595959597f045959055959595959595959595959595959595959595959595959
-595959595959595959055959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595930300505050505
-05050505050505050505061c595959595959ae060e0e0d0000060e0e2ed7595959595959
-595959595959595959595959595959595903595959595959595905595959595959595905
-595959595959595959055959595959595959055959595959590559595959055959595905
-595959595959595959595959595959595959595959595959595959595959595905595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595959cd59
-5959595959cd595959595959595959595959595959595959595959595959595959595959
-59595959590459cd59595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959cd595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959055959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5930300505050505050505050505050505050606595959595959ae060e0e0d00001c0e0e
-59d759595959595959595959595959595959595959595959590559595959595959595959
-595959595959595959595905595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-7f0459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959cd5959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959cd5959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959cd59595959595959595959595959595959595959540859595959595959595959
-595959595959590559595959595959595959595959595959595959055959595959595959
-595959595959595959595959595959595959595959595959595959595959595954595959
-59595959595959595930fa050505050505050505050505050505061c595959595959ae06
-0e0e0d0000060e0e2ed75959595959595959595959595959595959595959595959035959
-595959595959595959590559595959595959595959595959595959595905595959595959
-595959595959595959595959595959595959595959590559595959055959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959545959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959590559595959595959595959595959
-595959595959595959595959595959595930300505050505050505050505050505050606
-595959595959ae060e0e0d00001c0e0e59d7595959595959595959595959595959595959
-5959595959c8595959595959595959595959595959595959595959595959595959595959
-595959595959590559595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959cd5959595959595959595959597f04595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959cd59595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959055959595905595959595959595905595959595959595905
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595954595959593030050505050505050505
-050505050505061c595959595959ae060e0e0d0000060e0e0eae59595959595959595959
-595959595959595959595959590359595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595905595959590559595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959040459595959595959595959595959595959595959
-5959595959595959595959595959cd045959595959590459595959590404595959595959
-595959595959595959595959595959595959cd5959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959303005
-05050505050505050505050505050606595959595959ae060e0e0d00001c0e2e59d75959
-595959595959595959595959595959595959595959c85959595959590559595959595959
-595959595959595959595905595959595959595959595959595959590559595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959597f045959
-595959595959595959595959595959595959595959595959045959595959595959595959
-595959595959595959595959595959595959595959595904595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959cd595959595959595959595954085959595959595959595959595959
-595959595959595905595959595959595959595959595959055959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595930fa050505050505050505050505050505061c595959595959ae060e0e0d00
-00060e0e0ed7595959595959595959595959595959595959595959595903595959595959
-595959595959590559595959590559595959595959595959595959595959595959595959
-595959595959595959595959595959595959055959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959cd595959595959
-595959595904595959595959595959595959045904040459590404595959595904595959
-59040459595904045959595959040404cd59590404595959595959595959040404045959
-59040459595959040404cd59595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959592d04595959595959
-595959595959595905595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959590559595959595959
-595959595959595959595959593030050505050505050505050505050505060659595959
-5959ae060e0e0d00001c0e2e59d759595959595959595959595959595959595959595959
-590559595959595959595959595959595959595959595959595959595959595959055959
-595959595959595959595959595959595959595905595959595959595959595959595959
-595959595959595959595959595959595959595959595959cd5959595959595959595959
-5959595959595959595959597f04595959595959595959595959590459cd59590459cd04
-5959597f0459595904595904595959cd04595959047f595959cd04595904595959595959
-5959cd045959595959cd045959cd04595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-7f0459595959595959595959595959595959595959595959595959595959595959590559
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959303005050505050505050505050505
-0505061c595959595959ae060e0e0d0000060e0e0eef5959595959055959595959595959
-595959595959595959c85959595959595959590559595959595959595959595959595959
-595905595959595959590559595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959047f59595959595959595959595904
-595959590404045959595959045959cd0404047f59590404045959595904045959590404
-045959cd5959595959595904595959595959045959590459590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-59cd595959595959595959595959595959cd595959cd5959cd5959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959055959595959595959595959595959595905
-595959595959595959595959595959595959595959590559595959595959595959595959
-595959595959595959595959595959595959595959595959595959595930300505050505
-050505050505050505050606595959595959ae060e0e0d00001c0e2e594f595959595959
-5959590559595959595959595959595959c8595959595959595959595959595959595959
-595959055959595959595959595959595959595959595959590559595959055959595959
-595959595959595905595959595959595959595959055959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959590459595959045959045959595904595959045959045904597f04595959
-595959045959047f59045959595959595959590459590459595904595959045959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959cd04595959595959595959cd5959cd5959cd59595959595959595959595959cd
-5959cd595959cd595959595959cd595959cd5959595959595959595959595959cd595959
-5959595959595959595959595959595959595959cd595959595959595959595959595959
-595959595959595959595959595959595408595959595959595959595959595959590559
-595959595959595959055959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595954595959
-5930fa050505050505050505050505050505061c595959595959ae060e0e0d0000060e0e
-0eef59595959595959595959595959595959595959595959590359595959595959595959
-595959590559595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595459595959595904040404595959040459595904040404045959040459
-5959040459047f5904040459595959040459595959595959595959590404cd5904040404
-04595904045904cd59595959cd5959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959cd5959595959cd59
-59595959595959cd5959cd5959595959595959cd5959595959cd59595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959055959595905595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595930300505050505050505058d05050505050606595959595959ae06
-0e0e0d00001c0e2e59d75959595959595959595959595959595959595959595959c85959
-595959595959595959595959595959595959595959595959595959595959595959595905
-595959595959595959595959595959595959055959595959595959595959595959595959
-595959595959595959590559595959595959595959595959595959595959595959cd5959
-595959595959595959045959595959595959cd595959597f595959595959cd5959595959
-7f5959595959597f59595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959cd59595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959cd595959595959595959595959595959595959cd59595959595959595959cd045959
-595959595959595959595959595959595905595959595959595959595959595959595959
-595959595959595959595959595959595959595905595959595959595959595959595959
-59595959545959595959595959595959593030050505050505050505050505050505061c
-595959595959ae060e0e0d0000060e592ed7595959595959595959595959595959595959
-595959595903595959595959595959595959595959595959595959595959595959595959
-595959055959595959595959595959595959595959590559595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904cd5959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595904
-0404040404595959595959595959595959cd595959595959595959595959595959595959
-cd5959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959055959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959593030050505050505050505
-0505050505050606595959595959ae060e0e0d00001c0e0e0ed759595959595959595959
-595959595959595959595959590559595959595959590559595959595959590559595959
-590559595959595959595959595959595959055959595959595959595959595959595959
-595959595905595959595959595959595959595959595959595959595959595959595959
-5959cd5959595959595959595959cd595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959cd595959595959cd595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959595959595959cd
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959540859590559595959595959595959595959595959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595905595959595959595959595959595959595930fa05
-0505050505050505050505050505061c595959595959ae060e0e0d0000060e0e0ed75959
-595959595959595959595959595959595959595959035959595959595959595959595959
-595959595959595959595959595905595959595959595959595959595959595905595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-59595959595959595959595959597f595959595959595959595959595959595959595959
-59595959595959595959cd59595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959cd59595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595905595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595930300505050505050505050505050505050606595959595959ae060e0e0d00
-001c0e0e0ed75959595959595959595959595959595959595959595959c8595959595959
-595959595905595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590559595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959045959595959595959595959595959595959595959597f5959595959595959
-5959597f5959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959cd04595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959cd595959595959595959595959595959595900005959595959595904595959595959
-595959595959590559595959595959590559595959595959595959590559595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595954595959593030050505050505050505050505050505061c59595959
-5959ae060e0e0d0000060e0e0ed759595959595959595959595959595959595959595959
-590359595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-5959595959597f59595959595959595959595959595959595959595959595959cd595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959cd59595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959590000000059595959
-590459595959595959595905595959595959595905595959595959595959595959055959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959303005050505050505050505050505
-05050606595959595959ae060e0e0d00001c0e0e0ed75959595959595959595959595959
-595959595959595959c85959595959595959595959595959595959595905595959595959
-595959595959595959595959595905595959595905595959595959595959595959055959
-595959595959595959595959055959595959595959595959595959595959595959595959
-595959595959595959595959cd59595959595959590459595959595959595959cd595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590000000000005954085959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595930fa0505050505
-05050505050505050505061c595959595959ae060e0e0d0000060e0e0ed7595959595959
-595959595959595959595959595959595903595959595959595959595959595905595959
-595959595959055959595959055959595959590559595959595959595959595959595959
-595959595959595959590559595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959cd59595901000001000001
-000000010100000000000000000000000000000000000000000000000000000000000000
-000100010101010101010101010101010101010101010101010101010001010101010101
-010101010101010101010101010101010101010101010101010101010001010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010101010101010101
-010101010101010101010101010101010101010101010101010101010100010001000100
-000100000000000000000000000000000004595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595905595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5930300505050505050505050505050505050606595959595959ae060e0e0d00001c2e59
-0ed759595959595959595959595959595959595959595959590559595959595905595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959055959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595900000000000059590459595959595959595959
-595959595959595959595959595959055959595959595959590559595959595959595959
-595959595959595959595959055959595959595959595959595959595959595959595959
-5959595959595959593030050505050505050505050505050505061c595959595959ae06
-0e0e0d0000060e0e0eae5959595959595959595959595959595959595959595959035959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959590559595959595959595959595959595959595959
-595959595959595959595959055959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959000000595959595904cd59
-595959595959595959590559595959595959590559595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595930300505050505050505050505050505050606
-595959595959ae060e0e0d00001c0e2e59d7595959595959595959055959595959595959
-5959595959c8595959595959595905595959595959595959595959595959595959595959
-590559595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595900005959
-59595959b308595959595959595959595959595959595959595959595959595959595959
-595959595959595905595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959545959595930fa050505050505050505
-050505050505061c595959595959ae060e0e0d0000060e0e0ed759595959595959595959
-595959595959595959595959590359595959595959595959595959595905595959590559
-595959595905595959595959595959595959590559595959595959595959595959595959
-055959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959592d0459595959595959595959595959595959055959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959303005
-05050505050505050505050505050606595959595959ae060e0e0d00001c0e0e0ed75959
-595959595959595959595959595959595959595959c85959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595905595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595905595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595905595959595459595959595959
-59595959593030050505050505050505050505050505061c595959595959ae060e0e0d00
-00060e0e0ed7595959595959595959595959595959595959595959595903595959595959
-595959595905595959595959595959595959595959595959595959595905595959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959cd5959595959595959595959595959
-5959597f5904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959055959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595930300505050505050505058d0505050505060659595959
-5959ae060e0e0d00001c0e2e59d759595959595959595959595959595959595959595959
-590559595959595959595959595959595959595959595905595959595959595959595959
-595959595959595959595959595959595959590559595959595959590559595959595959
-595959590559595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-540859595959595959595959055959595959595959595959055959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959545959595930fa05050505050505050505050505
-0505061c595959595959ae060e0e0d0000060e0e0ed75959595959595959595959595959
-595959595959595959035959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595905595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959592d045959595959595959595959595959595959055959595959595959
-595905595959595959595959055959595959595959595959595959595959595959590559
-595959595959595959595959595959595959595959595959595959595930300505050505
-050505050505050505050606595959595959ae060e0e0d00001c0e2e59d7595959595959
-5959595959595959595959595959595959c8595959595959595959595959055959595959
-595959595959595959595905595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959597f04595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-593030050505050505050505050505050505061c595959595959ae060e0e0d0000060e0e
-0eef59595959595959595959595959595959595959595959590359595959595959595959
-595959595959595959595959595905595959595959595959595905595959595959595959
-595959055959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959055959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595930300505050505050505050505050505050606595959595959ae06
-0e0e0d00001c0e2e594f5959595959595959595959595959595959595959595959c85959
-595959055959595959595959595905595959595959595959595959595959595959595959
-595959595905595959595959595959595959595959595959055959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595954085959
-055959595959595959595959595959595959595905595959595959595959055959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595930fa050505050505050505050505050505061c
-595959595959ae060e0e0d0000060e0e0eef595959595959595959595959595959595959
-595959595903595959595959595959595959595959595959595959595959595959595959
-595905595959595959590559595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595905595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959597f04595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959592d04595959595959595959595959595959595959595959595959595959595959
-595959595959595959055959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959593030050505050505050505
-0505050505050606595959595959ae060e0e0d00001c0e2e594f59595959595959595959
-595959595959595959595959590559595959595959595959595959595959595905595959
-595959595959595959595959595959595959595959595959595959595959595905595959
-595959595959595959595959595959590559595959595959595959595959595959595959
-595959595959595959cd5959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959055959595959595959595959595959
-595959055959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595459595959303005
-0505050505050505050505050505061c595959595959ae060e0e0d0000060e0e0eef5959
-595959595959595959595959595959595959595959035959595959595959595959055959
-595959595959595959595959590559595959595959595959595959595959595959595959
-590559595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959597f59045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595459
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959545959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-590559595959595959595959595959595959595959055959595959595959595959055959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595930300505050505050505050505050505050606595959595959ae060e0e0d00
-001c0e0e0e4f5959595959595959595959595959595959595959595959c8595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959055959595959595959595959055959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959597f04595959595959595959595959595959595959595959595959595959595959
-595959595959595959595954595459545959595459595459545959545959545959595959
-545959545959545954595459595954595954595459545954595459545954595954595959
-595959595959595959595959595959597f04595459595954595959545959595459595954
-595959545959595459545954595459595459595459595954595459595459545959595459
-595954595959595954595954595459595459595954595959595459595959595959595959
-595959595959595959595959595959595959595959595959595959595408595959595959
-595959595959595959595959595959595959595959055959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595930fa050505050505050505050505050505061c59595959
-5959ae060e0e0d0000060e0e0eef59595959595959595959595959595959595959595959
-590359595959595959595959595959595959595959595905595959595959595959595959
-055959595959595959595959595959595959595959595959595959590559595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959590404595959595959
-595959040459595959595959595959045959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959045959595959590459595959595459595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959545959595954595959595959595959595959595959595959595959595959595959
-2d0459595959595959595959055959595959595959055959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959055959595959
-595959595959595959595959595959595959595959303005050505050505050505050505
-05050606595959595959ae060e0e0d00001c0e0e594f5959595959595959595959595959
-595959595959595959c85959595959055959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959cd5959595959595959045959595959595959595959595959
-7f045959595959595959597f045959595959595959595904595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595904595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959055959595959595905595959595959595959595959595959595959595959595959
-595959595959595959595905595959595959595959595959595959595930300505050505
-05050505050505050505061c595959595959ae060e0e0d0000060e0e2eef595959595905
-595959595959595959595959595959595903595959595959595959595959055959595959
-595959595959595959595905595959595959595959055959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959597f04595959595959
-595959595959590404045959590404595959595904595959590404595959040404045959
-590404595959595959595959040404045959045904040459040459595904590404595959
-5904040459590404595959595904045959590404040459595904045959595904047f5904
-7f0404595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959545959
-595954595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5930300505050505050505058d05050505050606595959595959ae060e0e0d00001c0e0e
-594f59595959595959595905595959595959595959595959590559595959595959595959
-595959595905595959595959590559595959595959595959595959595959595959595959
-055959595959595959595959595959595959595959595959595959590559595959595959
-59595959cd59595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595904597f04595904597f04595959590459595904597f04
-59597f045959595904595904595959595959595959045959595959045959595959590459
-59590459590459590459595959595959045959590459590459597f047f595959597f0459
-595904595904595904597f04590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959545959595959595959595959540859595959595959595959
-595959055959595959595959595959595959595959595959595959595959595959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-59595959545959595930fa050505050505050505050505050505061c595959595959ae06
-0e0e0d0000060e0e2eef5959595959595959595959595959595959595959595959035959
-595959595959595959595959595959595959595959595959595959595959595959055959
-595959595905595959595959590559595959055959595959590559595959595959595959
-5959595959595959595959595959595959595959595959595959595959cd595959595959
-5959595959595959590459595959595959595959595904595904597f040404595959597f
-04595959040404595959590459595959040404595959595959595959590459595959cd04
-595959590404045959590459590459595904045959590404045959590459595959595904
-5959595959590459595904597f045959045959047f045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595954595959595959595959595959595959592d045959
-595959595959595959595959595959595959055959595959595959595959055959595959
-595905595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595930300505050505050505050505050505050606
-595959595959ae060e0e0d00001c0e2e594f595959595959595959595959595959595959
-5959595959c8595959595959055959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959045959045959
-04595904595959590459595904597f0459597f0459590459047f59045959595959595959
-590459590459590459595904597f0459595904595904595959597f045904595904595959
-045959045959590459590459595904595959045959045959045959045904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959597f04595905595959055959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959593030050505050505050505
-050505050505061c595959595959ae060e0e0d0000060e592eef59595959595959595959
-595959595959595959595959590359595959595959595959595959595959595905595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959055959595959
-5959595959595959595959595959595959595959595959597f0459595959595959595959
-597f59040459047f59040459595904040404047f5904045959595959040459595904047f
-5959595959595959cd590404595904040404595904045904590404047f04045904040459
-7f5904045904597f59040459595959590404595904040404045959040459590404045904
-040459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959055959595959
-595905595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959303005
-05050505050505050505050505050606595959595959ae060e0e0d00001c0e2e59d75959
-595959595959595959595959595959595959595959c85959595959595959595959595959
-595959595959595959590559595959055959595959595959595959595959595959595959
-595959595959590559595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-5959595959595959595959597f59595959597f59595959597f5959595959595959595959
-597f59595959595959595959595959595959595959595959597f595959595959597f5959
-595959597f5959595959597f5959595959597f595959595959cd59597f597f597f595959
-7f595959597f59597f045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595954085959595959595959595959595959
-595959595959595959595959055959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595459595959595959
-595959595930fa050505050505050505050505050505061c595959595959ae060e0e0d00
-00060e0e0ed7595959595959595959595959595959595959595959595903595959595959
-595959055959595959595959595959595959595959595959595959595959590559595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904040404040459595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959592d04595959595959
-595959055959595959595959595959595959595959595959595959590559595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959593030050505050505050505050505050505060659595959
-5959ae060e0e0d00001c0e0e0ed759595959595959595959595959595959595959595959
-590559595959595959595959595905595959595959595959595959595959595959595959
-595959595959595959595959055959595905595959595959595959595959595959595959
-595959590559595959595959595959595959595959595959595959595959595959595959
-59595959cd59595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959597f59595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595459595959303005050505050505050505050505
-0505061c595959595959ae060e0e0d0000060e0e0ed75959595959595959595959595959
-595959595959595959035959595959595959595959595959595959595905595959595959
-595959595959055959595959595959590559595959595959595959595959595959590559
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959cd045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959590559595959595959
-595959055959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595930300505050505
-050505050505050505050606595959595959ae060e0e0d00001c0e0e0ed7595959595959
-5959595959595959595959595959595959c8595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-cd5959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595900005959
-595959597f04595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959cd595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959055959595959
-595959595959595959595959595959595959595905595959595959595959595959590559
-595959595959595959595959595959595959595959595959595959595959595959595959
-5930fa050505050505050505050505050505061c595959595959ae060e0e0d0000060e0e
-0ed759595959595959595959595959595959595959595959590359595959595959595959
-595959595905595959595959590559595959595959595959595959590559595959595959
-595959595959595959055959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959590000000059595959590459cd5959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959cd595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595904cd595959595959595959
-595959595959595959595959595959595959595959595959055959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595930300505050505050505050505050505050606595959595959ae06
-0e0e0d00001c0e0e0ed75959595959595959595905595959595959595959595959c85959
-595959595959595959595959595959595959595959595959055959595959595959595959
-595959595959590559595959595959595959595959595905595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959590459cd595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959597f5959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590000000000005959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959cd595959cd59595959
-59cd59595959595959595959595959595959595959595959595959595959595959085959
-595959055959595959595959595959595959595959055959595959595959595959595959
-595959595959595959595959595959595959595959595959590559595959595959595959
-59595959595959595959595959595959593030050505050505050505050505050505061c
-595959595959ae060e0e0d0000060e0e0ed7595959595959595959595959595959595959
-595959595903595959595959595959595905595959595959595959595959595959595959
-595959055959595959595959595959595959595905595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595900000100000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000004595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959cd595959595959cd59595959595959595959595959595959595959595959
-595959cd5904595959595959595959595959595959595959590559595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959590559595959595959595959595959595959595959593030050505050505050505
-0505050505050606595959595959ae060e0e0d00001c0e2e59d759595959595959595959
-595959595959595959595959590559595959590559595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959cd59595959595959595959cd595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595900000000000059
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959595959cd595959
-595959595959595959595959590459595959595959590559595959055959595959595959
-595959595959055959595959595959595905595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959545959595930fa05
-0505050505050505050505050505061c595959595959ae060e0e0d0000060e0e0eae5959
-595959595959595959595959595959595959595959035959595959595959595959595959
-595959590559595959595959595959055959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595905595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590000005959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595959cd59
-5959595959595959cd59595959595959595959595904cd59595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959545959595959
-595959595930300505050505050505058d05050505050606595959595959ae060e0e0d00
-001c0e2e59d75959595959595959595959595959595959595959595959c8595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590559595959590559595959595959595959595959595959
-59595959595959595959595959cd59595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595900005959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959592d08595959595959
-595959595959595959595959595959590559595959595959590559595959595959595959
-595959595959595959590559595959595959595959595959595959595959595959595959
-595959595959595959595959593030050505050505050505050505050505061c59595959
-5959ae060e0e0d0000060e592ed759595959595959595959595959595959595959595959
-590359595959595959595959595959595959595959595959595905595959595959595959
-590559595959055959595905595959595959055959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959047f595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-540459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959303005050505050505050505050505
-05050606595959595959ae060e0e0d00001c0e2e59d75959595959595959595959595959
-595959595959595959c85959595959595905595959595905595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-5959cd595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959055959595959595959595959
-595959595959595905595959590559595959595959595959595959595959595959595959
-595959595959595959595905595959595959595959595959595959595930fa0505050505
-05050505050505050505061c595959595959ae060e0e0d0000060e0e0ed7595959595959
-595959595959595959595959595959595903595959595959595959595959595959595959
-055959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959cd59595959595959595904595959595959595959055959595959595959
-595959595959590559595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5930300505050505050505050505050505050606595959595959ae060e0e0d00001c0e0e
-0ed759595959595959595959595959595959595959595959590559595959595959595959
-595959595959595959595959595959595959595905595959595959595959595959595959
-055959595959595959055959595959055959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959cd5959cd5959595959595959595959
-595959595959cd59595959595959595959cd595959cd5959595959595959595959595959
-5959cd595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959540859595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595954595959593030050505050505050505050505050505061c595959595959ae06
-0e0e0d0000060e0e0ed75959595959595959595959595959595959595959595959035959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959597f0459595959595959595959595959cd
-595959cd5959cd5959cd59595959595959cd5959cd59595959595959595959595959cd59
-595959cd5959cd595959595959cd59595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959055959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595930300505050505050505050505050505050606
-595959595959ae060e0e0d00001c0e2e59d7595959595959595959595959595959595959
-5959595959c8595959595959595959055959595959595959595959595959055959595959
-595959595905595959590559595959595959595959595959595959595959595959595959
-595959595959595959055959595959590559595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959cd5959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959590559595959595959595905
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595930fa050505050505050505
-050505050505061c595959595959ae060e0e0d0000060e0e0ed759595959595959595959
-595959595959595959595959590359595959595959595959595959595959590559595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959590559595959595959595959
-595959595959595959595959055959595905595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959303005
-05050505050505050505050505050606595959595959ae060e0e0d00001c0e0e0ed75959
-595959595959595959cd5959595959595959595959055959595959595959595959055959
-595959595959595959595959595959595959595959595959595959595959595959590559
-595959595959055959595959055959595959595959595959595959595959595959595959
-595959595959595959595959cd5959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959597f045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595954085959055959595959595959595959
-595959595959595905595959595959595959595959595959595959595959595959595959
-595905595959595959595959595959595959595959595959595959595959595959595959
-59595959593030050505050505050505050505050505061c595959595959ae060e0e0d00
-00060e0e0ed75959595959595959595959595959595959595959595959c8595959595959
-595959595959595959595959595959595959595905595959590559595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959cd59595959595959
-597f59595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959592d04595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959593030050505050505050505050505050505060659595959
-5959ae060e0e0d00001c0e0e0e4f59595959595959595959595959595959595959595959
-59c859595959595959595959595959595959595959590559595959595959595959595959
-055959595959595905595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959cd5959595959595959595959595959595959
-595959cd5959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959597f59595959595959597f0459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959cd595959595959595959595959595959595959595959595959595959595959
-590459595959590559595959595959595959595959595959595959055959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959545959595930fa05050505050505050505050505
-0505061c595959595959ae060e0e0d0000060e0e0eef5959595959595959595959595959
-595959595959595959035959595959595959595959595959595959055959595959595959
-595959595959595959595959595959595959595959595959055959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959cd5959595959cd5959595959595959595959
-595959595959595959045959595959595959595959590559595959595959595959595959
-595959590559595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595930300505050505
-050505050505050505050606595959595959ae060e0e0d00001c0e2e594f595959595959
-5959595959595959595959595959595959c8595959595959595959595905595959595959
-595959595959595959595959595959595959055959595959595959595959595959595959
-595959595959595905595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595408595959595959595959595959595959595959
-595959595959595959595959595959590559595959055959595959595959595959595959
-595959595905595959595959595959595959595959595959595959595959595959595959
-593030050505050505050505050505050505061c595959595959ae060e0e0d0000060e0e
-0eef59595959595959595959595959595959595959595959590359595959595959590559
-595959595959595959595959595959595959055959595959595959595959595959590559
-595959595959595905595959590559595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959590a0a595959595959
-5959595959595959595959595959590a5959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595904cd595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959592d0459595959595959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595930300505050505050505058d05050505050606595959595959ae06
-0e0e0d00001c0e0e0e4f5959595959595959595959595959595959595959595959c85959
-595959595959595959595959595959595959595905595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959cd5959595959595959595959
-59595959595959597f045959595959595959595959595959595959595959595959595959
-590a5959595959595959595959595959595959595959590a595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595459595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959590559595959595959595959595959055959595959595959595959595959595959
-595959595959595959595959595905595959595959595959595959595959595959590559
-595959595959595959595959545959595930fa050505050505050505050505050505061c
-595959595959ae060e0e0d0000060e0e0ed7595959595959595959595959595959595959
-595959595903595959595959595959595959595959595959595959595959595959595959
-595959595959595959055959595959595959595905595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959545959595904595959595959595959595959590a0a59590a
-590a0a595959590a0a0a5959595959595959590a0a59590a0a590a0a59590a0a0a0a5959
-590a0a5959590a590a0a0a59595959595959595959595959595959595959595959595959
-5959595959595959595959595459595959595959cd595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959590559595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959593030050505050505050505
-0505050505050606595959595959ae060e0e0d00001c0e2e59d759595959595959595959
-595959595959595959595959590559595959595959595959595905595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959597f0459595959545959595459
-59590a59590a59590a59590a59590a59590a59595959595959590a59590a59590a59590a
-5959590a595959590a59590a5959590a5959595959595459595954595959595459595959
-545959595959595959595959545959595459595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959595959cd595959
-5959cd595959595959595959540859595959595959595959055959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959303005
-0505050505050505050505050505061c595959595959ae060e0e0d0000060e0e2ed75959
-595959595959055959595959595959595959595959035959595959595959595959595959
-595959055959595959595959595959595959595959595959595959595959595905595959
-595959595959595959595959590559595959595959595905595959595959595959595959
-595959cd5959595959595959595959595959595959595959595959595959595959045959
-595959595959595959590a0a0a5959590a59590a59590a59590a59595959595959590a59
-590a59590a59590a5959590a595959590a0a0a595959590a595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595904595959cd59595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959592d045959595959595959595959595959
-595959595959595959595959595959055959595905595959590559595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595930300505050505050505050505050505050606595959595959ae060e0e0d00
-001c0e2e59d75959595959595959595959595959595959595959595959c8595959595959
-595959595959595959595959595959055959595959590559595959055959595959595959
-595959595959595959595959055959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959597f045959595959595959595959590a59590a59590a59590a59590a59590a5959
-5459595959590a59590a59590a59590a5959590a59590a590a59590a5959590a59595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959cd5959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959cd595959cd59595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959055959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5459595959595959595959595930fa050505050505050505050505050505061c59595959
-5959ae060e0e0d0000060e592ed759595959595959595959595959595959595959595959
-590359595959595959595959595959595959595959595959595959595959595959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-595959595959595959055959595959595959595959595959595959595959595959595959
-5959595959595959595959595904595959595959595959595959590a0a59590a0a0a590a
-0a59590a0a590a59595959595959590a0a595959590a0a590a5959590a0a5959590a0a59
-59590a0a0a0a595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959cd5959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959590559595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959303005050505050505050505050505
-05050606595959595959ae060e0e0d00001c0e2e59d75959595959595959595959595959
-595959595959595959055959595959590559595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959590559595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959595959cd045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959cd5959595959595959595959595959595959595959595959595959595959595959
-595959595959595954085959595959595959595959595959595959595959595959055959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590559595959595959595959595959595959595959595959545959595930300505050505
-05050505050505050505061c595959595959ae060e0e0d0000060e0e0ed7595959595959
-595959595959595959595959595959595903595959595959595959595905595959595959
-595959595959055959595959595959595959055959595959595959595959590559595959
-595959595959595959590559595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959cd595959595959595904595959595959
-59595959595959595959595959595959595959595959590a0a0a0a0a0a59595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959595959cd595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959592d04595959595959595905595959595959595959
-595959595959595959595959595959590559595959595905595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5930300505050505050505050505050505050606595959595959ae060e0e0d00001c0e2e
-59d75959595959595959595959595959595959595959595959c859595959595959595959
-595959595959595959595959595959595905595959595959595959595959595905595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959cd5959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959cd59595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-590559595959595959595959595959595959055959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595930fa050505050505050505050505050505061c595959595959ae06
-0e0e0d0000060e0e0ed75959595959595959595959595959595959595959595959035959
-595959595959595959595959590559595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959590559595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959cd045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959cd595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959595904cd59
-595959595959595959595959595959055959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595905595959
-595959595959595959595959595959595930300505050505050505050505050505050606
-595959595959ae060e0e0d00001c0e2e59d7595959595959595959595959595959595959
-5959595959c8595959595959595959595959595959595959055959595959595959595959
-055959595959595959595959595959595959595959590559595959595959595959595959
-59595959595959595959595959595959590559595959595959595959595959cd59595959
-cd5959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959cd5959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959cd5959595959cd59595959595959595959595959595959cd5959595959
-59595959b308595959595959595959595959595959595959595959590559595959595959
-595959595905595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959593030050505050505050505
-050505050505061c595959595959ae060e0e0d0000060e0e0eef59595959595959595959
-595959595959595959595959590359595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595905595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959cd5959595959cd5959595959
-5904cd595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959590559595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595459592d0459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959303005
-05050505050505058d05050505050606595959595959ae060e0e0d00001c0e2e594f5959
-595959595959590559595959595959595959595959055959595959595959590559595959
-595959595959595959595959595959595959595959590559595959595959595959595959
-595959590559595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959cd595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959055959595959
-595959cd5959cd595959cd59595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959cd59595959
-595959595959595959595959595959595959595959045959595959595959595959055959
-595959595959595959595959595959055959595959595959595959595959595959595959
-595905595959595959595959595959595959595959595959595959595959595959595959
-545959595930fa050505050505050505050505050505061c595959595959ae060e0e0d00
-00060e0e0eef595959595959595959595959595959595959595959595903595959595959
-595959595959595959595959595959595959595959595959595959055959595959595959
-595959595959595959595959595959595959595959055959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959cd595959cd5959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959cd5959595959595959595959595959cd5959cd595959cd59595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959590559595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959593030050505050505050505050505050505060659595959
-5959ae060e0e0d00001c0e2e594f59595959595959595959595959595959595959595959
-59c859595959595959595959595959595959595959055959595905595959595959595959
-595959595905595959595959055959595959595959595959595959595959595959595959
-595959595959595959595959595959595905595959595959595959595959595959595959
-59595959cd59595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-54595959595959595959595959595959cd59595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959cd0459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959cd595959595959595959595959595959
-540859590559595959595959595959595959595959595959595959595959595959595959
-595959590559595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959303005050505050505050505050505
-0505061c595959595959ae060e0e0d0000060e0e0eef5959595959595959595959595959
-595959595959595959035959595959595959595959055959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959590559595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959cd045959595959595459595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959cd59595959595959595959595959595959
-5959cd595959cd5959595959595959595959595959595959595959595959595959045959
-cd5959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959592d045959595959595959595959595959055959595959595959595959
-595959595959595905595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595930300505050505
-050505050505050505050606595959595959ae060e0e0d00001c0e2e59d7595959595959
-5959595959595959595959595959595959c8595959595905595959595959595959595959
-595959595959595959055959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959055959595959595959595959
-590559595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959590559595959545959595959595959595959
-5930301c1c1c1c1c1c1c1c1c1c061c060606061c595959595959ae060e0e0d0000060e59
-2ed759595959595959595959595959595959595959595959590359595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959055959595959595959595959595959055959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595954595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959cd5959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959590559595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959593030051c1c1c1c1c0606060606060606300606595959595959ae06
-0e0e0d00001c0e2e59d75959595959595959595959595959595959595959595959055959
-595959595959595959595959595905595959595959595959595959595959595959595959
-595959055959595959595959590559595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959cd59595959597f045959595959595959545959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959cd5959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595954085959
-595959595959055959595959595959595959595959595959595959595959595959595959
-590559595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959593030051c065959595959595959593030050606
-595959595959ae060e0e0d0000060e0e0ed7595959595959595959595959595959595959
-5959595959c8595959595959595959595905595959595959595959055959595959595959
-055959595959595959595959595959595959595959595959595959055959595959595959
-595959595959590559595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595459
-595959595959595959595959595959595959595959595959595959595959595459595959
-5959595959595959cd595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959595959cd595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959592d04595959595959595959595959595905595959595959590559595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959545959593030050506065959595959
-5959593030050606595959595959ae060e0e0d00001c0e2e59d759595959595959595959
-59595959595959595959595959c859595959595959595959595959595959595959595959
-595959595959595959595959590559595959595959055959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959597f0459595959595959595954
-595954595959595959545959595959595959595959595959595459595954595954595954
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959055959595959
-595959595959595959595959595959595959595959595959595959595959595959303005
-05061c5959595959595930300505061c595959595959ae060e0e0d0000060e0e0eef5959
-595959595959595959595959595959595959595959035959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959590559595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595459595954595959545959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959cd045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959595959
-595959595959595959595905595959595905595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595930300505050606595959595959303005050606595959595959ae060e0e0d00
-001c0e2e594f5959595959595959590559595959595959595959595959c8595959595959
-055959595959595959595959595959595959055959595959595959595959595959595959
-595959595959595905595959595959055959595959595959595959595959595959595959
-595959595959595959595959595959595959cd5959595959595959595959595959595959
-595959597f04595959595959595959595959595459595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959cd595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959cd5959595959595959cd59595959cd595959595959595959595408595959595959
-595905595959595959595905595959595959595959595959595959595959055959595959
-595959595959595959595959595959590559595959595959595959595959595959595959
-595959595959595959595959593030050505060659595959593030050505060659595959
-5959ae060e0e0d0000060e0e0eef59595959595959595959595959595959595959595959
-590359595959595959595959595905595959590559595959595959595959595905595959
-595959595905595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959cd5959
-595959595959595959595959590459595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959cd59595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-2d0459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959593030050505051c0659595959303005
-05050606595959595959ae060e0e0d00001c0e2e594f5959595959595959595959595959
-595959595959595959c85959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595905595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959597f045959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959595959595959cd045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959055959595959595959595959595959
-595959595959595959595959590559595959595959595959595959595959595959595959
-595959595959595959595959595959595459595959595959595959595930300505050506
-06595959303005050505061c595959595959ae060e0e0d0000060e0e0eef595959595959
-595959595959595959595959595959595903595959595959595959595959595959595959
-595959595959595959595959595959590559595959595959595905595959595959595959
-595959595959595959595959595959595959590559595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959cd5959595959595959595959595959595905595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595905595959595959055959595905595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5930300505050505060659593030050505050606595959595959ae060e0e0d00001c0e0e
-0e4f59595959595959595959595959595959595959595959590559595959595959595959
-595959595959595905595959595905595959595959595959595959595959595959595959
-595959595959055959595959055959595959595959595959595959595959590559595959
-59595959cd59595959595959595959595959595959595959595959595959595959595959
-7f0459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595459595959595959595959595959595959
-cd59595959595959cd595959595959595959595959595959595959595959595959595959
-595959595959595959595959cd0459595959595959590559595959595959595959595959
-595959055959590559595959595959595905595959590559595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959540859595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959593030050505050506065430300505050505061c595959595959ae06
-0e0e0d0000060e0e0ed75959595959595959595959595959595959595959595959035959
-595959595959055959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959045959595959595959595959590559
-595959595959595959595959595959595959590559595959595959595959595959590559
-595905595959055959590559595959595959595959595959595959595959595959595959
-59595959595959595959595959595959595959595959595959595959595959592d045959
-595959595959595959595959055959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959545930300505050505050630303005050505050606
-595959595959ae060e0e0d00001c0e0e0ed7595959595959595959595959595959595959
-5959595959c8595959595959595959595905595959595959595959595959595959590559
-595959595959595959595959595959590559595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959597f04595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959cd5959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595408595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959cd5959595959595959595959cd595959595959
-595959595904595959595959595959595959595959595959595959055959595959595959
-595959595959595959055959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959545959595959593030050505050505063030
-0505050505050606595959595959ae060e0e0d0000060e0e0ed759595959595959595959
-595959595959595959595959590359595959595959595959595959595959595959595959
-595959595959595959595959590559595959055959595959595959595959595959595959
-595959055959595905595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959cd5959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595904cd595959595959595905595959595959595959595959
-595959595959595959595905595959595959595959595959595959595959595959595959
-595905595959595959595959595959595959595959595959595959595959595959303005
-05050505050530300505050505050606595959595959ae060e0e0d00001c0e2e59d75959
-595959595959595959595959595959595959595959c85959595959595959595959595959
-595959595905595959595959595959595959595959595959595959595959595959595959
-595959055959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959cd59595959595959595959597f045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590559595959595959595959590559595959595959595959595959595959595959595959
-595959595959595959595959595959595959595954085959595959595959595959595959
-595959595959595959595959590559595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959303005050505050505308d050505050505061c595959595959ae060e0e0d00
-00060e0e0ed7595959595959595959595959595959595959595959595903595959595959
-595959595959595905595959595959595959595959595959590559595959595959595959
-595959595959590559595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595904595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959545959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959cd595959595959595959
-595959595959595959595959595959595904595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959055959595959595959590559595959595959595959
-595959595959595959595959595959595959595959595959595959595904595959595959
-595959595959595959055959595959595959055959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595930301c1c061c06060606061c0606060606060659595959
-5959ae060e0e0d00001c0e0e0ed759595959595959595959595959595959595959595959
-590559595959595959595959595959595959595959595959595905595959595959595959
-595959595959595959595959595959595959595959055959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959597f0459595959595959595959595959595959595959595959
-595959595959595959595959595959595959545959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590459595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-590459595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595905595959595959
-595959595959595959595959595959595959595959300606060606060606060606060606
-0606061c595959595959ae060e0e0d0000060e0e0ed75959595959595959595959595959
-595959595959595959035959595959595959595959595959595959595959595959595959
-595959595959595959595959595959055959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959590559595959595959595959
-5959595959595959595959595959595959595959590459cd595959595959595959595959
-595959595959595959595959595959595959595959595959545959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959cd595959595959595959595959595959595959595959595959595959595959045959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959045959595959595959595959055959595959595959595959595959
-595959595959590559595959055959595959595959595959595959595959595959595959
-595959595959595905595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959ae060e0e0d00001c0e0e0e4f595959595959
-595959595959595959595959595959595959595959595959595905595959595959595959
-595959595959595959595959595959595905595959595959590559595959595959595959
-595959595959055959595959595959595959595959595959595959595959595959595959
-595959595959cd5959595959595959595959595959595959595959595959595959595459
-595959595954595959545959595959595959595959595954595959545959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959cd5959595959595959595959595959595959595959595959595959595959
-595959cd5959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959cd5959595959
-595959595959595959595959595959595959595905595959595959595959595959595959
-055959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595959595959595959595959595959595959595959595959ae060e0e0d0000060e0e
-0eef5959595959593efafa27fafa30fa3030fa3030fa3027fafa273e27273e2727272727
-27273e2727273e2727273e2727273e2727273e2727273e2727272727273e272727272727
-273e2727273e2727273e27272727272727273e2727273e27273e27273e273e273e3e273e
-273e27272727fa27fafa27fa27fa2730fafa30fa3027fa30fa30fa30fa3027fa302730a9
-30a93030a9303030fa3030fa303030303030fa30fa30fa30fa30fa3030fa303030fa3030
-3030fa303030fa3030fa3030fa30fa30fa30fa30fa30fa30fa30fafa30fafa30fa30fafa
-30fafa30fa30fafa30fafa30fa3027fa3027fa3027fa27fa27fa27fafa27fafa27fa273e
-273e27273e27fa27fa27273027fa27fa273e273e273e273e273e273e273e273e273e273e
-27273e273e273e273e273e273e273e273e273e27273e27273e27273e273e273e273e273e
-2727273e273e27273e2727273e27273e27273e27273e273efa27fafa27fafa27fafa27fa
-27fa2730fa30fa30fa30fa30fa30fa30fa30a93030a9a9faa927fa27272727273e272727
-3e2727273e272727272727273e2727273e2727273e2727273e2727273e27273e27273e27
-273e273e273e273e273e2727273e27272727fa27fa27fa2727fa27fafa30fa30fa3030fa
-30303030303030595959595959595959595959595959595959595959595959595959ae06
-0e0e0d00001c0e2e594f59595959595930303030303030303030303030303030302727fa
-272727273e2727fa27272727fa272727fa272727fa272727fa272727fa27273e2727fa27
-2727273e2727fa27272727fa272727fa272727fa273e2727fa272727fa2727fa2727fa27
-27272727272727272730fa30fa3030273030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-302730303030303030303030303030303030303030303030302730273027302730272730
-27273027273027fa273027273027302730273027302730273027fa273027302727302730
-273027302727302730fa273027fa273030fa2730fa2730273030fa273030303027303030
-303030303030303030303030303030303030303030303030303030303030303030272727
-fa27fa272727fa272727fa2727273e2727fa27272727fa272727fa272727fa272727fa27
-27fa2727fa2727fa27272727272727272727fa3027fa2730fa3030303030303030303030
-30303030303030303030303030301c595959595959595959595959595959595959595959
-595959595959ae060e0e0d0000060e0e0eef595959595959273005050505050505050505
-050505052e052e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e
-2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e
-2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e1c2e2e2e1c2e1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c2e1c1c1c1c1c1c2e1c2e1c2e1c1c2e1c2e1c1c2e1c1c2e1c2e1c2e1c2e1c2e1c2e
-1c2e1c2e2e1c2e2e2e2e2e2e2e2e2e2e2e2e2e1c2e1c1c1c1c1c1c1c2e2e2e2e2e2e2e2e
-2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e
-2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e1c2e2e2e1c2e2e1c2e2e2e2e2e0505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-0505050505052e1c050505050505050505050505051c1c59595959595959595959595959
-5959595959595959595959595959ae060e0e0d00001c0e0e0e4f59595959595930300505
-050505050505050505051c2e30051c1c1c1c2e1c1c2e1c1c1c2e1c1c1c2e1c1c1c2e1c1c
-1c2e1c1c1c2e1c1c1c1c1c1c2e1c1c1c2e1c1c1c2e1c1c1c2e1c1c1c2e1c1c1c1c2e1c1c
-1c1c1c1c1c1c2e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c06061c0606060606061c1c1c1c1c061c1c1c1c
-1c1c1c1c1c06060606061c0606061c061c061c1c061c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c30050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-05050505050505050505050505051c1c1c2e0505050505050505050505061c5959595959
-59595959595959595959595959595959595959595959ae060e0e0d000002ec0fec0f5959
-595959593030050505050505050505052e1c1c3030051c1c595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959303005050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505051c1c1c1c1c1c0505050505050505
-051c06595959595959595959595959595959595959595959595959595959643725db0000
-014f4f4f4fec595959595959303005050505050505051c1c1c1c593030051c1c59595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-5959595c5959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595930300505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-0505050505050505050505050505050505050505050505050505050505051c1c59591c1c
-1c1c05050505050505061c59595959595959595959595959595959595959595959595959
-5959258b4e122500004f13133e0f59595959595930300505050505052e1c1c1c59595930
-30051c1c5959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959593030050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-05051c06595959591c1c1c1c050505050506065959595959595959595959595959595959
-59595959595959595959438b1212db00004f3e1313ec5959595959593030050505051c1c
-1c1c59595959593030051c1c595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-303005050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505051c1c5959595959591c1c1c1c050505061c595959595959595959
-595959595959595959595959595959595959dbbb7e124300004f133e130f595959595959
-303005052e2e1c1c595959595959593030051c0659595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595930300505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-0505050505050505050505050505050505051c0659595959595959591c061c0605060659
-5959595959595959595959595959595959545959595959595959438b7e7e2500007a1313
-3eec5959595959593030303030305959595959595959593030051c1c5959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959593030050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-0505050505050505050505050505050505050505050505050505061c5959595959595959
-5930303030061c595959595959595959595959595459595959595959595959595959258b
-12124300004f3e731364595959595959303005053030303059595959595959303005061c
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959303005050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505051c06
-595959595959595930303030050606595959595959545959595959595959595959595959
-595959595959db8b127e2500007a13133eec595959595959303005050505303030305959
-5959593030051c1c59595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595930fa0505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505061c595959595959303030300505051c1c59595959595959595959595959
-5954595959595959595959595959438b12124300004f7395130f59595959595930300505
-0505050530303030595959303005061c5959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959593030050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-05050505050505050505050505051c065959595930303030050505050506065959595959
-59595959595959595959595959595959595959595959dbbb127e2500004f133e13ec5959
-595959593030050505050505050530303030593030051c1c595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-59595959595959595959595930fa05050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-05050505050505050505050505050505050505050505061c595930303030050505050505
-05061c595959595959595959595959595959595959595959595959595959438b12124300
-008b73957364595959595959303005050505050505050505303030303005061c59595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595930300505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-0505050505050505050505050505050505050505050505050505050505051c0630303030
-0505050505050505051c0659595959595959595959595959595959595459595959595959
-595943bb127e2500004f13133eec59595959595930300505050505050505050505053030
-30051c1c3030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-3030303030303030303030303030303030303030303030303030303030fa050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-0505061c30300505050505050505050505061c5959595959595959595959595959595959
-59595959595959595959db8b12124300008b217313645959595959593030050505050505
-050505050505050530050630303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303030303030303030303030303030303030303030303030303030303030303030303030
-303005050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-05050505050505050505063005050505050505050505050505061c595959595959595959
-59595959595959595959595959595959595943bb127e2500007a73133eec595959595959
-30301c1c1c1c1c1c1c1c1c1c1c06060606061c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e
-1c2e2e2e2e2e2e2e2e2e2e2e2e2e2e0e2ef10ef10ef10ef10ef10ef10ef10ef10ef10ef1
-0ef10ef10ef10ef10ef10ef10ef10ef10ef10ef10ef10ef12e0e2e2e2e2e2e2e2e2e2e2e
-2e2e2e2e2e2e2e2e2e1c1c1c1c1c1c1c060606061c1c061c061c061c061c060606061c59
-5959595959595959595959595959595959595959595959595959db8b1212430000a32173
-1364595959595959301c1c1c1c0606060606060606060606060606061c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c061c061c061c0606061c0606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-06060606060606060606061c061c061c061c061c1c061c06061c06061c06061c061c061c
-061c061c1c061c061c061c1c061c1c061c1c061c061c1c061c1c061c1c061c061c06061c
-1c061c061c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c061c1c061c1c1c1c061c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c061c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c061c061c1c1c06
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c2e1c2e1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e
-2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e1c2e2e2e1c2e2e1c2e1c2e2e2e2e2e2e
-2e2e2e2e2e1c2e2e1c2e1c1c1c1c1c1c1c1c1c1c1c060606060606060606060606060606
-0606060606060659595959595959595959595959595959595459595959595959595943bb
-217e2500009673133eec5959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959595959595959595959595959595959595959595959595959595959595959
-595959595959db8b1212430000bb21730273ecec64ecec64bf8f0fbf8f368f368f36aeae
-aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae
-aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae
-aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae
-aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae
-aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae
-aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae
-aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae
-aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae
-aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae
-aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae
-aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae
-aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae
-aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae22aed7d7aed7d7d7d7d7d7d7d713ec
-6464646464f864646425256443648b7e127e25001d007a1313733e4f504f4f4f7a4f347a
-4f7a4f4f4fc306060606060606060606061c061c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c061c06061c060606060606060606060606060606060606061c06061c06
-061c06061c06061c060606060606061c0606060606060606060606060606060606060606
-06060606060606060606060606060606060606060606060606061c0606061c06061c0606
-06061c0606060606061c060606061c06060606060606060606060606061c060606060606
-0606060606060606060606060606060606061c0606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-0606060606060606060606060606060606060606060606060606061c061c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c061c0606060606060606060606060606060606061c06061c1c1c1c1c1c1c
-1c1c1c1c1c1c7a7a7a7a7a7a7a7a8b5a8b8b8b38bbbb1212124300061d008b7373021313
-73130295027302212121212173860e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e5c0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e5c0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e4f02137302022121123712121212127e12b512db0006
-898700256473730273737321217e121212122121138f0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0ef10ea37321b51212127e1212127e1212
-21121243db000606f81d890000646425252564d3432543434343434343640d0d0d0d0d0d
-0d050d050d05050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050d050d050d
-050d0d0d0d0d0d0d0d050d050d050d0d050d050d050d050d050d050d050d050d050d0d0d
-050d050d050d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d
-0d0d0d0d0d0d0d0d0d0d0d050d050d050d050d050d050d050d050d050d0d050d050d050d
-050d050d0d0d0d0d0d0d0d0d0d0d050d050d050d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d
-0d0d0d050d050d050d0d0d0d0d0d0d050d050d050d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d
-0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d
-0d0d0d0d0d0d0d0d0d0d0d050d050d050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-050505050505050505050505050505050505050505050505050505050505050505050505
-0505050505050505050505050505050505050505050505050505050505050d050d0d0d0d
-0d0d0d0d0d0d0d0d0d0d050d050d050d0505050505050505050505050d051343432543db
-43db43db43dbdbdb43dbdb00000000061d891d1d1d000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000000000060600
-%%PageTrailer
-%%Trailer
-%%EOF
diff --git a/lib/et/doc/src/sim_trans_contents_viewer_collector.gif b/lib/et/doc/src/sim_trans_contents_viewer_collector.gif
deleted file mode 100644
index 77115b71ab..0000000000
--- a/lib/et/doc/src/sim_trans_contents_viewer_collector.gif
+++ /dev/null
Binary files differ
diff --git a/lib/et/doc/src/sim_trans_contents_viewer_collector.png b/lib/et/doc/src/sim_trans_contents_viewer_collector.png
new file mode 100644
index 0000000000..545697bf38
--- /dev/null
+++ b/lib/et/doc/src/sim_trans_contents_viewer_collector.png
Binary files differ
diff --git a/lib/et/doc/src/sim_trans_contents_viewer_collector.ps b/lib/et/doc/src/sim_trans_contents_viewer_collector.ps
deleted file mode 100644
index 3ef1921fa2..0000000000
--- a/lib/et/doc/src/sim_trans_contents_viewer_collector.ps
+++ /dev/null
@@ -1,1407 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: GIMP PostScript file plugin V 1.12 by Peter Kirchgessner
-%%Title: /home/hakan/picts/sim_trans_contents_viewer_collector.ps
-%%CreationDate: Mon Oct 14 17:27:25 2002
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%Pages: 1
-%%BoundingBox: 14 14 406 232
-%%EndComments
-%%BeginProlog
-% Use own dictionary to avoid conflicts
-10 dict begin
-%%EndProlog
-%%Page: 1 1
-% Translate for offset
-14.173228 14.173228 translate
-% Translate to begin of first scanline
-0.000000 217.359744 translate
-391.247539 -217.359744 scale
-% Image geometry
-468 260 8
-% Transformation matrix
-[ 468 0 0 260 0 0 ]
-% Strings to hold RGB-samples per scanline
-/rstr 468 string def
-/gstr 468 string def
-/bstr 468 string def
-{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
-true 3
-%%BeginData: 82198 ASCII Bytes
-colorimage
-r;V<JJH16$[f?Ok0f^sKJ,~>
-r;V<JJH16$[fH=oJ,~>
-r;V<JJH16$[fH>IJ,~>
-rr;uunc&S<J[C!8K<tV-mJd0^mJd0^nc/Uhs#C'6J,~>
-rr;uunc&SGMnXbRJ\(Zg!&X*C!28f[!28r_rrE$dJ,~>
-rr;uunc&SuJaS*WKC/_KmJd0^mJd0^nc/Uhrc<S~>
-s8N-#s8W)KqVM,3!%EJWXc%a_f7O,Rs3:GkqVM/4!i5k@qpkQ"r8n'Vs3:GkqVDD<s8N'Z3Ih~>
-s8N-#s8W)LrS%8-ro3q>!&U.0JWYMGlB)-)s3CVlrmq&%rndY6s5jBVs3CVlrmq&%rndY6s5jBV
-s3CVlrmq&%rn[h<s8N'e7">~>
-s8N-#s8W)KqVM,3!+LN9J_l%9!b22SqpkQ"r8n'Vs3:GkqVM/4!i5k@qpkQ""m5jb!-<43~>
-!ri9#rRLc$qW7c,JTJAC!.4]d!.4]d!.4]d!.4]d!/(8l!/(8l!/(8l!/(8l!/(8l!/pht!/pht
-IuAYpF,PBdF,PBdF,PBdF,PBdF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#m
-F-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#m
-F-M#mF-M#mEsn4ZF*!RmF*!Re.KB:qqVM,3!Mobmeb\/"joM:XqpkQ"rT41+!&9!~>
-"9/B$df.hrgA]t.ir/!>1kC(kI/nitI/nitI/nitI/o!#I/o!#I/o!#I/o-'I=I*)I=7*+I=7*+
-I=7*+I=76/I=76/I=76/I=7B3I=7B3I=7B3I=7B3I=7N7I=7N7I=7N7I=7N7I=7N7I=7N7I=7N7
-I=7Z;I=7Z;I=7Z;I=7Z;I=7Z;I=7Z?I=7Z?I=7Z?I=7Z?I=7Z?I=7Z?I=7Z?I=7Z?I=7Z?I=3?2
-KmeB?KmeB?KmeB?KmeB?KmeB?KmeB?KmeB?KmeB?I5M!'df.hrgA]t.ir8'@U&Y,?rmq&%rndY6
-roO6Ts8LIGf)=>%hYuL:k0<rpJ,~>
-!ri9#rRLc$qW7ceJ^(aM!7h(n!7h(n!7h(n!7h(n!7h(n!7h(n!7h(n!7h(n!7h(n!7h(ns4..o
-s4..os4..os4..oJ)8`#c/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!q
-c/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!q
-c/.!qc/.!qc/.!qc/.!qc/-]Ss81@ChYZF9V#U>BqVM,3!Mobmeb\/$joWd-F+=~>
-!ri9#rmgl%qrRtJjsbjrr+Z:SK6,%I!-A-S!-A-S!-A-S!-A-S!.4][!.4][!.4][!.4][ItMfW
-C4gSBC4gSBC4gSBC5[.JC5[.JC5[.JC5[.JC5[.JC5[.JC6WdSC6WdSC6WdSC6WdSC6WdSC6WdS
-C6WdSC6WdSC6WdSC6WdSC6WdSC7K?[C7K?[C7K?[C7K?[C7K?[C7K?[C7K?[C7K?[C7K?[C7K?[
-C7K?[C)iabC208[C208[C208[C208[C208[C208[C+92\eb\/"joXtHs8:FDhYZF:m\Km\eb\/#
-joWd-0n9~>
-!ri9#rmq&%rndY6roO:IjtqX7r-8?lNIf5t!.Fil!.Fil!.Fil!.k,p!.k,pIt`;rH%gZlH&6rp
-H&6rpH&[5tH&[5tH'*N#H'*N#H'Nf'H'Nf'H'Nf'H's5/H's5/H's5/H's5/H's5/H's5/H(BM3
-H(BM3H(BM3H(BM3H(BM3H(BM3H(fe7H(fe7H(fe7H(fe7H(fe7H(fe7H(fe7H(fe7H(fe7GqPeA
-H$Q*7H$Q*7H$Q*7H$Q*7H$Q*7H$Q*7H$Q*7H$Q*7H$Q*7H$Q*7Gr5QLdf.hrgA]t.ir8'ClCn7+
-df.hrgA]t.ir8'ClCn7+df.hrgA]t.irA-Bc2^7_~>
-!ri9#rmgl%qrRtJk$in\r5JZ[`l.r&rl"l^rl"l^rl"l^rl"l^rl"l^rl"l^rl+o^s2G#_s2G#_
-s2BK<c,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZP
-c,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZP
-c,IZPc,IZPc,IX9e]l(Pe]l(Pe]l(Pe]l(Pe]l'Bs8:FDhYZF:m\Km\eb\/"joXtHs8:FDhYcL;
-blDg8~>
-!<E0!eb\/"k5XiMjsd0Bs5)RH%#`)>PlLd.hVN!^pA`c["nqt2CA.]*C&i>SC&i>SC&i>SC&i>S
-C&iV[C&iV[C4CSOC;luiC2/BBC2/BBC2/ZJC2/ZJC2/ZJC2/uSC2/uSC2/uSC2/uSC2/uSC2/uS
-C2/uSC2/uSC208[C208[C208[C208[C208[C208[C208[C208[C208[C20PkC20PkC20PkC20Pk
-C20PkC20PkC20PkC20PkC2,&jHYR;kHYR;kHYR;kHYR;kHYR;kHYR;kHYR;kHYR;kHYR:Es8CLE
-hYZI8mK'-`rRLX.roX7K!MoboeH4Sn62f[?62fpIm_&UN~>
-!<E0!f)=>%hYuO6k5X]IjtrrXs5)RS%$ehTSbiB7hVNBtpA3Ea"nqe8FnY\0FT?^dFT?jhFT?jh
-FansfF`i7\F`iC`F`iC`FiLG,F`i[hF`i[hF`iglF`igpF`istF`j+#F`j+#F`j+#F`j+#F`j7'
-F`j7'F`j7'F`j7'F`j7'F`jC+F`jC+F`jC/F`jC/F`jC/F`jO3F`jO3F`jO3F`jO3F`jO3F`jO3
-F`jO3F`jO3F`fI9JTZ+3JTZ+3JTZ+3JTZ+3JTZ+3JTZ+3JTZ+3JTZ+3JTZ+3JTZ+3JTZ+3JTZ)l
-qU5AorS%8-ro3q>s69ZZqU5AoqEY$JroX7G!hoJ=rmh2*5X='&hZ#tDir8'AlFHtG~>
-!<E0!eb\/"k5XiMk$k4,s7Y9f%+Xdbec5[;p@cJEs8U`js8W,<s8W#9!6tM^!6tM^!6tM^!6tM^
-!6tM^s3:S_s36&4mbZ4-`QcZH`RW5P`RW5P`RW5P`RW5P`RW5P`RW5P`RW5P`RW5P`RW5P`RW5P
-`RW5P`RW5P`RW5P`SSkY`SSkY`SSkY`SSkY`SSkY`SSkY`SSkY`SSkY`SSkY`SSkY`SSkY`SSkY
-`SSkY`SSkY`SSkY`SSkY`SSl>`?F*_`Pp]Y`Pp]Y`Pp]Y`Pp]Y`Pp]Y`Pp]Y`Pp]Y`Pl<drRLc$
-qr[qH!Moboeb;B/k5XiMV#UDD!o?4/rSIQ?rT41L]`<Q~>
-!s&AOec+G*63#g?k5RaHmK)H!oO7iRPi6'PK9Yk7!J?X%@KP*)3T"9XKE%0%k5S=Fc-87Xp@^4M
-K9Y/#s7QRM@eTLMraGkBraGkBraGkBraPnls'btLraL@uC1:Y!C1:YRs*J4%C1:Y)C1:Y)C1:Y)
-C1:Y1C1:Y1C1:Y1C1:Y1C1:Y:C1:Y:C1:Y:C1:Y:C1:Y:F(/UCF(/UCF(/UCF(/UKF(/UKF(/UK
-F(/UKF(/UKF(/UKF(/UKF(/UKF(/UKF(/UKF(/UKF(/UKF(/UKF(/T)S9&.KS9&.KS9&.KS9&.K
-S9&.KS9&.KS9&.KS9&.KS9&.KS9+[=!@e'Jeb\/"k5OcLV#UGE!8dH9s5s=K!MobpeH"J)63#g?
-63$*ImK(!$J,~>
-!s&APf)FD'5l]^?iWA717/lHPi\^:E!KEZ/D#oWen8/2cSa(%ng<rOLD%VX$R8E&G=\-id88\(o
-4Dg(Kghm)b"?^Ppp,r=k!-/!T!-S9X!-S9XJ!HRAD1-D@D1-D@D1Q\DD6EniD1utHD2ECPD2ECP
-D2i[TD38sXD38sXD3]B`D3]B`D3]B`D4,ZdD4,ZdD4,ZdD4,ZdD4,ZdD4PrhD4PrhD4PrhD4Prh
-D4PrhD4u5lD4u5lD4u5lD4u5lD5DMpD5DMpD5DMpD5DMpD(VT0D/H+pD/H+pD/H+pD/H+pD/H+p
-D/H+pD/H+pD/H+pD/H+pD/H+pD/H+prbVZmqYo(EgA]t.ir8*>l2dUTrmh)'q`t*Js5s=G!MTAh
-ec=G&5l]^>7/uELl2eHrJ,~>
-!s&AOec+G*63#g?k5RaHmK)HZoXt:Me`"1Bc.2<s!R90[]`RWaKAX?Sc2Z%QpA^%tk2q<0s8R/R
-c.1U_s8N4C^&S+RqRlmJrk/<Nrk8?^s1JEOrk/<Nrk/<Nrk3g<s2D[r`P&t0`P&t0`P&t0`P&t0
-`P&t0`P&t0`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8
-`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&r*e]#58e]#58e]#58
-e]#58e]#58e]#58e]#58e]%O$!Fl*.eb\/"k5OcLV#UGE!8dH9s5s=K!MobpeH"J)63#g?63$*I
-mK(!$J,~>
-!W`8NrndT>rT=,Gs%<=Z!Tkj'=p"Et9&a"UpA[bT=p"Et9'TU[3T"!Qk05VQp@^4=;E6a@p@^4E
-pA[b@>6":!0j=;E1&G,S@fBO2@fBO6CA.["CAqCdC1:@MF(/<VF(3DV@U`MEHX^/^HX^/^HX^/^
-K48"fK48"fMeZF!MeZF!MeZF!MeZF!MeZF!MeZF!MeZF!P\OB*P\OB*P\OB*P\OB*P\OB*P\OB*
-P\OB*P\OB*S8)52S8)52S8)52S8)52S8)52S8)52S8)52S8)52/Y$QZ>+B>2>+B>2>+B>2>+B>2
->+B>2>+B>2>+B>2>+B>2>+B>2>+AbFs4,ZrhYZI6mKKEde^`O5pH\fArU'ibs4,ZVhY0;9k5OcL
-]`<Q~>
-!W`8Orn@<9ro*q?rBpbQmc$(qB`e#)=lO,spA.q^B`e#)=mB]%84;?L''@V)=n_\S@:_ttC%h6_
-C%hC+h.co_#<Z_op,m&'D>n5LD>n7!EG]E(FnYZ7H#780H#780I;N\4JT9,tEH,],KlLg@M/d6D
-M/d6DNHJrLO`bAPO`bAPQ$$eTQ$$eTQ$$eTQ$$eTR<<4XR<`L\R<`L\R<`L\SU"p`SU"p`SU"p`
-SU"p`SU"p`Tm:?dTm:?dTm:?dTm:?dTm:?dTm:?d3MC_4Bq]fdBq]fdBq]fdBq]fdBq]fdBq]fd
-Bq]fdBq]fdBq]fdBq]fdBq]fdBq]fdBq]5tqUX6rgA]t.ir8*>l3?[MqUX6OgAF566icBKl3?[M
-qUX6OgAF566icBKl2eHrJ,~>
-!W`8NrndT>rT=,Gs%<=Z!Tmk`[/^.+UuJc]rrAkb[/^.+V!>>eKAX$Kp?$Fds8R/A["F"<s8R/I
-s8SnN[/^./F0tuIF8N<E^&GA=^&GAA^&S,.^&GD=^&PJ>^&PHh`P(F%[(WiR`P&Xc`P&Xc`P&Xc
-`P&Xcc+UKkc+UKkc+UKkc+UKkc+UKkc+UKkc+UKkc+UKkc+UKkc+UKkc+UKkc+UKkc+UKkc+UKk
-e\/>se\/>se\/>se\/>se\/>se\/>se\/>se\/>se\/>se\/>se\/>se\/>s-.T]9[+2js[+2js
-[+2js[+2js[+2js[+2js[+2js[+2Nms4,ZrhYZI6mKKEde^`O5pH\fArU'ibs4,ZVhY0;9k5OcL
-]`<Q~>
-!<E/uhY]\>k5RaH9)n;[jsg1*#'8Z$mZ^VVrr2t>qGI]kk5YJLC/USis6cEV;ZGSWKC8c0;RHH'
-s)SY+s6c+L;Vp8_mf/eT[/U(0F*ldDs6bgA;CBH`K2PUKmS`cY;GqSms6c+LV#PL6`W(9_`P#/j
-hZ*#.;GuB.XPWnR"G?_q3Q;!t#\s)5;H!5^0spr[s)SV*s6c+L;Vp93hGX(Iqbdflk5YJLC/USi
-s6cEV;ZHG(0iI`=0iE)Ls6cCT;OlnLs6as8rr7FoSF6FFS5O**hVPX%;N(Qi;GqR>;GqR>;GqjN
-;GqjN;GqjN;Gr-V;Gr-V;Gr-V;GrE^;GrE^;GrE^;GrE^;GrE^;GrEf;GrEf;GrEf;Gr`o;Gr`o
-;Gr`o;Gr`o;Gr`o;Gr`o;Gr`o;Gr`o;Gr`o;Gr`o;Gr`o;Go66C/RroC/RroC/RroC/RroC/Rro
-C/RroC/RroC/RroC/RroC/RroC/RroC/QMSeb\/"k5=WKV"W@<hY0>6mK03Xec"A#5lg'GmK(!$
-J,~>
-!<E/ugAXA;6il<0r'^SQ!TGs5AHmkFqX1%g^Ae-4L&,[email protected],h"d/6LTk1t;
-s8Rc^hYQZ6AS'l\Om`(>A\S0Ds+LU4qZ#uKqIM&"s-7/,[dI`#qIO5lhYQZ6A[;>iA]k%,A^8/(
-L#2[oTk.fpijRkFAH\:uI7VZ_rs3oDqIO73p,p(gs8Rc]hYQZ6AS'l\[c1llqYOh3Woj0Xl?Qs@
-lMp.Lral-''0Kk"p,loChYQZ:AS%n(qZ#i3^Ae.]M5ok@m]'iDD;sQhk%0hXH"CQ<EFi^8EFi^<
-EFi^<EFi^@F_,-HF_,-HF_,-LF_,-LF_,-LF_,-LF_,-PF_,-PH"CQTH"CQTH"CQTH"CQXH"CQX
-H"CQXH"CQ\H"CQ\H"CQ\H"CQ\H"CQ\H"CQ\H"CQ\H"CQ\H"CPATm:3\Tm:3\Tm:3\Tm:3\Tm:3\
-Tm:3\Tm:3\Tm:3\Tm:3\Tm:3\Tm:3\Tm:3+p=B2rrndY6roX4Fs6]r^p=B5srBU6Jrp'OO!ho>=
-rS%69r'UPIrosRQ\c@6~>
-!<E/uhY]\>k5RaH9)n;[k$n4p#0$$1p=6P,rr2u;qQpX\pAb0d]sQ>`s7Y"B[/]h'c1_1f[,1f^
-s2>H8s7Y!M[.a4<pA`[MhZ!QT`<>W/s7X_6ZmY#9c*Xk7p9al"['[g?s7Y!MhZ(R%k5WE-k2s%i
-mf3"2[']Q#hY-oT"O6tBKBE15#eg9<[']l5F5Hors2>E7s7Y!M[.a4Mp9al"qm6a]pAb0d]sQ>`
-s7Y"B[/^.>F0tuIF0rpSs7Y!M[+4mMs7XFgrr7Gleb9%:e[3$'p@dYB[*AWH['[fc['[fc['[fc
-['[fc['\)k['\)k['\)k['\)k['\)k['\)k['\)k['\)k['\)k['\)k['\)k['\)k['\As['\As
-['\As['\As['\As['\As['\B&['\B&['\B&['\B&['\B&['VR<`O*#&`O*#&`O*#&`O*#&`O*#&
-`O*#&`O*#&`O*#&`O*#&`O*#&`O*#&`O'+Jeb\/"k5=WKV"W@<hY0>6mK03Xec"A#5lg'GmK(!$
-J,~>
-!<E/thYKP;9)e5ZhC8A#$tAquC;p3V@eTh"3D03I25L9/HYSd2SH$Q3^&O<p;YL.I[/]P[@eTh"
-9(q[f`W'+>pAa!Vs6`0^pA\#Nk5TL+F';35;CIJ']h22jUbVT:0k0kEC;p3VHiK!rmf/2;p3TF*
-mV9`@>#P(ohP;n*;BrRK5tYV[s&(TFp+]J=p+^%Ms&)J_mV9`@>#P(ohP;mgjtZg4I\d##HYSd2
-SH$Q3^&O<p;YKf=;YKf=@eT5)`W',;s5&*;PX/LHs&,*]`EKtTS6Ahas5'P+HiL0>F';I>F(/$F
-HX]lNHX]lNHX]lNK47_VK47_VK47_VMdfR^MdfR^MdfR^MeZ-fMeZ-fMeZ-fMeZ-fMeZ-fP\O)o
-=d3Z!;Ntoo;Ntoo;Ntoo;Ntoo;Ntoo;Ntoo;Ntoo;Ntoo;Ntoo;Ntoo;Ntoo;Ntoo;Ntoo;Ntoo
-;Ntoo;Ntoo;Ntoo;Ntoo;Ntoo;Ntoo;Ntoo;CV>9hYZI4mK'[email protected]!)!1W!MoGdhYTS=
-k5=WJ]`<Q~>
-!<E0!gAg"05kmbHmK)0$r*9_Fp?le7s(Q?DqHZ?dr*;1_s5JTPPuXOXb%\`mSR#Ops5LKel:c'g
-qHZqkmVTi@BjLH4ijSmP9PsM">sRQPH!tu0;#=NHOoN-l?0\FTp@^U_p?le7s(R2eO]CiLO]Ct'
-=n_9#_Z+=UpAa!L5lP%6])PT'EVB675kan6?2!tSD>*g3;"j<o_Z+=UpAa!L5j%&grEXlTs5JTP
-PuXOXb%\`mSR#Opp,lXSp,[email protected][5XC%hC/RK(QH_Z-<@?2"<TW^)F@Y#'CX?!Vkm
-?!W"q?!W/$?!W/$?!W;(?!WG,?!WG,?!WG0?!WS4?!WS4?!WS4?!WS4?!W_8?!W_8?!W_8?!W_8
-?!UU$EEuk<F^8:@F^8:@F^8:DF^8:DF^8:DF^8:DF^8:DF^8:DF^8:DF^8:DF^8:DF^8:DF^8:D
-F^8:DF^8:DF^8:DF^8:DF^8:DF^8:DF^8:DF^890pAN_EhYuO6k5OZFmK'$TrRq<<hVS7kroO8M
-lK\B:!MT5cgAg"05l="Mk5OZGmK'm!J,~>
-!<E/thYKP;9)e5ZhI?Da%(-'.Ut,L@[/^/aH_gS@2:_`pXIQYUc2ZXbec3UiXT/=gec5'%[/^/a
-KE(Y@ec2GHs8VN;s6c,Ys8S"(pA^qHUm.DHX=2'feXW`7c$TKjF0tu@Ut,L@`W*<@pA_Lqs/_Ib
-p8$7=UoaUrm`g+XX<ZU%K:K=Ks,1sus)Y:As)YRIs,2O0p8$7=UoaUrm`g+PmW8?.Ib"JdXIQYU
-c2ZXbec3UiXT/<AXT/<A[/]iqec2Gqs6ctY[#;$cs,48ak*4Erc*XSPs6e-Y`W*oI]sOlB]sOlB
-]sOlB`O)_J`O)_J`O)_J`O)_J`O)_J`O)_J`O)_J`O)_Jc*XRRc*XRRc+U3[c+U3[c+U3[c+U3[
-=j=X]XNeG[XNeG[XNeG[XNeG[XNeG[XNeG[XNeG[XNeG[XNeG[XNeG[XNeG[XNeG[XNeG[XNeG[
-XNeG[XNeG[XNeG[XNeG[XNeG[XNeG[XNeG[XCCo"hYZI4mK'[email protected]!)!1W!MoGdhYTS=
-k5=WJ]`<Q~>
-!<E/uhZ)a:62aFUmf2t]hC8@p$^C[e3K*oi62(",62O80mf-0>5s[Nns%5:Ts5l=6pA[E5p@^45
-p@^5*s.hZ5s+<W2s$8C5p+]25p+\kqs/]]/62F2$pA[F"s&(lNp+_g3UcFA5K1c0W;ZH0u>5pmQ
-s.hZ5s+<W2s$8A"r^nE[s"Qf3p@^4,p@^45p@^45p@^5*s.hZ5s+<W2s$8A"8hi(!8q6:/;DCI'
-3Tg?63ElIF3D0#=0hV050pM^63K*oimf-0>5s[Lsp@^6's%5:Ts5l=6pA[E58lG].8lA8RC0F5%
-F';1.F';1.HWj$6HWj$6HWj$6K3Cl>K47GFK47GFK47GFK47GFK47GFK47GFMdf:NMdf:NMdf:N
-Mdl]Y;2\mU8rI.N8rI.N8sEdW8sEdW8sEdW8sEdW8sEdW8sEdW8sEdW8sEdW8sEdW8sEdW8sEdW
-8sEdW8sEdW8sEdW8sEdW8sEdW8sEdW8sEfa8c^C7r8.>5qsOLX!MoGfh>fk=k5XiL9)e8Yp&Uu_
-r8%G9r':<Tr9aX[]`<Q~>
-!W`8Srnd\7qEtNYmdBZ:hDG.5$_@<t8<s43<VH,K<VooVmf-QX9MeFFs&DHus5m!XpA[fOp@^UO
-p@^V:s/JVTs+sbLs%G]Op,lLOp,l@;s/p?A:f[Bq-scE?:jr@P8G;a>Sc>]\Q2c\Ds2&@DlFq-8
-8=BLX8<s43<VH8[5Y1lW,L6<O<E]%h4B;+K4B_CO4B_CO4IQ5L8<s43<VH8[5Y,$C5lFi8mf-QX
-9MeFFs&DHus5m!Xp@^UOp@^V>s/Jb\s,$1D>sMCd9NCf[4QcZD6tQD\9Nh)c83g0hs2J&M=]p#]
-=]p/a=]p;i=]p;i=]pGm=]pSu=]pSu=]p`$=]p`$=]p`$=]p`$=]pl(=]pl(=]pl,=]pl,=]q#0
-=]q#0s&i3aEEQG0EEQG4EEQG4EEQG4EEQG4EEQG4EEQG4EEQG4EEQG4EEQG4EEQG4EEQG4EEQG4
-EEQG4EEQG4EEQG4EEQG4EEQG4EEQG4EEQG4EW0)C2"oYWrndY6roX4FrpKgW#,1bEg>:[Oro3q>
-s69SPrpKgW"/5GBgA]q/iql.DlMg2Qo""gO~>
-!<E/uhZ)a:62aFUmf2t]hI?DY$dJ^jK>mklSH&V1SGT*>pA^%tPa%+"s+>s*s6bf@s8R^us8RGA
-s8R/Zs2BW0s/_ajs+>[us*LRAs)X_(s2D(0PaqTGs8OC'^&O=Ts8R/bs2BW0s/_ajeXZ[5c)gql
-`W*o0`W*$0s8RFmMuKLsk5TLuV#UI9SH&V1V#UI9V#UI9`W*o0`W*$0s8RFmMkk]HrM4r:s,25g
-P`,88K7g9*mYdn@s)Y"9s)ZHb`Il/0XS2[PH^p=YV#UI9pA]btXT.^HV#UIAH^(W3eVgN)UpR5!
-UqNk*UqNk*UqNk*UqNk*UqO.2UrB^:UrB^:UrB^:UrB^:UrB^:UrB^:UrB^:UrB^:UrB^:UrB^:
-UrB_@Uf#+<Unku:Unku:Unl8BUnl8BUnl8BUnl8BUnl8BUnl8BUnl8BUnl8BUnl8BUnl8BUnl8B
-Unl8BUnl8BUnl8BUnl8BUnl8BUnl8BUnl8BrhKR(pAEeEk54THp&Uu_rS@N?qr[qH!)!7Ys7QJh
-pAEbIk57LF9)S)Yp:UHV~>
-!<E0!hYlU:62aFUmf)n\hC8@p!3H+u"IqdOp+cD9s8N*S62jLVrt7%P9)noG9(qs59(qs59(qs5
-XSi)3S3clB0hV050hV050hPoos8UVjq+;"$s+@]80gYO,0s(<Q$_0N5p5@2/k*4^WXSi)$S3clB
-1&OWX`W%Yb9(qs59(qs59(qs59(qs5XSi)$S3clB1&+B@rrFi?r_!4j%P^7As8OfGp@^45p@^5B
-r;Qkhs8OhP8q1%<p+cUI0gT:Ks"S!Vp+^#S9)ljj8kNi%8kO/.8kO/.8kO/.8kOG68kOG68kO_F
-8kO_F8kO_F8kO_F8kO_F8kO_F8kO_F8kP"N8kP"N8kP"N8kP"N8kP"N8kP"N8kP"N8kP=W8kP=W
-8kP=W8kP=W8kP=W8kP=W8kLn(@S07W@S07W@S07W@S07W@S07W@S07W@S07W@S07W@S07W@S07W
-@S07W@S07W8h'K4h>jAL62jIXV!d[Mp&Uu_rS@N?r9""H!_VnKrq6AgpANhJk57OE9)e8Yp&Vi,
-J,~>
-!<E0!hYuL7k57UK8FGpFnc@H$r)j$&r;Qnj9_S0BqH<ju!C0Za=VU`44B5Pas$0`\p,l@Kp,lLO
-p,oMUrtCqsp@^UKp@^UOp@^UOEQ8%Yg3rd"$GQOs]&#PLp@^VOr;R.q9\T&sf"U:7i]OCArrnre
-p@^UKrE0i[s$0^ip@^UOp@^UOp@^UOp@^VOr;Qqk9_S0B<V]etrrGAbr`Kg/s#a:as8P>ep@^UO
-p@^VOr;V8;s8P>i?!1<Ap@^WFs#a:us8P?(p@^Uc@9roQ86K)@AQ`/aAQ`/aBj"SiBj"SmBj"Sq
-D-:"uD-:#$D-:#$D-:#$D-:#$D-:#(D-:#(D-:#(EEQG,EEQG0EEQG0EEQG0EEQG0EEQG4EEQG4
-EEQG4EEQG4F]hk8F]hj0R<;Y8R<;Y8R<;Y8R<;Y8R<;Y8R<;Y8R<;Y8R<;Y8R<;Y8R<;Y8R<;Y8
-R<;Y8R<;Y8R<;Y8R9;B;gA]q/SbYYTV=*dNncGNUgA]q17,m5*k5OWI8FGpFncGNUgA]q/iqZ"A
-mf2hY\c@6~>
-!<E0!hYlU:62aFUmf)n\hI?DY!7h#I"ML'"s)\%4s8N+@SGo>art9CCV#UIAV#UI9V#UI9V#UI9
-eboF\]p/QsF/8j9F/8j9F/61ns8VN#q4nASs/b)FF.E:1F4L3g$b_emp9`u,m_/%0eboFM]p/Qs
-F8VgJk5TLuV#UI9V#UI9V#UI9V#UI9eboFM]p/QsF82R2rrI22rhTSo%We/9s8RGAs8R/9s8R/j
-r;Ql4s8R0=UjoKGs)\5?F.BW;s*M-Qs)YQKV#SttUnkB!Unk]*Unk]*Unk]*Unk]*Unk]*Unku:
-Unku:Unku:Unku:Unku:Unku:Unku:Unku:Unku:Unku:Unku:Unku:Unku:Unku:Unl8BUnl8B
-Unl8BUnl8BUnl8BUnl8BUnffk[%sMB[%sMB[%sMB[%sMB[%sMB[%sMB[%sMB[%sMB[%sMB[%sMB
-[%sMB[%sMBUgj&rh>jAL62jIXV!d[Mp&Uu_rS@N?r9""H!_VnKrq6AgpANhJk57OE9)e8Yp&Vi,
-J,~>
-!s&AXhYZI69)n>Xp&X#!r(7$Ts.oTJ"$-)K1&=KDmf-Jh8f$Rh8kNRmjtTL%p+]25p+]25p+_g3
-V#<"]3VN/$9(qs59(qs58kMBAV#TjKqFV0;s4-h$0hV050pM^6r@n^@XT..QPlK:00pM^6r@nC7
-p@^6=8cc$nr_!4a%l$]Mp+]25p+]25p+_g3V#<"M3VN/$pdtVUs'#@n''B3d8n.h_0hV050hV05
-0pM^6r@nB9s'#CoIp,bDp+b_08m6!0jtTd-p+]H;@fN5a8nqO%8on0.8on0.8on0.8pa`68pa`6
-8qUSF8qUSF8qUSF8qUSF8qUSF8qUSF8qUSF8rI.N8rI.N8rI.N8rI.N8rI.N8rI.N8rI.N8sEdW
-8sEdW8sF'_8sF'_8sF'_8sF'_8i2cI8kP=_8kP=_8kP=_8kP=_8kP=_8kP=_8kP=_8kP=_8kP=_
-8kP=_8kP=_8kP=_8h'K5h>l^962X=Tmeuh[V"XfE!Tl]Hk5F]K9()ZO!MoGgh>l^962X=Tmf)n\
-]`<Q~>
-!s&AXhYuO6k5IaM8FGpFncJO=2#L>TRK'Gg49J.Jp,r1O!p]esrDaWqs&E'5s5lFDp@^UKp@^UK
-p@^V:s/u;_'1hij4B;+K4B;+K4B5BX=f)/`;#40#IK.adPsA@Cp,ncCY5LHk8?W!HV3V)7Y!AET
-Y5LHb8G;a>r)Ed's8H$up('8cp@^UKp@^UKp@^V:s/u;_"%`.Z4SVnXlMkGo<>+Ho<E3c5jucZ;
-p,l@Kp,ncCY5LJ4lMkEu<E3I1p@^W6s&EcQs5lFLp@^UW<GDK55ZMr8<E4<U<E4HY<E4HY<E4Ta
-<E4`e<E4li<E4li<E4li<E4li<E5#q<E5#q<E5#q<E5#q<E5/u<E5/u<E5/u<E5/u<E5<$<E5<$
-<E5<(<E5H,<E5H,<E5H,<E5H,s&D%HEE-#,EE-#,EE-#,EE-#,EE-#,EE-#,EE-#,EE-#,EE-#,
-EE-#,EE-#,EE-#,EE-#,EE+jdrn[Y7q*b6R!:KjW!qr>Yrn[_97,n4.rosRQ8FHKJ!qr>Yrn[Y7
-q*b6R!:KjW!P/8]~>
-!s&AXhYZI69)n>Xp&X#Zr1!i-s2FqX",$XRF8DC.pA^BUS/1huK:K%CmW4ous)X_1s)X_1s)Z0Z
-`VjikKE(smSH&V1SH&V1S=Gh.`W,XrqO@u$s5s$gH^t-9F2e0urGrC"ec4dN[/]:5Hc?$(rGr'n
-s8R0<S/0ZTK:JJ3s)X_1s)X_1s)X_1s)Z0Z`Vji[KE(smpm_EZs-3JP'))?XS?2bYF.E:1F.E:1
-F2e0urGr&6s-3MQJ#&V7s)[o6K<2H[mW53(s)Y!+XT-7dS?/NVS@#)^S@#)^S@#)^S@#)^S@u"o
-S@u"oS@u"oS@u"oS@u"oS@u"oS@u"oS@u"oS@u"oS@u"oS@u"oSAhS"SAhS"SAhS"SAhS"SAhS"
-SAhS"SAhS"SAhS"SAhS"SAhS"S2A3dS=IR"S=IR"S=IR"S=IR"S=IR"S=IR"S=IR"S=IR"S=IR"
-S=IR"S=IR"S=IR"S7;3kh>l^962X=Tmeuh[V"XfE!Tl]Hk5F]K9()ZO!MoGgh>l^962X=Tmf)n\
-]`<Q~>
-!W`8Wqr[qHs%<=Zr:U0J.JudG;XXRTH^'.Tk5T0oqar`9s5o5dP[^0_]kYOdM_Ritp+]25p+]2%
-s(Z$2s."G#K1bk20hV050hUU.C/V-cC4lQC1&4Eemf3;Q3D0#=0iIH>S9pKQ8pgU<@UfB;C,o2[
-s."G#K1bk21&OWfF8pSQ9(qs59(qs59(qs59'6.g@da8dH^'.Tp@^459'5:68q*<1k)4SN@\!J3
-C;p420hV050hV050iIH>S:d&YSH%`0H^nhCk5T1ls1NKms,/U(p@^458u2Jr3GM_i8nqO%8on0.
-8on0.8pa`68pa`68qUSF8qUSF8qUSF8qUSF8qUSF8qUSF8qUSF8rI.N8rI.N8rI.N8rI.N8mR?a
-8kP"N8kP"N8kP=W8kP=W8kP=_8kP=_8kP=_8kP=_8kP=_8kP=_8kP=_8kP=_8kP=_8kP=_8kP=_
-8kP=_8kP=_8kP=_8kP=_8kP=_8kP=_8kLQ+hVRDWrB^<Qr:U>jp>4Zgk!B"/r9aPWr:U;ip>4Zg
-k5@UGmeocVp&Vi,J,~>
-!W`8Wro3q>s69\S8FGpFo)JCag,/_-$XrK"SV<>c<Ta=(@Ja%^U&X8;JXL5Cs2&p$s-5]Hp@^UK
-p@^[email protected]&/N7p,l@Kp,l@;s)hbUM04[ThE:U6,jPF09Lr1Wp,ldOqON>*M,f90s)E&Y
-s*7"@meWK.Q&/N7p,r7Q,(9KB:f[5_4B;+K4B;+K4B:PDF`$RCSV<>c<VH,K<E82Dr)J3>s5oGp
-R;&5l_KF$$Prr(?p,l@Kp,lpSqONV6M4st3Ob'3C<Ta=(Y5c@eb5[_l<VH,K<E5mqD+&MT<E4<U
-<E4<U<E4HY<E4Ta<E4`e<E4li<E4li<E4li<E4li<E5#q<E5#q<E5#q<E5#q<E5/u<E5/u<E5/u
-<E3=eD,jT$D,jT$EE-#(EE-#(EE-#,EE-#,EE-#,EE-#,EE-#,EE-#,EE-#,EE-#,EE-#,EE-#,
-EE-#,EE-#,EE-#,EE-#,EE-#,EE-#,EE-#,EE-!qo%r6_iqc(B8H/2[p'.5]hVR8O7/l?JlMp8P
-8H/2[p'%/\hVR8OrC$\N!(?fWrpg-a\c@6~>
-!W`8Wqr[qHs%<=Zr:U0J@f2`(V"Xi-]u@[TpA^YYqj]Ogs6dS-`N7&YeZ@p5[!S>Cs)X_1s)X_(
-s.$1as2D[j]q#-&F.E:1F.Dt(S>=]KXM+YrHhj0WpAb/FMk'hIF/8O0`P'7(SA"t&S>?2bUk>K:
-s2D[j]q#-&F8VOP[/ZqdSH&V1SH&V1SH&V1SG)uQXS2\5]u@[Ts8R/1SF6+KS:8`_m_-!HXMt4i
-XQKPiH^t-9F.E:1F/8O0`P'7(c2[4F[*>\BpA^Z-s4+L=s0R-Cs8R/1SB_(uK<1l=S@#)^S@#)^
-S@#)^S@#)^S@u"oS@u"oS@u"oS@u"oS@u"oS@u"oS@u"oS@u"oS@u"oS@u"oS@u"oS@u"oS6a+8
-S=IR"S=IR"S=IR"S=IR"S=IR"S=IR"S=IR"S=IR"S=IR"S=IR"S=IR"S=IR"S=IR"S=IR"S=IR"
-S=IR"S=IR"S=IR"S=IR"S=IR"S=IR"S=F'^hVRDWrB^<Qr:U>jp>4Zgk!B"/r9aPWr:U;ip>4Zg
-k5@UGmeocVp&Vi,J,~>
-!<E/sk54TDp&X#!qaq3)^%VKoMa<9ps(_C&1lL5js5mcVPii#.PVG0jp@^45p@^45Mt[0c>.sY0
-mYaC)p+]25p+]0tpA\mPpAaj*;DIu>,cq$b0gSG*p+]0K^%VKoMa:8@s#ECFs#EA;@_ML8mYaC)
-p+cG:s4&5X9(qs59(qs59(qs58rNECC0J=Es6be2p@^459(qs5r(;ErhZ*W<@R67@s5oP#3D0#=
-0hV050hPogpAaQ=8rMR+s5mcVPkP,lPii#.S2!#rp@^45C>RJq>#IsbC0F5%F';1.F';1.HWj$6
-HWj$6HX]T>K47GFK47GFK47GFK47GFK47GFK47GFK47GFMdf:NMdf:NMdf:NMdl]Y;2\mU8rI.N
-8rI.N8sEdW8sF'_8sF'_8sF'_8sF'_8sF'_8sF'_8sF'_8sF'_8sF'_8sF'_8sF'_8sF'_8sF'_
-8sF'_8sF'_8sF'_8sF)i8cgI0hYuX=Ud7<D8cYsjp&_&XhYu[:62F4Op&_&XhYlU:62g6O9)SA`
-]`<Q~>
-!<E0!ir8*>lMg5No)A=`g,/\'$YdKOs6>S7NUlpc9`%XCQ/;Q;iakfOk5X_34@E$>p,l1Fp,l02
-o(m??_Y4#pNC`d:4AbbF4A_%.qJj[Ks7XT<5l"5%Y5cL(9MkHV4A]b/pAaE;86Puh6qmIW6qC-g
-_Y4#pNC`d:4SqtTef[L[p@^UFp@^UFp@^UFNUlpcBu9TDlA\@.p,l/Jp@^WH:k"\ds8(_d9UY&C
-lBOJ";"jTF;"jTF:hdf?s6>S?Q/;Q;iakfOo(m?sk5X_;4@E$>p,l/ghUXf#>u4@?>u4@?@8KdG
-@8KdK@8KdOAPc3SAPc3WAPc3WBi%W_Bi%W_Bi%W_Bi%W_Bi%WcBi%WcBi%WcBi%WcBi%WgD?!F0
-O_mokO_mokO_mokQ#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#0>o
-Q#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#6Ls!]9?%ro*pOr'^NT!ikh^rq6Demb[s&qaCBRs760_!ho&=
-ro+"A6q%%>!q&TMrpp*_!P/8]~>
-!<E/sk54TDp&X#ZqihG`eb9%:[#;Wks.oLU1pl]Ns6c,0^$bpoZu^kas8R/)s8R/)^%VK%Ut,2=
-p9]bXs)XG)s)XF<pA^rNpAb0LMgP8a,gHA>F-Mphs)XF#eb9%:[#:ISs*K\(s*KZgUt,2=p9]bX
-s)\(%s5kG^PlLc)PlLc)PlLc)PeHejUnlQ7s7WgXs8R/)PlLc)r02Z;mf3=TP`*6Cs7Wg@K9ZE9
-F-Q_)F-NKNpAainMmVpPs6c,0^%VK%`U<d"]lSgjs8R/)V!dAdS=Gh.XIPN>XIPN>XIPN>XIPN>
-[%rqN[%rqN[%rqN[%rqN[%rqN[%rqN[%rqN]qgmW]qgmW]qgmW]qgmW]qgmW]qk[m;8&ciPeElW
-PeElWPeElWPeElWPeElWPeElWPeElWPeElWPeElWPeElWPeElWPeElWPeElWPeElWPeElWPeElW
-PeElWPeElWPeElWPeEmlPQG=^hYuX=Ud7<D8cYsjp&_&XhYu[:62F4Op&_&XhYlU:62g6O9)SA`
-]`<Q~>
-!<E/tk54TDp&b9E.JcX;5rnp!"$oOF1&CnOF%SIk0`jX53W:`53W;YN1&jlG1&jiL5qt)[5rnp!%
-RE]A0hP%m0hP&(0eksSr\4C5qYp_?8kM)u3W;YN1&jiH5rnp!#XM'T0el9m0erZ"!C8aF0`s^60
-erPt(1Q]r8kLfm8kLfm8kLfm8kMB(0gS)cr\4L@8hi("9)gXC8cUmM0`jX53W:`53W;YN1&jlG1
-&acF3W:`75tX091&k,S5qt)d3W:a_3D*aY0em.5p.@>C8kNi%8kO/.8kO/.8kO/.8kOG68kOG>8
-kO_F8kO_F8kO_F8kO_F8kO_F8kO_F8kO_F8kP"N8kP"N8kP"N8kP"N8kP"N8kP"N8kP"N8kP=W8
-kP=_8kP=_8kP=_8kP=_8kP=_8kP=_8kP=_8kP=_s%4Z'C._*_C._*_C._*_C._*_C._*_C._*_C
-._*_C._*_C._*_8h'3*k54TDp&b8imec/Dmec\Zs.o)[k54TDp&Vi,J,~>
-!s&A\ir8*>lMg5No)A=aqURM":]X6Tr]C9R:e3_FrrRIB8GtXP9Me.V49.eK;#`ZX;#`ZX:^'BP
-4A8F6r]CZ]:cpj::cpj::e3]29L/S>!'pD\"aNp@6p*a6;#`ZX:]X6Tr]CHW:f'8::f'8:r_NVh
-5lNkJ85ME2qbS&BnsN<N4?QG:4?QG:4?QG:83B".9L/S>"%Z6N4T81W4SqqT8GtXP9Me.V49.eK
-;#`ZX;#`ZW:]Nc[49J,N83m/:Ip#cB4?QG.4?Pks:ha&p4Dgqc>tA6t:iTc;:j$2C:jHJG:jlbK
-:jlnO:k<1S:k`IW:k`IW:k`U[:l/m_:l/m_:l/m_:lT0c:lT0c:lT0c:lT0c:m#Tk:m#Tk:m#Tk
-:m#Tk:mGlo:mGlo:mGlo:mGlo:mGlo:mGlo:c"AR:f*Eo:f*Eo:f*Eo:f*Eo:f*Eo:f*Eo:f*Eo
-:f*Eo:f*Eo:f*Eo:f*Eo:f*ER2"(A&roX4FrpKdVrq6EiU$hp>roX4FrpKdVrq6EiU$hp>roX4F
-rpKdVrq6B(!.Y~>
-!<E/tk54TDp&b9E@eko^HiA'gK8YA'qYpVmMhD"M"+,raKDoolKDpf/F8q0uF8q.%K6)*dMgPGE%
-YK[\F,PrtF,Ps/F)ut\rc8'dqYp_pMi2q'HiAs'F8h'tHiA'lK8YY/F,PrtF8_!sHiA'gK8Xelq
-hl5[p:ZBBF*!7tF*!7tF*!7tK6)*dMgPGE"+uMQF8h*tF8LjqKDoooH]*f7rc8'lrepets,6nur
-egc'rc8O$Mh?@tF*ih0K6)*lKDoqAK8Z7aF*!kjp5=9^Mi4BqMi4BqMi4BqMi4[,Mi4[,Mi4[,M
-i4[,Mi4[,Mi4s4Mi4s4Mi4s4Mi4s4Mi4s4Mi4s4Mi4s4Mi4s4Mi4s4Mi4s4Mi4s4Mi59=Mi59=M
-i59=Mi59=Mi59=Mi59=Mi59=Mi59=Mi59=Mi59=s,/8<S;W<=S;W<=S;W<=S;W<=S;W<=S;W<=S
-;W<=S;W<=S;W<=Mdl,Ok54TDp&b8imec/Dmec\Zs.o)[k54TDp&Vi,J,~>
-!<E/uk54TDpAb-neLBuRqCqt1bsD1\!'/Rq!b.Z[_Ee/or]pNVr]q5r8jPa@8jPaH8jPaH8jPaH
-8t8d6r]u$C;F*T`;F*T`;F*Ti;F*Ti;F*Ti>!YH$>!YH$>!YH$>!YH$>!YH$>!YH,>!YH,>!YH,
->!YH,>!YH,>!YH,>!YH,>!YH4>!YH4@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<
-@R3;<@R3;<@R3;<@R3:"Mdet<Mdet<Mdet<Mdet<Mdet<Mdet<Mdet$mel5Emec_XrrJq`r9!nE
-qtC'i!Mo/]k54TDp&b9-!.Y~>
-!W`8[roX4FrpKdVrq?Bg!S0*t:]OMl49/(#:]OMl49/(*:]b@%8B+I+<W5gE=]J9p>ua]t>ua]t
-@9HE'AQ_i+Bj"8/D-`uH5Zpo[EEuC;F^\*CH!sNGI:5rKI:Z5OJRqYSKk4(WKk4(WKkX@[M.od_
-M.od_M.od_M.od_NG23cNG23cNG23cO_IWgO_mokO_mokO_mokQ#0>oQ#0>oQ#0>oQ#0>o5*]t]
-:mGlo:mGlo:mGlo:mGlo:mGlo:mGlo:mGlo:mGlo:mGlo:mGlo:mGlo:mGlo:mGlo:mGlo2"'A_
-roX4FrpKdVrq?Bg"/5/Bir8*>lMg5No)A@_q?*GZio9t"rp'LNrpp'^!rBJ.J,~>
-!<E/uk54TDpAb-neRJ$+qJuXhc&;F>!/&g[!h?rV_M\DYregc@repf@s,6oAs,.;UP`(HiP`(Hi
-Pf8l.rel9%P`(HqP`(HqP`(I$S;W<,S;W<,S;W<,S;W<,S;W<4S;W<4S;W<4S;W<4S;W<4S;W<4
-S;W<4S;W<4S;W<4S;W<4S;W<4S;W<=S;W<=S;W<=S;W<=S;W<=S;W<=S;W<=S;W<=S;W<=S;W<=
-S;W<=S;W<=S;W<=S;W:F]pt"=]pt"=]pt"=]pt"=]pt"=]pt"=]pt!imel5Emec_XrrJq`r9!nE
-qtC'i!Mo/]k54TDp&b9-!.Y~>
-!<E0!k54TDpAY'meL?&8r]pNE_a+8pr]pNVr]q5r8jPa@8jPa@8jPaH8jPaH8jPa8r]u$C;F*T`
-;F*T`;F*T`;F*Ti;F*Ti>!YH$>!YH$>!YH$>!YH$>!YH$>!YH,>!YH,>!YH,>!YH,>!YH,>!YH,
->!YH,>!YH4>!YH4@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<
-@R3:#Mdet<Mdet<Mdet<Mdet<Mdet<Mdet<Mdet<.IR/sqsO@Trr3"pmeu;Fmec_WrrJq`rT="F
-qtC'i!PJJ`~>
-!<E0!k5OZFmf)eVpAXmhehhqOs%EGa7)qt$;#X.<<DZ@_<DZ@_=\qdc>uaQl@9#upAQ;DtBj",'
-:fU1_D-9P+EEu73F^7[7H!O*;H!sB?I:[email protected]@S
-M.K@SNFbdWNG2'[NG2'[NG2'[O_IK_O_IK_O_IK_Q"`ocQ"`oc5*]hU9U0<c9U0<c9U0<c9U0<c
-9U0<c9U0<c9U0<c9U0<c9U0<c9U0<c9U0<c9U0<c9U0<c9U0<c9Jl1sroX4FrpKdVrq??f!ho&A
-roX4FrpKdVrq??f!ho&AroX4FrpKdVrq?Bg!P/8]~>
-!<E0!k54TDpAY'meRF)^rdt2t_h.rIrdt3/re(6/s+>fcMh?YHMh?YHMh?YHMh?Y?Mh?YPMh?YP
-Mh?YPP_4UaP_4UaP_4UaP_4UiP_4UiP_4UiP_4UiP_4UiP_4UiP_4UiP_4UiP_4UiP_4UiP_4Uq
-P_4UqP_4UqP_4UqP_4UqS:cI$S:cI$S:cI$S:cI$S:cI$S:cI$S:cGK[%)c$[%)c$[%)c$[%)c$
-[%)c$[%)c$[%)c$[%)c$[%)c$[%)c$[%)c$[%)c$@da3WqsO@Trr3"pmeu;Fmec_WrrJq`rT="F
-qtC'i!PJJ`~>
-!W`8_qsO@Tr;QfJ.=k*B8qT_<.IQ?\qsO@Tr;QkpmcN[/mec_Urr](bk2uR/qtC!g!PJJ`~>
-!W`8_rp'LNrpp'^rqcZp!R`fU=b9e.<<G)Ck2u[.rpKdVrq??fs8N1plK77.lMg5No)A@^qZ$Qt
-U$Ce&rp'LNrpp'^rqZ]r\c@6~>
-!W`8_qsO@Tr;QfJ@Y(>+Uk>HF@d`C@qsO@Tr;QkpmcN[/mec_Urr](bk2uR/qtC!g!PJJ`~>
-!!)DN!%EI)JI$l6!%I<"!2T"H!2T"H!!%N~>
-!!)DK!&T64JI$l6!&X)*!28eB!28eB!!%N~>
-!!)DN!+LKbJI$l6!+P>[!2T"H!2T"H!!%N~>
-!<E0!joD3.s+13$s1/.5V#TT>]`<Q~>
-!<E0!joD*+s+13$s1/.5U&X9;\c@6~>
-!<E0!joD3.s+13$s1/.5V#TT>]`<Q~>
-!<E0!joD3.s+13$s1847K;AP0k.LbF~>
-!<E0!joD*+s+13$s1847JYE,+k.1PC~>
-!<E0!joD3.s+13$s1847K;AP0k.LbF~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys8(:A!!:[N!:889!<1OK!!:[N!;tCI!:/25!9Mc2!:SJ6!!^sR!7fU"!.i[Oe^)eG
-K*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IF!!:jS!:8G>!<1^P!!:jS!;tRN!:/A:!9Mr7!:SY;!!_-W!8?-,!.ijTg<\LQ
-JH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:A!!:[N!:889!<1OK!!:[N!;tCI!:/25!9Mc2!:SJ6!!^sR!7fU"!.i[Oe^)eG
-K*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!;b7G!:889!<1OK!;Y1F!:889!<1OK!9Vi3!:SJ<!;b7G!<:UL!.i[Oe^)eG
-K*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IL!;bFL!:8G>!<1^P!;Y@K!:8G>!<1^P!9W#8!:SYA!;bFL!<:dQ!.ijTg<\LQ
-JH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:G!;b7G!:889!<1OK!;Y1F!:889!<1OK!9Vi3!:SJ<!;b7G!<:UL!.i[Oe^)eG
-K*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<1OK!"7<W!7fU"!7_&Le^aTuo%!a?rmh#Ks4.&J
-rmgrIs4.,L"4[AOeboLJec,UNeGoU?ec,XJec,UOeGoU"r;clJr;clJrr</O!!(RJ!.i[Oe`,-Z
-K*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IL!<(XO!!M!U!8?0*!:nkD!<1^P!"7K\!8?-,!87DQg=lK*o%O*Drn@APs4[DO
-rn@;Ns4[JQ"53_TgAM$OgA_-Sg&M-DgA_0OgA_-Tg&M-,r;clOr;clOrr</T!!(aO!.ijTg>^id
-JH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<1OK!"7<W!7fU"!7_&Le^aTuo%!a?rmh#Ks4.&J
-rmgrIs4.,L"4[AOeboLJec,UNeGoU?ec,XJec,UOeGoU"r;clJr;clJrr</O!!(RJ!.i[Oe`,-Z
-K*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@rmh#K#1W\ReGoU"rW!/Q!!(R"!!)T?rW)oI
-rrE)Lrr<;S!!(R"!!(RG!<:UL!!(RK!!:[N!;"b@!<(IJ!"[T[!7fU"!7fU"!7fU"!7goGs4.,L
-J^o>%j440^"f21\k.LbF~>
-!<E0!joV7Vs8(IL!<(XO!"%?Z!87DQg=cN,o@j3Ern@AP#20%Wg&M-,rW!/V!!(a,!!)TDrW)oN
-rrE)Qrr<;X!!(a,!!(aL!<:dQ!!(aP!!:jS!;"qE!<(XO!"[c`!8?-,!8?-,!8?-,!8@8Ls4[JQ
-J_G\/j4aNa"ektYk.1PC~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@rmh#K#1W\ReGoU"rW!/Q!!(R"!!)T?rW)oI
-rrE)Lrr<;S!!(R"!!(RG!<:UL!!(RK!!:[N!;"b@!<(IJ!"[T[!7fU"!7fU"!7fU"!7goGs4.,L
-J^o>%j440^"f21\k.LbF~>
-!<E0!joV@Ys8(:D!"@BX!7_&LeGoU"eGoU@ebT7WeGoU"!!(R"!!(OL!7fU"!:\P<!<:UL!<:UL
-!;tCI!!(RK!<:UL!;tCI!<:UL!;"b=!#!f^!7_&Le^XX"e^XX"e^XX"ec#RKec#Q"eUc9/ec17*
-V#TT>]`<Q~>
-!<E0!joV7Vs8(II!"@Q]!87DQg&M-,g&M-EgA1d\g&M-,!!(a,!!(^Q!8?-,!:\_A!<:dQ!<:dQ
-!;tRN!!(aP!<:dQ!;tRN!<:dQ!;"qB!#!uc!87DQg=cN,g=cN,g=cN,gAV*PgAV)'g4@u9gAc^-
-U&X9;\c@6~>
-!<E0!joV@Ys8(:D!"@BX!7_&LeGoU"eGoU@ebT7WeGoU"!!(R"!!(OL!7fU"!:\P<!<:UL!<:UL
-!;tCI!!(RK!<:UL!;tCI!<:UL!;"b=!#!f^!7_&Le^XX"e^XX"e^XX"ec#RKec#Q"eUc9/ec17*
-V#TT>]`<Q~>
-!<E0!joV@Ys8(:G!<(IJ!!CaO!7grHo@<j@rmh#K$Io+VeGoU"eGoU"qZ-*8rVurKqZ-ZHqu?fK
-!!*#KrrDuIrrE)LrrDZ@rrE#Jrr<>T!!(R"!!(R"qZ$]J!!)rIrW%N"J^rc1s+:KNs5rIW!.Y~>
-!<E0!joV7Vs8(IL!<(XO!!CpT!8@;Mo@j3Ern@AP$JGI[g&M-,g&M-,qZ-*=rVurPqZ-ZMqu?fP
-!!*#PrrDuNrrE)QrrDZErrE#Orr<>Y!!(a,!!(a,qZ$]O!!)rNrW%N'J_K,;s+(?Is5rIT!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!!CaO!7grHo@<j@rmh#K$Io+VeGoU"eGoU"qZ-*8rVurKqZ-ZHqu?fK
-!!*#KrrDuIrrE)LrrDZ@rrE#Jrr<>T!!(R"!!(R"qZ$]J!!)rIrW%N"J^rc1s+:KNs5rIW!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!!UmQ!7_&Ln(%F<rmh#K%+P=XeGoU"eGoU"!!)K<rrE&Krr<,N!!)rI
-rrE)Lrr<,N!!*#KrrDuIrrE)LrrDZ@rrE#Jrr<DV!!(R"!!(R"!!)rIrrDrHrW%N"J^rf2s+:KN
-s5rIW!.Y~>
-!<E0!joV7Vs8(IL!<(XO!!V'V!87DQn(RdArn@AP%,([]g&M-,g&M-,!!)KArrE&Prr<,S!!)rN
-rrE)Qrr<,S!!*#PrrDuNrrE)QrrDZErrE#Orr<D[!!(a,!!(a,!!)rNrrDrMrW%N'J_K/<s+(?I
-s5rIT!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!!UmQ!7_&Ln(%F<rmh#K%+P=XeGoU"eGoU"!!)K<rrE&Krr<,N!!)rI
-rrE)Lrr<,N!!*#KrrDuIrrE)LrrDZ@rrE#Jrr<DV!!(R"!!(R"!!)rIrrDrHrW%N"J^rf2s+:KN
-s5rIW!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@rmh#K#1W\ReGoU"rW!/Q!!(R"!!)W@rrE&K
-rr<V\!!(R"!!(OL!7fU"!7_&Lrmh#Ks4.,L#1W\Re^XX"o@<j@rRLoJ#LreSe^XX"ec#RKec,UN
-eGoUKec,XLec,W#eUc92ec17*V#TT>]`<Q~>
-!<E0!joV7Vs8(IL!<(XO!"%?Z!87DQg=cN,o@j3Ern@AP#20%Wg&M-,rW!/V!!(a,!!)WErrE&P
-rr<Va!!(a,!!(^Q!8?-,!87DQrn@APs4[JQ#20%Wg=cN,o@j3ErS%8O#MK.Xg=cN,gAV*PgA_-S
-g&M-PgA_0QgA_/(g4@u<gAc^-U&X9;\c@6~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@rmh#K#1W\ReGoU"rW!/Q!!(R"!!)W@rrE&K
-rr<V\!!(R"!!(OL!7fU"!7_&Lrmh#Ks4.,L#1W\Re^XX"o@<j@rRLoJ#LreSe^XX"ec#RKec,UN
-eGoUKec,XLec,W#eUc92ec17*V#TT>]`<Q~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<1OK!"7<W!7fU"!7_&Le^aTun^[O;rmgrIrmguJ
-!7h#JrRLiHs4.,Ls4.,Lo@<j@rRLoJ!n@8Nrmh#Ks4.&Js4.,LrRLiHJ^o>%imn']"f21\k.LbF~>
-!<E0!joV7Vs8(IL!<(XO!!M!U!8?0*!:nkD!<1^P!"7K\!8?-,!87DQg=lK*n_3m@rn@;Nrn@>O
-!8@AOrS%2Ms4[JQs4[JQo@j3ErS%8O!nmVSrn@APs4[DOs4[JQrS%2MJ_G\/inFE`"ektYk.1PC~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<1OK!"7<W!7fU"!7_&Le^aTun^[O;rmgrIrmguJ
-!7h#JrRLiHs4.,Ls4.,Lo@<j@rRLoJ!n@8Nrmh#Ks4.&Js4.,LrRLiHJ^o>%imn']"f21\k.LbF~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joD3.eUc8%e[a36V#TT>]`<Q~>
-!<E0!joD*+g4@t/g:>o@U&X9;\c@6~>
-!<E0!joD3.eUc8%e[a36V#TT>]`<Q~>
-!<E0!joD3.eUc8%e]lY4K*Kl%s5rIW!.Y~>
-!<E0!joD*+g4@t/g<J@>JHji%s5rIT!.Y~>
-!<E0!joD3.eUc8%e]lY4K*Kl%s5rIW!.Y~>
-!<E0!joV@/eU_IdC4U-JCAucPK*VG,V#TT>]`<Q~>
-!<E0!joV71g4=g+JUrC#Jc=BlJHu5/U&X9;\c@6~>
-!<E0!joV@/eU`X0Mh-f7MuM8qK*VG,V#TT>]`<Q~>
-!<E0!joV@/eU_IdC4U-KC&m]$ec19u]`<]]^&S*:eYN6-k.LbF~>
-!<E0!joV71g4=g+JUrC$JH5`LgAca#_>o/`_Z0W?g7eQ/k.1PC~>
-!<E0!joV@/eU`X0Mh-f8MZEeVec19u]`<]]^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDW=_s+C0]s8N;RV#TT>]`<Q~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc!:bs+1$`s8N;WU&X9;\c@6~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDW=_s+C0]s8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDW=`s+>t$^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc!:cs+,au_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDW=`s+>t$^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KD`F_s8R`K^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc*Cbs8RZI_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKD`F_s8R`K^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXT#=$!;rqs!.h5&XQ6J_mf(c:KD`F_rrU`'KD`F_rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+gA]h+!;tRL!.ijTg>pufs8LaPJc*CbrrUo*Jc*Cbrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k5ONC!;u!X!.j9`k2b\)s8LRKKD`F_rrU`'KD`F_rs%#Ls5rIW!.Y~>
-!<E0!joqR2eS8j#qZ-Srq>gPsq>gMrrW)hsquHbuquHAjquHYrq>^MsrW)r!rVur"q>^MsquGr^
-!W];%rN#u!rN#u!JZOF(jfJLMrmh%$rOr72s4..%r4W.1#1]OLk2s>WJ,~>
-!<E0!joqI4g4=h/qZ-TKq>gQLq>gNKrW)iLquHcNquHBCquHZKq>^NLrW)rOrVurPq>^NLquGs7
-!W^pSrRq5OrRq5OJ_G\/jkBb7rn@C'rPJU7s4[L(r5/L6#25dNk2s5TJ,~>
-!<E0!joqR2eVf@JqZ-TWq>gQXq>gNWrW)iXquHcZquHBOquHZWq>^NXrW)r[rVur\q>^NXquGsC
-!W_?_rT4([rT4([J`_OGjlZUCrmh%$rOr72s4..%r4W.1#1]OLk2s>WJ,~>
-!<E0!jp.^4eS8j#X8r4#!!)u!!!)u!#lq'.!3E7%XK2F"X8i7rX8i7tX8i7iX8i7rX8i8!X9/I(
-X8r1"!!*#"!!)u!!!*#"!!)/_!W];%rN#u!rN#u!JZOF(jfJLMrmh%$rOr72rmh%$rOr72#1]OL
-k2s>WJ,~>
-!<E0!jp.U6g4=h/g&V**!!)uO!!)uO#lr]5!8?-,g=cQ)g&M-Kg&M-Mg&M-Bg&M-Kg&M-Og&h?/
-g&V')!!*#P!!)uO!!*#P!!)08!W^pSrRq5OrRq5OJ_G\/jkBb7rn@C'rPJU7rn@C'rPJU7#25dN
-k2s5TJ,~>
-!<E0!jp.^4eVf@JjoGAB!!)u[!!)u[#ls,M!9WDDk2l[Ajo>DWjo>DYjo>DNjo>DWjo>D[joYVG
-joG>A!!*#\!!)u[!!*#\!!)0D!W_?_rT4([rT4([J`_OGjlZUCrmh%$rOr72rmh%$rOr72#1]OL
-k2s>WJ,~>
-!<E0!jp.^4eS8j#X8r1"!!*#"!!)u!#lq'.!3E7%XK2F#X9&C'!;`bs!;iht!:[&i!;W\r!<&u$
-!3E7%r2]kuri?)"rN#u!ri?)"poOJqnuMonXK2F#X8i8!X8i6OXF[J7XT._fec1:$^&S-2ec1:#
-^&S*:eYN6-k.LbF~>
-!<E0!jp.U6g4=h/g&V')!!*#P!!)uO#lr]5!8?-,g=cQ*g&_9.!;bCL!;kIM!:\\B!;Y=K!<(UR
-!8?-,r7V,Nrn7>PrRq5Orn7>PptG`Jo%F0Gg=cQ*g&M-Og&M,(g4@u>gAh3PgAca'_Z0Z7gAca&
-_Z0W?g7eQ/k.1PC~>
-!<E0!jp.^4eVf@JjoG>A!!*#\!!)u[#ls,M!9WDDk2l[BjoPPF!;bgX!;kmY!:]+N!;YaW!<)$^
-!9WDDr8mtZroO1\rT4([roO1\pu_SVo&^#Sk2l[Bjo>D[jo>C4k(2[Vk5YJ\ec1:$^&S-2ec1:#
-^&S*:eYN6-k.LbF~>
-!<E0!jp.^4eS8j#X8r1"!!*#"!s#F(!;`bs!;`bu!3?1sX8i7tX8i7iX8i7rX9/I(X8r1"!!*#"
-!!)u!!s#F(!;rnu!;NYq!:m2n!3E7%rN#u!rN#u!JZOF(jfJLMrmh%$rk8@3r71h"rk8@3#1]OL
-k2s>WJ,~>
-!<E0!jp.U6g4=h/g&V')!!*#P!s%'/!;bCL!;bCN!87GLg&M-Mg&M-Bg&M-Kg&h?/g&V')!!*#P
-!!)uO!s%'/!;tON!;P:J!:nhG!8?-,rRq5OrRq5OJ_G\/jkBb7rn@C'rke^8r7_1%rke^8#25dN
-k2s5TJ,~>
-!<E0!jp.^4eVf@JjoG>A!!*#\!s%KG!;bgX!;bgZ!9O:Xjo>DYjo>DNjo>DWjoYVGjoG>A!!*#\
-!!)u[!s%KG!;tsZ!;P^V!:o7S!9WDDrT4([rT4([J`_OGjlZUCrmh%$rk8@3r71h"rk8@3#1]OL
-k2s>WJ,~>
-!<E0!jp.^4eS8j#X8r1"!!*#"r;c\q!!)nt!!*#"!!)nt!!)nt!!)Mi!!)hrr;cbs!!*#"!!)u!
-r;cbs!!)5a!!*#"!!)u!!!)u!!!%SOJZRt7s6fm:s+C?bs8VuHs+C<as8N;RV#TT>]`<Q~>
-!<E0!jp.U6g4=h/g&V')!!*#Pr;c]J!!)oM!!*#P!!)oM!!)oM!!)NB!!)iKr;ccL!!*#P!!)uO
-r;ccL!!)6:!!*#P!!)uO!!)uO!!%T(J_K5>s8W)Ps+13es8VuMs+10ds8N;WU&X9;\c@6~>
-!<E0!jp.^4eVf@JjoG>A!!*#\r;c]V!!)oY!!*#\!!)oY!!)oY!!)NN!!)iWr;ccX!!*#\!!)u[
-r;ccX!!)6F!!*#\!!)u[!!)u[!!%T4J`c(Vs8W)Ks+C?bs8VuHs+C<as8N;RV#TT>]`<Q~>
-!<E0!jp.^4eS8j#X8r1"!!*#"!s#F(!;`bs!;ikq!;iht!;iht!<&u!!;3Dn!<&u!!<0&%!3E7%
-qlBi!X8r1"!s#F(!;rnu!<&u!!:?if!<0&"!<&u!!<&u!!.h5&XQ?P`mf(c:KE&Xbs8(:GKE&Xb
-rs%#Ls5rIW!.Y~>
-!<E0!jp.U6g4=h/g&V')!!*#P!s%'/!;bCL!;kLJ!;kIM!;kIM!<(UO!;5%G!<(UO!<1[S!8?-,
-qq;)Og&V')!s%'/!;tON!<(UO!:AJ?!<1[P!<(UO!<(UO!.ijTg?%&gs8LaPJcEUes8(ILJcEUe
-rs%2Ns5rIT!.Y~>
-!<E0!jp.^4eVf@JjoG>A!!*#\!s%KG!;bgX!;kpV!;kmY!;kmY!<)$[!;5IS!<)$[!<2*_!9WDD
-qrRq[joG>A!s%KG!;tsZ!<)$[!:AnK!<2*\!<)$[!<)$[!.j9`k2kb*s8LRKKE&Xbs8(:GKE&Xb
-rs%#Ls5rIW!.Y~>
-!<E0!jp.^4eS8j#X8r1"!!*#"!!)u!!!)qu!!)qu!!)qu!!)qu!!)nt!!)u!!!)\n!!)u!!!*#"
-!!)u!!!)u!!W];%r2]kurN#u!ri?)"rN#u!mB$0bri?)"rN#u!JZOF(jfJLMrmh%$!knX6q:5Lt
-s1SI4#1]OLk2s>WJ,~>
-!<E0!jp.U6g4=h/g&V')!!*#P!!)uO!!)rN!!)rN!!)rN!!)rN!!)oM!!)uO!!)]G!!)uO!!*#P
-!!)uO!!)uO!W^pSr7V,NrRq5Orn7>PrRq5OmFqF;rn7>PrRq5OJ_G\/jkBb7rn@C'!lG!;q:bk"
-s2+g9#25dNk2s5TJ,~>
-!<E0!jp.^4eVf@JjoG>A!!*#\!!)u[!!)rZ!!)rZ!!)rZ!!)rZ!!)oY!!)u[!!)]S!!)u[!!*#\
-!!)u[!!)u[!W_?_r8mtZrT4([roO1\rT4([mH49GroO1\rT4([J`_OGjlZUCrmh%$!knX6q:5Lt
-s1SI4#1]OLk2s>WJ,~>
-!<E0!jp.^4eS8j#X8r4#!!)u!!!)u!!!)qu!!)qu!!)qu!!)qu!!)nt!!)u!!!)\n!!)u!!!*#"
-!!)u!!!)qu!!)nt!!)u!!!*#"!!)u!!!)u!rrDMh!!)u!!!)u!!!%SOJZRt7s6fm:s+:Bds8VlE
-s+:Wks8UWFs5rIW!.Y~>
-!<E0!jp.U6g4=h/g&V**!!)uO!!)uO!!)rN!!)rN!!)rN!!)rN!!)oM!!)uO!!)]G!!)uO!!*#P
-!!)uO!!)rN!!)oM!!)uO!!*#P!!)uO!!)uOrrDNA!!)uO!!)uO!!%T(J_K5>s8W)Ps+(6gs8VlJ
-s+(Kns8UfHs5rIT!.Y~>
-!<E0!jp.^4eVf@JjoGAB!!)u[!!)u[!!)rZ!!)rZ!!)rZ!!)rZ!!)oY!!)u[!!)]S!!)u[!!*#\
-!!)u[!!)rZ!!)oY!!)u[!!*#\!!)u[!!)u[rrDNM!!)u[!!)u[!!%T4J`c(Vs8W)Ks+:Bds8VlE
-s+:Wks8UWFs5rIW!.Y~>
-!<E0!joqR2eS8j#qZ-Srq>gMrquHbur;Zi!r;cl!quHbuq#L/jq#LGrq>gGp!!)quq>^Msq#LAp
-rrDPirW)nur;_DMJZRq6s6fm:s+C@Oon*Ras8UWFs5rIW!.Y~>
-!<E0!joqI4g4=h/qZ-TKq>gNKquHcNr;ZiOr;clOquHcNq#L0Cq#LHKq>gHI!!)rNq>^NLq#LBI
-rrDQBrW)oNr;_E&J_K2=s8W)Ps+14MommFds8UfHs5rIT!.Y~>
-!<E0!joqR2eVf@JqZ-TWq>gNWquHcZr;Zi[r;cl[quHcZq#L0Oq#LHWq>gHU!!)rZq>^NXq#LBU
-rrDQNrW)oZr;_E2J`c%Us8W)Ks+C@Oon*Ras8UWFs5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:K)krCKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJH5`AJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKK)krCKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KCJmFeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJai[Dg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKCJmFeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KCf*LKE(u%V#TT>]`<Q~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJb/mJJcGc(U&X9;\c@6~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKCf*LKE(u%V#TT>]`<Q~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXO4*L!;NYq!.h57XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g<nUS!;P:J!.ijegAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k0`;k!;P^V!.j9qk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!joqR2eS8j#quHVqrW)ktqZ-Vsq>^MsquDJQ!!)bp!!)bp!!%SOP-"]Ormh%$s8VfCs+C@O
-#1]OLk2s>WJ,~>
-!<E0!joqI4g4=h/quHWJrW)lMqZ-WLq>^NLquDK*!!)cI!!)cI!!%T(P1os9rn@C's8VfHs+14M
-#25dNk2s5TJ,~>
-!<E0!joqR2eVf@JquHWVrW)lYqZ-WXq>^NXquDK6!!)cU!!)cU!!%T4P32fErmh%$s8VfCs+C@O
-#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i7pX8i7tX8i8!X8i8"X8i8!X8i8"X8i6RX8i7eX8i6OXHK[bmf(c:KE(uF
-ec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Ig&M-Mg&M-Og&M-Pg&M-Og&M-Pg&M,+g&M->g&M,(g611is8LaPJcGcD
-gAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>DUjo>DYjo>D[jo>D\jo>D[jo>D\jo>C7jo>DJjo>C4k*"m,s8LRKKE(uF
-ec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i7qX9&C'!;rnu!<&u!!<0&"!<&u!!<0&"!;NYq!4Ap.!!',"!;iks!<0)!
-!<0)!!;ESm!;rqt!;iks!!0/$JZP$9s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Jg&_9.!;tON!<(UO!<1[P!<(UO!<1[P!;P:J!4CP\!!(aP!;kLL!<1^O
-!<1^O!;G4F!;tRM!;kLL!!1dRJ_H:@s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>DVjoPPF!;tsZ!<)$[!<2*\!<)$[!<2*\!;P^V!4Cth!!)0\!;kpX!<2-[
-!<2-[!;GXR!;u!Y!;kpX!!23^J``-Xs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i7qX9&C'!;rnu!<&u!!<0&%!3E7%r2]kupoOJq[&j9-ri?)"rN#u!ri?)"
-ri?)"r2]kuorJ,npT+>pr2]kuriH,"JZP$9s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Jg&_9.!;tON!<(UO!<1[S!8?-,r7V,NptG`J[+bN[rn7>PrRq5Orn7>P
-rn7>Pr7V,Np"BBGpY#TIr7V,Nrn@APJ_H:@s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>DVjoPPF!;tsZ!<)$[!<2*_!9WDDr8mtZpu_SV[-%AgroO1\rT4([roO1\
-roO1\r8mtZp#Z5SpZ;GUr8mtZroX4\J``-Xs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i7rX8i8"X8i8!XS`(sXSi.sX8i7"X8i8!X8i8"X8i7uX9em.X8o?'!3E7%
-orJ,npT+>prN#u!r2]kuJZP$9s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Kg&M-Pg&M-OgACsLgAM$Lg&M,Pg&M-Og&M-Pg&M-Ng'Ic5g&Tj\!8?-,
-p"BBGpY#TIrRq5Or7V,NJ_H:@s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>DWjo>D\jo>D[k555Xk5>;Xjo>C\jo>D[jo>D\jo>DZjp;%MjoFQ+!9WDD
-p#Z5SpZ;GUrT4([r8mtZJ``-Xs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i8!X8i8"XS`(sX8i8!X8i8"X9/I(X8r1"!!)u!!!'1'!!)u!!!*#"q>gPs
-"ota+!3E7%orJ,npT+>prN#u!r2]kuJZP$9s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Og&M-PgACsLg&M-Og&M-Pg&h?/g&V')!!)uO!!'1U!!)uO!!*#Pq>gQL
-"p!B2!8?-,p"BBGpY#TIrRq5Or7V,NJ_H:@s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>D[jo>D\k555Xjo>D[jo>D\joYVGjoG>A!!)u[!!'1a!!)u[!!*#\q>gQX
-"p!fJ!9WDDp#Z5SpZ;GUrT4([r8mtZJ``-Xs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i8!X9/I(X8r1"!!*#"!!)u!!!*#"!!)u!!!*#"!!)u!!!'1'!!)u!!!*#"
-!!)eq"9>M'X8qmo!!)bp!!)u!!!)qu!!%SOP-"]Ormh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V')!!*#P!!)uO!!*#P!!)uO!!*#P!!)uO!!'1U!!)uO!!*#P
-!!)fJ"9@-Ug&Ud!!!)cI!!)uO!!)rN!!%T(P1os9rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bjo>D[joYVGjoG>A!!*#\!!)u[!!*#\!!)u[!!*#\!!)u[!!'1a!!)u[!!*#\
-!!)fV"9@QajoG&9!!)cU!!)u[!!)rZ!!%T4P32fErmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i8!X9/I(X8r1"!!*#"!!)u!!!*#"!!)u!!!*#"!!)u!!!)u!rrBF-!!)u!
-!!)u!!!)u!!!*#"rr<,%!!)Ym!!*#"!!)nt!!)qu!!*#"rr@VOP-"]Ormh%$s8VfCs+C@O#1]OL
-k2s>WJ,~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V')!!*#P!!)uO!!*#P!!)uO!!*#P!!)uO!!)uOrrBF[!!)uO
-!!)uO!!)uO!!*#Prr<,S!!)ZF!!*#P!!)oM!!)rN!!*#Prr@W(P1os9rn@C's8VfHs+14M#25dN
-k2s5TJ,~>
-!<E0!johL1eVf@bjo>D[joYVGjoG>A!!*#\!!)u[!!*#\!!)u[!!*#\!!)u[!!)u[rrBFg!!)u[
-!!)u[!!)u[!!*#\rr<,_!!)ZR!!*#\!!)oY!!)rZ!!*#\rr@W4P32fErmh%$s8VfCs+C@O#1]OL
-k2s>WJ,~>
-!<E0!joqR2eS8j#q#CDrr;Zi!r;Zi!qZ-Vsq>^Msq#LAprrBI.rW)u"rW)nur;cetrr<,%!!)Vl
-rW)ktquH\srW!#$!!%SOPH=fPrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!joqI4g4=h/q#CEKr;ZiOr;ZiOqZ-WLq>^NLq#LBIrrBI\rW)uPrW)oNr;cfMrr<,S!!)WE
-rW)lMquH]LrW!#R!!%T(PM6':rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!joqR2eVf@Jq#CEWr;Zi[r;Zi[qZ-WXq>^NXq#LBUrrBIhrW)u\rW)oZr;cfYrr<,_!!)WQ
-rW)lYquH]XrW!#^!!%T4PNMoFrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXQQ\[!.h5&XSJstmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g?72b!.ijTgA0J&s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k3(n%!.j9`k5"0>s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXP0`U!.h5&XT#=$mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g=k6\!.ijTgA]h+s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k1\qt!.j9`k5ONCs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp%X3eS8j#XSMnsXSW"qXSi.uXSr5!XSr3NXT,@%!9pQb!.h5<XT._fec1:%s7Y"CKE(rU
-eYN6-k.LbF~>
-!<E0!jp%O5g4=h/gA1dLgA:mJgAM$NgAV*OgAV)'gAfk,!9r2;!.ijjgAh3PgAca(s7Y1HJcG`S
-g7eQ/k.1PC~>
-!<E0!jp%X3eVf@Jk5#&Xk5,/Vk5>;Zk5GA[k5G@3k5XQD!9rVG!.j:!k5YJ\ec1:%s7Y"CKE(rU
-eYN6-k.LbF~>
-!<E0!johL1eS8juX8i8!X9/I(X8r4#!!*#"!!)u!!!*#"rrE&"rr@VOjfAF^JZP3>s6fm:s+C@O
-p=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V**!!*#P!!)uO!!*#PrrE&Prr@W(jk9\7J_HIEs8W)Ps+14M
-p=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>D[joYVGjoGAB!!*#\!!)u[!!*#\rrE&\rr@W4jlQOCJ``<]s8W)Ks+C@O
-p=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i8!X9/I(X8r4#!s#F(!;ii%!3E7%X8o@$!<'#!!3E:%!"#_,!3?/#X8i7%
-rW)hsrW)ktquH\srW)hsr;cJkquH_trr<5(!!')#!.h5JXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V**!s%'/!;kIS!8?-,g&Tk+!<(XO!3FoS!"%?Z!87DQg&M-,
-rW)iLrW)lMquH]LrW)iLr;cKDquH`Mrr<5V!!(^Q!.ik#gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@bjo>D[joYVGjoGAB!s%KG!;km_!9WDDjoFQC!<)'[!3G>_!"%cf!9O7]jo>DD
-rW)iXrW)lYquH]XrW)iXr;cKPquH`Yrr<5b!!)-]!.j:/k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8juX9/I(X8r4#!!)u!!s#F(!;ii(!3E7%X8o=%X8r4#rrB+$rr<>+!!')#XK2C%
-ri?)"rN#u!ri?)"ri?)"rN#u!qlBbtr2]kurN#u!oW/#mqQ0\s"KVS'X8mgQV6'^brmh%$s8VfC
-s+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSg&h?/g&V**!!)uO!s%'/!;kIV!8?-,g&Th,g&V**rrB+Rrr<>Y!!(^Qg=cN,
-rn7>PrRq5Orn7>Prn7>PrRq5Oqq;#Mr7V,NrRq5Oo\'9FqV(rL"PNhUg&Q]XV:ttLrn@C's8VfH
-s+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bjoYVGjoGAB!!)u[!s%KG!;kmb!9WDDjoFNDjoGABrrB+^rr<>e!!)-]k2lXD
-roO1\rT4([roO1\roO1\rT4([qrRkYr8mtZrT4([o]?,RqW@eX"Qf[ajoBtpV<7gXrmh%$s8VfC
-s+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juXSi.tX8i8"X8i8"X8i7tX9em.X8o?'!3E7%V5st'XK2E'X8o?'!<&u!!<0&"
-!;ro#!3E7%p8e5opT+>poW/#mqQ'l$XK2E'X8mgQV6'^brmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSgAM$Mg&M-Pg&M-Pg&M-Mg'Ic5g&Tj\!8?-,V:l4Ug=cP\g&Tj\!<(UO!<1[P
-!;tOQ!8?-,p=]KHpY#TIo\'9FqUu,Rg=cP\g&Q]XV:ttLrn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bk5>;Yjo>D\jo>D\jo>DYjp;%MjoFQ+!9WDDV</'ak2l[+joFQ+!<)$[!<2*\
-!;ts]!9WDDp>u>TpZ;GUo]?,RqW7t^k2l[+joBtpV<7gXrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX9/I(X8r4#r;cet!!)nt#lq'.!3E7%XK2DuX9em.X8o?'!3E7%rN#u!riGqr
-riH%uqQ'YsqlK\qoW/#mqQ'l$XK2E'X8mgQV6'^brmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSg&h?/g&V**r;cfM!!)oM#lr]5!8?-,g=cP'g'Ic5g&Tj\!8?-,rRq5Orn@2K
-rn@;NqUtoLqqCrJo\'9FqUu,Rg=cP\g&Q]XV:ttLrn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bjoYVGjoGABr;cfY!!)oY#ls,M!9WDDk2lZ?jp;%MjoFQ+!9WDDrT4([roX%W
-roX.ZqW7bXqr[eVo]?,RqW7t^k2l[+joBtpV<7gXrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i7sX8i8"X8i8"X8i7tX9/I(X8r1"!!&js#lq'.!3E7%XK2F#X8i8"X8i7m
-X8i7tX8i7uX8i8!X8i7mX8i7sX9J[+X8o?'!.h5JXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hSg&M-Lg&M-Pg&M-Pg&M-Mg&h?/g&V')!!&kL#lr]5!8?-,g=cQ*g&M-Pg&M-F
-g&M-Mg&M-Ng&M-Og&M-Fg&M-Lg'.Q2g&Tj\!.ik#gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@bjo>DXjo>D\jo>D\jo>DYjoYVGjoG>A!!&kX#ls,M!9WDDk2l[Bjo>D\jo>DR
-jo>DYjo>DZjo>D[jo>DRjo>DXjothJjoFQ+!.j:/k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8juX8i7sX8i8!X8i8"X8i8!X8i8"X8i7uX8i8!XT&:$X9em.X8o?'!3E7%rN#u!
-rN#u!rN$)$XK2F#X8i7tX8i7uX8i8"XT&:mX8i8"X8i8"X9J[+X8o?'!.h5JXT._fec1:%s7Y"C
-KE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hSg&M-Lg&M-Og&M-Pg&M-Og&M-Pg&M-Ng&M-OgA_/Rg'Ic5g&Tj\!8?-,rRq5O
-rRq5OrRq>Rg=cQ*g&M-Mg&M-Ng&M-PgA_0Fg&M-Pg&M-Pg'.Q2g&Tj\!.ik#gAh3PgAca(s7Y1H
-JcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@bjo>DXjo>D[jo>D\jo>D[jo>D\jo>DZjo>D[k5PF^jp;%MjoFQ+!9WDDrT4([
-rT4([rT41^k2l[Bjo>DYjo>DZjo>D\k5PGRjo>D\jo>D\jothJjoFQ+!.j:/k5YJ\ec1:%s7Y"C
-KE(rUeYN6-k.LbF~>
-!<E0!jp%X3eS8j#XSi.tXSr4uX8i8"XSi.uXSr5!XSr5!XT&:%XSr2%X8i7%quHburW)nur;chu
-quHYrquH\srW!#$!!)YmrW)r!rW!,'!!')#!.h5KXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp%O5g4=h/gAM$MgAV*Ng&M-PgAM$NgAV*OgAV*OgA_/SgAV'Sg&M-,quHcNrW)oNr;ciN
-quHZKquH]LrW!#R!!)ZFrW)rOrW!,U!!(^Q!.ik$gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!jp%X3eVf@Jk5>;Yk5GAZjo>D\k5>;Zk5GA[k5GA[k5PF_k5G>_jo>DDquHcZrW)oZr;ciZ
-quHZWquH]XrW!#^!!)ZRrW)r[rW!,a!!)-]!.j:0k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXN[d@!.h59XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g<A:G!.ijggAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k02u_!.j9sk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXPU&Y!.h5&XS]+!mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g>:Q`!.ijTgABV(s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k2,8#!.j9`k54<@s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp%X3eS8j#XSMqrXSi-MXR3(h!:R#g!;iks!.h5>XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp%O5g4=h/gA1gKgAM#&g?mSo!:SY@!;kLL!.ijlgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!jp%X3eVf@Jk5#)Wk5>:2k3_:2!:T(L!;kpX!.j:#k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jq+?=eS8j#X8o?'!3E7%XK2F#X8i6OXR<.i!:?if!;W\r!.h5>XT._fec1:%s7Y"CKE(rU
-eYN6-k.LbF~>
-!<E0!jq+6?g4=h/g&Tj\!8?-,g=cQ*g&M,(g@!Yp!:AJ?!;Y=K!.ijlgAh3PgAca(s7Y1HJcG`S
-g7eQ/k.1PC~>
-!<E0!jq+?=eVf@JjoFQ+!9WDDk2l[Bjo>C4k3h@3!:AnK!;YaW!.j:#k5YJ\ec1:%s7Y"CKE(rU
-eYN6-k.LbF~>
-!<E0!jq"9<eS8j#X8o?'!3E7%X8r.!!!)u!rrALhrr<8)!!')#!3H/"s/c2"orS&kri?,#XSr4s
-XSr4rX8i7rX8i6OXI60imf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jq"0>g4=h/g&Tj\!8?-,g&V$(!!)uOrrAMArr<8W!!(^Q!8@DPs4[GPp"K<Drn7AQgAV*L
-gAV*Kg&M-Kg&M,(g6p[ps8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!jq"9<eVf@JjoFQ+!9WDDjoG;@!!)u[rrAMMrr<8c!!)-]!9X7\s5s:\p#c/ProO4]k5GAX
-k5GAWjo>DWjo>C4k*bB3s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jsX8i8!X8i7tX8i8!XT&9gXT&8*X8i7%!3E7%rN#u!orJ,nrN#u!riH,"ri?)"
-rN#u!ri?)"qlBbtq5aPrJZP9@s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hQg&M-Og&M-Mg&M-OgA_/@gA_-Xg&M-,!8?-,rRq5Op"BBGrRq5Orn@APrn7>P
-rRq5Orn7>Pqq;#Mq:YfKJ_HOGs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@`jo>D[jo>DYjo>D[k5PFLk5PDdjo>DD!9WDDrT4([p#Z5SrT4([roX4\roO1\
-rT4([roO1\qrRkYq;qYWJ``B_s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8jsX8i8!X8i7tX8i6aX9em.X8o?'!3E7%rN#u!orJ,nq5aPrrN#u!ri?)"r2]ku
-r2]kuq5aPrJZP9@s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hQg&M-Og&M-Mg&M,:g'Ic5g&Tj\!8?-,rRq5Op"BBGq:YfKrRq5Orn7>Pr7V,N
-r7V,Nq:YfKJ_HOGs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@`jo>D[jo>DYjo>CFjp;%MjoFQ+!9WDDrT4([p#Z5Sq;qYWrT4([roO1\r8mtZ
-r8mtZq;qYWJ``B_s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8jsX8i8!X8i7tX8i6aX9J[+X8o?'!<0&%!3E7%o;qljrN#u!rN#u!riGqrr2]ku
-q5aPrJZP9@s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hQg&M-Og&M-Mg&M,:g'.Q2g&Tj\!<1[S!8?-,o@j-CrRq5OrRq5Orn@2Kr7V,N
-q:YfKJ_HOGs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@`jo>D[jo>DYjo>CFjothJjoFQ+!<2*_!9WDDoB,uOrT4([rT4([roX%Wr8mtZ
-q;qYWJ``B_s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8jsX8i8!X8i7tX8i6aX9J[+X8o?'!<0&%!3E7%n#QKhri?)"rN#u!ri?)"p8e5o
-q5aPrJZP9@s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hQg&M-Og&M-Mg&M,:g'.Q2g&Tj\!<1[S!8?-,n(IaArn7>PrRq5Orn7>Pp=]KH
-q:YfKJ_HOGs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@`jo>D[jo>DYjo>CFjothJjoFQ+!<2*_!9WDDn)aTMroO1\rT4([roO1\p>u>T
-q;qYWJ``B_s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8jsX8i7uX8i8!X8i7uXT&9gX9J[+X8o?'!<'#!!;!8l!<&u!!<0&"!<&u!!<&u!
-!<&u!!;rnu!;W\r!.h5>XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hQg&M-Ng&M-Og&M-NgA_/@g'.Q2g&Tj\!<(XO!;"nE!<(UO!<1[P!<(UO!<(UO
-!<(UO!;tON!;Y=K!.ijlgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@`jo>DZjo>D[jo>DZk5PFLjothJjoFQ+!<)'[!;#=Q!<)$[!<2*\!<)$[!<)$[
-!<)$[!;tsZ!;YaW!.j:#k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8juXS`(sXSi.rXT&9hXSr2'X8i7%!!)u!!!)VlquH_trW)u"rW)nur;cetquH\s
-quD;LS#lYXrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSgACsLgAM$KgA_/AgAV'Ug&M-,!!)uO!!)WEquH`MrW)uPrW)oNr;cfMquH]L
-quD<%S(doBrn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bk555Xk5>;Wk5PFMk5G>ajo>DD!!)u[!!)WQquH`YrW)u\rW)oZr;cfYquH]X
-quD<1S*'bNrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8iMXS/^q!.h5&XQ$>]mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g@j5#!.ijTg>^ids8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k4[p;!.j9`k2PP's8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXS/^q!.h5&XQ$>]mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g@j5#!.ijTg>^ids8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k4[p;!.j9`k2PP's8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXSAmq!<'"o!.h5&XRN=kmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+gA'D#!<(XH!.ijTg@3hrs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k4n*;!<)'T!.j9`k4%O5s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMX8o@#!;rqs!;rqs!;rqs!:m2k!;`eq!:m2k!;NYq!:m2k!;NYq!;!;j!<'"r
-!:m5k!;rqt!:m5i!;iks!;iht!;W_q!;rqs!;rqs!5,E5mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g&Tk*!;tRL!;tRL!;tRL!:nhD!;bFJ!:nhD!;P:J!:nhD!;P:J!;"qC!<(XK
-!:nkD!;tRM!:nkB!;kLL!;kIM!;Y@J!;tRL!;tRL!5.%cs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:joFQB!;u!X!;u!X!;u!X!:o7P!;bjV!:o7P!;P^V!:o7P!;P^V!;#@O!<)'W
-!:o:P!;u!Y!:o:N!;kpX!;kmY!;YdV!;u!X!;u!X!5.Ios8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp%X3eS8j#XSW"rXSr4uXSW"qXSr2#X8r7$q>^MsqZ+%*!!)u!!!*#"!!)u!!!*#"!!)u!
-!!*#"!!)u!!!)YmrrDqt!!)u!!!)YmrrDkr!W];%o;qrlq5aVtX8qmo!!)u!!!*#"!!)u!!!)Vl
-!W];%rN#u!ri?)"oW/#mrN#u!rN#u!q5jSrqQ'YsqQ'YsrN#u!ri?)"rN#u!]r_8%rmh%$s8VfC
-s+C@O#1]OLk2s>WJ,~>
-!<E0!jp%O5g4=h/gA:mKgAV*NgA:mJgAV'Qg&V-+q>^NLqZ+%X!!)uO!!*#P!!)uO!!*#P!!)uO
-!!*#P!!)uO!!)ZFrrDrM!!)uO!!)ZFrrDlK!W^pSo@j3Eq:YlMg&Ud!!!)uO!!*#P!!)uO!!)WE
-!W^pSrRq5Orn7>Po\'9FrRq5OrRq5Oq:biKqUtoLqUtoLrRq5Orn7>PrRq5O^"WMdrn@C's8VfH
-s+14M#25dNk2s5TJ,~>
-!<E0!jp%X3eVf@Jk5,/Wk5GAZk5,/Vk5G>]joGDCq>^NXqZ+%d!!)u[!!*#\!!)u[!!*#\!!)u[
-!!*#\!!)u[!!)ZRrrDrY!!)u[!!)ZRrrDlW!W_?_oB-&Qq;q_YjoG&9!!)u[!!*#\!!)u[!!)WQ
-!W_?_rT4([roO1\o]?,RrT4([rT4([q<%\WqW7bXqW7bXrT4([roO1\rT4([^#o@prmh%$s8VfC
-s+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i8!X8i7uX8i7uX8i8!X8i8"X8i8"XT&;!X8i8!X9/I(X8r4#!!'I/!!)u!
-!!*#"!!)u!!!*#"!!)u!!!*#"!!)u!!!)\n!W];%qlBbtrN#u!orJ2pX8r't!W];%oW/)oX8r't
-!W];%oW/#mrN#u!q5aPro;hunX8r4#!!)u!!!)\n!!)u!!!*#"!!)hr!W];%qlBbtq5aPrrN#u!
-ri?)"rN#u!]r_8%rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSg&M-Og&M-Ng&M-Ng&M-Og&M-Pg&M-PgA_0Og&M-Og&h?/g&V**!!'I]!!)uO
-!!*#P!!)uO!!*#P!!)uO!!*#P!!)uO!!)]G!W^pSqq;#MrRq5Op"BHIg&Us&!W^pSo\'?Hg&Us&
-!W^pSo\'9FrRq5Oq:YfKo@a6Gg&V**!!)uO!!)]G!!)uO!!*#P!!)iK!W^pSqq;#Mq:YfKrRq5O
-rn7>PrRq5O^"WMdrn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bjo>D[jo>DZjo>DZjo>D[jo>D\jo>D\k5PG[jo>D[joYVGjoGAB!!'Ii!!)u[
-!!*#\!!)u[!!*#\!!)u[!!*#\!!)u[!!)]S!W_?_qrRkYrT4([p#Z;UjoG5>!W_?_o]?2TjoG5>
-!W_?_o]?,RrT4([q;qYWoB$)SjoGAB!!)u[!!)]S!!)u[!!*#\!!)iW!W_?_qrRkYq;qYWrT4([
-roO1\rT4([^#o@prmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i8!X8i8!X9&C'!<&u!!<&u!!<0&"!<&u!!<&u!!<&u$!3E7%r2]kurN-#!
-\?#Z1ri?)"rN#u!ri?)"rN#u!q5aPro;holqlBbtrN#u!o;holqQ'c!XK2EmX8i7sX9/I(X8q^j
-!!)ks!!)Vl!s#F(!<&u!!<&u!!:[&i!<0&"!;EPp!;iht!;*>m!;W\r!55K6mf(c:KE(uFec1:%
-rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Og&M-Og&_9.!<(UO!<(UO!<1[P!<(UO!<(UO!<(UR!8?-,r7V,NrS%8O
-\Cpo_rn7>PrRq5Orn7>PrRq5Oq:YfKo@a0Eqq;#MrRq5Oo@a0EqUu#Og=cPtg&M-Lg&h?/g&UTq
-!!)lL!!)WE!s%'/!<(UO!<(UO!:\\B!<1[P!;G1I!;kIM!;+tF!;Y=K!57+ds8LaPJcGcDgAca(
-rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>D[jo>D[joPPF!<)$[!<)$[!<2*\!<)$[!<)$[!<)$^!9WDDr8mtZrT=+[
-\E3bkroO1\rT4([roO1\rT4([q;qYWoB$#QqrRkYrT4([oB$#QqW7k[k2l[7jo>DXjoYVGjoFl4
-!!)lX!!)WQ!s%KG!<)$[!<)$[!:]+N!<2*\!;GUU!;kmY!;,CR!;YaW!57Ops8LRKKE(uFec1:%
-rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i8!X8i8!X9&C'!<&u!!<&u!!<0&"!;NVt!3E7%rN#u!r2]kurN-#!\Z>c2
-rN#u!rN#u!ri?)"rN#u!qQ'YsnuMfkqlBbtrN#u!o;holqQ'c!XK2EmX8i7sX9/I(X8qak!!)hr
-!!)Vl!s#F(!<&u!!<0)"!:d,j!<&u"!3H/"qlBbtqlBeuXSr4qX8i7rX8i75XT._fec1:%s7Y"C
-KE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hSg&M-Og&M-Og&_9.!<(UO!<(UO!<1[P!;P7M!8?-,rRq5Or7V,NrS%8O\_7#`
-rRq5OrRq5Orn7>PrRq5OqUtoLo%F'Dqq;#MrRq5Oo@a0EqUu#Og=cPtg&M-Lg&h?/g&UWr!!)iK
-!!)WE!s%'/!<(UO!<1^P!:ebC!<(UP!8@DPqq;#Mqq;&NgAV*Jg&M-Kg&M,cgAh3PgAca(s7Y1H
-JcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@bjo>D[jo>D[joPPF!<)$[!<)$[!<2*\!;P[Y!9WDDrT4([r8mtZrT=+[\`Nkl
-rT4([rT4([roO1\rT4([qW7bXo&]oPqrRkYrT4([oB$#QqW7k[k2l[7jo>DXjoYVGjoFo5!!)iW
-!!)WQ!s%KG!<)$[!<2-\!:f1O!<)$\!9X7\qrRkYqrRnZk5GAVjo>DWjo>Cok5YJ\ec1:%s7Y"C
-KE(rUeYN6-k.LbF~>
-!<E0!johL1eS8juX8i8!X8i8"X8i8"X8i8"X8i8"X8i7uXSi.sXSi.tX8i7uX8i7-X8i7uX8i8!
-X8i8"X8i8!X8i7tX8i7uXSW"qX8i7tX8i8!X8i8"XSW"qX8i7tX8i8"X8i7kX8i7tX8i8"X8i7j
-X8i7qX8i7mX8i8"X8i7uXSr2#X8qgm!!)qurrE&"!!)qu!!)ntrrE&"!!)nt!!)hr!!'X4s6fm:
-s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Og&M-Pg&M-Pg&M-Pg&M-Pg&M-NgAM$LgAM$Mg&M-Ng&M,[g&M-Ng&M-O
-g&M-Pg&M-Og&M-Mg&M-NgA:mJg&M-Mg&M-Og&M-PgA:mJg&M-Mg&M-Pg&M-Dg&M-Mg&M-Pg&M-C
-g&M-Jg&M-Fg&M-Pg&M-NgAV'Qg&U]t!!)rNrrE&P!!)rN!!)oMrrE&P!!)oM!!)iK!!'Xbs8W)P
-s+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>D[jo>D\jo>D\jo>D\jo>D\jo>DZk5>;Xk5>;Yjo>DZjo>Cgjo>DZjo>D[
-jo>D\jo>D[jo>DYjo>DZk5,/Vjo>DYjo>D[jo>D\k5,/Vjo>DYjo>D\jo>DPjo>DYjo>D\jo>DO
-jo>DVjo>DRjo>D\jo>DZk5G>]joFu7!!)rZrrE&\!!)rZ!!)oYrrE&\!!)oY!!)iW!!'Xns8W)K
-s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juXS`(sXS`(tXSi.nX8i8!X9/I(X8r4#!!)qu!!'F.!!)nt!!)u!!!*#"!!)u!
-!!)qu!!)Mi!!)nt!!)u!!!)Vl!!)nt!!*#"!!)Sk!!)nt!!*#"!!)Sk!!)eq!!)Vl!!*#"!!)eq
-!!)Vl!!)nt!!)u!!!)qu!!)nt!!)u!!!)qu!!)hr!!'U3s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSgACsLgACsMgAM$Gg&M-Og&h?/g&V**!!)rN!!'F\!!)oM!!)uO!!*#P!!)uO
-!!)rN!!)NB!!)oM!!)uO!!)WE!!)oM!!*#P!!)TD!!)oM!!*#P!!)TD!!)fJ!!)WE!!*#P!!)fJ
-!!)WE!!)oM!!)uO!!)rN!!)oM!!)uO!!)rN!!)iK!!'Uas8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bk555Xk555Yk5>;Sjo>D[joYVGjoGAB!!)rZ!!'Fh!!)oY!!)u[!!*#\!!)u[
-!!)rZ!!)NN!!)oY!!)u[!!)WQ!!)oY!!*#\!!)TP!!)oY!!*#\!!)TP!!)fV!!)WQ!!*#\!!)fV
-!!)WQ!!)oY!!)u[!!)rZ!!)oY!!)u[!!)rZ!!)iW!!'Ums8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i7sX8i7uX9/I(X8r7$!!)u!!!)u!!!)u!!!)u!!s#F(!;rnu!4Js/!;`bs
-!<&u!!<0&"!<&u!!<&u!!:Quh!;iht!<&u!!;!8l!;ikp!;!8l!;ikp!;*>m!;EPp!;!;h!;W\r
-!;*>m!;`bs!<&u!!;rnu!;iht!<&u!!<&u!!;W\r!4f32mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Lg&M-Ng&h?/g&V-+!!)uO!!)uO!!)uO!!)uO!s%'/!;tON!4LS]!;bCL
-!<(UO!<1[P!<(UO!<(UO!:SVA!;kIM!<(UO!;"nE!;kLI!;"nE!;kLI!;+tF!;G1I!;"qA!;Y=K
-!;+tF!;bCL!<(UO!;tON!;kIM!<(UO!<(UO!;Y=K!4gh`s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>DXjo>DZjoYVGjoGDC!!)u[!!)u[!!)u[!!)u[!s%KG!;tsZ!4M"i!;bgX
-!<)$[!<2*\!<)$[!<)$[!:T%M!;kmY!<)$[!;#=Q!;kpU!;#=Q!;kpU!;,CR!;GUU!;#@M!;YaW
-!;,CR!;bgX!<)$[!;tsZ!;kmY!<)$[!<)$[!;YaW!4h7ls8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i7sX8i7uX9/I(X8r4#!!*#"rrE&"!!)u!!!)u!!s#F(!<&u!!;rqu!55H6
-!<&u!!<0&"!<&u!!<0&"!<&u!!<0&"!<&u!!;!8l!;iht!<&u!!;!8l!;EPp!:m2k!;EPp!;ikt
-!;rnu!<&u!!;iht!;`es!;NVq!;W\r!;ikt!;rnu!<&u!!<&u!!<0&"!;rnu!;`bs!<0&"!<0&"
-!<&u!!<0&"!<&u!!55K6mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Lg&M-Ng&h?/g&V**!!*#PrrE&P!!)uO!!)uO!s%'/!<(UO!;tRN!57(d
-!<(UO!<1[P!<(UO!<1[P!<(UO!<1[P!<(UO!;"nE!;kIM!<(UO!;"nE!;G1I!:nhD!;G1I!;kLM
-!;tON!<(UO!;kIM!;bFL!;P7J!;Y=K!;kLM!;tON!<(UO!<(UO!<1[P!;tON!;bCL!<1[P!<1[P
-!<(UO!<1[P!<(UO!57+ds8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>DXjo>DZjoYVGjoGAB!!*#\rrE&\!!)u[!!)u[!s%KG!<)$[!;u!Z!57Lp
-!<)$[!<2*\!<)$[!<2*\!<)$[!<2*\!<)$[!;#=Q!;kmY!<)$[!;#=Q!;GUU!:o7P!;GUU!;kpY
-!;tsZ!<)$[!;kmY!;bjX!;P[V!;YaW!;kpY!;tsZ!<)$[!<)$[!<2*\!;tsZ!;bgX!<2*\!<2*\
-!<)$[!<2*\!<)$[!57Ops8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp%X3eS8j#XSi.tXSi,!XSMqqX98O)X8o@$!<'"q!!'+t!;ikt!55K2!<'"t!;rqs!<'"r
-!;3Gk!;rqs!;*Aj!;`er!;3Gk!;`er!;rqu!;rqq!;iht!;`es!;W_q!<'"u!;`es!;rqq!;rqt
-!<'"s!;iks!<'"r!<0(s!55K6mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp%O5g4=h/gAM$MgAM!OgA1gJg&qE0g&Tk+!<(XJ!!(aM!;kLM!57+`!<(XM!;tRL!<(XK
-!;5(D!;tRL!;,"C!;bFK!;5(D!;bFK!;tRN!;tRJ!;kIM!;bFL!;Y@J!<(XN!;bFL!;tRJ!;tRM
-!<(XL!;kLL!<(XK!<1^L!57+ds8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!jp%X3eVf@Jk5>;Yk5>8[k5#)Vjob\HjoFQC!<)'V!!)0Y!;kpY!57Ol!<)'Y!;u!X!<)'W
-!;5LP!;u!X!;,FO!;bjW!;5LP!;bjW!;u!Z!;u!V!;kmY!;bjX!;YdV!<)'Z!;bjX!;u!V!;u!Y
-!<)'X!;kpX!<)'W!<2-X!57Ops8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtXSr2#X8r7$r;churW)u"rW)u"q>gPsq>^MsrW)u"rW)u"q>gMrrVuu#!.h5&
-XIZHmmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hRgAV'Qg&V-+r;ciNrW)uPrW)uPq>gQLq>^NLrW)uPrW)uPq>gNKrVuuQ!.ijT
-g7?sts8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@ak5G>]joGDCr;ciZrW)u\rW)u\q>gQXq>^NXrW)u\rW)u\q>gNWrVuu]!.j9`
-k+1Z7s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i8"XT&;#X8i8!X8i8"XT&;"X8i8"X9J[+X8o?'!<0&"!<&u%!3E7%!<0&"
-!<0&+!3E7%XK2E'X8r7$rr@VOJZPEDs6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-PgA_0Qg&M-Og&M-PgA_0Pg&M-Pg'.Q2g&Tj\!<1[P!<(US!8?-,!<1[P
-!<1[Y!8?-,g=cP\g&V-+rr@W(J_H[Ks8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>D\k5PG]jo>D[jo>D\k5PG\jo>D\jothJjoFQ+!<2*\!<)$_!9WDD!<2*\
-!<2*e!9WDDk2l[+joGDCrr@W4J``Ncs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp.^4eS8j#X8r1"!W];%qlC&'XK2E'!3E7%ri?;(XK2E'X8r7$!!)u!#QUs-!3?1%X8r7$
-#lq'.!3E7%XK2F#X8i7uXT&9OXF[IKXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp.U6g4=h/g&V')!W^pSqq;;Ug=cP\!8?-,rn7PVg=cP\g&V-+!!)uO#QWT4!87G,g&V-+
-#lr]5!8?-,g=cQ*g&M-NgA_/(g4@tRgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!jp.^4eVf@JjoG>A!W_?_qrS.ak2l[+!9WDDroOCbk2l[+joGDC!!)u[#QX#L!9O:DjoGDC
-#ls,M!9WDDk2l[Bjo>DZk5PF4k(2Zjk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp.^4eS8j#X8r*u!!)nt#QUs-!3?1%X8r.!!!)nt!s#F(!<&u&!3?1%X8r.!!!)qu!!)bp
-rr@VOJZPZKs6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp.U6g4=h/g&V!'!!)oM#QWT4!87G,g&V$(!!)oM!s%'/!<(UT!87G,g&V$(!!)rN!!)cI
-rr@W(J_HpRs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!jp.^4eVf@JjoG8?!!)oY#QX#L!9O:DjoG;@!!)oY!s%KG!<)$`!9O:DjoG;@!!)rZ!!)cU
-rr@W4J``cjs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp.^4eS8j#X8r*u!!)nt#QUs-!3E7%X8r.!!!)ntr;cet"TYX*!3?1tX8i7tXSi-MXF[IC
-XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp.U6g4=h/g&V!'!!)oM#QWT4!8?-,g&V$(!!)oMr;cfM"T[91!87GMg&M-MgAM#&g4@tJ
-gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!jp.^4eVf@JjoG8?!!)oY#QX#L!9WDDjoG;@!!)oYr;cfY"T[]I!9O:Yjo>DYk5>:2k(2Zb
-k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp.^4eS8j#X8r*u!!)nt#QUs-!3E7%X8r.!!!)nt!s#F(!<&u&!3E7%X8r.!!!)bp!!%SO
-JZPEDs6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp.U6g4=h/g&V!'!!)oM#QWT4!8?-,g&V$(!!)oM!s%'/!<(UT!8?-,g&V$(!!)cI!!%T(
-J_H[Ks8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!jp.^4eVf@JjoG8?!!)oY#QX#L!9WDDjoG;@!!)oY!s%KG!<)$`!9WDDjoG;@!!)cU!!%T4
-J``Ncs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp.^4eS8j#X8r*u!!)nt!s#F(!<0)"!;iht!;iht!<&u$!3E7%riH,"qlBbtr2]kurN#u!
-JZOF(SZMkZrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp.U6g4=h/g&V!'!!)oM!s%'/!<1^P!;kIM!;kIM!<(UR!8?-,rn@APqq;#Mr7V,NrRq5O
-J_G\/S_F,Drn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!jp.^4eVf@JjoG8?!!)oY!s%KG!<2-\!;kmY!;kmY!<)$^!9WDDroX4\qrRkYr8mtZrT4([
-J`_OGS`]tPrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i8!X9/I(X8r4#!!*#"!!*#"rrDqt!!)nt!!)u!!s#F(!<0)"!;iht!;rqu
-!<0&"!;rqu!.h5&XJDrtmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V**!!*#P!!*#PrrDrM!!)oM!!)uO!s%'/!<1^P!;kIM!;tRN
-!<1[P!;tRN!.ijTg8*I&s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>D[joYVGjoGAB!!*#\!!*#\rrDrY!!)oY!!)u[!s%KG!<2-\!;kmY!;u!Z
-!<2*\!;u!Z!.j9`k+q/>s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtXSi.tXSi.uXSr5!X8i8!XS`(tXSMnsXSr5!X8i8!XS`(tX8r=&rW)hsrr@VO
-JZPZKs6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hRgAM$MgAM$NgAV*Og&M-OgACsMgA1dLgAV*Og&M-OgACsMg&V3-rW)iLrr@W(
-J_HpRs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@ak5>;Yk5>;Zk5GA[jo>D[k555Yk5#&Xk5GA[jo>D[k555YjoGJErW)iXrr@W4
-J``cjs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8i\X8i7WX8i7qXT&:kX8i7`XT&;!XSW"qX8i7rX8i6OXLtY7mf(c:KE(uFec1:%
-rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g:g&M-0g&M-JgA_0Dg&M-9gA_0OgA:mJg&M-Kg&M,(g:Z/>s8LaPJcGcDgAca(
-rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?Ijo>D<jo>DVk5PGPjo>DEk5PG[k5,/Vjo>DWjo>C4k.KjVs8LRKKE(uFec1:%
-rs%#Ls5rIW!.Y~>
-!<E0!joqR2eS8j#rW)u"rW(u[!!'p<!!)bp!!(lW!!)bp!!)Sk!!)5a!W];%rN#u!rN#u!rN-#!
-qQ0\sJZQMcs6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!joqI4g4=h/rW)uPrW)!4!!'pj!!)cI!!(m0!!)cI!!)TD!!)6:!W^pSrRq5OrRq5OrS%8O
-qV(rLJ_Icjs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!joqR2eVf@JrW)u\rW)!@!!'q!!!)cU!!(m<!!)cU!!)TP!!)6F!W_?_rT4([rT4([rT=+[
-qW@eXJ`aW-s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp7d5eS8j#X8i8"X8i7[X8i7<X8i7AX8i7QX9&C'!;NVq!<0&$!3?1tX9&C'!.h5aXT._f
-ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp7[7g4=h/g&M-Pg&M-4g&M,jg&M,og&M-*g&_9.!;P7J!<1[R!87GMg&_9.!.ik:gAh3P
-gAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!jp7d5eVf@Jjo>D\jo>D@jo>D!jo>D&jo>D6joPPF!;P[V!<2*^!9O:YjoPPF!.j:Fk5YJ\
-ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp\'9eS8j#X8o=%XK2F"XSr5!XSr5!XSr4oXS`(sXT&;#XT&;!XSi.uXT&8#XSr4tXS`(s
-XSi.rXSr2%X8o?'quHYrrW)hsr;churr<&#rW)PkrW)hsrVuu#!;*Al!;ikq!;*>p!3E7%q5aPr
-qlBbtq5aPrJZQMcs6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp[s;g4=h/g&Th,g=cQ)gAV*OgAV*OgAV*HgACsLgA_0QgA_0OgAM$NgA_-QgAV*MgACsL
-gAM$KgAV'Sg&Tj\quHZKrW)iLr;ciNrr<&QrW)QDrW)iLrVuuQ!;,"E!;kLJ!;+tI!8?-,q:YfK
-qq;#Mq:YfKJ_Icjs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!jp\'9eVf@JjoFNDk2l[Ak5GA[k5GA[k5GATk555Xk5PG]k5PG[k5>;Zk5PD]k5GAYk555X
-k5>;Wk5G>_joFQ+quHZWrW)iXr;ciZrr<&]rW)QPrW)iXrVuu]!;,FQ!;kpV!;,CU!9WDDq;qYW
-qrRkYq;qYWJ`aW-s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp\'9eS8j#X8o=%XK2F#X8i8"X8i8"X8i7uX8i7nX8i7rX9\g-!3E7%XK2F#X8i8"XT&;"
-X8i8"X8i8!X8i8"X8i8!X8i8!X8i8"XT&;"X8i7pX8i7uX8i8!X8i8"XT&;"X8i7kX8i7uX8i8"
-XT&:kX8i7uX8i8!X8i7mX9/I(X8r't!!)nt!!)hr!!%SO]WD/$rmh%$s8VfCs+C@O#1]OLk2s>W
-J,~>
-!<E0!jp[s;g4=h/g&Th,g=cQ*g&M-Pg&M-Pg&M-Ng&M-Gg&M-Kg'@]4!8?-,g=cQ*g&M-PgA_0P
-g&M-Pg&M-Og&M-Pg&M-Og&M-Og&M-PgA_0Pg&M-Ig&M-Ng&M-Og&M-PgA_0Pg&M-Dg&M-Ng&M-P
-gA_0Dg&M-Ng&M-Og&M-Fg&h?/g&Us&!!)oM!!)iK!!%T(]\<Dcrn@C's8VfHs+14M#25dNk2s5T
-J,~>
-!<E0!jp\'9eVf@JjoFNDk2l[Bjo>D\jo>D\jo>DZjo>DSjo>DWjp1tL!9WDDk2l[Bjo>D\k5PG\
-jo>D\jo>D[jo>D\jo>D[jo>D[jo>D\k5PG\jo>DUjo>DZjo>D[jo>D\k5PG\jo>DPjo>DZjo>D\
-k5PGPjo>DZjo>D[jo>DRjoYVGjoG5>!!)oY!!)iW!!%T4]]T7ormh%$s8VfCs+C@O#1]OLk2s>W
-J,~>
-!<E0!jp\'9eS8j#X8o?'!3?2"X8i7uX9em.X8o?'!3E7%orJ,nq5jSrp8e5ori?)"rN#u!ri?)"
-oW/#mri?)"r2]kuri?)"pT+>prN#u!qlBl"XK2F#X8i7kX8i8!X8i7uX8i7kX8i7uX8i7iX8i8"
-X8i7rX8i7tX8i7rX8i6OXLtY7mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp[s;g4=h/g&Tj\!87GPg&M-Ng'Ic5g&Tj\!8?-,p"BBGq:biKp=]KHrn7>PrRq5Orn7>P
-o\'9Frn7>Pr7V,Nrn7>PpY#TIrRq5Oqq;,Pg=cQ*g&M-Dg&M-Og&M-Ng&M-Dg&M-Ng&M-Bg&M-P
-g&M-Kg&M-Mg&M-Kg&M,(g:Z/>s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!jp\'9eVf@JjoFQ+!9O:\jo>DZjp;%MjoFQ+!9WDDp#Z5Sq<%\Wp>u>TroO1\rT4([roO1\
-o]?,RroO1\r8mtZroO1\pZ;GUrT4([qrRt\k2l[Bjo>DPjo>D[jo>DZjo>DPjo>DZjo>DNjo>D\
-jo>DWjo>DYjo>DWjo>C4k.KjVs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp\'9eS8j#X8o?'!3?2"XSMqsX9J[+X8o?'!;3Dn!;W\r!;W_o!<0&"!<&u!!<'"t!;rqr
-!<0&"!;NVq!;EPp!<&u!!;ii"!3E7%rN#u!nuMfkrN#u!r2]kunuMfkqlK_roW/#mri?)"qQ'Ys
-qQ'Ysq5aPrJZQMcs6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp[s;g4=h/g&Tj\!87GPgA1gLg'.Q2g&Tj\!;5%G!;Y=K!;Y@H!<1[P!<(UO!<(XM!;tRK
-!<1[P!;P7J!;G1I!<(UO!;kIP!8?-,rRq5Oo%F'DrRq5Or7V,No%F'DqqCuKo\'9Frn7>PqUtoL
-qUtoLq:YfKJ_Icjs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!jp\'9eVf@JjoFQ+!9O:\k5#)XjothJjoFQ+!;5IS!;YaW!;YdT!<2*\!<)$[!<)'Y!;u!W
-!<2*\!;P[V!;GUU!<)$[!;km\!9WDDrT4([o&]oPrT4([r8mtZo&]oPqr[hWo]?,RroO1\qW7bX
-qW7bXq;qYWJ`aW-s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp.^4eS8j#X8r7$rrE&"!!)eq"9>M'X8qmo!!)hr!!)ks!!)u!!!*#"!!)u!!!)hr!!*#"
-!!)u!!!*#"!!)eq!!)bp!!)u!!!)nt!s#F(!<&u!!:m2k!<&u!!;rnu!:m2k!;EPp!;3Gj!;iht
-!;`bs!;W\r!.h5aXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp.U6g4=h/g&V-+rrE&P!!)fJ"9@-Ug&Ud!!!)iK!!)lL!!)uO!!*#P!!)uO!!)iK!!*#P
-!!)uO!!*#P!!)fJ!!)cI!!)uO!!)oM!s%'/!<(UO!:nhD!<(UO!;tON!:nhD!;G1I!;5(C!;kIM
-!;bCL!;Y=K!.ik:gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!jp.^4eVf@JjoGDCrrE&\!!)fV"9@QajoG&9!!)iW!!)lX!!)u[!!*#\!!)u[!!)iW!!*#\
-!!)u[!!*#\!!)fV!!)cU!!)u[!!)oY!s%KG!<)$[!:o7P!<)$[!;tsZ!:o7P!;GUU!;5LO!;kmY
-!;bgX!;YaW!.j:Fk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp.^4eS8j#X8r7$rrE#!!!)u!!!*#"rr<,%!!)Ym!!*#"!!)u!!!)ks!!*#"rrE&"!!)u!
-!!*#"!!)u!!!*#"!!*#"rrE#!!!)u!!!*#"!!*#"!!)nt!!)qu!!)u!!!*#"!!)u!!!)Sk!!)qu
-!!*#"rrDVk!!)qu!!)u!!!)Pj!!)ks!!)ks!!)hr!!%SO]WD/$rmh%$s8VfCs+C@O#1]OLk2s>W
-J,~>
-!<E0!jp.U6g4=h/g&V-+rrE#O!!)uO!!*#Prr<,S!!)ZF!!*#P!!)uO!!)lL!!*#PrrE&P!!)uO
-!!*#P!!)uO!!*#P!!*#PrrE#O!!)uO!!*#P!!*#P!!)oM!!)rN!!)uO!!*#P!!)uO!!)TD!!)rN
-!!*#PrrDWD!!)rN!!)uO!!)QC!!)lL!!)lL!!)iK!!%T(]\<Dcrn@C's8VfHs+14M#25dNk2s5T
-J,~>
-!<E0!jp.^4eVf@JjoGDCrrE#[!!)u[!!*#\rr<,_!!)ZR!!*#\!!)u[!!)lX!!*#\rrE&\!!)u[
-!!*#\!!)u[!!*#\!!*#\rrE#[!!)u[!!*#\!!*#\!!)oY!!)rZ!!)u[!!*#\!!)u[!!)TP!!)rZ
-!!*#\rrDWP!!)rZ!!)u[!!)QO!!)lX!!)lX!!)iW!!%T4]]T7ormh%$s8VfCs+C@O#1]OLk2s>W
-J,~>
-!<E0!joqR2eS8j#rW)r!!!)qur;cetrr<,%!!)VlrW)nur;c_rrW!&%!!',"!<9/"!<9.u!;rqt
-!!95%!<'"t!;rqt!;rqr!<'"t!<0)!!<9/"!;3Gk!<'"u!!95%!;3Gk!<0(t!:d/i!;iht!;rqr
-!<'"s!.h5cXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!joqI4g4=h/rW)rO!!)rNr;cfMrr<,S!!)WErW)oNr;c`KrW!&S!!(aP!<:dP!<:dN!;tRM
-!!:jS!<(XM!;tRM!;tRK!<(XM!<1^O!<:dP!;5(D!<(XN!!:jS!;5(D!<1^M!:eeB!;kIM!;tRK
-!<(XL!.ik<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!joqR2eVf@JrW)r[!!)rZr;cfYrr<,_!!)WQrW)oZr;c`WrW!&_!!)0\!<;3\!<;3Z!;u!Y
-!!;9_!<)'Y!;u!Y!;u!W!<)'Y!<2-[!<;3\!;5LP!<)'Z!!;9_!;5LP!<2-Y!:f4N!;kmY!;u!W
-!<)'X!.j:Hk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uDKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcBJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uDKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:K)krCKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJH5`AJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKK)krCKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KCJmFeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJai[Dg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKCJmFeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:K)iUWrs=>Xs4*qFk2s>WJ,~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJH3RZrs=8Vs4X1Hk2s5TJ,~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKK)iUWrs=>Xs4*qFk2s>WJ,~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:K*&ads7k.EK*f6ks4*qFk2s>WJ,~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJHE^gs7k=JJI03ns4X1Hk2s5TJ,~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKK*&ads7k.EK*f6ks4*qFk2s>WJ,~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE&Xbs7t4FK*f6ks4*qFk2s>WJ,~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcEUes7tCKJI03ns4X1Hk2s5TJ,~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE&Xbs7t4FK*f6ks4*qFk2s>WJ,~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE&Xbs8(:GKE&Xbrs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcEUes8(ILJcEUers%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE&Xbs8(:GKE&Xbrs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDrRas81@HKE&Xbrs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc<Ods81OMJcEUers%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDrRas81@HKE&Xbrs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDrRas8:FIKDrRars%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc<Ods8:UNJc<Odrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDrRas8:FIKDrRars%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDiL`s8CLJKDrRars%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc3Ics8C[OJc<Odrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDiL`s8CLJKDrRars%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDiL`s8LRKKDiL`rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc3Ics8LaPJc3Icrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDiL`s8LRKKDiL`rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KD`F_s8UXLKDiL`rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc*Cbs8UgQJc3Icrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKD`F_s8UXLKDiL`rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KD`F_rrU`'KD`F_rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc*CbrrUo*Jc*Cbrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKD`F_rrU`'KD`F_rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDW=^s8IZK^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc!:as8ITI_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDW=^s8IZK^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDW=`s+>t$^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc!:cs+,au_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDW=`s+>t$^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDN:]KDW@^rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJbm7`Jc!=ars%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDN:]KDW@^rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMmXaeWmaU\(ec19u]`<]]^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+s+13$s4%)JgAca#_>o/`_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:s+13$s4%)Jec19u]`<]]^&S*:eYN6-k.LbF~>
-!<E0!jo_F0eS9['JaS*We*d4cs+Bh@#1]OLk2s>WJ,~>
-!<E0!jo_=2g4=hTJcC<$e,TF$s+0\>#25dNk2s5TJ,~>
-!<E0!jo_F0eVf"YJcC<$e,TEts+Bh@#1]OLk2s>WJ,~>
-!<E0!joD3.eUc8%e]lVEKCAgEeYN6-k.LbF~>
-!<E0!joD*+g4@t/g<J=OJa`UCg7eQ/k.1PC~>
-!<E0!joD3.eUc8%e]lVEKCAgEeYN6-k.LbF~>
-!<E0!joD3.eUc8%e[a36V#TT>]`<Q~>
-!<E0!joD*+g4@t/g:>o@U&X9;\c@6~>
-!<E0!joD3.eUc8%e[a36V#TT>]`<Q~>
-!<E0!joD3.eUc8%e[a36V#TT>]`<Q~>
-!<E0!joD*+g4@t/g:>o@U&X9;\c@6~>
-!<E0!joD3.eUc8%e[a36V#TT>]`<Q~>
-!<E0!joM:.JV/N+JV2=%ldZ07s5rIW!.Y~>
-!<E0!joM10JUrB'JUu1!le2N9s5rIT!.Y~>
-!<E0!joM:.JV/N+JV2=%ldZ07s5rIW!.Y~>
-!<E0!joM:.JV/N+JV2@&!<;B8"f21\k.LbF~>
-!<E0!joM10JUrB'JUu4"!<;B="ektYk.1PC~>
-!<E0!joM:.JV/N+JV2@&!<;B8"f21\k.LbF~>
-!<E0!jo_F0K7id/!WTias+13$s7H<m^&S-)^&S,ueHMcKk2s>WJ,~>
-!<E0!jo_=2JV!F0!WU#fs+13$s7H<m_Z0Z._Z0Z%g'+2Mk2s5TJ,~>
-!<E0!jo_F0K7id/!WTias+13$s7H<m^&S-)^&S,ueHMcKk2s>WJ,~>
-!<E0!jo_F0K7ij1s8N+P]n-37s+14CrrIbcrVuT)s8VE8"f21\k.LbF~>
-!<E0!jo_=2JV!L2s8N+N_L_`<s+14CrrI\frVuT.s8VE="ektYk.1PC~>
-!<E0!jo_F0K7ij1s8N+P]n-37s+14CrrIbcrVuT)s8VE8"f21\k.LbF~>
-!<?U-5m#ShKD3(Ys8R]Q^&S+`eUc8%ebI\pK)iU^s7j;-s6J2=6"3,G!!%N~>
-!<@-<9ENq!JbR%\s8RWO_Z0Xeg4@t/gA'D%JH3Ras7jJ2s6JAB9Q<a"!!%N~>
-!<BM*PQKBfKD3(Ys8R]Q^&S+`eUc8%ebI\pK)iU^s7j;-s6J2=PdH[>!!%N~>
-!!)tU"$tIiKDE4Zrrpr*K>%<bJ^o>%J^sPGs+:Hfs8UX"rVu`-s8VE8"[S&U@R1!E~>
-!!)t_"&.F"Jbd1]rrq,-J\qHeJ_G\/J_KnQs+(<is8Ug,rVu`2s8VE="\b2$ED-@_~>
-!!)u:"-h>gKDE4Zrrpr*K>%<bJ^o>%J^sPGs+:Hfs8UX"rVu`-s8VE8"dI!5[$1Q@~>
-!<A&W@KSpHK7j'7rVulIs+:Bds8RZ#J^o>%psoCs!knX6rRLlHr4W.1ldZ/)Mdg-]!.Y~>
-!<ADaE<AngJV!^8rVulNs+(6gs8RZ(J_G\/ptGb!!lG!;rS%5Mr5/L6le2M9Q#Ue;!.Y~>
-!<C+<ZicQCK7j'7rVulIs+:Bds8RZ#J^o>%psoCs!knX6rRLlHr4W.1ldZ0'`O*":!.Y~>
-!<A&W@KSpHK7j-9rVufGs+:Bds8RZ#J^o>%psoCs!knX6qpkZFrk8@3ldZ/)Mdg-]!.Y~>
-!<ADaE<AngJV!d:rVufLs+(6gs8RZ(J_G\/ptGb!!lG!;qqD#Krke^8le2M9Q#Ue;!.Y~>
-!<C+<ZicQCK7j-9rVufGs+:Bds8RZ#J^o>%psoCs!knX6qpkZFrk8@3ldZ0'`O*":!.Y~>
-!<A&W@Kf'JK7gkNrVu`Es+:Bds8RZ#J^o>%psoCs!knX6q:5HD!knX6ldZ/)Mdg-]!.Y~>
-!<ADaE<T%iJUt\TrVu`Js+(6gs8RZ(J_G\/ptGb!!lG!;q:bfI!lG!;le2M9Q#Ue;!.Y~>
-!<C+<Ziu]EK7gkNrVu`Es+:Bds8RZ#J^o>%psoCs!knX6q:5HD!knX6ldZ0'`O*":!.Y~>
-!<A&W@KAdFqh+[os+:Bds8RZ#J^o>%psoCs!knX6pso=qs8VE8"[S&U@R1!E~>
-!<ADaE</beqgnOrs+(6gs8RZ(J_G\/ptGb!!lG!;ptG[ts8VE="\b2$ED-@_~>
-!<C+<ZiQEAqh+[os+:Bds8RZ#J^o>%psoCs!knX6pso=qs8VE8"dI!5[$1Q@~>
-!<A&W@Kf'JK7gkNrIasss+:Bds8RZ#J^o>%psoCs!knX6q:5Fr!knX6ldZ/)Mdg-]!.Y~>
-!<ADaE<T%iJUt\TrIOh!s+(6gs8RZ(J_G\/ptGb!!lG!;q:bdu!lG!;le2M9Q#Ue;!.Y~>
-!<C+<Ziu]EK7gkNrIasss+:Bds8RZ#J^o>%psoCs!knX6q:5Fr!knX6ldZ0'`O*":!.Y~>
-!<A&W@KSpHK7j-9rIb$us+:Bds8RZ#J^o>%psoCs!knX6qpkXtrk8@3ldZ/)Mdg-]!.Y~>
-!<ADaE<AngJV!d:rIOn#s+(6gs8RZ(J_G\/ptGb!!lG!;qqD""rke^8le2M9Q#Ue;!.Y~>
-!<C+<ZicQCK7j-9rIb$us+:Bds8RZ#J^o>%psoCs!knX6qpkXtrk8@3ldZ0'`O*":!.Y~>
-!<A&W@KSpHK7j'7rIb+"s+:Bds8RZ#J^o>%psoCs!knX6rRLk!r4W.1ldZ/)Mdg-]!.Y~>
-!<ADaE<AngJV!^8rIOt%s+(6gs8RZ(J_G\/ptGb!!lG!;rS%4$r5/L6le2M9Q#Ue;!.Y~>
-!<C+<ZicQCK7j'7rIb+"s+:Bds8RZ#J^o>%psoCs!knX6rRLk!r4W.1ldZ0'`O*":!.Y~>
-!<A&W@KSpHK7j!5rIY:(K7gl;s+/^OeUc9Gec17)^&S,_ebt-s^&S,ueHJ6s@U_V'J,~>
-!<ADaE<AngJV!X6rIG.+JUt]<s+/mTg4@uQgAc^,_Z0YigAQU!_Z0Z%g'(08EH+YPJ,~>
-!<C+<ZicQCK7j!5rIY:(K7gl;s+/^OeUc9Gec17)^&S,_ebt-s^&S,ueHM2V['Z%tJ,~>
-!<A&W@KSpHK7ip3r.>'as8RZ#J^o>%psoCs!knX6rIamYs8VE8"[S&U@R1!E~>
-!<ADaE<AngJV!R4r.+pds8RZ(J_G\/ptGb!!lG!;rIOa\s8VE="\b2$ED-@_~>
-!<C+<ZicQCK7ip3r.>'as8RZ#J^o>%psoCs!knX6rIamYs8VE8"dI!5[$1Q@~>
-!<A&W@KSpHK7ij1rdt9cs8RY&JV/N+p4EL]s8R_(p:^M+ldZ/)Mdg-]!.Y~>
-!<ADaE<AngJV!L2rdb-fs8RY$JUrB'p43@`s8RY$p;6k0le2M9Q#Ue;!.Y~>
-!<C+<ZicQCK7ij1rdt9cs8RY&JV/N+p4EL]s8R_(p:^M+ldZ0'`O*":!.Y~>
-!<A&W@KSpHK7id/!e\2dJV/N+JV3WJ!knVdoY(;)ldZ/)Mdg-]!.Y~>
-!<ADaE<AngJV!F0!eJ5gJUrB'JV!KF!lFtgoYUY.le2M9Q#Ue;!.Y~>
-!<C+<ZicQCK7id/!e\2dJV/N+JV3WJ!knVdoY(;)ldZ0'`O*":!.Y~>
-!<A&W@KSpHK7eaTJcC<$df8X`"[S&U@R1!E~>
-!<ADaE<AngJUrCPJcC<$df8Xe"\b2$ED-@_~>
-!<C+<ZicQCK7eaTJcC<$df8X`"dI!5[$1Q@~>
-!<A&W@KJjGK7X&Rs+13ts6J2=6&T2]5lcE~>
-!<ADaE<8hfJV!iPs+13ts6JAB9U0U;9E9S~>
-!<C+<ZiZKBK7X&Rs+13ts6J2=Pf:#:PQ64~>
-!<A&W@K8]FeUc8%e[a366&T2]5lcE~>
-!<ADaE<&[`g4@t/g:>o@9U0U;9E9S~>
-!<C+<ZiH>AeUc8%e[a36Pf:#:PQ64~>
-!<A&V@dua8Uk,=mUtMOD@e)ebMuI/d5lcE~>
-!<AD`EUc_RTn/ngU"Q+>EUld'Q2Yb(9E9S~>
-!<C+;[.0B3Uk,=mUtMOD[.9F]`W!4FPQ64~>
-!\j\5rF5AV!+LNZJcC<$g&LT#raGpp!7cT~>
-!^m$RrGhFo!-*SiJcC<$g&LT-rc&!5!8;r~>
-!cn@\rNu18!47=WJcC<$g&LT]rj2`k!7cT~>
-!\j\5mpZ8_J`_OGJ`bYJ!/p;T!^Qh:J,~>
-!^m$Rmr8>$J`_OGJ`bYJ!1!"m!_`UJJ,~>
-!cn@\n$E(ZJ`_OGJ`bYJ!6+E6!gE]8J,~>
-"?A1:5sb$M!'u1uJ`_OGg#`9mnRDMa!W^d$J,~>
-s$Qng9MFtr!).t+J`_OGg#`:"nT"S&!W^s.J,~>
-s)S5APa(^F!0i&sJ`_OGg#`:Rn[/=\!W^d$J,~>
-">Mnk!!)LSJ\?WJJ\BaM!+PIarrE&KJ,~>
-r^?bdn4\DEJ\$EDft%0'nP&r_rn;l~>
-rcA)>n<AL;J\?WJft@BmnWa%RrmcN~>
-s#L*6!',T1JH16$[fH?VJ,~>
-r'Z)9JH16$[fH?[J,~>
-rc8*TF+F=B!.b-Z!;tAt~>
-%%EndData
-showpage
-%%Trailer
-end
-%%EOF
diff --git a/lib/et/doc/src/sim_trans_contents_viewer_mgr_actors.gif b/lib/et/doc/src/sim_trans_contents_viewer_mgr_actors.gif
deleted file mode 100644
index d0d6031b22..0000000000
--- a/lib/et/doc/src/sim_trans_contents_viewer_mgr_actors.gif
+++ /dev/null
Binary files differ
diff --git a/lib/et/doc/src/sim_trans_contents_viewer_mgr_actors.png b/lib/et/doc/src/sim_trans_contents_viewer_mgr_actors.png
new file mode 100644
index 0000000000..06ff60280f
--- /dev/null
+++ b/lib/et/doc/src/sim_trans_contents_viewer_mgr_actors.png
Binary files differ
diff --git a/lib/et/doc/src/sim_trans_contents_viewer_mgr_actors.ps b/lib/et/doc/src/sim_trans_contents_viewer_mgr_actors.ps
deleted file mode 100644
index 7ad54e9932..0000000000
--- a/lib/et/doc/src/sim_trans_contents_viewer_mgr_actors.ps
+++ /dev/null
@@ -1,1371 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: GIMP PostScript file plugin V 1.12 by Peter Kirchgessner
-%%Title: /home/hakan/picts/sim_trans_contents_viewer_mgr_actors.ps
-%%CreationDate: Mon Oct 14 17:26:33 2002
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%Pages: 1
-%%BoundingBox: 14 14 406 232
-%%EndComments
-%%BeginProlog
-% Use own dictionary to avoid conflicts
-10 dict begin
-%%EndProlog
-%%Page: 1 1
-% Translate for offset
-14.173228 14.173228 translate
-% Translate to begin of first scanline
-0.000000 217.359744 translate
-391.247539 -217.359744 scale
-% Image geometry
-468 260 8
-% Transformation matrix
-[ 468 0 0 260 0 0 ]
-% Strings to hold RGB-samples per scanline
-/rstr 468 string def
-/gstr 468 string def
-/bstr 468 string def
-{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
-true 3
-%%BeginData: 78558 ASCII Bytes
-colorimage
-!AQV60nB=U!.b-Z!!G#:0ek\=~>
-r'Z)9JH16$[fH=oJ,~>
-"DW"!C3+q+JH16$[fH>IJ,~>
-r]0uYnc&U&JcC<$KDtqba8c/>!]_tqJ,~>
-r^?bdnc&U'JcC<$KDtqca8c/>r^;8~>
-rcA)>nc&U&JcC<$KDtqba8c/>!cr*tJ,~>
-s"OQTs8VWG!53s6J^oD'!56G0s6]pg3B;T~>
-s$Qngs8VWC!5=$8J_#J)!5?M-s6]pg6puP~>
-s)S5As8VWG!53s6J^oD'!56G0s6]pgF)uj~>
-!]^8\n(n&XJ^o>%K@Kt8`SL[8!',Q~>
-!^m%gn(IcUJ_#D'K@U%:`S(C1!(;>~>
-!cnAAn(n&XJ^o>%K@Kt8`SL[8!-<Y~>
-!\j]Tn(n&XJ^sYJ!6'N>MU_^?`SL[8!',Q~>
-!^m%gn(IcUJ_'_L!QriAer/)Z^;\e-_>luS~>
-!cnAAn(n&XJ^sYJ!6'N>MU_^?`SL[8!-<Y~>
-!<E/fh>k6dec1lieHNpfe\-<VrfmH5!J>`neH)JZJ^s>A!57RPpRLp5s.'&Es.'#D!NZ9O~>
-!<E/fg&Sjaf)LlgedTEhf"Q]`R?<W_eq&CHecDJYJ_'DC!5@XMpR1^.s-`i>s-`f=!NlEQ~>
-!<E/fh>k6dec1lieHNpfe\-<VrfmH5!J>`neH)JZJ^s>A!57RPpRLp5s.'&Es.'#D!NZ9O~>
-!<E/thZ',ChZ',Eh>k7]eH*Y&iRItJ^$sPQ`P(Qes-2Bj&]K+(eVedneWc<KeUr5!e]#58eH*Y&
-m*u0EHc:Qdo@3iSkMGs'p>5b<s5*^ErS@RV!.Y~>
-!<E/tf)M08f)M0:ec<GVdK.4niR.bD[d_]G_RAaXs,l0d&]0+-dZ&[pcB47;dXcttd_`H+dK.4n
-m*YsDID19\o?mWQkLTBqp=B21s47.:rRM"P!.Y~>
-!<E/thZ',ChZ',Eh>k7]eH*Y&iRItJ^$sPQ`P(Qes-2Bj&]K+(eVedneWc<KeUr5!e]#58eH*Y&
-m*u0EHc:Qdo@3iSkMGs'p>5b<s5*^ErS@RV!.Y~>
-!<E/uhYiuChYiuDh>k7]eH(;LiRIs]HgoPdK6tSf"cJVqeUr5GeHLSPe^];!^"!.9HgB2_P`(+C
-o@3iSkMGs'p>5P6rS@RV!.Y~>
-!<E/uf);$8f);$9ec<GVdf4mWdf4mfdf4m;dKPJmdaE\tqpPLqs3gpu^!cq3ld>g!M1O+HdK%#E
-f(YU+f(YU2ecDoRJ,~>
-!<E/uhYiuChYiuDh>k7]eH(;LiRIs]HgoPdK6tSf"cJVqeUr5GeHLSPe^];!^"!.9HgB2_P`(+C
-o@3iSkMGs'p>5P6rS@RV!.Y~>
-!<E/uhY`oDhY`oCh>k7deHX!NH\8]UV#G]@`VS*mXG_FPMp9eRMgLA`rmh%,"hfP8[+1uOHiM%o
-MgL)`e^]S9]n:[=eYN1ks2>,!H[CCYqUHs`HbIt[XFo&UHe$ZcMgL)`eZ=,:eXV!*eXWGc`J](q
-[+3]bMl_j8eHER4^"&YPHO.lKHe$Z!He"qkHiM%nMgL)`e^]S9XGbV]Hi)@nM[R4NHaL/4HaM>R
-`K^=Js4..-!N_4UeIKQ_H[C[ie^^aZH[C[qV#G]E`N4uEMlcp.s,.;eMq,e)H[CCYe\-=CJ^sDC
-!57RPpRLp5q4.B>!NZ9O~>
-!<E/uf)1s9f)1s8ec<G]dK[RNI>+uTU&KH?_YV[gY).RTM9=8LM1(5`rmLh+"hKD=ZI5HGIK..n
-OaVqhdaF,7\qP^@d\6Ygs2"o$JUN6\qU-aZICdkTV1m?KJ^Vu`OaVqhd].`4d[>O#d[?fW_NB8#
-ZI70\NMVX5dKI.0]$d#GI0duHJ^VttJ^U7kIK..mOaVqhdaF,7V2`oSJc!mqN=31KJZcG8J[3_P
-_NFeFs3gq,!MtePdLO9ZJUNNldaG:TI=6spU&KHD_QJ`DM6?j+s,@G`NRG\+JUN6\d^FS8J^X2=
-!5@XIpR1^*q3h03!NlEQ~>
-!<E/uhY`oDhY`oCh>k7deHX!NH\8]UV#G]@`VS*mXG_FPMp9eRMgLA`rmh%,"hfP8[+1uOHiM%o
-MgL)`e^]S9]n:[=eYN1ks2>,!H[CCYqUHs`HbIt[XFo&UHe$ZcMgL)`eZ=,:eXV!*eXWGc`J](q
-[+3]bMl_j8eHER4^"&YPHO.lKHe$Z!He"qkHiM%nMgL)`e^]S9XGbV]Hi)@nM[R4NHaL/4HaM>R
-`K^=Js4..-!N_4UeIKQ_H[C[ie^^aZH[C[qV#G]E`N4uEMlcp.s,.;eMq,e)H[CCYe\-=CJ^sDC
-!57RPpRLp5q4.B>!NZ9O~>
-!<E/teb>U4eH!;\bmMFBK>!Lr`Pm1N^&#u1UjJ$,[%t[BH^)4.H`YK:K6rNHH\9S^H[EHFK7gk%
-Hc=6^H]+D@K?_A^HbI[^HaLJn^&#u$[!S%^c%Dh:K6tk^K7gk%Hc<[FXNcBEXNcC)`IifVP^CBo
-K6rNPrQQOVHc=7KH[EHNK6tkfK6tk^H[EHFK7gk%Hc=6^H]+]EMhCoO(P@'mS9oU@S9on5c%CYf
-c%CAfc%CA$V#&=b]r\oSH]-.EH],8<UrC<"HbH5%PeE<.XNf"BH]+]EMgMhE[(X`'H^oZ3oZ[BL
-kLBR&q:,J8o[Wi/qpb_K!.Y~>
-!<E/tdeB1.dK%#Zc3h^FKt<Ot`l<RX_YVP7V1"3+[]7?II?hO3IB(T<JUNBKI>,tdJUPDTJVC\#
-IE'Q`I>OYGL!I\hIDX9dIC?ku^A?,&[XFRhcAACCJUu+hJVC\#IE&jHWm6<HWm61(b(58XQ$pZt
-JUNBOrQZU\IE'RPJUPD\JUu+lJUu+dJUPDTJVC\#IE'Q`I>OfGM2D,T(P.!oTm_?KTm_X?b(58`
-c@p\lc@LD#V>AId^952YI>Q7GI>P8<WlE&0IDW"4Q+iN3Wm8n@I>OfGM1)hH[_C&,IA)5;oZdHN
-kL'?uq9f82o[<W)qpGMJ!.Y~>
-!<E/teb>U4eH!;\bmMFBK>!Lr`Pm1N^&#u1UjJ$,[%t[BH^)4.H`YK:K6rNHH\9S^H[EHFK7gk%
-Hc=6^H]+D@K?_A^HbI[^HaLJn^&#u$[!S%^c%Dh:K6tk^K7gk%Hc<[FXNcBEXNcC)`IifVP^CBo
-K6rNPrQQOVHc=7KH[EHNK6tkfK6tk^H[EHFK7gk%Hc=6^H]+]EMhCoO(P@'mS9oU@S9on5c%CYf
-c%CAfc%CA$V#&=b]r\oSH]-.EH],8<UrC<"HbH5%PeE<.XNf"BH]+]EMgMhE[(X`'H^oZ3oZ[BL
-kLBR&q:,J8o[Wi/qpb_K!.Y~>
-!<E/sebPa5eH!;\bmCIuSB\-^XNcBEq98tnHc>s..t`2fc,G$^c-:lf`Q`aVc-:lfc)c8^c)c8n
-c%CA^c$Of^c%CAfc&6q=^%]bsK6tkVHc=6^Hd/X=SB\-^XNc*V`I!6%]mJ#*H^r?^H`YJEHi)%g
-P^EDS(k[1[c%CAfc%CAfc%CAfXF$J^XF%%nK7!=:'n^kPc$OfVc$Of^XF$J^c%CAfc%CB:bm25$
-K7hF$Hc>p-%>0#PK6tS^`I!6^c%CBBbl`lNSA"mG!IL&^c1K6\^$!oGSGC\8SFkA/SGUh;X8mb~>
-!<E/sdeT=/dK%#Zc3^Y%TusNdY0MTLq9B%qIDYs..uA\ocGk9hcH^uh`m0-dcH^ulcE;Shb-$/q
-c@LD`c@LPlc@LPlcA?t?_Y;@UJKr=OIDX9\J^1EHTusNdY0MH\`dNQ/_L9S0IA+fdIBLkHIEMK5
-!L8*4cMrIqcMrIqcMrIqcMrG'cE;Shb-$/qc@LDdpWaP*IEKidIEKidJ^1QLS^,N7IEp,hIEM<0
-#K"3+L!GC#_Yh^ZJJ-7bIE'RPI>Q7pJUP\dcA?t?_Yqa\I?fB/oZdHNkL'?uq9f82o[<W)qpGMJ
-!.Y~>
-!<E/sebPa5eH!;\bmCIuSB\-^XNcBEq98tnHc>s..t`2fc,G$^c-:lf`Q`aVc-:lfc)c8^c)c8n
-c%CA^c$Of^c%CAfc&6q=^%]bsK6tkVHc=6^Hd/X=SB\-^XNc*V`I!6%]mJ#*H^r?^H`YJEHi)%g
-P^EDS(k[1[c%CAfc%CAfc%CAfXF$J^XF%%nK7!=:'n^kPc$OfVc$Of^XF$J^c%CAfc%CB:bm25$
-K7hF$Hc>p-%>0#PK6tS^`I!6^c%CBBbl`lNSA"mG!IL&^c1K6\^$!oGSGC\8SFkA/SGUh;X8mb~>
-!<E/rebbm6eH!;\blFR;HNU(gK7!F=s*O[gs*Oais*Odj$\NfNc%CAfc%CAfV#5QQUs4O=c-:lf
-c-:lfc-=4lH[C[aq998:H`W`qc-:lfc(t8a$`)%*K<1<%K<1!UV#5QAUs4O=qoo/+HiD8#K6tkf
-K6tkfK6tkfK6tk=r-JOAc%CB:bnYkXc-:lfc-:lfc(o]^c-:lfc-:lfprs)XK7f)/K?\aiqoo7r
-Hd-narltIis31RsHiD7r`KY^rMnRB[H^'*+oZ[BLr7(e\q4%Gup=0/5q:,J8p!rl.r7(hL!.Y~>
-!<E/rdefI0dK%#Zc2a^=I06=kJV!XBs*agj!J,[ucMr=mcMrIqcMrIqcMrFrcDCGe';a!*J^2Pl
-J^2PlJ^2QXQ$n(?^A6%]SUIZ3NR#h#J^1+iI1)msOb'ZtR>%Z#cDCGe"/X:oJc!^nQ$rYWs+13q
-s+13qs+13qs+(3rV>P`DV9XXCp<N\hs3CXqs3CXq$dPSsU!Cr;IEp,hJb[Lr\qP]pI>,spIJ_=i
-JHF,JIK%OlIK.UmJc<q$_NfOtNP<]`I?fB/oZdHNr6bSVq3_5op<ir/q9f82p!WZ(r6bVK!.Y~>
-!<E/rebbm6eH!;\blFR;HNU(gK7!F=s*O[gs*Oais*Odj$\NfNc%CAfc%CAfV#5QQUs4O=c-:lf
-c-:lfc-=4lH[C[aq998:H`W`qc-:lfc(t8a$`)%*K<1<%K<1!UV#5QAUs4O=qoo/+HiD8#K6tkf
-K6tkfK6tkfK6tk=r-JOAc%CB:bnYkXc-:lfc-:lfc(o]^c-:lfc-:lfprs)XK7f)/K?\aiqoo7r
-Hd-narltIis31RsHiD7r`KY^rMnRB[H^'*+oZ[BLr7(e\q4%Gup=0/5q:,J8p!rl.r7(hL!.Y~>
-!<E/qebu$7eH!;\blXtnSG^V4K7!F=!eYj5rQQ+1Hc=7KH\9SfK6tkfK6tkfK6tkEH^t#Y$%mTL
-c%CAfc%CBAblbq\H\;.=%)%"GK<3>BK6tkEH^t#Y$`&--Uo\p$Us5ufSG^V4K7!L?(8Q;rc-:lf
-c-:lfc-:lfc-:lfc)c8^r657pHhP]!K6tkfK6tkfK6tkEH^r@*H[F#^K7!C<$&a/Tc%CYnK6t<0
-bmf;Pc%CA^c,G$^c-:lfr65JcUjIa=`I",+c1K6\^&6FTSG(J5SGC\8SG(M-SGgt=X8mb~>
-!<E/qdf#U1dK%#Zc2t.sU&<49JbdRmKmg]6c5)7b`m2SPM9aCtJ^2PlJ^2PlJ^1EHU&<49JcF$q
-JcF$qJc3jr`h@g7q9BD[I>rfXcH^ulcE;Shr6>\DI>t)'I>srGY'm#AcMrImc5*+%`m2k\J^2Pl
-J^2PlJ^2PlJ^1EHU&<49JbIChJcF$qJcF$qJIBc+I@8C'JUPhhJV!UA$&sMYc@pttKmg]5cMrG'
-cA?thcGk9hcH^ulr6>PeTm_X?`dOP3cLfB^^AQFRRJ,&/RJG82RJ,)'RJkP7XoNt~>
-!<E/qebu$7eH!;\blXtnSG^V4K7!F=!eYj5rQQ+1Hc=7KH\9SfK6tkfK6tkfK6tkEH^t#Y$%mTL
-c%CAfc%CBAblbq\H\;.=%)%"GK<3>BK6tkEH^t#Y$`&--Uo\p$Us5ufSG^V4K7!L?(8Q;rc-:lf
-c-:lfc-:lfc-:lfc)c8^r657pHhP]!K6tkfK6tkfK6tkEH^r@*H[F#^K7!C<$&a/Tc%CYnK6t<0
-bmf;Pc%CA^c,G$^c-:lfr65JcUjIa=`I",+c1K6\^&6FTSG(J5SGC\8SG(M-SGgt=X8mb~>
-!<E/pec208eH!;[bmB#LUpR51c%CAMqTUjuH\8E5XMq8fPeE<.XNf"BHd0ffHd0ffHaLbEH_e$M
-[*=5Mc-:lfc-:lf[*>DR]sN-Eprt%9H[E`Vc%CAfc%CA=[&gXZ[!R/5]mG+5c-:lfUpR51c%CB?
-boOKE[*?jJHd0ffHd0ffHd0ffHaLbEH_e$M[*=5MrlkJ%KDWn.K6tkfK6tkfK6tk^H[DQHH[F#^
-K7!C<*/f0FXF#<-XF#T$]r]2tK6su$H^)4.H`YK:K7!UB$)FrA[!R_U[!TK;c1K6\^&6FTSG(J5
-SGC\8SG(M3SH%.<SGgt=X8mb~>
-!<E/pcMs1*c2bTVapZ4CIAOBTZHA#P[`83e1obtXY-t@IWdU/DQ$oLOb(5,db(5,db)(PT_M*E7
-[]ZpYJUttdJUttdM1)hPTsDD<I>RaA,DCPo`lcGTJ]budIAOBTZHBV(IC?_8IC@;<Kmff+Y-Q3$
-Jc!S1\p^a(b(5,db(5,db(5,db)(PT_M*E7[]ZpYJV!gCs,$Wqs+13ms+13ms+(R#_L6j+M1'fp
-b(5-=arH7dWiCJq^8cU8Y-t@Ib)(PTV1"W?Q$oLOb(5-CapFcI^9W0Db-$0$J]dW-!5ABVpQbHt
-!1!B*!1!9'rK[E.rK[?,!NlEQ~>
-!<E/pec208eH!;[bmB#LUpR51c%CAMqTUjuH\8E5XMq8fPeE<.XNf"BHd0ffHd0ffHaLbEH_e$M
-[*=5Mc-:lfc-:lf[*>DR]sN-Eprt%9H[E`Vc%CAfc%CA=[&gXZ[!R/5]mG+5c-:lfUpR51c%CB?
-boOKE[*?jJHd0ffHd0ffHd0ffHaLbEH_e$M[*=5MrlkJ%KDWn.K6tkfK6tkfK6tk^H[DQHH[F#^
-K7!C<*/f0FXF#<-XF#T$]r]2tK6su$H^)4.H`YK:K7!UB$)FrA[!R_U[!TK;c1K6\^&6FTSG(J5
-SGC\8SG(M3SH%.<SGgt=X8mb~>
-!<E/feH!;[bmMFSH[CCHc*W+M^&#t]XG_FPMoErBK6r6Prll^@Hd0ffHd0gBK6t;NP^@b0XNcBE
-c-:lfc-<VJHbGYrH[D!rprrl9H^+NS&VGGTc,GooH\8EEc$Of^c$Og:bm;:QH[CCHc%CB>c2W_%
-bnu([c-:lfc-:lfc-<VJHbIC_H[CCHc%CBBblNHDqook.Hd0ffHd0ffHd0g:K7gO`Hd0ffHhbi%
-["E^qUjJWVXG_FPMoErJK6t;5K6r6PrlkIrHiD7qP_4=0Pf:n*Mh0.EblGHTeH!;YS,g7reb>U,
-ec20<ec20;eH)`OJ,~>
-!<E/fc2bTUapQ"NJUN6Tb-HSL])'PWWel.PM8%-/KmeZTrlY7ls2t@ms2l=eJUtDLQ%=@;Y0)<H
-b0#9db0%#@J\%+tI=[ZtprWZ3I?FNOs+13m)8_YiI>+iH`dN9Xb'e]Xb0%SdJUN6Tb(5-?b5[J$
-b5[%mb5[%mb5[%mapbS,J\&^`JUN6Tb(5-Cb5[%ib5[%mb5[%mb5[%mapG5%KsHD`b0#9dprXD]
-KmfMcI@86XM1'f/^<3a4J\%\3I>+^#b5[%lap=8`I=[Ztb)MC3b4EaU^AQ7V[eZ0g[eA#@Q1`H&
-Q2T#.Q2Jo.XoNt~>
-!<E/feH!;[bmMFSH[CCHc*W+M^&#t]XG_FPMoErBK6r6Prll^@Hd0ffHd0gBK6t;NP^@b0XNcBE
-c-:lfc-<VJHbGYrH[D!rprrl9H^+NS&VGGTc,GooH\8EEc$Of^c$Og:bm;:QH[CCHc%CB>c2W_%
-bnu([c-:lfc-:lfc-<VJHbIC_H[CCHc%CBBblNHDqook.Hd0ffHd0ffHd0g:K7gO`Hd0ffHhbi%
-["E^qUjJWVXG_FPMoErJK6t;5K6r6PrlkIrHiD7qP_4=0Pf:n*Mh0.EblGHTeH!;YS,g7reb>U,
-ec20<ec20;eH)`OJ,~>
-!<E/feH!;Qc2)be^!4guHN:b0blYk:XN\oiH\;4?qKi4Ugs#o%K>iDdo?@9K`74mi!.Y~>
-!<E/fc2bTKb5-Md]$8CoI/pk/ao]G2V9R-a`dNR<b5-Md]%kF0We&$<b4EaU^;S:tXoNt~>
-!<E/feH!;Qc2)be^!4guHN:b0blYk:XN\oiH\;4?qKi4Ugs#o%K>iDdo?@9K`74mi!.Y~>
-!<E/fblGG.`<+#lUs[-c[$7AfMgLu>`;udJJ]73!!56=q!NZ9O~>
-!<E/faoK/,`WF/oU!^ja[ZRSiNI@MG`W;dIJ]@9#!5?Co!NlEQ~>
-!<E/fblGG.`<+#lUs[-c[$7AfMgLu>`;udJJ]73!!56=q!NZ9O~>
-!<E/fblGG.`QlF+]p+.rK;=(;]Ysla`6A=a!.Y~>
-!<E/faoK/,`m2R-^6*tpKqX(;]Z'rc`6&+`!.Y~>
-!<E/fblGG.`QlF+]p+.rK;=(;]Ysla`6A=a!.Y~>
-!<E/fblGG.`IZ!\`;mTiblOmGJ,~>
-!<E/faoK/,`du-^`W3`kaoSXFJ,~>
-!<E/fblGG.`IZ!\`;mTiblOmGJ,~>
-!!%S&JV/N+YCcfTJ,~>
-!!%S$JUrB'YCQZRJ,~>
-!!%S&JV/N+YCcfTJ,~>
-!<E0!joD3.s+13$s1/.5V#TT>]`<Q~>
-!<E0!joD*+s+13$s1/.5U&X9;\c@6~>
-!<E0!joD3.s+13$s1/.5V#TT>]`<Q~>
-!<E0!joD3.s+13$s1847K;AP0k.LbF~>
-!<E0!joD*+s+13$s1847JYE,+k.1PC~>
-!<E0!joD3.s+13$s1847K;AP0k.LbF~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys8(:A!!:[N!:889!<1OK!!:[N!;tCI!:/25!9Mc2!:SJ6!!^sR!7fU"!.i[Oe^)eG
-K*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IF!!:jS!:8G>!<1^P!!:jS!;tRN!:/A:!9Mr7!:SY;!!_-W!8?-,!.ijTg<\LQ
-JH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:A!!:[N!:889!<1OK!!:[N!;tCI!:/25!9Mc2!:SJ6!!^sR!7fU"!.i[Oe^)eG
-K*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!;b7G!:889!<1OK!;Y1F!:889!<1OK!9Vi3!:SJ<!;b7G!<:UL!.i[Oe^)eG
-K*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IL!;bFL!:8G>!<1^P!;Y@K!:8G>!<1^P!9W#8!:SYA!;bFL!<:dQ!.ijTg<\LQ
-JH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:G!;b7G!:889!<1OK!;Y1F!:889!<1OK!9Vi3!:SJ<!;b7G!<:UL!.i[Oe^)eG
-K*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<1OK!"7<W!7fU"!7_&Le^aTuo%!a?rmh#Ks4.&J
-rmgrIs4.,L"4[AOeboLJec,UNeGoU?ec,XJec,UOeGoU"r;clJr;clJrr</O!!(RJ!.i[Oe`,-Z
-K*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IL!<(XO!!M!U!8?0*!:nkD!<1^P!"7K\!8?-,!87DQg=lK*o%O*Drn@APs4[DO
-rn@;Ns4[JQ"53_TgAM$OgA_-Sg&M-DgA_0OgA_-Tg&M-,r;clOr;clOrr</T!!(aO!.ijTg>^id
-JH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<1OK!"7<W!7fU"!7_&Le^aTuo%!a?rmh#Ks4.&J
-rmgrIs4.,L"4[AOeboLJec,UNeGoU?ec,XJec,UOeGoU"r;clJr;clJrr</O!!(RJ!.i[Oe`,-Z
-K*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@rmh#K#1W\ReGoU"rW!/Q!!(R"!!)T?rW)oI
-rrE)Lrr<;S!!(R"!!(RG!<:UL!!(RK!!:[N!;"b@!<(IJ!"[T[!7fU"!7fU"!7fU"!7goGs4.,L
-J^o>%j440^"f21\k.LbF~>
-!<E0!joV7Vs8(IL!<(XO!"%?Z!87DQg=cN,o@j3Ern@AP#20%Wg&M-,rW!/V!!(a,!!)TDrW)oN
-rrE)Qrr<;X!!(a,!!(aL!<:dQ!!(aP!!:jS!;"qE!<(XO!"[c`!8?-,!8?-,!8?-,!8@8Ls4[JQ
-J_G\/j4aNa"ektYk.1PC~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@rmh#K#1W\ReGoU"rW!/Q!!(R"!!)T?rW)oI
-rrE)Lrr<;S!!(R"!!(RG!<:UL!!(RK!!:[N!;"b@!<(IJ!"[T[!7fU"!7fU"!7fU"!7goGs4.,L
-J^o>%j440^"f21\k.LbF~>
-!<E0!joV@Ys8(:D!"@BX!7_&LeGoU"eGoU@ebT7WeGoU"!!(R"!!(OL!7fU"!:\P<!<:UL!<:UL
-!;tCI!!(RK!<:UL!;tCI!<:UL!;"b=!#!f^!7_&Le^XX"e^XX"e^XX"ec#RKec#Q"eUc9/ec17*
-V#TT>]`<Q~>
-!<E0!joV7Vs8(II!"@Q]!87DQg&M-,g&M-EgA1d\g&M-,!!(a,!!(^Q!8?-,!:\_A!<:dQ!<:dQ
-!;tRN!!(aP!<:dQ!;tRN!<:dQ!;"qB!#!uc!87DQg=cN,g=cN,g=cN,gAV*PgAV)'g4@u9gAc^-
-U&X9;\c@6~>
-!<E0!joV@Ys8(:D!"@BX!7_&LeGoU"eGoU@ebT7WeGoU"!!(R"!!(OL!7fU"!:\P<!<:UL!<:UL
-!;tCI!!(RK!<:UL!;tCI!<:UL!;"b=!#!f^!7_&Le^XX"e^XX"e^XX"ec#RKec#Q"eUc9/ec17*
-V#TT>]`<Q~>
-!<E0!joV@Ys8(:G!<(IJ!!CaO!7grHo@<j@rmh#K$Io+VeGoU"eGoU"qZ-*8rVurKqZ-ZHqu?fK
-!!*#KrrDuIrrE)LrrDZ@rrE#Jrr<>T!!(R"!!(R"qZ$]J!!)rIrW%N"J^rc1s+:KNs5rIW!.Y~>
-!<E0!joV7Vs8(IL!<(XO!!CpT!8@;Mo@j3Ern@AP$JGI[g&M-,g&M-,qZ-*=rVurPqZ-ZMqu?fP
-!!*#PrrDuNrrE)QrrDZErrE#Orr<>Y!!(a,!!(a,qZ$]O!!)rNrW%N'J_K,;s+(?Is5rIT!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!!CaO!7grHo@<j@rmh#K$Io+VeGoU"eGoU"qZ-*8rVurKqZ-ZHqu?fK
-!!*#KrrDuIrrE)LrrDZ@rrE#Jrr<>T!!(R"!!(R"qZ$]J!!)rIrW%N"J^rc1s+:KNs5rIW!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!!UmQ!7_&Ln(%F<rmh#K%+P=XeGoU"eGoU"!!)K<rrE&Krr<,N!!)rI
-rrE)Lrr<,N!!*#KrrDuIrrE)LrrDZ@rrE#Jrr<DV!!(R"!!(R"!!)rIrrDrHrW%N"J^rf2s+:KN
-s5rIW!.Y~>
-!<E0!joV7Vs8(IL!<(XO!!V'V!87DQn(RdArn@AP%,([]g&M-,g&M-,!!)KArrE&Prr<,S!!)rN
-rrE)Qrr<,S!!*#PrrDuNrrE)QrrDZErrE#Orr<D[!!(a,!!(a,!!)rNrrDrMrW%N'J_K/<s+(?I
-s5rIT!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!!UmQ!7_&Ln(%F<rmh#K%+P=XeGoU"eGoU"!!)K<rrE&Krr<,N!!)rI
-rrE)Lrr<,N!!*#KrrDuIrrE)LrrDZ@rrE#Jrr<DV!!(R"!!(R"!!)rIrrDrHrW%N"J^rf2s+:KN
-s5rIW!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@rmh#K#1W\ReGoU"rW!/Q!!(R"!!)W@rrE&K
-rr<V\!!(R"!!(OL!7fU"!7_&Lrmh#Ks4.,L#1W\Re^XX"o@<j@rRLoJ#LreSe^XX"ec#RKec,UN
-eGoUKec,XLec,W#eUc92ec17*V#TT>]`<Q~>
-!<E0!joV7Vs8(IL!<(XO!"%?Z!87DQg=cN,o@j3Ern@AP#20%Wg&M-,rW!/V!!(a,!!)WErrE&P
-rr<Va!!(a,!!(^Q!8?-,!87DQrn@APs4[JQ#20%Wg=cN,o@j3ErS%8O#MK.Xg=cN,gAV*PgA_-S
-g&M-PgA_0QgA_/(g4@u<gAc^-U&X9;\c@6~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@rmh#K#1W\ReGoU"rW!/Q!!(R"!!)W@rrE&K
-rr<V\!!(R"!!(OL!7fU"!7_&Lrmh#Ks4.,L#1W\Re^XX"o@<j@rRLoJ#LreSe^XX"ec#RKec,UN
-eGoUKec,XLec,W#eUc92ec17*V#TT>]`<Q~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<1OK!"7<W!7fU"!7_&Le^aTun^[O;rmgrIrmguJ
-!7h#JrRLiHs4.,Ls4.,Lo@<j@rRLoJ!n@8Nrmh#Ks4.&Js4.,LrRLiHJ^o>%imn']"f21\k.LbF~>
-!<E0!joV7Vs8(IL!<(XO!!M!U!8?0*!:nkD!<1^P!"7K\!8?-,!87DQg=lK*n_3m@rn@;Nrn@>O
-!8@AOrS%2Ms4[JQs4[JQo@j3ErS%8O!nmVSrn@APs4[DOs4[JQrS%2MJ_G\/inFE`"ektYk.1PC~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<1OK!"7<W!7fU"!7_&Le^aTun^[O;rmgrIrmguJ
-!7h#JrRLiHs4.,Ls4.,Lo@<j@rRLoJ!n@8Nrmh#Ks4.&Js4.,LrRLiHJ^o>%imn']"f21\k.LbF~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@tkgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc8aec17*V#TT>]`<Q~>
-!<E0!joD3.eUc8%e[a36V#TT>]`<Q~>
-!<E0!joD*+g4@t/g:>o@U&X9;\c@6~>
-!<E0!joD3.eUc8%e[a36V#TT>]`<Q~>
-!<E0!joD3.eUc8%e]lY4K*Kl%s5rIW!.Y~>
-!<E0!joD*+g4@t/g<J@>JHji%s5rIT!.Y~>
-!<E0!joD3.eUc8%e]lY4K*Kl%s5rIW!.Y~>
-!<E0!joV@/eU_IdC4U-JCAucPK*VG,V#TT>]`<Q~>
-!<E0!joV71g4=g+JUrC#Jc=BlJHu5/U&X9;\c@6~>
-!<E0!joV@/eU`X0Mh-f7MuM8qK*VG,V#TT>]`<Q~>
-!<E0!joV@/eU_IdC4U-KC&m]$ec19u]`<]]^&S*:eYN6-k.LbF~>
-!<E0!joV71g4=g+JUrC$JH5`LgAca#_>o/`_Z0W?g7eQ/k.1PC~>
-!<E0!joV@/eU`X0Mh-f8MZEeVec19u]`<]]^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDW=_s+C0]s8N;RV#TT>]`<Q~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc!:bs+1$`s8N;WU&X9;\c@6~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDW=_s+C0]s8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDW=`s+>t$^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc!:cs+,au_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDW=`s+>t$^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KD`F_s8R`K^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc*Cbs8RZI_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKD`F_s8R`K^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXT#=$!;rqs!.h5&XQ6J_mf(c:KD`F_rrU`'KD`F_rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+gA]h+!;tRL!.ijTg>pufs8LaPJc*CbrrUo*Jc*Cbrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k5ONC!;u!X!.j9`k2b\)s8LRKKD`F_rrU`'KD`F_rs%#Ls5rIW!.Y~>
-!<E0!joqR2eS8j#qZ-Srq>gPsq>gMrrW)hsquHbuquHAjquHYrq>^MsrW)r!rVur"q>^MsquGr^
-!W];%rN#u!rN#u!JZOF(jfJLMrmh%$rOr72s4..%r4W.1#1]OLk2s>WJ,~>
-!<E0!joqI4g4=h/qZ-TKq>gQLq>gNKrW)iLquHcNquHBCquHZKq>^NLrW)rOrVurPq>^NLquGs7
-!W^pSrRq5OrRq5OJ_G\/jkBb7rn@C'rPJU7s4[L(r5/L6#25dNk2s5TJ,~>
-!<E0!joqR2eVf@JqZ-TWq>gQXq>gNWrW)iXquHcZquHBOquHZWq>^NXrW)r[rVur\q>^NXquGsC
-!W_?_rT4([rT4([J`_OGjlZUCrmh%$rOr72s4..%r4W.1#1]OLk2s>WJ,~>
-!<E0!jp.^4eS8j#X8r4#!!)u!!!)u!#lq'.!3E7%XK2F"X8i7rX8i7tX8i7iX8i7rX8i8!X9/I(
-X8r1"!!*#"!!)u!!!*#"!!)/_!W];%rN#u!rN#u!JZOF(jfJLMrmh%$rOr72rmh%$rOr72#1]OL
-k2s>WJ,~>
-!<E0!jp.U6g4=h/g&V**!!)uO!!)uO#lr]5!8?-,g=cQ)g&M-Kg&M-Mg&M-Bg&M-Kg&M-Og&h?/
-g&V')!!*#P!!)uO!!*#P!!)08!W^pSrRq5OrRq5OJ_G\/jkBb7rn@C'rPJU7rn@C'rPJU7#25dN
-k2s5TJ,~>
-!<E0!jp.^4eVf@JjoGAB!!)u[!!)u[#ls,M!9WDDk2l[Ajo>DWjo>DYjo>DNjo>DWjo>D[joYVG
-joG>A!!*#\!!)u[!!*#\!!)0D!W_?_rT4([rT4([J`_OGjlZUCrmh%$rOr72rmh%$rOr72#1]OL
-k2s>WJ,~>
-!<E0!jp.^4eS8j#X8r1"!!*#"!!)u!#lq'.!3E7%XK2F#X9&C'!;`bs!;iht!:[&i!;W\r!<&u$
-!3E7%r2]kuri?)"rN#u!ri?)"poOJqnuMonXK2F#X8i8!X8i6OXF[J7XT._fec1:$^&S-2ec1:#
-^&S*:eYN6-k.LbF~>
-!<E0!jp.U6g4=h/g&V')!!*#P!!)uO#lr]5!8?-,g=cQ*g&_9.!;bCL!;kIM!:\\B!;Y=K!<(UR
-!8?-,r7V,Nrn7>PrRq5Orn7>PptG`Jo%F0Gg=cQ*g&M-Og&M,(g4@u>gAh3PgAca'_Z0Z7gAca&
-_Z0W?g7eQ/k.1PC~>
-!<E0!jp.^4eVf@JjoG>A!!*#\!!)u[#ls,M!9WDDk2l[BjoPPF!;bgX!;kmY!:]+N!;YaW!<)$^
-!9WDDr8mtZroO1\rT4([roO1\pu_SVo&^#Sk2l[Bjo>D[jo>C4k(2[Vk5YJ\ec1:$^&S-2ec1:#
-^&S*:eYN6-k.LbF~>
-!<E0!jp.^4eS8j#X8r1"!!*#"!s#F(!;`bs!;`bu!3?1sX8i7tX8i7iX8i7rX9/I(X8r1"!!*#"
-!!)u!!s#F(!;rnu!;NYq!:m2n!3E7%rN#u!rN#u!JZOF(jfJLMrmh%$rk8@3r71h"rk8@3#1]OL
-k2s>WJ,~>
-!<E0!jp.U6g4=h/g&V')!!*#P!s%'/!;bCL!;bCN!87GLg&M-Mg&M-Bg&M-Kg&h?/g&V')!!*#P
-!!)uO!s%'/!;tON!;P:J!:nhG!8?-,rRq5OrRq5OJ_G\/jkBb7rn@C'rke^8r7_1%rke^8#25dN
-k2s5TJ,~>
-!<E0!jp.^4eVf@JjoG>A!!*#\!s%KG!;bgX!;bgZ!9O:Xjo>DYjo>DNjo>DWjoYVGjoG>A!!*#\
-!!)u[!s%KG!;tsZ!;P^V!:o7S!9WDDrT4([rT4([J`_OGjlZUCrmh%$rk8@3r71h"rk8@3#1]OL
-k2s>WJ,~>
-!<E0!jp.^4eS8j#X8r1"!!*#"r;c\q!!)nt!!*#"!!)nt!!)nt!!)Mi!!)hrr;cbs!!*#"!!)u!
-r;cbs!!)5a!!*#"!!)u!!!)u!!!%SOJZRt7s6fm:s+C?bs8VuHs+C<as8N;RV#TT>]`<Q~>
-!<E0!jp.U6g4=h/g&V')!!*#Pr;c]J!!)oM!!*#P!!)oM!!)oM!!)NB!!)iKr;ccL!!*#P!!)uO
-r;ccL!!)6:!!*#P!!)uO!!)uO!!%T(J_K5>s8W)Ps+13es8VuMs+10ds8N;WU&X9;\c@6~>
-!<E0!jp.^4eVf@JjoG>A!!*#\r;c]V!!)oY!!*#\!!)oY!!)oY!!)NN!!)iWr;ccX!!*#\!!)u[
-r;ccX!!)6F!!*#\!!)u[!!)u[!!%T4J`c(Vs8W)Ks+C?bs8VuHs+C<as8N;RV#TT>]`<Q~>
-!<E0!jp.^4eS8j#X8r1"!!*#"!s#F(!;`bs!;ikq!;iht!;iht!<&u!!;3Dn!<&u!!<0&%!3E7%
-qlBi!X8r1"!s#F(!;rnu!<&u!!:?if!<0&"!<&u!!<&u!!.h5&XQ?P`mf(c:KE&Xbs8(:GKE&Xb
-rs%#Ls5rIW!.Y~>
-!<E0!jp.U6g4=h/g&V')!!*#P!s%'/!;bCL!;kLJ!;kIM!;kIM!<(UO!;5%G!<(UO!<1[S!8?-,
-qq;)Og&V')!s%'/!;tON!<(UO!:AJ?!<1[P!<(UO!<(UO!.ijTg?%&gs8LaPJcEUes8(ILJcEUe
-rs%2Ns5rIT!.Y~>
-!<E0!jp.^4eVf@JjoG>A!!*#\!s%KG!;bgX!;kpV!;kmY!;kmY!<)$[!;5IS!<)$[!<2*_!9WDD
-qrRq[joG>A!s%KG!;tsZ!<)$[!:AnK!<2*\!<)$[!<)$[!.j9`k2kb*s8LRKKE&Xbs8(:GKE&Xb
-rs%#Ls5rIW!.Y~>
-!<E0!jp.^4eS8j#X8r1"!!*#"!!)u!!!)qu!!)qu!!)qu!!)qu!!)nt!!)u!!!)\n!!)u!!!*#"
-!!)u!!!)u!!W];%r2]kurN#u!ri?)"rN#u!mB$0bri?)"rN#u!JZOF(jfJLMrmh%$!knX6q:5Lt
-s1SI4#1]OLk2s>WJ,~>
-!<E0!jp.U6g4=h/g&V')!!*#P!!)uO!!)rN!!)rN!!)rN!!)rN!!)oM!!)uO!!)]G!!)uO!!*#P
-!!)uO!!)uO!W^pSr7V,NrRq5Orn7>PrRq5OmFqF;rn7>PrRq5OJ_G\/jkBb7rn@C'!lG!;q:bk"
-s2+g9#25dNk2s5TJ,~>
-!<E0!jp.^4eVf@JjoG>A!!*#\!!)u[!!)rZ!!)rZ!!)rZ!!)rZ!!)oY!!)u[!!)]S!!)u[!!*#\
-!!)u[!!)u[!W_?_r8mtZrT4([roO1\rT4([mH49GroO1\rT4([J`_OGjlZUCrmh%$!knX6q:5Lt
-s1SI4#1]OLk2s>WJ,~>
-!<E0!jp.^4eS8j#X8r4#!!)u!!!)u!!!)qu!!)qu!!)qu!!)qu!!)nt!!)u!!!)\n!!)u!!!*#"
-!!)u!!!)qu!!)nt!!)u!!!*#"!!)u!!!)u!rrDMh!!)u!!!)u!!!%SOJZRt7s6fm:s+:Bds8VlE
-s+:Wks8UWFs5rIW!.Y~>
-!<E0!jp.U6g4=h/g&V**!!)uO!!)uO!!)rN!!)rN!!)rN!!)rN!!)oM!!)uO!!)]G!!)uO!!*#P
-!!)uO!!)rN!!)oM!!)uO!!*#P!!)uO!!)uOrrDNA!!)uO!!)uO!!%T(J_K5>s8W)Ps+(6gs8VlJ
-s+(Kns8UfHs5rIT!.Y~>
-!<E0!jp.^4eVf@JjoGAB!!)u[!!)u[!!)rZ!!)rZ!!)rZ!!)rZ!!)oY!!)u[!!)]S!!)u[!!*#\
-!!)u[!!)rZ!!)oY!!)u[!!*#\!!)u[!!)u[rrDNM!!)u[!!)u[!!%T4J`c(Vs8W)Ks+:Bds8VlE
-s+:Wks8UWFs5rIW!.Y~>
-!<E0!joqR2eS8j#qZ-Srq>gMrquHbur;Zi!r;cl!quHbuq#L/jq#LGrq>gGp!!)quq>^Msq#LAp
-rrDPirW)nur;_DMJZRq6s6fm:s+C@Oon*Ras8UWFs5rIW!.Y~>
-!<E0!joqI4g4=h/qZ-TKq>gNKquHcNr;ZiOr;clOquHcNq#L0Cq#LHKq>gHI!!)rNq>^NLq#LBI
-rrDQBrW)oNr;_E&J_K2=s8W)Ps+14MommFds8UfHs5rIT!.Y~>
-!<E0!joqR2eVf@JqZ-TWq>gNWquHcZr;Zi[r;cl[quHcZq#L0Oq#LHWq>gHU!!)rZq>^NXq#LBU
-rrDQNrW)oZr;_E2J`c%Us8W)Ks+C@Oon*Ras8UWFs5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:K)krCKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJH5`AJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKK)krCKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KCJmFeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJai[Dg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKCJmFeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KCf*LKE(u%V#TT>]`<Q~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJb/mJJcGc(U&X9;\c@6~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKCf*LKE(u%V#TT>]`<Q~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXO4*L!;NYq!.h57XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g<nUS!;P:J!.ijegAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k0`;k!;P^V!.j9qk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!joqR2eS8j#quHVqrW)ktqZ-Vsq>^MsquDJQ!!)bp!!)bp!!%SOP-"]Ormh%$s8VfCs+C@O
-#1]OLk2s>WJ,~>
-!<E0!joqI4g4=h/quHWJrW)lMqZ-WLq>^NLquDK*!!)cI!!)cI!!%T(P1os9rn@C's8VfHs+14M
-#25dNk2s5TJ,~>
-!<E0!joqR2eVf@JquHWVrW)lYqZ-WXq>^NXquDK6!!)cU!!)cU!!%T4P32fErmh%$s8VfCs+C@O
-#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i7pX8i7tX8i8!X8i8"X8i8!X8i8"X8i6RX8i7eX8i6OXHK[bmf(c:KE(uF
-ec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Ig&M-Mg&M-Og&M-Pg&M-Og&M-Pg&M,+g&M->g&M,(g611is8LaPJcGcD
-gAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>DUjo>DYjo>D[jo>D\jo>D[jo>D\jo>C7jo>DJjo>C4k*"m,s8LRKKE(uF
-ec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i7qX9&C'!;rnu!<&u!!<0&"!<&u!!<0&"!;NYq!4Ap.!!',"!;iks!<0)!
-!<0)!!;ESm!;rqt!;iks!!0/$JZP$9s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Jg&_9.!;tON!<(UO!<1[P!<(UO!<1[P!;P:J!4CP\!!(aP!;kLL!<1^O
-!<1^O!;G4F!;tRM!;kLL!!1dRJ_H:@s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>DVjoPPF!;tsZ!<)$[!<2*\!<)$[!<2*\!;P^V!4Cth!!)0\!;kpX!<2-[
-!<2-[!;GXR!;u!Y!;kpX!!23^J``-Xs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i7qX9&C'!;rnu!<&u!!<0&%!3E7%r2]kupoOJq[&j9-ri?)"rN#u!ri?)"
-ri?)"r2]kuorJ,npT+>pr2]kuriH,"JZP$9s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Jg&_9.!;tON!<(UO!<1[S!8?-,r7V,NptG`J[+bN[rn7>PrRq5Orn7>P
-rn7>Pr7V,Np"BBGpY#TIr7V,Nrn@APJ_H:@s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>DVjoPPF!;tsZ!<)$[!<2*_!9WDDr8mtZpu_SV[-%AgroO1\rT4([roO1\
-roO1\r8mtZp#Z5SpZ;GUr8mtZroX4\J``-Xs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i7rX8i8"X8i8!XS`(sXSi.sX8i7"X8i8!X8i8"X8i7uX9em.X8o?'!3E7%
-orJ,npT+>prN#u!r2]kuJZP$9s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Kg&M-Pg&M-OgACsLgAM$Lg&M,Pg&M-Og&M-Pg&M-Ng'Ic5g&Tj\!8?-,
-p"BBGpY#TIrRq5Or7V,NJ_H:@s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>DWjo>D\jo>D[k555Xk5>;Xjo>C\jo>D[jo>D\jo>DZjp;%MjoFQ+!9WDD
-p#Z5SpZ;GUrT4([r8mtZJ``-Xs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i8!X8i8"XS`(sX8i8!X8i8"X9/I(X8r1"!!)u!!!'1'!!)u!!!*#"q>gPs
-"ota+!3E7%orJ,npT+>prN#u!r2]kuJZP$9s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Og&M-PgACsLg&M-Og&M-Pg&h?/g&V')!!)uO!!'1U!!)uO!!*#Pq>gQL
-"p!B2!8?-,p"BBGpY#TIrRq5Or7V,NJ_H:@s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>D[jo>D\k555Xjo>D[jo>D\joYVGjoG>A!!)u[!!'1a!!)u[!!*#\q>gQX
-"p!fJ!9WDDp#Z5SpZ;GUrT4([r8mtZJ``-Xs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i8!X9/I(X8r1"!!*#"!!)u!!!*#"!!)u!!!*#"!!)u!!!'1'!!)u!!!*#"
-!!)eq"9>M'X8qmo!!)bp!!)u!!!)qu!!%SOP-"]Ormh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V')!!*#P!!)uO!!*#P!!)uO!!*#P!!)uO!!'1U!!)uO!!*#P
-!!)fJ"9@-Ug&Ud!!!)cI!!)uO!!)rN!!%T(P1os9rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bjo>D[joYVGjoG>A!!*#\!!)u[!!*#\!!)u[!!*#\!!)u[!!'1a!!)u[!!*#\
-!!)fV"9@QajoG&9!!)cU!!)u[!!)rZ!!%T4P32fErmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i8!X9/I(X8r1"!!*#"!!)u!!!*#"!!)u!!!*#"!!)u!!!)u!rrBF-!!)u!
-!!)u!!!)u!!!*#"rr<,%!!)Ym!!*#"!!)nt!!)qu!!*#"rr@VOP-"]Ormh%$s8VfCs+C@O#1]OL
-k2s>WJ,~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V')!!*#P!!)uO!!*#P!!)uO!!*#P!!)uO!!)uOrrBF[!!)uO
-!!)uO!!)uO!!*#Prr<,S!!)ZF!!*#P!!)oM!!)rN!!*#Prr@W(P1os9rn@C's8VfHs+14M#25dN
-k2s5TJ,~>
-!<E0!johL1eVf@bjo>D[joYVGjoG>A!!*#\!!)u[!!*#\!!)u[!!*#\!!)u[!!)u[rrBFg!!)u[
-!!)u[!!)u[!!*#\rr<,_!!)ZR!!*#\!!)oY!!)rZ!!*#\rr@W4P32fErmh%$s8VfCs+C@O#1]OL
-k2s>WJ,~>
-!<E0!joqR2eS8j#q#CDrr;Zi!r;Zi!qZ-Vsq>^Msq#LAprrBI.rW)u"rW)nur;cetrr<,%!!)Vl
-rW)ktquH\srW!#$!!%SOPH=fPrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!joqI4g4=h/q#CEKr;ZiOr;ZiOqZ-WLq>^NLq#LBIrrBI\rW)uPrW)oNr;cfMrr<,S!!)WE
-rW)lMquH]LrW!#R!!%T(PM6':rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!joqR2eVf@Jq#CEWr;Zi[r;Zi[qZ-WXq>^NXq#LBUrrBIhrW)u\rW)oZr;cfYrr<,_!!)WQ
-rW)lYquH]XrW!#^!!%T4PNMoFrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXQQ\[!.h5&XSJstmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g?72b!.ijTgA0J&s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k3(n%!.j9`k5"0>s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp%X3eS8j#XSMnsXSW"qXSi.uXSr5!XSr3rX8i6OXF[J*XT._fec1:%s7Y"CKE(rUeYN6-
-k.LbF~>
-!<E0!jp%O5g4=h/gA1dLgA:mJgAM$NgAV*OgAV)Kg&M,(g4@u1gAh3PgAca(s7Y1HJcG`Sg7eQ/
-k.1PC~>
-!<E0!jp%X3eVf@Jk5#&Xk5,/Vk5>;Zk5GA[k5G@Wjo>C4k(2[Ik5YJ\ec1:%s7Y"CKE(rUeYN6-
-k.LbF~>
-!<E0!johL1eS8juX8i8!X9/I(X8r4#!!*#"!!)u!!!*#"rrE&"rrAjr!!%SOJZRM*s6fm:s+C@O
-p=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V**!!*#P!!)uO!!*#PrrE&PrrAkK!!%T(J_Jc1s8W)Ps+14M
-p=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>D[joYVGjoGAB!!*#\!!)u[!!*#\rrE&\rrAkW!!%T4J`bVIs8W)Ks+C@O
-p=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i8!X9/I(X8r4#!s#F(!;ii%!3E7%X8o@$!<'#!!3<4!!<'#!!<9/#!<'"t
-!<0)"!!',"!;rqr!;<Mo!!TG(!3?/#riH)!$EO4-XK2C%XK2C%JZPZKs6fm:s+C@Op=91qs8N;R
-V#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V**!s%'/!;kIS!8?-,g&Tk+!<(XO!3=iO!<(XO!<:dQ!<(XM
-!<1^P!!(aP!;tRK!;>.H!!V'V!87DQrn@>O$JGI[g=cN,g=cN,J_HpRs8W)Ps+14Mp=fOts8N;W
-U&X9;\c@6~>
-!<E0!johL1eVf@bjo>D[joYVGjoGAB!s%KG!;km_!9WDDjoFQC!<)'[!3>8[!<)'[!<;3]!<)'Y
-!<2-\!!)0\!;u!W!;>RT!!VKb!9O7]roX1[$K_<gk2lXDk2lXDJ``cjs8W)Ks+C@Op=91qs8N;R
-V#TT>]`<Q~>
-!<E0!johL1eS8juX9/I(X8r4#!!)u!!s#F(!;ii(!3E7%X8o=%X8r4#rrB(#!!)hr#QUq+XK2E'
-X8r4#!!*#"rrE&"!!*#"!!)u!!!)\nrr<;*!!')#XK2F$XT&;!X9AU*!3E7%JZP]Ls6fm:s+C@O
-p=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&h?/g&V**!!)uO!s%'/!;kIV!8?-,g&Th,g&V**rrB(Q!!)iK#QWQYg=cP\
-g&V**!!*#PrrE&P!!*#P!!)uO!!)]Grr<;X!!(^Qg=cQ+gA_0Og'%K1!8?-,J_HsSs8W)Ps+14M
-p=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjoYVGjoGAB!!)u[!s%KG!;kmb!9WDDjoFNDjoGABrrB(]!!)iW#QWuek2l[+
-joGAB!!*#\rrE&\!!*#\!!)u[!!)]Srr<;d!!)-]k2l[Ck5PG[jokbI!9WDDJ``fks8W)Ks+C@O
-p=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juXSi.tX8i8"X8i8"X8i7tX9em.X8o?'!3E7%UoXOrq5jSrp8e5ori?)"rN#u!
-ri?)"n>llqXK2E'X8o=%r2]kurN-#!JZPQHs6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSgAM$Mg&M-Pg&M-Pg&M-Mg'Ic5g&Tj\!8?-,UtPeKq:biKp=]KHrn7>PrRq5O
-rn7>PnCe-Jg=cP\g&Th,r7V,NrS%8OJ_HgOs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bk5>;Yjo>D\jo>D\jo>DYjp;%MjoFQ+!9WDDUuhXWq<%\Wp>u>TroO1\rT4([
-roO1\nE'uVk2l[+joFNDr8mtZrT=+[J``Zgs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX9/I(X8r4#r;cet!!)nt#lq'.!3E7%XK2DtX8i7rX8i7rXS`(tX8i8!X8i8!
-XSi.kX9\g-X8o?'!3?1uX8i8!X8i6OXIuZpmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&h?/g&V**r;cfM!!)oM#lr]5!8?-,g=cP&g&M-Kg&M-KgACsMg&M-Og&M-O
-gAM$Dg'@]4g&Tj\!87GNg&M-Og&M,(g7[1"s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjoYVGjoGABr;cfY!!)oY#ls,M!9WDDk2lZ>jo>DWjo>DWk555Yjo>D[jo>D[
-k5>;Pjp1tLjoFQ+!9O:Zjo>D[jo>C4k+Ll:s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i7sX8i8"X8i8"X8i7tX9/I(X8r1"!!&gr!!)hr!!)ks!!)u!!!*#"!!)u!
-!!)hr!!)\n#QUs-!3E7%X8r1"!!)u!!!%SOTWJ1]rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSg&M-Lg&M-Pg&M-Pg&M-Mg&h?/g&V')!!&hK!!)iK!!)lL!!)uO!!*#P!!)uO
-!!)iK!!)]G#QWT4!8?-,g&V')!!)uO!!%T(T\BGGrn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bjo>DXjo>D\jo>D\jo>DYjoYVGjoG>A!!&hW!!)iW!!)lX!!)u[!!*#\!!)u[
-!!)iW!!)]S#QX#L!9WDDjoG>A!!)u[!!%T4T]Z:Srmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i7sX8i8!X8i8"X8i8!X8i8"X8i7uX8i8!XT&:#X8i8"X8i8!X8i7sX8i8"
-XT&;"X8i8!X8i8"X8i8!X8i7nX9em.X8o?'!3E7%riH,"rN#u!JZPNGs6fm:s+C@Op=91qs8N;R
-V#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Lg&M-Og&M-Pg&M-Og&M-Pg&M-Ng&M-OgA_/Qg&M-Pg&M-Og&M-Lg&M-P
-gA_0Pg&M-Og&M-Pg&M-Og&M-Gg'Ic5g&Tj\!8?-,rn@APrRq5OJ_HdNs8W)Ps+14Mp=fOts8N;W
-U&X9;\c@6~>
-!<E0!johL1eVf@bjo>DXjo>D[jo>D\jo>D[jo>D\jo>DZjo>D[k5PF]jo>D\jo>D[jo>DXjo>D\
-k5PG\jo>D[jo>D\jo>D[jo>DSjp;%MjoFQ+!9WDDroX4\rT4([J``Wfs8W)Ks+C@Op=91qs8N;R
-V#TT>]`<Q~>
-!<E0!jp%X3eS8j#XSi.tXSr4uX8i8"XSi.uXSr5!XSr5!XT&:"XSr4uXSi.rXSr2%X8i7%rW)u"
-rW)u"quHDkrW!2)!!')#!3E:$!!0/$riH%uJZPTIs6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp%O5g4=h/gAM$MgAV*Ng&M-PgAM$NgAV*OgAV*OgA_/PgAV*NgAM$KgAV'Sg&M-,rW)uP
-rW)uPquHEDrW!2W!!(^Q!8?0+!!1dRrn@;NJ_HjPs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!jp%X3eVf@Jk5>;Yk5GAZjo>D\k5>;Zk5GA[k5GA[k5PF\k5GAZk5>;Wk5G>_jo>DDrW)u\
-rW)u\quHEPrW!2c!!)-]!9WGC!!23^roX.ZJ``]hs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXM(\8!.h5@XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g:c2?!.ijngAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k.TmW!.j:%k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXM1b9!.h5?XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g:l8@!.ijmgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k.]sX!.j:$k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXOXEI!;ESn!.h5>XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g==pP!;G4G!.ijlgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k1/Vh!;GXS!.j:#k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXPU&Y!.h5&XS]+!mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g>:Q`!.ijTgABV(s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k2,8#!.j9`k54<@s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp%X3eS8j#XSMqrXSi-MXR3(h!:R#g!;iks!.h5>XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp%O5g4=h/gA1gKgAM#&g?mSo!:SY@!;kLL!.ijlgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!jp%X3eVf@Jk5#)Wk5>:2k3_:2!:T(L!;kpX!.j:#k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jq+?=eS8j#X8o?'!3E7%XK2F#X8i6OXR<.i!:?if!;W\r!.h5>XT._fec1:%s7Y"CKE(rU
-eYN6-k.LbF~>
-!<E0!jq+6?g4=h/g&Tj\!8?-,g=cQ*g&M,(g@!Yp!:AJ?!;Y=K!.ijlgAh3PgAca(s7Y1HJcG`S
-g7eQ/k.1PC~>
-!<E0!jq+?=eVf@JjoFQ+!9WDDk2l[Bjo>C4k3h@3!:AnK!;YaW!.j:#k5YJ\ec1:%s7Y"CKE(rU
-eYN6-k.LbF~>
-!<E0!jq"9<eS8j#X8o?'!3E7%X8r.!!!)u!rrALhrr<8)!!')#!3H/"s/c2"orS&kri?,#XSr4s
-XSr4rX8i7rX8i6OXI60imf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jq"0>g4=h/g&Tj\!8?-,g&V$(!!)uOrrAMArr<8W!!(^Q!8@DPs4[GPp"K<Drn7AQgAV*L
-gAV*Kg&M-Kg&M,(g6p[ps8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!jq"9<eVf@JjoFQ+!9WDDjoG;@!!)u[rrAMMrr<8c!!)-]!9X7\s5s:\p#c/ProO4]k5GAX
-k5GAWjo>DWjo>C4k*bB3s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jsX8i8!X8i7tX8i8!XT&9gXT&8*X8i7%!3E7%rN#u!orJ,nrN#u!riH,"ri?)"
-rN#u!ri?)"qlBbtq5aPrJZP9@s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hQg&M-Og&M-Mg&M-OgA_/@gA_-Xg&M-,!8?-,rRq5Op"BBGrRq5Orn@APrn7>P
-rRq5Orn7>Pqq;#Mq:YfKJ_HOGs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@`jo>D[jo>DYjo>D[k5PFLk5PDdjo>DD!9WDDrT4([p#Z5SrT4([roX4\roO1\
-rT4([roO1\qrRkYq;qYWJ``B_s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8jsX8i8!X8i7tX8i6aX9em.X8o?'!3E7%rN#u!orJ,nq5aPrrN#u!ri?)"r2]ku
-r2]kuq5aPrJZP9@s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hQg&M-Og&M-Mg&M,:g'Ic5g&Tj\!8?-,rRq5Op"BBGq:YfKrRq5Orn7>Pr7V,N
-r7V,Nq:YfKJ_HOGs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@`jo>D[jo>DYjo>CFjp;%MjoFQ+!9WDDrT4([p#Z5Sq;qYWrT4([roO1\r8mtZ
-r8mtZq;qYWJ``B_s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8jsX8i8!X8i7tX8i6aX9J[+X8o?'!<0&%!3E7%o;qljrN#u!rN#u!riGqrr2]ku
-q5aPrJZP9@s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hQg&M-Og&M-Mg&M,:g'.Q2g&Tj\!<1[S!8?-,o@j-CrRq5OrRq5Orn@2Kr7V,N
-q:YfKJ_HOGs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@`jo>D[jo>DYjo>CFjothJjoFQ+!<2*_!9WDDoB,uOrT4([rT4([roX%Wr8mtZ
-q;qYWJ``B_s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8jsX8i8!X8i7tX8i6aX9J[+X8o?'!<0&%!3E7%n#QKhri?)"rN#u!ri?)"p8e5o
-q5aPrJZP9@s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hQg&M-Og&M-Mg&M,:g'.Q2g&Tj\!<1[S!8?-,n(IaArn7>PrRq5Orn7>Pp=]KH
-q:YfKJ_HOGs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@`jo>D[jo>DYjo>CFjothJjoFQ+!<2*_!9WDDn)aTMroO1\rT4([roO1\p>u>T
-q;qYWJ``B_s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8jsX8i7uX8i8!X8i7uXT&9gX9J[+X8o?'!<'#!!;!8l!<&u!!<0&"!<&u!!<&u!
-!<&u!!;rnu!;W\r!.h5>XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hQg&M-Ng&M-Og&M-NgA_/@g'.Q2g&Tj\!<(XO!;"nE!<(UO!<1[P!<(UO!<(UO
-!<(UO!;tON!;Y=K!.ijlgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@`jo>DZjo>D[jo>DZk5PFLjothJjoFQ+!<)'[!;#=Q!<)$[!<2*\!<)$[!<)$[
-!<)$[!;tsZ!;YaW!.j:#k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8juXS`(sXSi.rXT&9hXSr2'X8i7%!!)u!!!)VlquH_trW)u"rW)nur;cetquH\s
-quD;LS#lYXrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSgACsLgAM$KgA_/AgAV'Ug&M-,!!)uO!!)WEquH`MrW)uPrW)oNr;cfMquH]L
-quD<%S(doBrn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bk555Xk5>;Wk5PFMk5G>ajo>DD!!)u[!!)WQquH`YrW)u\rW)oZr;cfYquH]X
-quD<1S*'bNrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8iMXS/^q!.h5&XQ$>]mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g@j5#!.ijTg>^ids8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k4[p;!.j9`k2PP's8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXS/^q!.h5&XQ$>]mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g@j5#!.ijTg>^ids8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k4[p;!.j9`k2PP's8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXSAmq!<'"o!.h5&XRN=kmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+gA'D#!<(XH!.ijTg@3hrs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k4n*;!<)'T!.j9`k4%O5s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMX8o@#!;rqs!;rqs!;rqs!:m2k!;`eq!:m2k!;NYq!:m2k!;NYq!;!;j!<'"r
-!:m5k!;rqt!:m5i!;iks!;iht!;W_q!;rqs!;rqs!5,E5mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g&Tk*!;tRL!;tRL!;tRL!:nhD!;bFJ!:nhD!;P:J!:nhD!;P:J!;"qC!<(XK
-!:nkD!;tRM!:nkB!;kLL!;kIM!;Y@J!;tRL!;tRL!5.%cs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:joFQB!;u!X!;u!X!;u!X!:o7P!;bjV!:o7P!;P^V!:o7P!;P^V!;#@O!<)'W
-!:o:P!;u!Y!:o:N!;kpX!;kmY!;YdV!;u!X!;u!X!5.Ios8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp%X3eS8j#XSW"rXSr4uXSW"qXSr2#X8r7$q>^MsqZ+%*!!)u!!!*#"!!)u!!!*#"!!)u!
-!!*#"!!)u!!!)YmrrDqt!!)u!!!)YmrrDkr!W];%o;qrlq5aVtX8qmo!!)u!!!*#"!!)u!!!)Vl
-!W];%rN#u!ri?)"oW/#mrN#u!rN#u!q5jSrqQ'YsqQ'YsrN#u!ri?)"rN#u!]r_8%rmh%$s8VfC
-s+C@O#1]OLk2s>WJ,~>
-!<E0!jp%O5g4=h/gA:mKgAV*NgA:mJgAV'Qg&V-+q>^NLqZ+%X!!)uO!!*#P!!)uO!!*#P!!)uO
-!!*#P!!)uO!!)ZFrrDrM!!)uO!!)ZFrrDlK!W^pSo@j3Eq:YlMg&Ud!!!)uO!!*#P!!)uO!!)WE
-!W^pSrRq5Orn7>Po\'9FrRq5OrRq5Oq:biKqUtoLqUtoLrRq5Orn7>PrRq5O^"WMdrn@C's8VfH
-s+14M#25dNk2s5TJ,~>
-!<E0!jp%X3eVf@Jk5,/Wk5GAZk5,/Vk5G>]joGDCq>^NXqZ+%d!!)u[!!*#\!!)u[!!*#\!!)u[
-!!*#\!!)u[!!)ZRrrDrY!!)u[!!)ZRrrDlW!W_?_oB-&Qq;q_YjoG&9!!)u[!!*#\!!)u[!!)WQ
-!W_?_rT4([roO1\o]?,RrT4([rT4([q<%\WqW7bXqW7bXrT4([roO1\rT4([^#o@prmh%$s8VfC
-s+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i8!X8i7uX8i7uX8i8!X8i8"X8i8"XT&;!X8i8!X9/I(X8r4#!!'I/!!)u!
-!!*#"!!)u!!!*#"!!)u!!!*#"!!)u!!!)\n!W];%qlBbtrN#u!orJ2pX8r't!W];%oW/)oX8r't
-!W];%oW/#mrN#u!q5aPro;hunX8r4#!!)u!!!)\n!!)u!!!*#"!!)hr!W];%qlBbtq5aPrrN#u!
-ri?)"rN#u!]r_8%rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSg&M-Og&M-Ng&M-Ng&M-Og&M-Pg&M-PgA_0Og&M-Og&h?/g&V**!!'I]!!)uO
-!!*#P!!)uO!!*#P!!)uO!!*#P!!)uO!!)]G!W^pSqq;#MrRq5Op"BHIg&Us&!W^pSo\'?Hg&Us&
-!W^pSo\'9FrRq5Oq:YfKo@a6Gg&V**!!)uO!!)]G!!)uO!!*#P!!)iK!W^pSqq;#Mq:YfKrRq5O
-rn7>PrRq5O^"WMdrn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bjo>D[jo>DZjo>DZjo>D[jo>D\jo>D\k5PG[jo>D[joYVGjoGAB!!'Ii!!)u[
-!!*#\!!)u[!!*#\!!)u[!!*#\!!)u[!!)]S!W_?_qrRkYrT4([p#Z;UjoG5>!W_?_o]?2TjoG5>
-!W_?_o]?,RrT4([q;qYWoB$)SjoGAB!!)u[!!)]S!!)u[!!*#\!!)iW!W_?_qrRkYq;qYWrT4([
-roO1\rT4([^#o@prmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i8!X8i8!X9&C'!<&u!!<&u!!<0&"!<&u!!<&u!!<&u$!3E7%r2]kurN-#!
-\?#Z1ri?)"rN#u!ri?)"rN#u!q5aPro;holqlBbtrN#u!o;holqQ'c!XK2EmX8i7sX9/I(X8q^j
-!!)ks!!)Vl!s#F(!<&u!!<&u!!:[&i!<0&"!;EPp!;iht!;*>m!;W\r!55K6mf(c:KE(uFec1:%
-rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Og&M-Og&_9.!<(UO!<(UO!<1[P!<(UO!<(UO!<(UR!8?-,r7V,NrS%8O
-\Cpo_rn7>PrRq5Orn7>PrRq5Oq:YfKo@a0Eqq;#MrRq5Oo@a0EqUu#Og=cPtg&M-Lg&h?/g&UTq
-!!)lL!!)WE!s%'/!<(UO!<(UO!:\\B!<1[P!;G1I!;kIM!;+tF!;Y=K!57+ds8LaPJcGcDgAca(
-rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>D[jo>D[joPPF!<)$[!<)$[!<2*\!<)$[!<)$[!<)$^!9WDDr8mtZrT=+[
-\E3bkroO1\rT4([roO1\rT4([q;qYWoB$#QqrRkYrT4([oB$#QqW7k[k2l[7jo>DXjoYVGjoFl4
-!!)lX!!)WQ!s%KG!<)$[!<)$[!:]+N!<2*\!;GUU!;kmY!;,CR!;YaW!57Ops8LRKKE(uFec1:%
-rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i8!X8i8!X9&C'!<&u!!<&u!!<0&"!;NVt!3E7%rN#u!r2]kurN-#!\Z>c2
-rN#u!rN#u!ri?)"rN#u!qQ'YsnuMfkqlBbtrN#u!o;holqQ'c!XK2EmX8i7sX9/I(X8qak!!)hr
-!!)Vl!s#F(!<&u!!<0)"!:d,j!<&u"!3H/"qlBbtqlBeuXSr4qX8i7rX8i75XT._fec1:%s7Y"C
-KE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hSg&M-Og&M-Og&_9.!<(UO!<(UO!<1[P!;P7M!8?-,rRq5Or7V,NrS%8O\_7#`
-rRq5OrRq5Orn7>PrRq5OqUtoLo%F'Dqq;#MrRq5Oo@a0EqUu#Og=cPtg&M-Lg&h?/g&UWr!!)iK
-!!)WE!s%'/!<(UO!<1^P!:ebC!<(UP!8@DPqq;#Mqq;&NgAV*Jg&M-Kg&M,cgAh3PgAca(s7Y1H
-JcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@bjo>D[jo>D[joPPF!<)$[!<)$[!<2*\!;P[Y!9WDDrT4([r8mtZrT=+[\`Nkl
-rT4([rT4([roO1\rT4([qW7bXo&]oPqrRkYrT4([oB$#QqW7k[k2l[7jo>DXjoYVGjoFo5!!)iW
-!!)WQ!s%KG!<)$[!<2-\!:f1O!<)$\!9X7\qrRkYqrRnZk5GAVjo>DWjo>Cok5YJ\ec1:%s7Y"C
-KE(rUeYN6-k.LbF~>
-!<E0!johL1eS8juX8i8!X8i8"X8i8"X8i8"X8i8"X8i7uXSi.sXSi.tX8i7uX8i7-X8i7uX8i8!
-X8i8"X8i8!X8i7tX8i7uXSW"qX8i7tX8i8!X8i8"XSW"qX8i7tX8i8"X8i7kX8i7tX8i8"X8i7j
-X8i7qX8i7mX8i8"X8i7uXSr2#X8qgm!!)qurrE&"!!)qu!!)ntrrE&"!!)nt!!)hr!!'X4s6fm:
-s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Og&M-Pg&M-Pg&M-Pg&M-Pg&M-NgAM$LgAM$Mg&M-Ng&M,[g&M-Ng&M-O
-g&M-Pg&M-Og&M-Mg&M-NgA:mJg&M-Mg&M-Og&M-PgA:mJg&M-Mg&M-Pg&M-Dg&M-Mg&M-Pg&M-C
-g&M-Jg&M-Fg&M-Pg&M-NgAV'Qg&U]t!!)rNrrE&P!!)rN!!)oMrrE&P!!)oM!!)iK!!'Xbs8W)P
-s+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>D[jo>D\jo>D\jo>D\jo>D\jo>DZk5>;Xk5>;Yjo>DZjo>Cgjo>DZjo>D[
-jo>D\jo>D[jo>DYjo>DZk5,/Vjo>DYjo>D[jo>D\k5,/Vjo>DYjo>D\jo>DPjo>DYjo>D\jo>DO
-jo>DVjo>DRjo>D\jo>DZk5G>]joFu7!!)rZrrE&\!!)rZ!!)oYrrE&\!!)oY!!)iW!!'Xns8W)K
-s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juXS`(sXS`(tXSi.nX8i8!X9/I(X8r4#!!)qu!!'F.!!)nt!!)u!!!*#"!!)u!
-!!)qu!!)Mi!!)nt!!)u!!!)Vl!!)nt!!*#"!!)Sk!!)nt!!*#"!!)Sk!!)eq!!)Vl!!*#"!!)eq
-!!)Vl!!)nt!!)u!!!)qu!!)nt!!)u!!!)qu!!)hr!!'U3s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSgACsLgACsMgAM$Gg&M-Og&h?/g&V**!!)rN!!'F\!!)oM!!)uO!!*#P!!)uO
-!!)rN!!)NB!!)oM!!)uO!!)WE!!)oM!!*#P!!)TD!!)oM!!*#P!!)TD!!)fJ!!)WE!!*#P!!)fJ
-!!)WE!!)oM!!)uO!!)rN!!)oM!!)uO!!)rN!!)iK!!'Uas8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bk555Xk555Yk5>;Sjo>D[joYVGjoGAB!!)rZ!!'Fh!!)oY!!)u[!!*#\!!)u[
-!!)rZ!!)NN!!)oY!!)u[!!)WQ!!)oY!!*#\!!)TP!!)oY!!*#\!!)TP!!)fV!!)WQ!!*#\!!)fV
-!!)WQ!!)oY!!)u[!!)rZ!!)oY!!)u[!!)rZ!!)iW!!'Ums8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i7sX8i7uX9/I(X8r7$!!)u!!!)u!!!)u!!!)u!!s#F(!;rnu!4Js/!;`bs
-!<&u!!<0&"!<&u!!<&u!!:Quh!;iht!<&u!!;!8l!;ikp!;!8l!;ikp!;*>m!;EPp!;!;h!;W\r
-!;*>m!;`bs!<&u!!;rnu!;iht!<&u!!<&u!!;W\r!4f32mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Lg&M-Ng&h?/g&V-+!!)uO!!)uO!!)uO!!)uO!s%'/!;tON!4LS]!;bCL
-!<(UO!<1[P!<(UO!<(UO!:SVA!;kIM!<(UO!;"nE!;kLI!;"nE!;kLI!;+tF!;G1I!;"qA!;Y=K
-!;+tF!;bCL!<(UO!;tON!;kIM!<(UO!<(UO!;Y=K!4gh`s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>DXjo>DZjoYVGjoGDC!!)u[!!)u[!!)u[!!)u[!s%KG!;tsZ!4M"i!;bgX
-!<)$[!<2*\!<)$[!<)$[!:T%M!;kmY!<)$[!;#=Q!;kpU!;#=Q!;kpU!;,CR!;GUU!;#@M!;YaW
-!;,CR!;bgX!<)$[!;tsZ!;kmY!<)$[!<)$[!;YaW!4h7ls8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i7sX8i7uX9/I(X8r4#!!*#"rrE&"!!)u!!!)u!!s#F(!<&u!!;rqu!55H6
-!<&u!!<0&"!<&u!!<0&"!<&u!!<0&"!<&u!!;!8l!;iht!<&u!!;!8l!;EPp!:m2k!;EPp!;ikt
-!;rnu!<&u!!;iht!;`es!;NVq!;W\r!;ikt!;rnu!<&u!!<&u!!<0&"!;rnu!;`bs!<0&"!<0&"
-!<&u!!<0&"!<&u!!55K6mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Lg&M-Ng&h?/g&V**!!*#PrrE&P!!)uO!!)uO!s%'/!<(UO!;tRN!57(d
-!<(UO!<1[P!<(UO!<1[P!<(UO!<1[P!<(UO!;"nE!;kIM!<(UO!;"nE!;G1I!:nhD!;G1I!;kLM
-!;tON!<(UO!;kIM!;bFL!;P7J!;Y=K!;kLM!;tON!<(UO!<(UO!<1[P!;tON!;bCL!<1[P!<1[P
-!<(UO!<1[P!<(UO!57+ds8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>DXjo>DZjoYVGjoGAB!!*#\rrE&\!!)u[!!)u[!s%KG!<)$[!;u!Z!57Lp
-!<)$[!<2*\!<)$[!<2*\!<)$[!<2*\!<)$[!;#=Q!;kmY!<)$[!;#=Q!;GUU!:o7P!;GUU!;kpY
-!;tsZ!<)$[!;kmY!;bjX!;P[V!;YaW!;kpY!;tsZ!<)$[!<)$[!<2*\!;tsZ!;bgX!<2*\!<2*\
-!<)$[!<2*\!<)$[!57Ops8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp%X3eS8j#XSi.tXSi,!XSMqqX98O)X8o@$!<'"q!!'+t!;ikt!55K2!<'"t!;rqs!<'"r
-!;3Gk!;rqs!;*Aj!;`er!;3Gk!;`er!;rqu!;rqq!;iht!;`es!;W_q!<'"u!;`es!;rqq!;rqt
-!<'"s!;iks!<'"r!<0(s!55K6mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp%O5g4=h/gAM$MgAM!OgA1gJg&qE0g&Tk+!<(XJ!!(aM!;kLM!57+`!<(XM!;tRL!<(XK
-!;5(D!;tRL!;,"C!;bFK!;5(D!;bFK!;tRN!;tRJ!;kIM!;bFL!;Y@J!<(XN!;bFL!;tRJ!;tRM
-!<(XL!;kLL!<(XK!<1^L!57+ds8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!jp%X3eVf@Jk5>;Yk5>8[k5#)Vjob\HjoFQC!<)'V!!)0Y!;kpY!57Ol!<)'Y!;u!X!<)'W
-!;5LP!;u!X!;,FO!;bjW!;5LP!;bjW!;u!Z!;u!V!;kmY!;bjX!;YdV!<)'Z!;bjX!;u!V!;u!Y
-!<)'X!;kpX!<)'W!<2-X!57Ops8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtXSr2#X8r7$r;churW)u"rW)u"q>gPsq>^MsrW)u"rW)u"q>gMrrVuu#!.h5&
-XIZHmmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hRgAV'Qg&V-+r;ciNrW)uPrW)uPq>gQLq>^NLrW)uPrW)uPq>gNKrVuuQ!.ijT
-g7?sts8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@ak5G>]joGDCr;ciZrW)u\rW)u\q>gQXq>^NXrW)u\rW)u\q>gNWrVuu]!.j9`
-k+1Z7s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i8"XT&;#X8i8!X8i8"XT&;"X8i8"X9J[+X8o?'!<0&"!<&u%!3E7%!<0&"
-!<0&+!3E7%XK2E'X8r7$rr@VOJZPEDs6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-PgA_0Qg&M-Og&M-PgA_0Pg&M-Pg'.Q2g&Tj\!<1[P!<(US!8?-,!<1[P
-!<1[Y!8?-,g=cP\g&V-+rr@W(J_H[Ks8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>D\k5PG]jo>D[jo>D\k5PG\jo>D\jothJjoFQ+!<2*\!<)$_!9WDD!<2*\
-!<2*e!9WDDk2l[+joGDCrr@W4J``Ncs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp.^4eS8j#X8r1"!W];%qlC&'XK2E'!3E7%ri?;(XK2E'X8r7$!!)u!#QUs-!3?1%X8r7$
-#lq'.!3E7%XK2F#X8i7uXT&9OXF[IKXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp.U6g4=h/g&V')!W^pSqq;;Ug=cP\!8?-,rn7PVg=cP\g&V-+!!)uO#QWT4!87G,g&V-+
-#lr]5!8?-,g=cQ*g&M-NgA_/(g4@tRgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!jp.^4eVf@JjoG>A!W_?_qrS.ak2l[+!9WDDroOCbk2l[+joGDC!!)u[#QX#L!9O:DjoGDC
-#ls,M!9WDDk2l[Bjo>DZk5PF4k(2Zjk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp.^4eS8j#X8r*u!!)nt#QUs-!3?1%X8r.!!!)nt!s#F(!<&u&!3?1%X8r.!!!)qu!!)bp
-rr@VOJZPZKs6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp.U6g4=h/g&V!'!!)oM#QWT4!87G,g&V$(!!)oM!s%'/!<(UT!87G,g&V$(!!)rN!!)cI
-rr@W(J_HpRs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!jp.^4eVf@JjoG8?!!)oY#QX#L!9O:DjoG;@!!)oY!s%KG!<)$`!9O:DjoG;@!!)rZ!!)cU
-rr@W4J``cjs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp.^4eS8j#X8r*u!!)nt#QUs-!3E7%X8r.!!!)ntr;cet"TYX*!3?1tX8i7tXSi-MXF[IC
-XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp.U6g4=h/g&V!'!!)oM#QWT4!8?-,g&V$(!!)oMr;cfM"T[91!87GMg&M-MgAM#&g4@tJ
-gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!jp.^4eVf@JjoG8?!!)oY#QX#L!9WDDjoG;@!!)oYr;cfY"T[]I!9O:Yjo>DYk5>:2k(2Zb
-k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp.^4eS8j#X8r*u!!)nt#QUs-!3E7%X8r.!!!)nt!s#F(!<&u&!3E7%X8r.!!!)bp!!%SO
-JZPEDs6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp.U6g4=h/g&V!'!!)oM#QWT4!8?-,g&V$(!!)oM!s%'/!<(UT!8?-,g&V$(!!)cI!!%T(
-J_H[Ks8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!jp.^4eVf@JjoG8?!!)oY#QX#L!9WDDjoG;@!!)oY!s%KG!<)$`!9WDDjoG;@!!)cU!!%T4
-J``Ncs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp.^4eS8j#X8r*u!!)nt!s#F(!<0)"!;iht!;iht!<&u$!3E7%riH,"qlBbtr2]kurN#u!
-JZOF(SZMkZrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp.U6g4=h/g&V!'!!)oM!s%'/!<1^P!;kIM!;kIM!<(UR!8?-,rn@APqq;#Mr7V,NrRq5O
-J_G\/S_F,Drn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!jp.^4eVf@JjoG8?!!)oY!s%KG!<2-\!;kmY!;kmY!<)$^!9WDDroX4\qrRkYr8mtZrT4([
-J`_OGS`]tPrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i8!X9/I(X8r4#!!*#"!!*#"rrDqt!!)nt!!)u!!s#F(!<0)"!;iht!;rqu
-!<0&"!;rqu!.h5&XJDrtmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V**!!*#P!!*#PrrDrM!!)oM!!)uO!s%'/!<1^P!;kIM!;tRN
-!<1[P!;tRN!.ijTg8*I&s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>D[joYVGjoGAB!!*#\!!*#\rrDrY!!)oY!!)u[!s%KG!<2-\!;kmY!;u!Z
-!<2*\!;u!Z!.j9`k+q/>s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtXSi.tXSi.uXSr5!X8i8!XS`(tXSMnsXSr5!X8i8!XS`(tX8r=&rW)hsrr@VO
-JZPZKs6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hRgAM$MgAM$NgAV*Og&M-OgACsMgA1dLgAV*Og&M-OgACsMg&V3-rW)iLrr@W(
-J_HpRs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@ak5>;Yk5>;Zk5GA[jo>D[k555Yk5#&Xk5GA[jo>D[k555YjoGJErW)iXrr@W4
-J``cjs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtXSr4qX8i7aX8i7`XSi.+X8i7PX8i6OXI$$gmf(c:KE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johC3g4=hRgAV*Jg&M-:g&M-9gAM#Yg&M-)g&M,(g6^Ons8LaPJcGcDgAca(rs%2Ns5rIT
-!.Y~>
-!<E0!johL1eVf@ak5GAVjo>DFjo>DEk5>:ejo>D5jo>C4k*P61s8LRKKE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johL1eS8jtX8i7qX8i7`X8i7aX8i7)X8i7bX8i7hX8i6OXI-*hmf(c:KE(uFec1:%rs%#L
-s5rIW!.Y~>
-!<E0!johC3g4=hRg&M-Jg&M-9g&M-:g&M,Wg&M-;g&M-Ag&M,(g6gUos8LaPJcGcDgAca(rs%2N
-s5rIT!.Y~>
-!<E0!johL1eVf@ajo>DVjo>DEjo>DFjo>Ccjo>DGjo>DMjo>C4k*Y<2s8LRKKE(uFec1:%rs%#L
-s5rIW!.Y~>
-!<E0!johL1eS8jtX8i7qX8i7FX8i6eX8i7hX8i6OXI-*hmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hRg&M-Jg&M,tg&M,>g&M-Ag&M,(g6gUos8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@ajo>DVjo>D+jo>CJjo>DMjo>C4k*Y<2s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtX8i7qX8i7tXSi.tXT&;#XT&;!XSr4sXSr2$X8i7oXSW"sXT&;#XT&;!XSi.u
-XT&8(X8i7%!!)bprr<A,!!')#!3?/#XSr4sXSr4tXS`(sXSr4sXSi.kXS`(tXT&8(X8i7%!!)u!
-!!%SOR&p>Urmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hRg&M-Jg&M-MgAM$MgA_0QgA_0OgAV*LgAV'Rg&M-HgA:mLgA_0QgA_0OgAM$N
-gA_-Vg&M-,!!)cIrr<AZ!!(^Q!87DQgAV*LgAV*MgACsLgAV*LgAM$DgACsMgA_-Vg&M-,!!)uO
-!!%T(R+hT?rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@ajo>DVjo>DYk5>;Yk5PG]k5PG[k5GAXk5G>^jo>DTk5,/Xk5PG]k5PG[k5>;Z
-k5PDbjo>DD!!)cUrr<Af!!)-]!9O7]k5GAXk5GAYk555Xk5GAXk5>;Pk555Yk5PDbjo>DD!!)u[
-!!%T4R-+GKrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8jtX8i7qX8i7uX8i8!X8i8!X9AU*!3E7%r2]kur2]kuriH,"o;holqQ'r&X8o?'
-!3E7%rN#u!riH,""KVS'X8qsqrr<>+!!')#XK2C%ri?)"rN#u!ri?)"ri?)"rN#u!qlBbtr2]ku
-rN#u!oW/#mqQ0\s"KVS'X8r4#!!%SOR&p>Urmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hRg&M-Jg&M-Ng&M-Og&M-Og'%K1!8?-,r7V,Nr7V,Nrn@APo@a0EqUu2Tg&Tj\
-!8?-,rRq5Orn@AP"PNhUg&Uj#rr<>Y!!(^Qg=cN,rn7>PrRq5Orn7>Prn7>PrRq5Oqq;#Mr7V,N
-rRq5Oo\'9FqV(rL"PNhUg&V**!!%T(R+hT?rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@ajo>DVjo>DZjo>D[jo>D[jokbI!9WDDr8mtZr8mtZroX4\oB$#QqW8%`joFQ+
-!9WDDrT4([roX4\"Qf[ajoG,;rr<>e!!)-]k2lXDroO1\rT4([roO1\roO1\rT4([qrRkYr8mtZ
-rT4([o]?,RqW@eX"Qf[ajoGAB!!%T4R-+GKrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8jtX8i7rX8i7uX8i7tX8i8"XT&:qX8i8!X8i7uX8i7lX8i7sXT&:uX8i7tX9em.
-X8o?'!3E7%p8eQ#XK2E'X8o?'!<&u!!<0&"!;ro#!3E7%p8e5opT+>poW/#mqQ'l$XK2E'X8r1"
-!!%SORB6GVrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hRg&M-Kg&M-Ng&M-Mg&M-PgA_0Jg&M-Og&M-Ng&M-Eg&M-LgA_0Ng&M-Mg'Ic5
-g&Tj\!8?-,p=]fQg=cP\g&Tj\!<(UO!<1[P!;tOQ!8?-,p=]KHpY#TIo\'9FqUu,Rg=cP\g&V')
-!!%T(RG.]@rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@ajo>DWjo>DZjo>DYjo>D\k5PGVjo>D[jo>DZjo>DQjo>DXk5PGZjo>DYjp;%M
-joFQ+!9WDDp>uY]k2l[+joFQ+!<)$[!<2*\!;ts]!9WDDp>u>TpZ;GUo]?,RqW7t^k2l[+joG>A
-!!%T4RHFPLrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8jtX8i7qX8i8!X8i7tX8i8"X8i7pX8i8!X8i7uX8i7lX8i7sX8i7tX8i7tX9em.
-X8o?'!3E7%p8eQ#XK2E'X8o?'!<&u!!<0(r!<0(u!;`bs!;ikq!;*>m!;`c$!3E7%XK2F#X8i6O
-XI-*hmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hRg&M-Jg&M-Og&M-Mg&M-Pg&M-Ig&M-Og&M-Ng&M-Eg&M-Lg&M-Mg&M-Mg'Ic5
-g&Tj\!8?-,p=]fQg=cP\g&Tj\!<(UO!<1^K!<1^N!;bCL!;kLJ!;+tF!;bCR!8?-,g=cQ*g&M,(
-g6gUos8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@ajo>DVjo>D[jo>DYjo>D\jo>DUjo>D[jo>DZjo>DQjo>DXjo>DYjo>DYjp;%M
-joFQ+!9WDDp>uY]k2l[+joFQ+!<)$[!<2-W!<2-Z!;bgX!;kpV!;,CR!;bg^!9WDDk2l[Bjo>C4
-k*Y<2s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtX8i7qX8i8!X8i7tX8i8"X8i7pX8i8!X8i7uX8i7lX8i7sX8i7tX8i7tX9em.
-X8o?'!3E7%p8eQ#XK2E'X8o?'!<&u!!<0&"!;*>m!;iht!;rnu!<&u!!;*>m!;`c$!3E7%XK2F#
-X8i6OXI-*hmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hRg&M-Jg&M-Og&M-Mg&M-Pg&M-Ig&M-Og&M-Ng&M-Eg&M-Lg&M-Mg&M-Mg'Ic5
-g&Tj\!8?-,p=]fQg=cP\g&Tj\!<(UO!<1[P!;+tF!;kIM!;tON!<(UO!;+tF!;bCR!8?-,g=cQ*
-g&M,(g6gUos8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@ajo>DVjo>D[jo>DYjo>D\jo>DUjo>D[jo>DZjo>DQjo>DXjo>DYjo>DYjp;%M
-joFQ+!9WDDp>uY]k2l[+joFQ+!<)$[!<2*\!;,CR!;kmY!;tsZ!<)$[!;,CR!;bg^!9WDDk2l[B
-jo>C4k*Y<2s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtX8i7qX8i7uX8i8!X8i8!X8i7pX8i7uX8i8"XT&:lX8i7sX8i7sX8i8!X8i8"
-X9J[+X8o?'!<'#!!;ro)!3E7%XK2E'X8r4#!!)u!!!)u!!s#F(!<&u!!;iht!;rnu!<0)"!;*>m
-!<0&"!<0&(!3E7%XK2F#X8i7rXT&9OXJ2frmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hRg&M-Jg&M-Ng&M-Og&M-Og&M-Ig&M-Ng&M-PgA_0Eg&M-Lg&M-Lg&M-Og&M-P
-g'.Q2g&Tj\!<(XO!;tOW!8?-,g=cP\g&V**!!)uO!!)uO!s%'/!<(UO!;kIM!;tON!<1^P!;+tF
-!<1[P!<1[V!8?-,g=cQ*g&M-KgA_/(g7m=$s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@ajo>DVjo>DZjo>D[jo>D[jo>DUjo>DZjo>D\k5PGQjo>DXjo>DXjo>D[jo>D\
-jothJjoFQ+!<)'[!;tsc!9WDDk2l[+joGAB!!)u[!!)u[!s%KG!<)$[!;kmY!;tsZ!<2-\!;,CR
-!<2*\!<2*b!9WDDk2l[Bjo>DWk5PF4k+_#<s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtX8i7qX8i7tXSi.tXSi.rXS`(sXSr2#X8qppquH\sr;c_rr;churW!,'!!')#
-!<0)"!<'"u!!B;&!3H(us/c2"rN,qtriH"tr2ferrN,tu!iuA%oW8#lriH)!"fq\(X8i8"X8i7r
-XT&9OXJ2frmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hRg&M-Jg&M-MgAM$MgAM$KgACsLgAV'Qg&Ug"quH]Lr;c`Kr;ciNrW!,U!!(^Q
-!<1^P!<(XN!!CpT!8@>Ns4[GPrS%2Mrn@8Mr7_&KrS%5N!nmVSo\09Ern@>O"kiqVg&M-Pg&M-K
-gA_/(g7m=$s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@ajo>DVjo>DYk5>;Yk5>;Wk555Xk5G>]joG):quH]Xr;c`Wr;ciZrW!,a!!)-]
-!<2-\!<)'Z!!D?`!9X1Zs5s:\rT=%YroX+Yr9!nWrT=(Z!p0I_o]H,QroX1["m,dbjo>D\jo>DW
-k5PF4k+_#<s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtX8i7qX8i7UX8i7IXT&:!X8i7sXT&9OXJ)`qmf(c:KE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johC3g4=hRg&M-Jg&M-.g&M-"gA_/Og&M-LgA_/(g7d7#s8LaPJcGcDgAca(rs%2Ns5rIT
-!.Y~>
-!<E0!johL1eVf@ajo>DVjo>D:jo>D.k5PF[jo>DXk5PF4k+Ur;s8LRKKE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johL1eS8jtXSr4qX8i7WX8i7HX8i7!X8i7rX8i6OXIuZpmf(c:KE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johC3g4=hRgAV*Jg&M-0g&M-!g&M,Og&M-Kg&M,(g7[1"s8LaPJcGcDgAca(rs%2Ns5rIT
-!.Y~>
-!<E0!johL1eVf@ak5GAVjo>D<jo>D-jo>C[jo>DWjo>C4k+Ll:s8LRKKE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johL1eS8jIXSi.tXS;deXS;dHXFdPRmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=h'gAM$Mg@tZ>g@tZ!g4J&Ys8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@6k5>;Yk4eqJk4eq-k(;aqs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jiX8i7aX8i7%XT&:VX8i6OXF[JNXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hGg&M-:g&M,SgA_0/g&M,(g4@uUgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@Vjo>DFjo>C_k5PG;jo>C4k(2[mk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8jjX8i7`X8i7bX8i7=X8i7hXSr4sXSr4rX8i6OXF[JOXT._fec1:%s7Y"CKE(rU
-eYN6-k.LbF~>
-!<E0!johC3g4=hHg&M-9g&M-;g&M,kg&M-AgAV*LgAV*Kg&M,(g4@uVgAh3PgAca(s7Y1HJcG`S
-g7eQ/k.1PC~>
-!<E0!johL1eVf@Wjo>DEjo>DGjo>D"jo>DMk5GAXk5GAWjo>C4k(2[nk5YJ\ec1:%s7Y"CKE(rU
-eYN6-k.LbF~>
-!<E0!johL1eS8jjX8i7GX8i7=X8i7fX8i7rX8i7sX8i6OXF[JOXT._fec1:%s7Y"CKE(rUeYN6-
-k.LbF~>
-!<E0!johC3g4=hHg&M,ug&M,kg&M-?g&M-Kg&M-Lg&M,(g4@uVgAh3PgAca(s7Y1HJcG`Sg7eQ/
-k.1PC~>
-!<E0!johL1eVf@Wjo>D,jo>D"jo>DKjo>DWjo>DXjo>C4k(2[nk5YJ\ec1:%s7Y"CKE(rUeYN6-
-k.LbF~>
-!<E0!johL1eS8jjX8i7tXSi.tXT&;#XT&;!XSr4sXSr2$X8i7oXS`(rXSi.lXT&8)X8i7%!!',"
-!<9/"!;3Gk!<0&#!3H/"qlKbsqQ'Ysq5aPrqQ'YsJZOF(rN-%ermh%$s8VfCs+C@O#1]OLk2s>W
-J,~>
-!<E0!johC3g4=hHg&M-MgAM$MgA_0QgA_0OgAV*LgAV'Rg&M-HgACsKgAM$EgA_-Wg&M-,!!(aP
-!<:dP!;5(D!<1[Q!8@DPqqD#LqUtoLq:YfKqUtoLJ_G\/rS%;Orn@C's8VfHs+14M#25dNk2s5T
-J,~>
-!<E0!johL1eVf@Wjo>DYk5>;Yk5PG]k5PG[k5GAXk5G>^jo>DTk555Wk5>;Qk5PDcjo>DD!!)0\
-!<;3\!;5LP!<2*]!9X7\qr[kXqW7bXq;qYWqW7bXJ`_OGrT=.[rmh%$s8VfCs+C@O#1]OLk2s>W
-J,~>
-!<E0!johL1eS8jjX8i7uX8i8!X8i8!X9AU*!3E7%r2]kur2]kuriH,"oW/#mqQ'YsrN#u!orS/n
-#HRn*X8o?'!<&u!!;3Dn!<&u!!<0)"!<0&"!<&u!!<0&"!;iht!;W\r!;`bs!.h5&XSo7#mf(c:
-KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hHg&M-Ng&M-Og&M-Og'%K1!8?-,r7V,Nr7V,Nrn@APo\'9FqUtoLrRq5Op"KEG
-#MK.Xg&Tj\!<(UO!;5%G!<(UO!<1^P!<1[P!<(UO!<1[P!;kIM!;Y=K!;bCL!.ijTgATb*s8LaP
-JcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@Wjo>DZjo>D[jo>D[jokbI!9WDDr8mtZr8mtZroX4\o]?,RqW7bXrT4([p#c8S
-#Nc!djoFQ+!<)$[!;5IS!<)$[!<2-\!<2*\!<)$[!<2*\!;kmY!;YaW!;bgX!.j9`k5FHBs8LRK
-KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jkX8i7uX8i7tX8i8"XT&:qX8i8!X8i7uX8i7mX8i7tX8i7tX8i7oX9em.X8o?'
-!3E7%rN#u!orJ,nq5aPrrN#u!ri?)"r2]kur2]kuq5aPrq5aPrJZOF(riH.frmh%$s8VfCs+C@O
-#1]OLk2s>WJ,~>
-!<E0!johC3g4=hIg&M-Ng&M-Mg&M-PgA_0Jg&M-Og&M-Ng&M-Fg&M-Mg&M-Mg&M-Hg'Ic5g&Tj\
-!8?-,rRq5Op"BBGq:YfKrRq5Orn7>Pr7V,Nr7V,Nq:YfKq:YfKJ_G\/rn@DPrn@C's8VfHs+14M
-#25dNk2s5TJ,~>
-!<E0!johL1eVf@Xjo>DZjo>DYjo>D\k5PGVjo>D[jo>DZjo>DRjo>DYjo>DYjo>DTjp;%MjoFQ+
-!9WDDrT4([p#Z5Sq;qYWrT4([roO1\r8mtZr8mtZq;qYWq;qYWJ`_OGroX7\rmh%$s8VfCs+C@O
-#1]OLk2s>WJ,~>
-!<E0!johL1eS8jjX8i8!X8i7tX8i8"X8i7pX8i8!X8i7uX8i7mX8i7tX8i7tX8i7oX9J[+X8o?'
-!<0&%!3E7%o;qljrN#u!rN#u!riGqrr2]kuq5aPrqQ'YsJZOF(rN-%ermh%$s8VfCs+C@O#1]OL
-k2s>WJ,~>
-!<E0!johC3g4=hHg&M-Og&M-Mg&M-Pg&M-Ig&M-Og&M-Ng&M-Fg&M-Mg&M-Mg&M-Hg'.Q2g&Tj\
-!<1[S!8?-,o@j-CrRq5OrRq5Orn@2Kr7V,Nq:YfKqUtoLJ_G\/rS%;Orn@C's8VfHs+14M#25dN
-k2s5TJ,~>
-!<E0!johL1eVf@Wjo>D[jo>DYjo>D\jo>DUjo>D[jo>DZjo>DRjo>DYjo>DYjo>DTjothJjoFQ+
-!<2*_!9WDDoB,uOrT4([rT4([roX%Wr8mtZq;qYWqW7bXJ`_OGrT=.[rmh%$s8VfCs+C@O#1]OL
-k2s>WJ,~>
-!<E0!johL1eS8jjX8i8!X8i7tX8i8"X8i7pX8i8!X8i7uX8i7mX8i7tX8i7tX8i7oX9J[+X8o?'
-!<0&%!3E7%n#QKhri?)"rN#u!ri?)"p8e5oq5aPrqQ'YsJZOF(rN-%ermh%$s8VfCs+C@O#1]OL
-k2s>WJ,~>
-!<E0!johC3g4=hHg&M-Og&M-Mg&M-Pg&M-Ig&M-Og&M-Ng&M-Fg&M-Mg&M-Mg&M-Hg'.Q2g&Tj\
-!<1[S!8?-,n(IaArn7>PrRq5Orn7>Pp=]KHq:YfKqUtoLJ_G\/rS%;Orn@C's8VfHs+14M#25dN
-k2s5TJ,~>
-!<E0!johL1eVf@Wjo>D[jo>DYjo>D\jo>DUjo>D[jo>DZjo>DRjo>DYjo>DYjo>DTjothJjoFQ+
-!<2*_!9WDDn)aTMroO1\rT4([roO1\p>u>Tq;qYWqW7bXJ`_OGrT=.[rmh%$s8VfCs+C@O#1]OL
-k2s>WJ,~>
-!<E0!johL1eS8jjX8i7uX8i8!X8i8!X8i7pX8i7uX8i8"XT&:mX8i8"X8i8"X8i8!X8i7uXT&:u
-X9J[+X8o?'!<'#!!;!8l!<&u!!<0&"!<&u!!<&u!!<&u!!;rnu!;W\r!;`bs!;W_r!.h5,XT._f
-ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hHg&M-Ng&M-Og&M-Og&M-Ig&M-Ng&M-PgA_0Fg&M-Pg&M-Pg&M-Og&M-NgA_0N
-g'.Q2g&Tj\!<(XO!;"nE!<(UO!<1[P!<(UO!<(UO!<(UO!;tON!;Y=K!;bCL!;Y@K!.ijZgAh3P
-gAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@Wjo>DZjo>D[jo>D[jo>DUjo>DZjo>D\k5PGRjo>D\jo>D\jo>D[jo>DZk5PGZ
-jothJjoFQ+!<)'[!;#=Q!<)$[!<2*\!<)$[!<)$[!<)$[!;tsZ!;YaW!;bgX!;YdW!.j9fk5YJ\
-ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8jjX8i7tXSi.tXSi.rXS`(sXSr2#X8qjnrW)ktr;c_rrrE#!rW!,'!!')#!<&u!
-!;!;i!<0)!!<9/"!<'"t!<'"s!<'"s!;rnu!;W_r!.h5,XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hHg&M-MgAM$MgAM$KgACsLgAV'Qg&U`urW)lMr;c`KrrE#OrW!,U!!(^Q!<(UO
-!;"qB!<1^O!<:dP!<(XM!<(XL!<(XL!;tON!;Y@K!.ijZgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@Wjo>DYk5>;Yk5>;Wk555Xk5G>]joG#8rW)lYr;c`WrrE#[rW!,a!!)-]!<)$[
-!;#@N!<2-[!<;3\!<)'Y!<)'X!<)'X!;tsZ!;YdW!.j9fk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8jjX8i7UX8i7[XT&:iX8i7<X8i7sXT&9OXG3hVmf(c:KE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johC3g4=hHg&M-.g&M-4gA_0Bg&M,jg&M-LgA_/(g4n>]s8LaPJcGcDgAca(rs%2Ns5rIT
-!.Y~>
-!<E0!johL1eVf@Wjo>D:jo>D@k5PGNjo>D!jo>DXk5PF4k(`$us8LRKKE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johL1eS8jiX8i7WX8i7ZX8i7hX8i7=X8i7rX8i6OXG*bUmf(c:KE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johC3g4=hGg&M-0g&M-3g&M-Ag&M,kg&M-Kg&M,(g4e8\s8LaPJcGcDgAca(rs%2Ns5rIT
-!.Y~>
-!<E0!johL1eVf@Vjo>D<jo>D?jo>DMjo>D"jo>DWjo>C4k(Vsts8LRKKE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johL1eS8jIXSi.tXS;eNXSi.tXS;dHXF[IsXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=h'gAM$Mg@t['gAM$Mg@tZ!g4@u%gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@6k5>;Yk4er3k5>;Yk4eq-k(2[=k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jiX8i7aX8i6OXJ)]q!8adW!;NYq!:m2k!9^H`!<'"r!;rnu!;W\r!:d,j!;W_q
-!:d/jmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hGg&M-:g&M,(g7d4#!8cE0!;P:J!:nhD!9`)9!<(XK!;tON!;Y=K!:ebC!;Y@J
-!:eeCs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@Vjo>DFjo>C4k+Uo;!8ci<!;P^V!:o7P!9`ME!<)'W!;tsZ!;YaW!:f1O!;YdV
-!:f4Os8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jjX8i7`X8i7GX8i7`X8i7`X9/I(X8r7$rW)u"rW(u[!!'p<!!)bp!!(lW!!)bp
-!!)Sk!!)5a!W];%rN#u!rN#u!rN-#!qQ0\sqQ'c!XK2F!X8i7qX8i7jXT._fec1:%s7Y"CKE(rU
-eYN6-k.LbF~>
-!<E0!johC3g4=hHg&M-9g&M,ug&M-9g&M-9g&h?/g&V-+rW)uPrW)!4!!'pj!!)cI!!(m0!!)cI
-!!)TD!!)6:!W^pSrRq5OrRq5OrS%8OqV(rLqUu#Og=cQ(g&M-Jg&M-CgAh3PgAca(s7Y1HJcG`S
-g7eQ/k.1PC~>
-!<E0!johL1eVf@Wjo>DEjo>D,jo>DEjo>DEjoYVGjoGDCrW)u\rW)!@!!'q!!!)cU!!(m<!!)cU
-!!)TP!!)6F!W_?_rT4([rT4([rT=+[qW@eXqW7k[k2l[@jo>DVjo>DOk5YJ\ec1:%s7Y"CKE(rU
-eYN6-k.LbF~>
-!<E0!johL1eS8jjX8i7,X8i7`X8i7`X9/I(X8r4#rrE&"!!)#[!!'p<!!(*A!!(ZQ!W];%poFGq
-ri?/$X8r.!!W];%qQ'c!XK2F!X8i7qX8i7jXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hHg&M,Zg&M-9g&M-9g&h?/g&V**rrE&P!!)$4!!'pj!!(*o!!([*!W^pSpt>]J
-rn7DRg&V$(!W^pSqUu#Og=cQ(g&M-Jg&M-CgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@Wjo>Cfjo>DEjo>DEjoYVGjoGABrrE&\!!)$@!!'q!!!(+&!!([6!W_?_puVPV
-roO7^joG;@!W_?_qW7k[k2l[@jo>DVjo>DOk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8jjX8i7tXSi.tXT&;#XT&;!XSr4sXSr2$X8i7mXSr2#X8r7$r;churr<&#rW)nu
-quHVqrW)r!rr<&#rW)nuquHYrquHAj!s#F(!<&u&!3?1%X8r1"rW)r!rW)r!rW)\oquH\srrE)#
-rrE#!r;churr<&#rW)ktquH\sr;c_rrW!&%!3E:"!;rqt!;ikr!<0)"!!',"!;!;k!;iks!!0/$
-oW8#lqlK\qoW/,pXK2EtX8i7tX8i7rX8i7sX9/I(X8r.!!!)eq!!)Pjs6fm:s+C@Op=91qs8N;R
-V#TT>]`<Q~>
-!<E0!johC3g4=hHg&M-MgAM$MgA_0QgA_0OgAV*LgAV'Rg&M-FgAV'Qg&V-+r;ciNrr<&QrW)oN
-quHWJrW)rOrr<&QrW)oNquHZKquHBC!s%'/!<(UT!87G,g&V')rW)rOrW)rOrW)]HquH]LrrE)Q
-rrE#Or;ciNrr<&QrW)lMquH]Lr;c`KrW!&S!8?0)!;tRM!;kLK!<1^P!!(aP!;"qD!;kLL!!1dR
-o\09EqqCrJo\'BIg=cQ&g&M-Mg&M-Kg&M-Lg&h?/g&V$(!!)fJ!!)QCs8W)Ps+14Mp=fOts8N;W
-U&X9;\c@6~>
-!<E0!johL1eVf@Wjo>DYk5>;Yk5PG]k5PG[k5GAXk5G>^jo>DRk5G>]joGDCr;ciZrr<&]rW)oZ
-quHWVrW)r[rr<&]rW)oZquHZWquHBO!s%KG!<)$`!9O:DjoG>ArW)r[rW)r[rW)]TquH]XrrE)]
-rrE#[r;ciZrr<&]rW)lYquH]Xr;c`WrW!&_!9WGA!;u!Y!;kpW!<2-\!!)0\!;#@P!;kpX!!23^
-o]H,Qqr[eVo]?5Uk2l[>jo>DYjo>DWjo>DXjoYVGjoG;@!!)fV!!)QOs8W)Ks+C@Op=91qs8N;R
-V#TT>]`<Q~>
-!<E0!johL1eS8jjX8i7uX8i8!X8i8!X9AU*!3E7%r2]kur2]kuriH,"oW/#mriH,"s/Z2#rN#u!
-riH,"ri?)"rN#u!q5aPrri?)"riH,"ri?)"rN#u!qQ'YsrN#u!oW/,pXK2F#X9AU*!3E7%rN#u!
-ri?)"ri?)"r2]kuorJ,nq5ai%X8o?'!3E7%rN#u!riH,"ri?)"ri?)"rN#u!ri?)"rN#u!rN#u!
-riH,"ri?)"pT+>pr2]kurN#u!riH,"ri?)"nuMfkr2]kuriH,"nuMfkr2]kurN#u!oW/,pXK2Et
-X8i7tX8i7rX8i7sX9/I(X8r.!!!)eq!!)Pjs6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hHg&M-Ng&M-Og&M-Og'%K1!8?-,r7V,Nr7V,Nrn@APo\'9Frn@APs4RGQrRq5O
-rn@APrn7>PrRq5Oq:YfKrn7>Prn@APrn7>PrRq5OqUtoLrRq5Oo\'BIg=cQ*g'%K1!8?-,rRq5O
-rn7>Prn7>Pr7V,Np"BBGq:Z)Sg&Tj\!8?-,rRq5Orn@APrn7>Prn7>PrRq5Orn7>PrRq5OrRq5O
-rn@APrn7>PpY#TIr7V,NrRq5Orn@APrn7>Po%F'Dr7V,Nrn@APo%F'Dr7V,NrRq5Oo\'BIg=cQ&
-g&M-Mg&M-Kg&M-Lg&h?/g&V$(!!)fJ!!)QCs8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@Wjo>DZjo>D[jo>D[jokbI!9WDDr8mtZr8mtZroX4\o]?,RroX4\s5j:]rT4([
-roX4\roO1\rT4([q;qYWroO1\roX4\roO1\rT4([qW7bXrT4([o]?5Uk2l[BjokbI!9WDDrT4([
-roO1\roO1\r8mtZp#Z5Sq;qq_joFQ+!9WDDrT4([roX4\roO1\roO1\rT4([roO1\rT4([rT4([
-roX4\roO1\pZ;GUr8mtZrT4([roX4\roO1\o&]oPr8mtZroX4\o&]oPr8mtZrT4([o]?5Uk2l[>
-jo>DYjo>DWjo>DXjoYVGjoG;@!!)fV!!)QOs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8jkX8i7uX8i7tX8i8"XT&:qX8i8!X8i7uX8i7nX8i7uX9&C'!;ii"!3E7%rN#u!
-rN#u!qQ'Ysr2]u#XK2F#X8i8!X8i7sX8i7`X9AU*X8o=%ri?)"r2^2)XK2E'X8o?'!;3Dn!;W_r
-!;<Jo!<0&"!<&u!!<0&"!;*>m!<0&"!;rnu!<0&"!;EPp!<&u!!;ii"!3E7%rN#u!nuMfkrN#u!
-r2]kunuMfkr2]kun>lTiri?)"q5aPrqlBbtq5aPrn#QKhq5aPrnZ;cYrmh%$s8VfCs+C@O#1]OL
-k2s>WJ,~>
-!<E0!johC3g4=hIg&M-Ng&M-Mg&M-PgA_0Jg&M-Og&M-Ng&M-Gg&M-Ng&_9.!;kIP!8?-,rRq5O
-rRq5OqUtoLr7V5Qg=cQ*g&M-Og&M-Lg&M-9g'%K1g&Th,rn7>Pr7VGWg=cP\g&Tj\!;5%G!;Y@K
-!;>+H!<1[P!<(UO!<1[P!;+tF!<1[P!;tON!<1[P!;G1I!<(UO!;kIP!8?-,rRq5Oo%F'DrRq5O
-r7V,No%F'Dr7V,NnCdjBrn7>Pq:YfKqq;#Mq:YfKn(IaAq:YfKn_4$Crn@C's8VfHs+14M#25dN
-k2s5TJ,~>
-!<E0!johL1eVf@Xjo>DZjo>DYjo>D\k5PGVjo>D[jo>DZjo>DSjo>DZjoPPF!;km\!9WDDrT4([
-rT4([qW7bXr8n(]k2l[Bjo>D[jo>DXjo>DEjokbIjoFNDroO1\r8n:ck2l[+joFQ+!;5IS!;YdW
-!;>OT!<2*\!<)$[!<2*\!;,CR!<2*\!;tsZ!<2*\!;GUU!<)$[!;km\!9WDDrT4([o&]oPrT4([
-r8mtZo&]oPr8mtZnE']NroO1\q;qYWqrRkYq;qYWn)aTMq;qYWn`KlOrmh%$s8VfCs+C@O#1]OL
-k2s>WJ,~>
-!<E0!johL1eS8jjX8i8!X8i7tX8i8"X8i7pX8i8!X8i7uX8i7nX8i7sX8i7tX9/I(X8r4#!!)u!
-!!)ksq>gPs!!)u!!!)u!!!)hrr;c/b"TYX*!3?2"XSMqsX9J[+X8o?'!;3Dn!;W\r!;W_o!<0&"
-!<&u!!<'"t!;rqr!<0&"!;NVq!;EPp!<&u!!;ii"!3E7%rN#u!nuMfkrN#u!r2]kunuMfkqlK_r
-oW/#mri?)"qQ'YsqQ'Ysq5aPrn>lTipoFGqnZ;cYrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hHg&M-Og&M-Mg&M-Pg&M-Ig&M-Og&M-Ng&M-Gg&M-Lg&M-Mg&h?/g&V**!!)uO
-!!)lLq>gQL!!)uO!!)uO!!)iKr;c0;"T[91!87GPgA1gLg'.Q2g&Tj\!;5%G!;Y=K!;Y@H!<1[P
-!<(UO!<(XM!;tRK!<1[P!;P7J!;G1I!<(UO!;kIP!8?-,rRq5Oo%F'DrRq5Or7V,No%F'DqqCuK
-o\'9Frn7>PqUtoLqUtoLq:YfKnCdjBpt>]Jn_4$Crn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@Wjo>D[jo>DYjo>D\jo>DUjo>D[jo>DZjo>DSjo>DXjo>DYjoYVGjoGAB!!)u[
-!!)lXq>gQX!!)u[!!)u[!!)iWr;c0G"T[]I!9O:\k5#)XjothJjoFQ+!;5IS!;YaW!;YdT!<2*\
-!<)$[!<)'Y!;u!W!<2*\!;P[V!;GUU!<)$[!;km\!9WDDrT4([o&]oPrT4([r8mtZo&]oPqr[hW
-o]?,RroO1\qW7bXqW7bXq;qYWnE']NpuVPVn`KlOrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8jjX8i8!X8i7tX8i8"X8i7pX8i8!X8i7uX8i7nX8i7sX8i7tX9/I(X8r4#!!)u!
-!!)ks!!)hr!!)u!!!)u!!!)\n!!)Ae!!*#"rrE&"!!)eq"9>M'X8qmo!!)hr!!)ks!!)u!!!*#"
-!!)u!!!)hr!!*#"!!)u!!!*#"!!)eq!!)bp!!)u!!!)nt!s#F(!<&u!!:m2k!<&u!!;rnu!:m2k
-!;EPp!;3Gj!;iht!;`bs!;W\r!:[&i!;NVq!:d/jmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hHg&M-Og&M-Mg&M-Pg&M-Ig&M-Og&M-Ng&M-Gg&M-Lg&M-Mg&h?/g&V**!!)uO
-!!)lL!!)iK!!)uO!!)uO!!)]G!!)B>!!*#PrrE&P!!)fJ"9@-Ug&Ud!!!)iK!!)lL!!)uO!!*#P
-!!)uO!!)iK!!*#P!!)uO!!*#P!!)fJ!!)cI!!)uO!!)oM!s%'/!<(UO!:nhD!<(UO!;tON!:nhD
-!;G1I!;5(C!;kIM!;bCL!;Y=K!:\\B!;P7J!:eeCs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@Wjo>D[jo>DYjo>D\jo>DUjo>D[jo>DZjo>DSjo>DXjo>DYjoYVGjoGAB!!)u[
-!!)lX!!)iW!!)u[!!)u[!!)]S!!)BJ!!*#\rrE&\!!)fV"9@QajoG&9!!)iW!!)lX!!)u[!!*#\
-!!)u[!!)iW!!*#\!!)u[!!*#\!!)fV!!)cU!!)u[!!)oY!s%KG!<)$[!:o7P!<)$[!;tsZ!:o7P
-!;GUU!;5LO!;kmY!;bgX!;YaW!:]+N!;P[V!:f4Os8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jjX8i7uX8i8!X8i8!X8i7pX8i7uX8i8"XT&:mX8i8!X9/I(X8r4#!!*#"!!)u!
-!!)u!!!*#"!!)u!!!)u!!s#F(!<&u!!<&u!!<0&"!<0&"!<&u!!;rqu!;!8l!<0)"!<&u!!<&u!
-!<0)"!!95%!;*>m!<0&"!<&u!!;`bs!<0)"!<0&"!<&u!!<0&"!<&u!!<0&"!<0)"!<&u!!<&u!
-!<0&"!<0&"!;iht!;rnu!<&u!!<0&"!<&u!!:m2k!;rnu!<0)"!:m2k!;rnu!<&u!!:d,j!;`bs
-!;`bs!;W\r!:[&i!;NVq!:d/jmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hHg&M-Ng&M-Og&M-Og&M-Ig&M-Ng&M-PgA_0Fg&M-Og&h?/g&V**!!*#P!!)uO
-!!)uO!!*#P!!)uO!!)uO!s%'/!<(UO!<(UO!<1[P!<1[P!<(UO!;tRN!;"nE!<1^P!<(UO!<(UO
-!<1^P!!:jS!;+tF!<1[P!<(UO!;bCL!<1^P!<1[P!<(UO!<1[P!<(UO!<1[P!<1^P!<(UO!<(UO
-!<1[P!<1[P!;kIM!;tON!<(UO!<1[P!<(UO!:nhD!;tON!<1^P!:nhD!;tON!<(UO!:ebC!;bCL
-!;bCL!;Y=K!:\\B!;P7J!:eeCs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@Wjo>DZjo>D[jo>D[jo>DUjo>DZjo>D\k5PGRjo>D[joYVGjoGAB!!*#\!!)u[
-!!)u[!!*#\!!)u[!!)u[!s%KG!<)$[!<)$[!<2*\!<2*\!<)$[!;u!Z!;#=Q!<2-\!<)$[!<)$[
-!<2-\!!;9_!;,CR!<2*\!<)$[!;bgX!<2-\!<2*\!<)$[!<2*\!<)$[!<2*\!<2-\!<)$[!<)$[
-!<2*\!<2*\!;kmY!;tsZ!<)$[!<2*\!<)$[!:o7P!;tsZ!<2-\!:o7P!;tsZ!<)$[!:f1O!;bgX
-!;bgX!;YaW!:]+N!;P[V!:f4Os8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jjX8i7tXSi.tXSi.rXS`(sXSr2#X8qjnr;cetr;churW)u"rW)nurW)hsr;cl!
-rW)u"rW)nurW)nuquHVqrrD\mrW)r!!!)qur;cetrr<,%!!)VlrW)nur;c_rrW!&%!!',"!<9/"
-!<9.u!;rqt!!95%!<'"t!;rqt!;rqr!<'"t!<0)!!<9/"!;3Gk!<'"u!!95%!;3Gk!<0(t!:d/i
-!;iht!;rqr!<'"s!:m2k!;NVq!:d/jmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hHg&M-MgAM$MgAM$KgACsLgAV'Qg&U`ur;cfMr;ciNrW)uPrW)oNrW)iLr;clO
-rW)uPrW)oNrW)oNquHWJrrD]FrW)rO!!)rNr;cfMrr<,S!!)WErW)oNr;c`KrW!&S!!(aP!<:dP
-!<:dN!;tRM!!:jS!<(XM!;tRM!;tRK!<(XM!<1^O!<:dP!;5(D!<(XN!!:jS!;5(D!<1^M!:eeB
-!;kIM!;tRK!<(XL!:nhD!;P7J!:eeCs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@Wjo>DYk5>;Yk5>;Wk555Xk5G>]joG#8r;cfYr;ciZrW)u\rW)oZrW)iXr;cl[
-rW)u\rW)oZrW)oZquHWVrrD]RrW)r[!!)rZr;cfYrr<,_!!)WQrW)oZr;c`WrW!&_!!)0\!<;3\
-!<;3Z!;u!Y!!;9_!<)'Y!;u!Y!;u!W!<)'Y!<2-[!<;3\!;5LP!<)'Z!!;9_!;5LP!<2-Y!:f4N
-!;kmY!;u!W!<)'X!:o7P!;P[V!:f4Os8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jjX8i7UX8i7%XT&9OXF[JOX8i7qX8i7jXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hHg&M-.g&M,SgA_/(g4@uVg&M-Jg&M-CgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@Wjo>D:jo>C_k5PF4k(2[njo>DVjo>DOk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8jiX8i7WX8i7$X8i6OXF[JOX8i7rXSr4iXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hGg&M-0g&M,Rg&M,(g4@uVg&M-KgAV*BgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@Vjo>D<jo>C^jo>C4k(2[njo>DWk5GANk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8jIXSi.tXS;dHXF[I=XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=h'gAM$Mg@tZ!g4@tDgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@6k5>;Yk4eq-k(2Z\k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE(uDKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcGcBJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE(uDKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:K)krCKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJH5`AJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKK)krCKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJb$\Xrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKCZ_Urs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KCJmFeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJai[Dg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKCJmFeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:K)iUWrs=>Xs4*qFk2s>WJ,~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJH3RZrs=8Vs4X1Hk2s5TJ,~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKK)iUWrs=>Xs4*qFk2s>WJ,~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:K*&ads7k.EK*f6ks4*qFk2s>WJ,~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJHE^gs7k=JJI03ns4X1Hk2s5TJ,~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKK*&ads7k.EK*f6ks4*qFk2s>WJ,~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE&Xbs7t4FK*f6ks4*qFk2s>WJ,~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcEUes7tCKJI03ns4X1Hk2s5TJ,~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE&Xbs7t4FK*f6ks4*qFk2s>WJ,~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KE&Xbs8(:GKE&Xbrs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJcEUes8(ILJcEUers%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKE&Xbs8(:GKE&Xbrs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDrRas81@HKE&Xbrs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc<Ods81OMJcEUers%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDrRas81@HKE&Xbrs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDrRas8:FIKDrRars%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc<Ods8:UNJc<Odrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDrRas8:FIKDrRars%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDiL`s8CLJKDrRars%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc3Ics8C[OJc<Odrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDiL`s8CLJKDrRars%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDiL`s8LRKKDiL`rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc3Ics8LaPJc3Icrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDiL`s8LRKKDiL`rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KD`F_s8UXLKDiL`rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc*Cbs8UgQJc3Icrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKD`F_s8UXLKDiL`rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KD`F_rrU`'KD`F_rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc*CbrrUo*Jc*Cbrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKD`F_rrU`'KD`F_rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDW=^s8IZK^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc!:as8ITI_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDW=^s8IZK^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDW=`s+>t$^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJc!:cs+,au_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDW=`s+>t$^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I(XOaKQmf(c:KDN:]KDW@^rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t/g=G!Xs8LaPJbm7`Jc!=ars%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZGk18\ps8LRKKDN:]KDW@^rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMmXaeWmaU\(ec19u]`<]]^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+s+13$s4%)JgAca#_>o/`_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:s+13$s4%)Jec19u]`<]]^&S*:eYN6-k.LbF~>
-!<E0!jo_F0eS9['JaS*We*d4cs+Bh@#1]OLk2s>WJ,~>
-!<E0!jo_=2g4=hTJcC<$e,TF$s+0\>#25dNk2s5TJ,~>
-!<E0!jo_F0eVf"YJcC<$e,TEts+Bh@#1]OLk2s>WJ,~>
-!<E0!joD3.eUc8%e]lVEKCAgEeYN6-k.LbF~>
-!<E0!joD*+g4@t/g<J=OJa`UCg7eQ/k.1PC~>
-!<E0!joD3.eUc8%e]lVEKCAgEeYN6-k.LbF~>
-!<E0!joD3.eUc8%e[a36V#TT>]`<Q~>
-!<E0!joD*+g4@t/g:>o@U&X9;\c@6~>
-!<E0!joD3.eUc8%e[a36V#TT>]`<Q~>
-!<E0!joD3.eUc8%e[a36V#TT>]`<Q~>
-!<E0!joD*+g4@t/g:>o@U&X9;\c@6~>
-!<E0!joD3.eUc8%e[a36V#TT>]`<Q~>
-!<E0!joM:.JV/N+JV2=%ldZ07s5rIW!.Y~>
-!<E0!joM10JUrB'JUu1!le2N9s5rIT!.Y~>
-!<E0!joM:.JV/N+JV2=%ldZ07s5rIW!.Y~>
-!<E0!joM:.JV/N+JV2@&!<;B8"f21\k.LbF~>
-!<E0!joM10JUrB'JUu4"!<;B="ektYk.1PC~>
-!<E0!joM:.JV/N+JV2@&!<;B8"f21\k.LbF~>
-!<E0!jo_F0K7id/!WTias+13$s7H<m^&S-)^&S,ueHMcKk2s>WJ,~>
-!<E0!jo_=2JV!F0!WU#fs+13$s7H<m_Z0Z._Z0Z%g'+2Mk2s5TJ,~>
-!<E0!jo_F0K7id/!WTias+13$s7H<m^&S-)^&S,ueHMcKk2s>WJ,~>
-!<E0!jo_F0K7ij1s8N+P]n-37s+14CrrIbcrVuT)s8VE8"f21\k.LbF~>
-!<E0!jo_=2JV!L2s8N+N_L_`<s+14CrrI\frVuT.s8VE="ektYk.1PC~>
-!<E0!jo_F0K7ij1s8N+P]n-37s+14CrrIbcrVuT)s8VE8"f21\k.LbF~>
-!<Bh3S-%5nKD3(Ys8R]Q^&S+`eUc8%ebI\pK)iU^s7j;-s6J2=S@tG_!!%N~>
-!<B_0R0))nJbR%\s8RWO_Z0Xeg4@t/gA'D%JH3Ras7jJ2s6JABRC\fS!!%N~>
-!<Bh3S-%5nKD3(Ys8R]Q^&S+`eUc8%ebI\pK)iU^s7j;-s6J2=S@tG_!!%N~>
-!!)uB".[noKDE4Zrrpr*K>%<bJ^o>%J^sPGs+:Hfs8UX"rVu`-s8VE8"e<iN]po(Q~>
-!!)u?".@koJbd1]rrq,-J\qHeJ_G\/J_KnQs+(<is8Ug,rVu`2s8VE="e!NE\sWPK~>
-!!)uB".[noKDE4Zrrpr*K>%<bJ^o>%J^sPGs+:Hfs8UX"rVu`-s8VE8"e<iN]po(Q~>
-!<CCD]`XeTK7j'7rVulIs+:Bds8RZ#J^o>%psoCs!knX6rRLlHr4W.1ldZ0/c+Uf\!.Y~>
-!<C:A\c\ASJV!^8rVulNs+(6gs8RZ(J_G\/ptGb!!lG!;rS%5Mr5/L6le2N1b.>0P!.Y~>
-!<CCD]`XeTK7j'7rVulIs+:Bds8RZ#J^o>%psoCs!knX6rRLlHr4W.1ldZ0/c+Uf\!.Y~>
-!<CCD]`XeTK7j-9rVufGs+:Bds8RZ#J^o>%psoCs!knX6qpkZFrk8@3ldZ0/c+Uf\!.Y~>
-!<C:A\c\ASJV!d:rVufLs+(6gs8RZ(J_G\/ptGb!!lG!;qqD#Krke^8le2N1b.>0P!.Y~>
-!<CCD]`XeTK7j-9rVufGs+:Bds8RZ#J^o>%psoCs!knX6qpkZFrk8@3ldZ0/c+Uf\!.Y~>
-!<CCD]`jqVK7gkNrVu`Es+:Bds8RZ#J^o>%psoCs!knX6q:5HD!knX6ldZ0/c+Uf\!.Y~>
-!<C:A\cnMUJUt\TrVu`Js+(6gs8RZ(J_G\/ptGb!!lG!;q:bfI!lG!;le2N1b.>0P!.Y~>
-!<CCD]`jqVK7gkNrVu`Es+:Bds8RZ#J^o>%psoCs!knX6q:5HD!knX6ldZ0/c+Uf\!.Y~>
-!<CCD]`FYRqh+[os+:Bds8RZ#J^o>%psoCs!knX6pso=qs8VE8"e<iN]po(Q~>
-!<C:A\cJ5QqgnOrs+(6gs8RZ(J_G\/ptGb!!lG!;ptG[ts8VE="e!NE\sWPK~>
-!<CCD]`FYRqh+[os+:Bds8RZ#J^o>%psoCs!knX6pso=qs8VE8"e<iN]po(Q~>
-!<CCD]`jqVK7gkNrIasss+:Bds8RZ#J^o>%psoCs!knX6q:5Fr!knX6ldZ0/c+Uf\!.Y~>
-!<C:A\cnMUJUt\TrIOh!s+(6gs8RZ(J_G\/ptGb!!lG!;q:bdu!lG!;le2N1b.>0P!.Y~>
-!<CCD]`jqVK7gkNrIasss+:Bds8RZ#J^o>%psoCs!knX6q:5Fr!knX6ldZ0/c+Uf\!.Y~>
-!<CCD]`XeTK7j-9rIb$us+:Bds8RZ#J^o>%psoCs!knX6qpkXtrk8@3ldZ0/c+Uf\!.Y~>
-!<C:A\c\ASJV!d:rIOn#s+(6gs8RZ(J_G\/ptGb!!lG!;qqD""rke^8le2N1b.>0P!.Y~>
-!<CCD]`XeTK7j-9rIb$us+:Bds8RZ#J^o>%psoCs!knX6qpkXtrk8@3ldZ0/c+Uf\!.Y~>
-!<CCD]`XeTK7j'7rIb+"s+:Bds8RZ#J^o>%psoCs!knX6rRLk!r4W.1ldZ0/c+Uf\!.Y~>
-!<C:A\c\ASJV!^8rIOt%s+(6gs8RZ(J_G\/ptGb!!lG!;rS%4$r5/L6le2N1b.>0P!.Y~>
-!<CCD]`XeTK7j'7rIb+"s+:Bds8RZ#J^o>%psoCs!knX6rRLk!r4W.1ldZ0/c+Uf\!.Y~>
-!<CCD]`XeTK7j!5rIY:(K7gl;s+/^OeUc9Gec17)^&S,_ebt-s^&S,ueHMJf]tKp9J,~>
-!<C:A\c\ASJV!X6rIG.+JUt]<s+/mTg4@uQgAc^,_Z0YigAQU!_Z0Z%g'*ne]"4:0J,~>
-!<CCD]`XeTK7j!5rIY:(K7gl;s+/^OeUc9Gec17)^&S,_ebt-s^&S,ueHMJf]tKp9J,~>
-!<CCD]`XeTK7ip3r.>'as8RZ#J^o>%psoCs!knX6rIamYs8VE8"e<iN]po(Q~>
-!<C:A\c\ASJV!R4r.+pds8RZ(J_G\/ptGb!!lG!;rIOa\s8VE="e!NE\sWPK~>
-!<CCD]`XeTK7ip3r.>'as8RZ#J^o>%psoCs!knX6rIamYs8VE8"e<iN]po(Q~>
-!<CCD]`XeTK7ij1rdt9cs8RY&JV/N+p4EL]s8R_(p:^M+ldZ0/c+Uf\!.Y~>
-!<C:A\c\ASJV!L2rdb-fs8RY$JUrB'p43@`s8RY$p;6k0le2N1b.>0P!.Y~>
-!<CCD]`XeTK7ij1rdt9cs8RY&JV/N+p4EL]s8R_(p:^M+ldZ0/c+Uf\!.Y~>
-!<CCD]`XeTK7id/!e\2dJV/N+JV3WJ!knVdoY(;)ldZ0/c+Uf\!.Y~>
-!<C:A\c\ASJV!F0!eJ5gJUrB'JV!KF!lFtgoYUY.le2N1b.>0P!.Y~>
-!<CCD]`XeTK7id/!e\2dJV/N+JV3WJ!knVdoY(;)ldZ0/c+Uf\!.Y~>
-!<CCD]`XeTK7eaTJcC<$df8X`"e<iN]po(Q~>
-!<C:A\c\ASJUrCPJcC<$df8Xe"e!NE\sWPK~>
-!<CCD]`XeTK7eaTJcC<$df8X`"e<iN]po(Q~>
-!<CCD]`O_SK7X&Rs+13ts6J2=SB\a\S,e'~>
-!<C:A\cS;RJV!iPs+13ts6JABREE+PR/ha~>
-!<CCD]`O_SK7X&Rs+13ts6J2=SB\a\S,e'~>
-!<CCD]`=RReUc8%e[a36SB\a\S,e'~>
-!<C:A\cA.Lg4@t/g:>o@REE+PR/ha~>
-!<CCD]`=RReUc8%e[a36SB\a\S,e'~>
-!<CCC^%%VDUk,=mUtMOD^%.Znc2PBWS,e'~>
-!<C:@]()2>Tn/ngU"Q+>](26hb5SsQR/ha~>
-!<CCC^%%VDUk,=mUtMOD^%.Znc2PBWS,e'~>
-!]^8*rOqgI!53s`JcC<$g&LTerk/B'!7cT~>
-!^m%2rOVUC!4ma]JcC<$g&LTbrji0!!8;r~>
-!cn@drOqgI!53s`JcC<$g&LTerk/B'!7cT~>
-!\j]"n%A^kJ`_OGJ`bYJ!6suG!h98@J,~>
-!^m%2n%&LeJ`_OGJ`bYJ!6XcA!gs&BJ,~>
-!bq_[n%A^kJ`_OGJ`bYJ!6suG!h98@J,~>
-s#C,\S=K,_!1\W&J`_OGg#`:Zn\+sm!W^d$J,~>
-s$QngR@3TV!1AE#J`_OGg#`:Wn[eag!W^s.J,~>
-s)S5AS=K,_!1\W&J`_OGg#`:Zn\+sm!W^d$J,~>
-r\=EQn=5'CJ\?WJfY-gFrrE&KJ,~>
-r^?bdn<nj=J\$EDfXgU@rrE&PJ,~>
-rcA)>n=5'CJ\?WJfY-gFrrE&KJ,~>
-r](!63Iq0]!.b-Z!<:RNs4,YM~>
-r'Z)9JH16$[fHH^!W^s.J,~>
-r,[DhJH16$[fHHY!W^d$J,~>
-%%EndData
-showpage
-%%Trailer
-end
-%%EOF
diff --git a/lib/et/doc/src/sim_trans_mgr_actors.gif b/lib/et/doc/src/sim_trans_mgr_actors.gif
deleted file mode 100644
index b954a45bba..0000000000
--- a/lib/et/doc/src/sim_trans_mgr_actors.gif
+++ /dev/null
Binary files differ
diff --git a/lib/et/doc/src/sim_trans_mgr_actors.png b/lib/et/doc/src/sim_trans_mgr_actors.png
new file mode 100644
index 0000000000..e42e82adad
--- /dev/null
+++ b/lib/et/doc/src/sim_trans_mgr_actors.png
Binary files differ
diff --git a/lib/et/doc/src/sim_trans_mgr_actors.ps b/lib/et/doc/src/sim_trans_mgr_actors.ps
deleted file mode 100644
index 9bfa4ab544..0000000000
--- a/lib/et/doc/src/sim_trans_mgr_actors.ps
+++ /dev/null
@@ -1,1705 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: GIMP PostScript file plugin V 1.12 by Peter Kirchgessner
-%%Title: /home/hakan/picts/sim_trans_mgr_actors.ps
-%%CreationDate: Mon Oct 14 17:07:53 2002
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%Pages: 1
-%%BoundingBox: 14 14 443 371
-%%EndComments
-%%BeginProlog
-% Use own dictionary to avoid conflicts
-10 dict begin
-%%EndProlog
-%%Page: 1 1
-% Translate for offset
-14.173228 14.173228 translate
-% Translate to begin of first scanline
-0.000000 356.135581 translate
-428.031496 -356.135581 scale
-% Image geometry
-512 426 8
-% Transformation matrix
-[ 512 0 0 426 0 0 ]
-% Strings to hold RGB-samples per scanline
-/rstr 512 string def
-/gstr 512 string def
-/bstr 512 string def
-{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
-true 3
-%%BeginData: 92674 ASCII Bytes
-colorimage
-r.BP#JH16$MZE\TJ,~>
-r.0D!JH16$MZE\TJ,~>
-r.BP#JH16$MZE\TJ,~>
-rk8=3nc&U&JcC<$JcF@%!56GQquD6~>
-rke[8nc&U'JcC<$JcF@%!5?MRquD6~>
-rk8=3nc&U&JcC<$JcF@%!56GQquD6~>
-s1JI6s8VWG!53s6J^o>%f@9l7a56ja!W`9#J,~>
-s2"g;s8VWC!5=$8J_#D'f@Br9a4gR]!W`9#J,~>
-s1JI6s8VWG!53s6J^o>%f@9l7a56ja!W`9#J,~>
-!keU6n(n&XJ^o>%J^rB&!56A.!lY0>J,~>
-!l=s;n(IcUJ_#D'J_&H(!5?G+!l=s;J,~>
-!keU6n(n&XJ^o>%J^rB&!56A.!lY0>J,~>
-!keU6n(n&X\((JtJ^o>%U=B7W`SL[8!<7Q~>
-!l=s;n(IcU\(1T&dXfu#et^dr^;\e-_>sUd~>
-!keU6n(n&X\((JtJ^o>%U=B7W`SL[8!<7Q~>
-!<E/fh>k7Kec1lieHNpfe\-<VrfmH5!J>`neH)JZJ^oY.!57RPpRLp5s.'&Es.'#D!NZ9O~>
-!<E/fg&SkHf)LlgedTEhf"Q]`R?<W_eq&CHecDJYJ_#_0!5@XMpR1^.s-`i>s-`f=!NlEQ~>
-!<E/fh>k7Kec1lieHNpfe\-<VrfmH5!J>`neH)JZJ^oY.!57RPpRLp5s.'&Es.'#D!NZ9O~>
-!<E/thZ',ChZ',Eh>k7]eH*Y&n^[Z(hUN4WHaM=]Hc=O"Ph"<:He$Zc]tMqs`P(Wg!jm<nJ^o\/
-!57RPpRLs6rLEoErLEiC!NZ9O~>
-!<E/tf)M08f)M0:ec<GVdK.4nn^@H"hU3"QJ[X!dIE'QpOj_[/J^Vu`[_:)i_RAgZ!k*NkJ^TJ)
-!5@XIpR1a+rL*]:rL*W8!NlEQ~>
-!<E/thZ',ChZ',Eh>k7]eH*Y&n^[Z(hUN4WHaM=]Hc=O"Ph"<:He$Zc]tMqs`P(Wg!jm<nJ^o\/
-!57RPpRLs6rLEoErLEiC!NZ9O~>
-!<E/uhYiuChYiuDh>k7]eH(;LbgclTPh"<:Hi)=sK6u/!K6t;^!J>abeH(nmJ^o\/!57RPpRLs6
-pRM3=!NZ9O~>
-!<E/uf);$8f);$9ec<GVdf4mBdKPJmdaE\tqpPLqs3gpu^!cq3ld>g!M1O*5dK%#Ef(YU+f(YU2
-ecDoRJ,~>
-!<E/uhYiuChYiuDh>k7]eH(;LbgclTPh"<:Hi)=sK6u/!K6t;^!J>abeH(nmJ^o\/!57RPpRLs6
-pRM3=!NZ9O~>
-!<E/uhY`oDhY`oCh>k7deHX!NH\8]UV#G]@`V\15S9qs"eZ=DRK6u/!`J](q[+27)`RUK*`RUKS
-e]!GnK='1ZMi4ZprRD%aHbIt"rd+pqK6u/!K6u.Erd4[a%#]Ib[+3]bMl_ieK7!LGs,.8uK6su4
-K6suUe]!dOHiMXrMZKo;qUH(pP^@b8`RWM?MgKf/c(t>c"i[R$H],!)ec1O9XGbWJMgKf'^"'fC
-]n+^meH!;GhY3Q5hYE]>h>s\XJ,~>
-!<E/uf)1s9f)1s8ec<G]dK[RNI>+uTU&KH?_Y_b/R=2Zpd\VZGJUu7t_NB8#ZI5b$_U=j#_U=jG
-d__,pKsK.TNK'corR(h[ICdjprd>'pJUu7tJUu7CrdFg`%$>slZI70\NMVW_JV!^Hs,@DpKn6D8
-Kn6PXd__.FIK.aqN<,l8qU,knOb%q?^=(H4M1'f/b+\f_"i@F!I>P-+df5:8V2`p?Ob%q7[aMU4
-\q/:gdK%#Ef(YU*f(ka3ecDoRJ,~>
-!<E/uhY`oDhY`oCh>k7deHX!NH\8]UV#G]@`V\15S9qs"eZ=DRK6u/!`J](q[+27)`RUK*`RUKS
-e]!GnK='1ZMi4ZprRD%aHbIt"rd+pqK6u/!K6u.Erd4[a%#]Ib[+3]bMl_ieK7!LGs,.8uK6su4
-K6suUe]!dOHiMXrMZKo;qUH(pP^@b8`RWM?MgKf/c(t>c"i[R$H],!)ec1O9XGbWJMgKf'^"'fC
-]n+^meH!;GhY3Q5hYE]>h>s\XJ,~>
-!<E/teb>U4eH!;\bmMFBK>!Lr`Pm1N^&#u$[!S%^c%Dh:K6tk^K7gk%Hc<[FXNcBEXNcC)`IifV
-P^CBoK6rNPrQQOVHc=7KH[EHNK6tkfK6tk^H[EHFK7gk%Hc=6^H]+]EMhCoO(P@'mS9oU@S9on5
-c%CYfc%CAfc%CA$V#&=b]r\oSH]-.EH],8<UrC<"HbH5%PeE<.XNf"BH]+]EMgMhE[(X`'H^oZ3
-N6M@9kLBR&q:,J8o[Wi/qpb_K!.Y~>
-!<E/tdeB1.dK%#Zc3h^FKt<Ot`l<RX_YVP*[XFRhcAACCJUu+hJVC\#IE&jHWm6<HWm61(b(58X
-Q$pZtJUNBOrQZU\IE'RPJUPD\JUu+lJUu+dJUPDTJVC\#IE'Q`I>OfGM2D,T(P.!oTm_?KTm_X?
-b(58`c@p\lc@LD#V>AId^952YI>Q7GI>P8<WlE&0IDW"4Q+iN3Wm8n@I>OfGM1)hH[_C&,IA)5;
-N6VF;kL'?uq9f82o[<W)qpGMJ!.Y~>
-!<E/teb>U4eH!;\bmMFBK>!Lr`Pm1N^&#u$[!S%^c%Dh:K6tk^K7gk%Hc<[FXNcBEXNcC)`IifV
-P^CBoK6rNPrQQOVHc=7KH[EHNK6tkfK6tk^H[EHFK7gk%Hc=6^H]+]EMhCoO(P@'mS9oU@S9on5
-c%CYfc%CAfc%CA$V#&=b]r\oSH]-.EH],8<UrC<"HbH5%PeE<.XNf"BH]+]EMgMhE[(X`'H^oZ3
-N6M@9kLBR&q:,J8o[Wi/qpb_K!.Y~>
-!<E/sebPa5eH!;\bmCIuSB\-^XNcBEprt(:Hd06N`Qa$^c)c8^c)c8nc$P\oH\7QrHd/X=SB\-^
-XNcBEqoo/+HiD8,K6tkfK6tkfK6tkfK6tkEH^r?^H`YJEHhP]!K6tS^H[E`VH[F#=H^r@*K6tkf
-K7!=:#K=B/K?]$q`VdsiK6tjqHc=7KH\9SfK7!UB",hMr^&?1VH^'*+N6M@9kLBR&q:,J8o[Wi/
-qpb_K!.Y~>
-!<E/sdeT=/dK%#Zc3^Y%TusNdY0MTLps/nj,Kd`K_Tm^`cE;Shb-$/qc@(ttI>+*+IEJ^@TusNd
-Y0MTHb5BNcQ$rYWs+13qs+13qs+13qs+(R'Y'm"dY'mIuJUP]8c5(tZb0GQdb0GQhcE_khcH_,l
-cH^uhb4j0d_S1STc@p\`r6G=n'$c>^`m2SPM9aCtIEKj\M1(r3rQYFlQ%@5>c2bTAdK#^2dK#^-
-defI0dK-KNJ,~>
-!<E/sebPa5eH!;\bmCIuSB\-^XNcBEprt(:Hd06N`Qa$^c)c8^c)c8nc$P\oH\7QrHd/X=SB\-^
-XNcBEqoo/+HiD8,K6tkfK6tkfK6tkfK6tkEH^r?^H`YJEHhP]!K6tS^H[E`VH[F#=H^r@*K6tkf
-K7!=:#K=B/K?]$q`VdsiK6tjqHc=7KH\9SfK7!UB",hMr^&?1VH^'*+N6M@9kLBR&q:,J8o[Wi/
-qpb_K!.Y~>
-!<E/rebbm6eH!;\blFR;HNU(gK7!C<$ClIES;YY:K6tk=r-JgIc&74UPa$g%Mp8'qHNU(gK7!L?
-!L.s1bn#GRc-:lfc-:lfc-:lfc(t8a"/O1oHhP]!K6tkfK6tkfK6tk=H_ep2K6tkfK7!C<#ebkC
-MgL*$H[GY7"G;'GH[Gb:s*Odj!J>aubmD@RH[C[ac-:U"J^'.u!58<\!582u!58*V!1`l8!1``4
-q4.B5!NZ9O~>
-!<E/rdefI0dK%#Zc2a^=I06=kJV!UA$CuUJSW1q?JUu+Cr-\sLcB3[\OdUp'NR"BuI06=kJV!^D
-!L8*4cMrIqcMrIqcMrIqcMrFrcDCGe"/X:oJbIChJcF$qJcF$qJIBc"IA+s3Kmh7lJV!UA#eG_@
-NI?N+I=;"<s+(6sJUROCs*apms+10p$,VsUI>ttdc@(t/cA^$K^AQCZ](q`o](XPPRJG82RJ##(
-RJbJ6XoNt~>
-!<E/rebbm6eH!;\blFR;HNU(gK7!C<$ClIES;YY:K6tk=r-JgIc&74UPa$g%Mp8'qHNU(gK7!L?
-!L.s1bn#GRc-:lfc-:lfc-:lfc(t8a"/O1oHhP]!K6tkfK6tkfK6tk=H_ep2K6tkfK7!C<#ebkC
-MgL*$H[GY7"G;'GH[Gb:s*Odj!J>aubmD@RH[C[ac-:U"J^'.u!58<\!582u!58*V!1`l8!1``4
-q4.B5!NZ9O~>
-!<E/qebu$7eH!;\blXtnSG^V4K7!C<%)%"GK<3>BK6tkEH^t#Y$`&--Uo\p$Us5ufSG^V4K7!L?
-(8Q;rc-:lfc-:lfc-:lfc-:lfc)c8^r657pHhP]!K6tkfK6tkfK6tkEH^r@*H[F#^K7!C<$&a/T
-c%CYnK6t<0bmf;Pc%CA^c,G$^c-:lfr65JcUjIa=`I",+c&BmI^&6FTSG(J5SGC\8SG(M-SGgt=
-X8mb~>
-!<E/qdf#U1dK%#Zc2t.sU&<49Jb[M!\p]QhWm8n@J^1EHU&<1DTm_osWdTl#cE;Shr6G=nqp#tN
-IE'RXJUu+lJUu+lJUu+lJUu+LIA-Sas+0mhs+13qs+13qs+(R'Y'l_`b(4udc@LQAc3]J]b0G]p
-c@p\\r6G=n$dOTW`m2SPM9aCtJc*du`h@g7cGk:+J^05"!5ABZpR1a'!1EZ2!1EQ/pR2!.!NlEQ~>
-!<E/qebu$7eH!;\blXtnSG^V4K7!C<%)%"GK<3>BK6tkEH^t#Y$`&--Uo\p$Us5ufSG^V4K7!L?
-(8Q;rc-:lfc-:lfc-:lfc-:lfc)c8^r657pHhP]!K6tkfK6tkfK6tkEH^r@*H[F#^K7!C<$&a/T
-c%CYnK6t<0bmf;Pc%CA^c,G$^c-:lfr65JcUjIa=`I",+c&BmI^&6FTSG(J5SGC\8SG(M-SGgt=
-X8mb~>
-!<E/pec208eH!;[bmB#LUpR51c%CAMprt%9H[E`Vc%CAfc%CA=[&gXZ[!R/5]mG+5c-:lfUpR51
-c%CB?boOKE[*?jJHd0ffHd0ffHd0ffHaLbEH_e$M[*=5MrlkJ%KDWn.K6tkfK6tkfK6tk^H[DQH
-H[F#^K7!C<*/f0FXF#<-XF#T$]r]2tK6su$H^)4.H`YK:K7!UB$)FrA[!R_U[!TK;c&BmI^&6FT
-SG(J5SGC\8SG(M3SH%.<SGgt=X8mb~>
-!<E/pcMs1*c2bTVapZ4CIAOBTZHA#P[`8-c,DCPo`lcGTJ]budIAOBTZHBV(IC?_8IC@;<Kmff+
-Y-Q3$Jc!S1\p^a(b(5,db(5,db(5,db)(PT_M*E7[]ZpYJV!gCs,$Wqs+13ms+13ms+(R#_L6j+
-M1'fpb(5-=arH7dWiCJq^8cU8Y-t@Ib)(PTV1"W?Q$oLOb(5-CapFcI^9W0Db-$0$J]`qo!5ABV
-pQbHt!1!B*!1!9'rK[E.rK[?,!NlEQ~>
-!<E/pec208eH!;[bmB#LUpR51c%CAMprt%9H[E`Vc%CAfc%CA=[&gXZ[!R/5]mG+5c-:lfUpR51
-c%CB?boOKE[*?jJHd0ffHd0ffHd0ffHaLbEH_e$M[*=5MrlkJ%KDWn.K6tkfK6tkfK6tk^H[DQH
-H[F#^K7!C<*/f0FXF#<-XF#T$]r]2tK6su$H^)4.H`YK:K7!UB$)FrA[!R_U[!TK;c&BmI^&6FT
-SG(J5SGC\8SG(M3SH%.<SGgt=X8mb~>
-!<E/feH!;[bmMFSH[CCHc*W+M^%onSUjJ@*bn5STc-=4lH[CCHc-:T^c-:T^rlk_fP^@b0XNcBE
-qT]%us32C5Hd0ffHd0ffHd0gBK6t;NP^@b0XNcBErlkIrHi)&&K6tkfK6tkfK6tkfXFl/4K6tkf
-K7!C<(USgAS>:M%c)chMH],kf["E_=XFkkPXT$HFK7!UB#aBsgH^)LoMi3/2Mp278r7(e\q4%Gu
-p=8o-p!s)4rRLq<r7(hL!.Y~>
-!<E/fc2bTUapQ"NJUN6Tb-HSL](sJMTm`(&b5[%mar/']JUN6Tb/SjXb0#-\`lcH@Q%=@;Y0)<H
-qTAhts2t@ms2t@ms2t@ms2kbUJUtDLQ%=@;Y0)<HrlY7lqo\qis2t@ms2t@ms2kYNJVCC`J]c,d
-Jb[A([Y9.#Tm`?OWel.PM8%-<JUtD/KmeZTrlY7lrlPM3JUN*7^<2FpJ]`nn!5ABV!4M]g!4MUH
-pQbEss-<Q.s-<N-!NlEQ~>
-!<E/feH!;[bmMFSH[CCHc*W+M^%onSUjJ@*bn5STc-=4lH[CCHc-:T^c-:T^rlk_fP^@b0XNcBE
-qT]%us32C5Hd0ffHd0ffHd0gBK6t;NP^@b0XNcBErlkIrHi)&&K6tkfK6tkfK6tkfXFl/4K6tkf
-K7!C<(USgAS>:M%c)chMH],kf["E_=XFkkPXT$HFK7!UB#aBsgH^)LoMi3/2Mp278r7(e\q4%Gu
-p=8o-p!s)4rRLq<r7(hL!.Y~>
-!<E/feH!;Qc2)be^"(@/`Ik89blN0Dqp"ta!5714!j%$nJ^'+t!56>$!NZ9O~>
-!<E/fc2bTKb5-Md]%+q)_L\Q.ao]S2L&9$hI/pk6ao\So_L]jfaoK/oc2k'JJ,~>
-!<E/feH!;Qc2)be^"(@/`Ik89blN0Dqp"ta!5714!j%$nJ^'+t!56>$!NZ9O~>
-!<E/fblGGi`<!ZJdDZ<sPbbC=H^rC#!MmD[`JVV7]u8.rX8mb~>
-!<E/faoK/g`W<fIdDcC!OfGF@IA+s+!MR5Y`eqb9^;S.pXoNt~>
-!<E/fblGGi`<!ZJdDZ<sPbbC=H^rC#!MmD[`JVV7]u8.rX8mb~>
-!<E/fblGG7`<Er>K6r6HJ]32ZeAVF$`6A=a!.Y~>
-!<E/faoK/5`Wa)=JUN6GJ]<8\eA_L&`6&+`!.Y~>
-!<E/fblGG7`<Er>K6r6HJ]32ZeAVF$`6A=a!.Y~>
-!<E/fblGG.`IZ!Z`Ri'/]u8.rX8mb~>
-!<E/faoK/,`du-\`n/31^;S.pXoNt~>
-!<E/fblGG.`IZ!Z`Ri'/]u8.rX8mb~>
-!!%S&JV/N+K7a.(J,~>
-!!%S$JUrB'K7O"&J,~>
-!!%S&JV/N+K7a.(J,~>
-!<E0!joD3.s+13$s,I$^V#TT>]`<Q~>
-!<E0!joD*+s+13$s,I$^U&X9;\c@6~>
-!<E0!joD3.s+13$s,I$^V#TT>]`<Q~>
-!<E0!joD3.s+13$s,R*`K;AP0k.LbF~>
-!<E0!joD*+s+13$s,R*`JYE,+k.1PC~>
-!<E0!joD3.s+13$s,R*`K;AP0k.LbF~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys8(:A!!:[N!:A>:!<(IH!7TKs!;Y1F!!:[N!:eV>!9Vi-!!^sR!7fU"!9Vi3!<1OK
-!;Y1F!.i[Oe`bQ`K*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IF!!:jS!:AM?!<(XM!7T[#!;Y@K!!:jS!:eeC!9W#2!!_-W!8?-,!9W#8!<1^P
-!;Y@K!.ijTg?@8jJH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:A!!:[N!:A>:!<(IH!7TKs!;Y1F!!:[N!:eV>!9Vi-!!^sR!7fU"!9Vi3!<1OK
-!;Y1F!.i[Oe`bQ`K*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!;b7G!:A>:!<(IJ!7KEt!<:UL!;b7G!!:[N!:eV>!9Vi3!;b7G!<:UL!9Vi3
-!<1OK!;Y1F!.i[Oe`bQ`K*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IL!;bFL!:AM?!<(XO!7KU$!<:dQ!;bFL!!:jS!:eeC!9W#8!;bFL!<:dQ!9W#8
-!<1^P!;Y@K!.ijTg?@8jJH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:G!;b7G!:A>:!<(IJ!7KEt!<:UL!;b7G!!:[N!:eV>!9Vi3!;b7G!<:UL!9Vi3
-!<1OK!;Y1F!.i[Oe`bQ`K*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<:UL!!LgP!7fWu!<:UL!<:UL!<:UL!<:UJ!<:UL
-!!:[N!;+hA!;k=F!<:UL!!LgP!7fWu!<1OI!<:UJ!<:UJ!<:UL!!:[N!;+hA!<(IJ!!CaO!7h#J
-s4.&Js4.,L!n@8No[WsArmh#Ks4.&Js4.,L"k<SQeGoT#eUc9=ec17*V#TT>]`<Q~>
-!<E0!joV7Vs8(IL!<(XO!!M!U!8?0*!:nkD!<:dQ!!M!U!8?0*!<:dQ!<:dQ!<:dQ!<:dO!<:dQ
-!!:jS!;,"F!;kLK!<:dQ!!M!U!8?0*!<1^N!<:dO!<:dO!<:dQ!!:jS!;,"F!<(XO!!CpT!8@AO
-s4[DOs4[JQ!nmVSo\0<Frn@APs4[DOs4[JQ"kiqVg&M,(g4@uGgAc^-U&X9;\c@6~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<:UL!!LgP!7fWu!<:UL!<:UL!<:UL!<:UJ!<:UL
-!!:[N!;+hA!;k=F!<:UL!!LgP!7fWu!<1OI!<:UJ!<:UJ!<:UL!!:[N!;+hA!<(IJ!!CaO!7h#J
-s4.&Js4.,L!n@8No[WsArmh#Ks4.&Js4.,L"k<SQeGoT#eUc9=ec17*V#TT>]`<Q~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@s4.,L*7Y#heGoU"eGoU"!!(R"!!(R"!!(OL
-!7fU"!7guIo[WsAr71fIs4.,L+OpGleGoU"!!(R"!!(OL!7fU"!7fU"!7fU"!7fU"!7guIo[WsA
-rRLoJ&(LX[e^XX"e^XX"e^XX"ebfF>ec,XKec,UVeGoU"eGoU"!!(RK!!:[N!.i[OeaM&gK*A(N
-k2s>WJ,~>
-!<E0!joV7Vs8(IL!<(XO!"%?Z!87DQg=cN,o@j3Es4[JQ*81Amg&M-,g&M-,!!(a,!!(a,!!(^Q
-!8?-,!8@>No\0<Fr7_/Ns4[JQ+PHeqg&M-,!!(a,!!(^Q!8?-,!8?-,!8?-,!8?-,!8@>No\0<F
-rS%8O&)%!`g=cN,g=cN,g=cN,gACsCgA_0PgA_-[g&M-,g&M-,!!(aP!!:jS!.ijTg@*bqJH_bI
-k2s5TJ,~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@s4.,L*7Y#heGoU"eGoU"!!(R"!!(R"!!(OL
-!7fU"!7guIo[WsAr71fIs4.,L+OpGleGoU"!!(R"!!(OL!7fU"!7fU"!7fU"!7fU"!7guIo[WsA
-rRLoJ&(LX[e^XX"e^XX"e^XX"ebfF>ec,XKec,UVeGoU"eGoU"!!(RK!!:[N!.i[OeaM&gK*A(N
-k2s>WJ,~>
-!<E0!joV@Ys8(:D!"@BX!7_&LeGoU"eGoU@ec,XLec,UheGoU"!!(R"!!(R"!!(OL!7_&Le^XX"
-e^XX"ec#R>ec,XIec,XLec,U[eGoU"!!(OL!7fU"!7_&Lqpk]Hs4.,Ls4.,L!7h&Ko%!X<'%Hs^
-eGoU"eGoU"eGoU"eGoU"rW)N>q>_)W!!(R"!!(OL!7_&Le^XX"J^o>%n(%Gj"f21\k.LbF~>
-!<E0!joV7Vs8(II!"@Q]!87DQg&M-,g&M-EgA_0QgA_-mg&M-,!!(a,!!(a,!!(^Q!87DQg=cN,
-g=cN,gAV*CgA_0NgA_0QgA_-`g&M-,!!(^Q!8?-,!87DQqqD&Ms4[JQs4[JQ!8@DPo%O!A'&!<c
-g&M-,g&M-,g&M-,g&M-,rW)NCq>_)\!!(a,!!(^Q!87DQg=cN,J_G\/n(Rem"ektYk.1PC~>
-!<E0!joV@Ys8(:D!"@BX!7_&LeGoU"eGoU@ec,XLec,UheGoU"!!(R"!!(R"!!(OL!7_&Le^XX"
-e^XX"ec#R>ec,XIec,XLec,U[eGoU"!!(OL!7fU"!7_&Lqpk]Hs4.,Ls4.,L!7h&Ko%!X<'%Hs^
-eGoU"eGoU"eGoU"eGoU"rW)N>q>_)W!!(R"!!(OL!7_&Le^XX"J^o>%n(%Gj"f21\k.LbF~>
-!<E0!joV@Ys8(:G!<(IJ!!CaO!7grHo$n!Ge^XZMeGoU"qZ-ZHrr<;S!!(OL!7fWs!!:[N!:eV>
-!;tCI!<:UL!!^sR!7_&Leb]=JeGoUHec,XLec,XLec,UNeGoU>ec,XJec,UTeGoU"eGoU"eb]=J
-eGoU>ec,XKec,ULeb]=QeGoU"!!(R"!!%T#J^s5>s+:KNs5rIW!.Y~>
-!<E0!joV7Vs8(IL!<(XO!!CpT!8@;Mo%F?Lg=cP\g&M-,qZ-ZMrr<;X!!(^Q!8?0(!!:jS!:eeC
-!;tRN!<:dQ!!_-W!87DQgA:jOg&M-MgA_0QgA_0QgA_-Sg&M-CgA_0OgA_-Yg&M-,g&M-,gA:jO
-g&M-CgA_0PgA_-QgA:jVg&M-,!!(a,!!%T(J_KSHs+(?Is5rIT!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!!CaO!7grHo$n!Ge^XZMeGoU"qZ-ZHrr<;S!!(OL!7fWs!!:[N!:eV>
-!;tCI!<:UL!!^sR!7_&Leb]=JeGoUHec,XLec,XLec,UNeGoU>ec,XJec,UTeGoU"eGoU"eb]=J
-eGoU>ec,XKec,ULeb]=QeGoU"!!(R"!!%T#J^s5>s+:KNs5rIW!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!!UmQ!7_&Lma_79s4.,L!n@8Nqpk]H$.T"UeGoU"eGoUIec,X>ec,XI
-ec,XLec,UTeGoU"!!(OL!;tCI!;k=H!<:UL!<:UL!!:[N!:eV>!<(IJ!".6V!7fU"!7fU"!;tCI
-!:eV>!<1OK!!:[N!;tCI!!^sR!7fU"!.i[OeaM&gK*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IL!<(XO!!V'V!87DQmb7U>s4[JQ!nmVSqqD&M$/,@Zg&M-,g&M-NgA_0CgA_0N
-gA_0QgA_-Yg&M-,!!(^Q!;tRN!;kLM!<:dQ!<:dQ!!:jS!:eeC!<(XO!".E[!8?-,!8?-,!;tRN
-!:eeC!<1^P!!:jS!;tRN!!_-W!8?-,!.ijTg@*bqJH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:G!<(IJ!!UmQ!7_&Lma_79s4.,L!n@8Nqpk]H$.T"UeGoU"eGoUIec,X>ec,XI
-ec,XLec,UTeGoU"!!(OL!;tCI!;k=H!<:UL!<:UL!!:[N!:eV>!<(IJ!".6V!7fU"!7fU"!;tCI
-!:eV>!<1OK!!:[N!;tCI!!^sR!7fU"!.i[OeaM&gK*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"n^[X>rmh#K#1W\Re^XX"rmh#Ks4.,Lrmh#Ks4.,L
-!n@8NnC@O=s4.&Js4.,L(tATdeGoU"!!(R"!!(OL!7fU"!7fU"!7h&Ks4.,L!n@8Nn^[X>rRLoJ
-#LreSe^XX"ec#RKec,UNeGoU>ec,XKec,UVeGoU"eGoU"!!(RK!!:[N!.i[OeaM&gK*A(Nk2s>W
-J,~>
-!<E0!joV7Vs8(IL!<(XO!"%?Z!87DQg=cN,n_4!Crn@AP#20%Wg=cN,rn@APs4[JQrn@APs4[JQ
-!nmVSnCmmBs4[DOs4[JQ(tnrig&M-,!!(a,!!(^Q!8?-,!8?-,!8@DPs4[JQ!nmVSn_4!CrS%8O
-#MK.Xg=cN,gAV*PgA_-Sg&M-CgA_0PgA_-[g&M-,g&M-,!!(aP!!:jS!.ijTg@*bqJH_bIk2s5T
-J,~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"n^[X>rmh#K#1W\Re^XX"rmh#Ks4.,Lrmh#Ks4.,L
-!n@8NnC@O=s4.&Js4.,L(tATdeGoU"!!(R"!!(OL!7fU"!7fU"!7h&Ks4.,L!n@8Nn^[X>rRLoJ
-#LreSe^XX"ec#RKec,UNeGoU>ec,XKec,UVeGoU"eGoU"!!(RK!!:[N!.i[OeaM&gK*A(Nk2s>W
-J,~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:\P=!<1OK!<:UJ!<(IJ!<:UL!<(IH!<:UL!:SJ:!<:UJ
-!<:UL!!LgP!7fWu!<1OI!<(IJ!<:UJ!<:UL!:eV>!<(IJ!!:[N!<1OK!<:UJ!<:UL!:eV>!<1OK
-!<:UJ!<:UL!!UmQ!7_&LJ^o>%ma_>i"f21\k.LbF~>
-!<E0!joV7Vs8(IL!<(XO!!M!U!8?0*!:\_B!<1^P!<:dO!<(XO!<:dQ!<(XM!<:dQ!:SY?!<:dO
-!<:dQ!!M!U!8?0*!<1^N!<(XO!<:dO!<:dQ!:eeC!<(XO!!:jS!<1^P!<:dO!<:dQ!:eeC!<1^P
-!<:dO!<:dQ!!V'V!87DQJ_G\/mb7\l"ektYk.1PC~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:\P=!<1OK!<:UJ!<(IJ!<:UL!<(IH!<:UL!:SJ:!<:UJ
-!<:UL!!LgP!7fWu!<1OI!<(IJ!<:UJ!<:UL!:eV>!<(IJ!!:[N!<1OK!<:UJ!<:UL!:eV>!<1OK
-!<:UJ!<:UL!!UmQ!7_&LJ^o>%ma_>i"f21\k.LbF~>
-!<E0!joV@Ys+/_"ec,W#eUc9:ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/n'gA_/(g4@uDgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/_"ec,W#eUc9:ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/_"ec,W#eUc9:ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/n'gA_/(g4@uDgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/_"ec,W#eUc9:ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/_"ec,W#eUc9:ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/n'gA_/(g4@uDgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/_"ec,W#eUc9:ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@t?gAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc85ec17*V#TT>]`<Q~>
-!<E0!joV@Ys+,fRK7SZ9K*A(Nk2s>WJ,~>
-!<E0!joV7Vs+,`PJUrB5JH_bIk2s5TJ,~>
-!<E0!joV@Ys+,fRK7SZ9K*A(Nk2s>WJ,~>
-!<E0!joM:XJV/N+JV/u8"f21\k.LbF~>
-!<E0!joM1UJUrB'JUri4"ektYk.1PC~>
-!<E0!joM:XJV/N+JV/u8"f21\k.LbF~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.e`#'V!;=tC!;P+E!!:[N!;k=H!9_o4!.i[Oea_/nV#TT>]`<Q~>
-!<E0!joD*+g>Uc`!;>.H!;P:J!!:jS!;kLM!9`)9!.ijTg@<l#U&X9;\c@6~>
-!<E0!joD3.e`#'V!;=tC!;P+E!!:[N!;k=H!9_o4!.i[Oea_/nV#TT>]`<Q~>
-!<E0!joD3.e`#'Y!<:UL!;G%D!;4nB!;k=H!9_o4!.i[Oea_/nV#TT>]`<Q~>
-!<E0!joD*+g>Ucc!<:dQ!;G4I!;5(G!;kLM!9`)9!.ijTg@<l#U&X9;\c@6~>
-!<E0!joD3.e`#'Y!<:UL!;G%D!;4nB!;k=H!9_o4!.i[Oea_/nV#TT>]`<Q~>
-!<E0!joD4Keb9%=eb]?&ec,XKec,XLeboLJeboLJeboLJec,UNeGoUHec,XIeboLJec,XKec,XL
-eboLJec,W#eUc9@eHMcKk2s>WJ,~>
-!<E0!joD+Hg@kRBgA:l+gA_0PgA_0QgAM$OgAM$OgAM$OgA_-Sg&M-MgA_0NgAM$OgA_0PgA_0Q
-gAM$OgA_/(g4@uJg'+2Mk2s5TJ,~>
-!<E0!joD4Keb9%=eb]?&ec,XKec,XLeboLJeboLJeboLJec,UNeGoUHec,XIeboLJec,XKec,XL
-eboLJec,W#eUc9@eHMcKk2s>WJ,~>
-!<E0!joD4KebB(DKDF't!//o&!<1OK!#X5d!7fU"!7fU"!7fU"!7fU"!7_&LeGoUHec,XJec,XL
-ec,UNeGoUKec,UUeGoU"eGoU"!!%T#J^s;@"f21\k.LbF~>
-!<E0!joD+Hg@tUIJbe%"!/0)+!<1^P!#XDi!8?-,!8?-,!8?-,!8?-,!87DQg&M-MgA_0OgA_0Q
-gA_-Sg&M-PgA_-Zg&M-,g&M-,!!%T(J_KYJ"ektYk.1PC~>
-!<E0!joD4KebB(DKDF't!//o&!<1OK!#X5d!7fU"!7fU"!7fU"!7fU"!7_&LeGoUHec,XJec,XL
-ec,UNeGoUKec,UUeGoU"eGoU"!!%T#J^s;@"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XJec,UOeGoU"r;ciIr;clJquHcIr;`_FrrE&Krr<DV!!(R"!!(R"
-!!)oHrr<5Q!!(OL!;k=H!<(IJ!<:UL!<:UL!"IHY!7fU"!7fU"!7_&LJ^o>%n^Rf=s5rIW!.Y~>
-!<E0!joD+HgAh3LgAca"gA_0OgA_-Tg&M-,r;ciNr;clOquHcNr;`_KrrE&Prr<D[!!(a,!!(a,
-!!)oMrr<5V!!(^Q!;kLM!<(XO!<:dQ!<:dQ!"IW^!8?-,!8?-,!87DQJ_G\/n_+/?s5rIT!.Y~>
-!<E0!joD4Kec5[Gec19tec,XJec,UOeGoU"r;ciIr;clJquHcIr;`_FrrE&Krr<DV!!(R"!!(R"
-!!)oHrr<5Q!!(OL!;k=H!<(IJ!<:UL!<:UL!"IHY!7fU"!7fU"!7_&LJ^o>%n^Rf=s5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tec,XJebT:Gec,UReGoU"eGoUJec,UReGoU"eGoTIec,XKec,ULeb]@H
-ec,XKebfCNeGoU"!!)oHrrE#JqZ-ZHrr<2P!!(R"qZ$]J!!%T#J^s;@"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA_0OgA1gLgA_-Wg&M-,g&M-OgA_-Wg&M-,g&M,NgA_0PgA_-QgA:mM
-gA_0PgACpSg&M-,!!)oMrrE#OqZ-ZMrr<2U!!(a,qZ$]O!!%T(J_KYJ"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tec,XJebT:Gec,UReGoU"eGoUJec,UReGoU"eGoTIec,XKec,ULeb]@H
-ec,XKebfCNeGoU"!!)oHrrE#JqZ-ZHrr<2P!!(R"qZ$]J!!%T#J^s;@"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tebfCIec#RKec,XLec,UReGoU"eGoUKec,XLec,XLec,WIec,XKec,UN
-eGoUHec,XLec,XLec,UQeGoU"!!)oHrrE#JrrDoGrW)rJrrDuIrr@W#J^s;@"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gACpNgAV*PgA_0QgA_-Wg&M-,g&M-PgA_0QgA_0QgA_/NgA_0PgA_-S
-g&M-MgA_0QgA_0QgA_-Vg&M-,!!)oMrrE#OrrDoLrW)rOrrDuNrr@W(J_KYJ"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tebfCIec#RKec,XLec,UReGoU"eGoUKec,XLec,XLec,WIec,XKec,UN
-eGoUHec,XLec,XLec,UQeGoU"!!)oHrrE#JrrDoGrW)rJrrDuIrr@W#J^s;@"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKeb]=Heb]@GeGoUKeb]?Eec,XLec,XLec,XLec,XLec,UL
-ec#RKec,UQeGoU"!!)oHrrE#JrrE)LrrE&KrW)rJrrE)Lrr<,N!!%T#J^s;@"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA_0OgA_0PgA:jMgA:mLg&M-PgA:lJgA_0QgA_0QgA_0QgA_0QgA_-Q
-gAV*PgA_-Vg&M-,!!)oMrrE#OrrE)QrrE&PrW)rOrrE)Qrr<,S!!%T(J_KYJ"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKeb]=Heb]@GeGoUKeb]?Eec,XLec,XLec,XLec,XLec,UL
-ec#RKec,UQeGoU"!!)oHrrE#JrrE)LrrE&KrW)rJrrE)Lrr<,N!!%T#J^s;@"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKec,XIec,XHec,XKec,WEebfFGeboLHec,XLec#OKeboIL
-eGoUHeb]=HeboLGeGoUIeboLJec,W#eUc9@eHMcKk2s>WJ,~>
-!<E0!joD+HgAh3LgAca"gA_0OgA_0PgA_0NgA_0MgA_0PgA_/JgACsLgAM$MgA_0QgAV'PgAM!Q
-g&M-MgA:jMgAM$Lg&M-NgAM$OgA_/(g4@uJg'+2Mk2s5TJ,~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKec,XIec,XHec,XKec,WEebfFGeboLHec,XLec#OKeboIL
-eGoUHeb]=HeboLGeGoUIeboLJec,W#eUc9@eHMcKk2s>WJ,~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKec,XLec,UUeGoU"eGoU"!!)uJrrE)Lrr@W#J^o>%e("Vt
-s5rIW!.Y~>
-!<E0!joD+HgAh3LgAca"gA_0OgA_0PgA_0QgA_-Zg&M-,g&M-,!!)uOrrE)Qrr@W(J_G\/e(Ou!
-s5rIT!.Y~>
-!<E0!joD4Kec5[Gec19tec,XJec,XKec,XLec,UUeGoU"eGoU"!!)uJrrE)Lrr@W#J^o>%e("Vt
-s5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tec,XJec,XJeboLIeboLJebfFIeboK!eUc8%e^DtOV#TT>]`<Q~>
-!<E0!joD+HgAh3LgAca"gA_0OgA_0OgAM$NgAM$OgACsNgAM#&g4@t/g="[YU&X9;\c@6~>
-!<E0!joD4Kec5[Gec19tec,XJec,XJeboLIeboLJebfFIeboK!eUc8%e^DtOV#TT>]`<Q~>
-!<E0!joD4Kec5[EK7VR(eUc8JeHMcKk2s>WJ,~>
-!<E0!joD+HgAh3JJUuO+g4@tTg'+2Mk2s5TJ,~>
-!<E0!joD4Kec5[EK7VR(eUc8JeHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8dec,XJeboLIeboK!e_em\V#TT>]`<Q~>
-!<E0!joD*+g4@tngA_0OgAM$NgAM#&g>CTfU&X9;\c@6~>
-!<E0!joD3.eUc8dec,XJeboLIeboK!e_em\V#TT>]`<Q~>
-!<E0!joD3.eUc8feboLIec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD*+g4@tpgAM$NgA_0QgA_-Wg&M-,g&M,(g>LZgU&X9;\c@6~>
-!<E0!joD3.eUc8feboLIec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD*+g4@tngA_0PgA_0QgA_-Wg&M-,g&M,(g>LZgU&X9;\c@6~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD*+g4@tngA_0PgA_0QgA_-Wg&M-,g&M,(g>LZgU&X9;\c@6~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD*+g4@tngA_0PgA_0QgA_-Wg&M-,g&M,(g>LZgU&X9;\c@6~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD*+g4@tngA_0PgA_0QgA_-Wg&M-,g&M,(g>LZgU&X9;\c@6~>
-!<E0!joD3.eUc8dec,XKec,XLec,UReGoU"eGoT#e_ns]V#TT>]`<Q~>
-!<E0!joD4Keb9%=ec,XKec,UNeGoUIec,XAeb]@,ebK2reZ77#!<1OK!<:UL!!^sR!7fU"!.i\Y
-eHMcKk2s>WJ,~>
-!<E0!joD+Hg@kRBgA_0PgA_-Sg&M-NgA_0FgA:m1gA(`"g8is-!<1^P!<:dQ!!_-W!8?-,!.ik^
-g'+2Mk2s5TJ,~>
-!<E0!joD4Keb9%=ec,XKec,UNeGoUIec,XAeb]@,ebK2reZ77#!<1OK!<:UL!!^sR!7fU"!.i\Y
-eHMcKk2s>WJ,~>
-!<E0!joD4KebB(DKDF't!<1OK!;Y1F!;+hA!8Q-)!.i\!ec,XKec,XLec,UReGoU"eGoT#e_ns]
-V#TT>]`<Q~>
-!<E0!joD+Hg@tUIJbe%"!<1^P!;Y@K!;,"F!8Q<.!.ik&gA_0PgA_0QgA_-Wg&M-,g&M,(g>LZg
-U&X9;\c@6~>
-!<E0!joD4KebB(DKDF't!<1OK!;Y1F!;+hA!8Q-)!.i\!ec,XKec,XLec,UReGoU"eGoT#e_ns]
-V#TT>]`<Q~>
-!<E0!joD4Kec5[Gec19tec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE#Jrr</O!!(RJ!<:RM!7h&K
-!7h&Kp!s'BrRLiHJ^q!TrrE#Jr;ciIr;_E!hphn+s5rIW!.Y~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-\g&M-,g&M-,!!(a,r;c]JrrE#Orr</T!!(aO!<:aR!8@DP
-!8@DPp"KEGrS%2MJ_I?^rrE#Or;ciNr;_E&hqA7-s5rIT!.Y~>
-!<E0!joD4Kec5[Gec19tec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE#Jrr</O!!(RJ!<:RM!7h&K
-!7h&Kp!s'BrRLiHJ^q!TrrE#Jr;ciIr;_E!hphn+s5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<(IE!<:UL!".6V!7fU"
-!7fU"!;=tC!<1OK!<:UL!.i[OeUc9MeHMcKk2s>WJ,~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-Wg&M-,!!(aP!!_-W!8?-,!;kLM!<(XJ!<:dQ!".E[!8?-,
-!8?-,!;>.H!<1^P!<:dQ!.ijTg4@uWg'+2Mk2s5TJ,~>
-!<E0!joD4Kec5[Gec19tec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<(IE!<:UL!".6V!7fU"
-!7fU"!;=tC!<1OK!<:UL!.i[OeUc9MeHMcKk2s>WJ,~>
-!<E0!joD4Kec5[Gec19tebT7WeGoU"!!(R"!!(OL!7fU"!;k=E!!(RK!<:UL!<:UL!"7<W!7fU"
-!7fU"!7grHrRLoJrmh#Ks4.,LJ^o>%J^sbM"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA1d\g&M-,!!(a,!!(^Q!8?-,!;kLJ!!(aP!<:dQ!<:dQ!"7K\!8?-,
-!8?-,!8@;MrS%8Orn@APs4[JQJ_G\/J_L+W"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tebT7WeGoU"!!(R"!!(OL!7fU"!;k=E!!(RK!<:UL!<:UL!"7<W!7fU"
-!7fU"!7grHrRLoJrmh#Ks4.,LJ^o>%J^sbM"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XKec,UVeGoU"!!(R"!!(RH!;k=H!<(IJ!<1OK!<:UL!".6V!7fU"
-!7fU"!;=tC!<1OK!<:UL!.i[OeUc9MeHMcKk2s>WJ,~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-[g&M-,!!(a,!!(aM!;kLM!<(XO!<1^P!<:dQ!".E[!8?-,
-!8?-,!;>.H!<1^P!<:dQ!.ijTg4@uWg'+2Mk2s5TJ,~>
-!<E0!joD4Kec5[Gec19tec,XKec,UVeGoU"!!(R"!!(RH!;k=H!<(IJ!<1OK!<:UL!".6V!7fU"
-!7fU"!;=tC!<1OK!<:UL!.i[OeUc9MeHMcKk2s>WJ,~>
-!<E0!joD4Kec5[Gec19tec,XKec,UXeGoU"!!(R"!!(OL!;G%D!<(IJ!<1OK!<:UL!"7<W!7fU"
-!7fU"!7grHrRLoJrmh#Ks4.,LJ^o>%J^sbM"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-]g&M-,!!(a,!!(^Q!;G4I!<(XO!<1^P!<:dQ!"7K\!8?-,
-!8?-,!8@;MrS%8Orn@APs4[JQJ_G\/J_L+W"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tec,XKec,UXeGoU"!!(R"!!(OL!;G%D!<(IJ!<1OK!<:UL!"7<W!7fU"
-!7fU"!7grHrRLoJrmh#Ks4.,LJ^o>%J^sbM"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<(IJ!<1OK!<:UL!".6V
-!7fU"!7fU"!;=tC!<1OK!<:UL!.i[OeUc9MeHMcKk2s>WJ,~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-Wg&M-,!!(aP!!_-W!8?-,!;kLM!<(XO!<1^P!<:dQ!".E[
-!8?-,!8?-,!;>.H!<1^P!<:dQ!.ijTg4@uWg'+2Mk2s5TJ,~>
-!<E0!joD4Kec5[Gec19tec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<(IJ!<1OK!<:UL!".6V
-!7fU"!7fU"!;=tC!<1OK!<:UL!.i[OeUc9MeHMcKk2s>WJ,~>
-!<E0!joD4Kec5[Gec19tec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE#JrrE#Jr;clJrrE)LrrE)L
-rrDcCrrE#Jr;bI"JV1dkJ^rr6"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-\g&M-,g&M-,!!(a,r;c]JrrE#OrrE#Or;clOrrE)QrrE)Q
-rrDcHrrE#Or;bI'JUtXgJ_K;@"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE#JrrE#Jr;clJrrE)LrrE)L
-rrDcCrrE#Jr;bI"JV1dkJ^rr6"f21\k.LbF~>
-!<E0!joD4Kec5[EK7VPQeU`@iK)kq&e`YHdV#TT>]`<Q~>
-!<E0!joD+HgAh3JJUuMTg4=glJH5_$g?7/nU&X9;\c@6~>
-!<E0!joD4Kec5[EK7VPQeU`@iK)kq&e`YHdV#TT>]`<Q~>
-!<E0!joD3.e`YK_K7U_r^#B!Be`YHdV#TT>]`<Q~>
-!<E0!joD*+g?72iJUt\u_VtNGg?7/nU&X9;\c@6~>
-!<E0!joD3.e`YK_K7U_r^#B!Be`YHdV#TT>]`<Q~>
-!<E0!joD3.e`YK_K7U_r^#]1pKE(t&e`YHdV#TT>]`<Q~>
-!<E0!joD*+g?72iJUt\u_W:^uJcGb$g?7/nU&X9;\c@6~>
-!<E0!joD3.e`YK_K7U_r^#]1pKE(t&e`YHdV#TT>]`<Q~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(kLp*5s5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(kLp*5s5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(kLp*5s5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(kLp*5s5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(kLp*5s5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(kLp*5s5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(kLp*5s5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD*+g?72iJUt\u_Z0Z/g&Zd)p"KFss8RZ(kLp*5s5rIT!.Y~>
-!<E0!joD3.e`YK_K7U_r^&S-*eH(=&p!s(ps8RZ#kLBa3s5rIW!.Y~>
-!<E0!joD4Keb9%=ec,XKec,UNeGoUIec,XAec,XKec,XFec,WYec18Q^#Qg+s7OnCKE(Vps+C@O
-J^rr6"f21\k.LbF~>
-!<E0!joD+Hg@kRBgA_0PgA_-Sg&M-NgA_0FgA_0PgA_0KgA_/^gAc_T_W/N5s7P(HJcGDss+14M
-J_K;@"ektYk.1PC~>
-!<E0!joD4Keb9%=ec,XKec,UNeGoUIec,XAec,XKec,XFec,WYec18Q^#Qg+s7OnCKE(Vps+C@O
-J^rr6"f21\k.LbF~>
-!<E0!joD4KebB(DKDF't!<1OK!;Y1F!;+hA!<1OK!;Y1F!4UMYK7U_r^&S-*eH(=&p!s(ps8RZ#
-kLBa3s5rIW!.Y~>
-!<E0!joD+Hg@tUIJbe%"!<1^P!;Y@K!;,"F!<1^P!;Y@K!4U\^JUt\u_Z0Z/g&Zd)p"KFss8RZ(
-kLp*5s5rIT!.Y~>
-!<E0!joD4KebB(DKDF't!<1OK!;Y1F!;+hA!<1OK!;Y1F!4UMYK7U_r^&S-*eH(=&p!s(ps8RZ#
-kLBa3s5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE&Krr<__!!(OL!7fU"!7fU"
-!7_&LeGoUKeboLJec,XLec,XLec,UQeGoU"!!(a's+>m9j1YKmp!j(qs7OqBKE(t&e`YHdV#TT>
-]`<Q~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-\g&M-,g&M-,!!(a,r;c]JrrE&Prr<_d!!(^Q!8?-,!8?-,
-!87DQg&M-PgAM$OgA_0QgA_0QgA_-Vg&M-,!!(a,s+,a<j21irp"BFts7P+GJcGb$g?7/nU&X9;
-\c@6~>
-!<E0!joD4Kec5[Gec19tec,XKec,UWeGoU"eGoU"!!(R"r;c]ErrE&Krr<__!!(OL!7fU"!7fU"
-!7_&LeGoUKeboLJec,XLec,XLec,UQeGoU"!!(a's+>m9j1YKmp!j(qs7OqBKE(t&e`YHdV#TT>
-]`<Q~>
-!<E0!joD4Kec5[Gec19tec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<1OK!!(RK!".6V!7_&L
-eGoU"ec#O`eGoU"!!(R"!!(OL!7fU"!7fU"!7h&K!n@8NgXZ=VJ\C*Ws8V_D!<;YCs8RZ#kLBa3
-s5rIW!.Y~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-Wg&M-,!!(aP!!_-W!8?-,!;kLM!<1^P!!(aP!".E[!87DQ
-g&M-,gAV'eg&M-,!!(a,!!(^Q!8?-,!8?-,!8@DP!nmVSgY2[YJ\pHas8V_B!<;YAs8RZ(kLp*5
-s5rIT!.Y~>
-!<E0!joD4Kec5[Gec19tec,XKec,UReGoU"!!(RK!!^sR!7fU"!;k=H!<1OK!!(RK!".6V!7_&L
-eGoU"ec#O`eGoU"!!(R"!!(OL!7fU"!7fU"!7h&K!n@8NgXZ=VJ\C*Ws8V_D!<;YCs8RZ#kLBa3
-s5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tebT7WeGoU"!!(R"!!(OL!7fU"!;k=H!<1OK!!h$S!7fU"!7h#Jrmh#K
-s4.,L(tATde^XX"e^XX"eGoU"!!(R"!!(R"!!(d(s+>m9j1PHmjFdL4J^rr6"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA1d\g&M-,!!(a,!!(^Q!8?-,!;kLM!<1^P!!h3X!8?-,!8@AOrn@AP
-s4[JQ(tnrig=cN,g=cN,g&M-,!!(a,!!(a,!!(d-s+,a<j2(frjFR@2J_K;@"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tebT7WeGoU"!!(R"!!(OL!7fU"!;k=H!<1OK!!h$S!7fU"!7h#Jrmh#K
-s4.,L(tATde^XX"e^XX"eGoU"!!(R"!!(R"!!(d(s+>m9j1PHmjFdL4J^rr6"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XKec,UVeGoU"!!(R"!!(RH!;k=H!<1OK!!h$S!7fU"!7h#Jrmh#K
-s4.,L(tATde^XX"e^XX"eGoU"!!(R"!!(R"!!(d(s+>n&_uG;<kLBa3s5rIW!.Y~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-[g&M-,!!(a,!!(aM!;kLM!<1^P!!h3X!8?-,!8@AOrn@AP
-s4[JQ(tnrig=cN,g=cN,g&M-,!!(a,!!(a,!!(d-s+,b$_uG;AkLp*5s5rIT!.Y~>
-!<E0!joD4Kec5[Gec19tec,XKec,UVeGoU"!!(R"!!(RH!;k=H!<1OK!!h$S!7fU"!7h#Jrmh#K
-s4.,L(tATde^XX"e^XX"eGoU"!!(R"!!(R"!!(d(s+>n&_uG;<kLBa3s5rIW!.Y~>
-!<E0!joD4Kec5[Gec19tec,XKec,UXeGoU"!!(R"!!(OL!;G%D!<1OK!%l_$!7fU"!7_&LeGoU"
-eGoU"eGoU"!!(R"!!(R"!!(OL!7_&Le^XX"e^XX"gXQ:VJcEUeJ^rr6"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-]g&M-,!!(a,!!(^Q!;G4I!<1^P!%ln)!8?-,!87DQg&M-,
-g&M-,g&M-,!!(a,!!(a,!!(^Q!87DQg=cN,g=cN,gY)XYJcEUeJ_K;@"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tec,XKec,UXeGoU"!!(R"!!(OL!;G%D!<1OK!%l_$!7fU"!7_&LeGoU"
-eGoU"eGoU"!!(R"!!(R"!!(OL!7_&Le^XX"e^XX"gXQ:VJcEUeJ^rr6"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XKec,UReGoU"!!(RK!!^sR!7fU"!;b7G!$B_k!7fU"!7fU"!7_&L
-e^XX"eGoU"eGoU"!!(R"!!*#KrrE)LrrE&KrrE)Lrr@W#J^o>%"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-Wg&M-,!!(aP!!_-W!8?-,!;bFL!$Bnp!8?-,!8?-,!87DQ
-g=cN,g&M-,g&M-,!!(a,!!*#PrrE)QrrE&PrrE)Qrr@W(J_G\/"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tec,XKec,UReGoU"!!(RK!!^sR!7fU"!;b7G!$B_k!7fU"!7fU"!7_&L
-e^XX"eGoU"eGoU"!!(R"!!*#KrrE)LrrE&KrrE)Lrr@W#J^o>%"f21\k.LbF~>
-!<E0!joD4Kec5[Gec19tec,XKec,UWeGoU"eGoU"!!(R"r;cZDquHcIrrE)Lrr<,N!!*#Kr;clJ
-rrE)Lr;cfHrrE)LrrE&KrrE)Lrr@W#J^o>%"f21\k.LbF~>
-!<E0!joD+HgAh3LgAca"gA_0PgA_-\g&M-,g&M-,!!(a,r;cZIquHcNrrE)Qrr<,S!!*#Pr;clO
-rrE)Qr;cfMrrE)QrrE&PrrE)Qrr@W(J_G\/"ektYk.1PC~>
-!<E0!joD4Kec5[Gec19tec,XKec,UWeGoU"eGoU"!!(R"r;cZDquHcIrrE)Lrr<,N!!*#Kr;clJ
-rrE)Lr;cfHrrE)LrrE&KrrE)Lrr@W#J^o>%"f21\k.LbF~>
-!<E0!joD4Kec5[EK7VR(eUc8JeHMcKk2s>WJ,~>
-!<E0!joD+HgAh3JJUuO+g4@tTg'+2Mk2s5TJ,~>
-!<E0!joD4Kec5[EK7VR(eUc8JeHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^mbKDX1&V#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<TlJc".)U&X9;\c@6~>
-!<E0!joD3.eUc8%eY^mbKDX1&V#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^mcK)krKeHMcKk2s>WJ,~>
-!<E0!joD*+g4@t/g8<TmJH5`Ig'+2Mk2s5TJ,~>
-!<E0!joD3.eUc8%eY^mcK)krKeHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eY^msKDN7]KDN:]s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(Jbm4`Jbm7`s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKDN7]KDN:]s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKDW=_s+C0]s8VuH"f21\k.LbF~>
-!<E0!joD*+g4@t/g8<U(Jc!:bs+1$`s8VuM"ektYk.1PC~>
-!<E0!joD3.eUc8%eY^msKDW=_s+C0]s8VuH"f21\k.LbF~>
-!<E0!joD3.eUc8%eY^msKDW=`s+>t$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD*+g4@t/g8<U(Jc!:cs+,au_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD3.eUc8%eY^msKDW=`s+>t$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eY^msKD`F_s8R`K^&S-0eHMcKk2s>WJ,~>
-!<E0!joD*+g4@t/g8<U(Jc*Cbs8RZI_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD3.eUc8%eY^msKD`F_s8R`K^&S-0eHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eY^msKD`F_rrU`'KD`F_s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(Jc*CbrrUo*Jc*Cbs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKD`F_rrU`'KD`F_s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKDiL`s8UXLKD`F_s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(Jc3Ics8UgQJc*Cbs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKDiL`s8UXLKD`F_s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKDiL`s8LRKKDiL`s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(Jc3Ics8LaPJc3Ics81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKDiL`s8LRKKDiL`s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKDrRas8CLJKDiL`s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(Jc<Ods8C[OJc3Ics81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKDrRas8CLJKDiL`s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKDrRas8:FIKDrRas81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(Jc<Ods8:UNJc<Ods81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKDrRas8:FIKDrRas81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE&Xbs81@HKDrRas81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcEUes81OMJc<Ods81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE&Xbs81@HKDrRas81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE&Xbs8(:GKE&Xbs81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcEUes8(ILJcEUes81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE&Xbs8(:GKE&Xbs81=MV#TT>]`<Q~>
-!<E0!joD3.e`>9\s7OqBs8CLJs0^AWs,,A,s7=e@s0'uQK*&ads7t4FKE&Xbs81=MV#TT>]`<Q~>
-!<E0!joD*+g>puf!;5(G!<(XO!4CM\!/fM1!;"qE!3b,VJHE^gs7tCKJcEUes81LRU&X9;\c@6~>
-!<E0!joD3.e`>9\!;4nB!<(IJ!4C>W!/f>,!;"b@!3arQK*&ads7t4FKE&Xbs81=MV#TT>]`<Q~>
-!<E0!joD4Lec5[Lec#LJeboFOec5["s8UXKs8UXLs8UXLrrCUIrrCUKs-hI<s7FhAs8:CIs0^AW
-s,#8+s74\?s0'uQK*&ads7k.EK*&ads81=MV#TT>]`<Q~>
-!<E0!joD+IgAe#LgARiJgAIcOg81Y"V5;oFV>o9LV>o9LV#]6IV#]6KV4-*<!;+tF!;tON!4CM\
-!/]D0!:nhD!3b,VJHE^gs7k=JJHE^gs81LRU&X9;\c@6~>
-!<E0!joD4Lec,XLeboIJebfCOeGoU"!!(RK!<:UL!<:UL!!(RI!!(RK!1MF<!;+eA!;t@I!4C>W
-!/]5+!:nY?!3arQK*&ads7k.EK*&ads81=MV#TT>]`<Q~>
-!<E0!joD4KeIMW0ec41Ms4,["e^a]Ms8LOVs4,["e^a]Mec42"rm_5Qe^a]Mec2r*s8NATs4,["
-s4./LpsoBDs4.,KrRLrJr7(fIr7(fI[ak?Vs4%/Mec,RMec5[KeH>j%s8W&Jrr;iFs8N,Ms8CLJ
-rrgmPec42!s1Hk^s8CLJs8CLJs8LONs4./LqUPWG!S.5Kec5XPec42"ec,Tlec1:%s7M!G^&S-0
-eHMcKk2s>WJ,~>
-!<E0!joD+Hg('t5g83NWV:sY"g=iCWV>f0VV:sY"g=iCWg83N"rn7RQg=iCWg82+/rr<>Y!8?-,
-!87DQptG]Is4[GPrS%8Or7V,Nr7V,N[bCZ[s4RJRgAV'Rg&M-Pg&h?/!!)uOrW)fKrr<)R!<(XO
-!!M!Ug&Tk+!5."c!<(XO!<(XO!<1[S!87DQqV(rL!SRPPgA_-Ug&Th,gAV)qgAca(s7LpE_Z0Z5
-g'+2Mk2s5TJ,~>
-!<E0!joD4KeIDT0eH".M!7fU"e^XZM!<1LV!7fU"e^XZMeH","rm_2Qe^XZMeGuo*rr<>T!7fU"
-!7_&Lpso?Ds4.)KrRLoJr7(cIr7(cI[ak<Vs4%,Mec#OMeGoUKeH5g%!!)uJrW)fFrr<)M!<(IJ
-!!LgPeH"/!!5-h^!<(IJ!<(IJ!<1LN!7_&LqUPTG!S%2Kec,UPeH","ec#Qlec1:%s7M!G^&S-0
-eHMcKk2s>WJ,~>
-!<E0!joD4KeIDQ/ec41Ms8UXLe^a^"rRLrJ'@m-5ec41Ms4./"s4./"ec5["s0C/^s4./"s4,["
-e^a]qeH#XIeHu9+ec41Ms4,["rRCoJr7(fI[FG9Wr7(fIqpb]Hrm_5Qe^a]Mec5Bo$NJZVec41M
-s4,["rm_#K\^^][rm_MYe^a]Mec41Ms4,["ec5Hq$NJZVec41Ms4,["rm_#KaOU<C!<;YCs8VuH
-"f21\k.LbF~>
-!<E0!joD+Hg'sn4g83NWV5;nBg=iC"rS%:J'AB;:g83NWV:qd"V:qd"g81Y"V6\e^!87G,!8?-,
-g=cQ&g&M-Ng'Ic5g&Tj\!8?-,rRq5Or7V,N[FtT\r7V,Nqq;#Mrn7PVg=cP\g&Um$$38c[g&Tj\
-!8?-,rn7>P\_7#`rn7h^g=cP\g&Tj\!8?-,g&Us&$38c[g&Tj\!8?-,rn7>PaP-ZF!<;YAs8VuM
-"ektYk.1PC~>
-!<E0!joD4KeI;N/eH".M!!(OLe^XX"rRLoJ'@d*5eH".M!7_)"!7_)"eGoU"!4(,^!7_)"!7fU"
-e^XZqeGoUIeHl6+eH".M!7fU"rRClJr7(cI[FG6Wr7(cIqpbZHrm_2Qe^XZMeH#?o$38TVeH".M
-!7fU"rm^uK\^^Z[rm_JYe^XZMeH".M!7fU"eH#Eq$38TVeH".M!7fU"rm^uKaOU<C!<;YCs8VuH
-"f21\k.LbF~>
-!<E0!joD4KeIMW0ec41Ms4./Le^a]Ms8LO`s4./Le^a]Mec42"ec42"e^a]Ms8TCT$NJZVec41M
-s4,["psoEErm_2Pe^a]Mec,UHeH#XIeH#WWeH#XIeH#XJec,UJeH>j%ec5X!s8VoF$NJZVec41M
-s4,["rm_#K\^^][rm_5Qe^a]Mec5Qts8VlE$NJZVec41Ms4,["rm_#KaOU<Co"G)'qpbkGs5rIW
-!.Y~>
-!<E0!joD+Hg('t5g83NWV:qcBg=iCWV>f0`V:qcBg=iCWg83N"g83N"g=iCWV5:KO$38c[g&Tj\
-!8?-,ptG`Jrn7MUg=cP\gAV*Mg&M-Ng&M,\g&M-Ng&M-OgAV*Og&h?/g&V-+rrDlK$38c[g&Tj\
-!8?-,rn7>P\_7#`rn7PVg=cP\g&V')rrDiJ$38c[g&Tj\!8?-,rn7>PaP-ZFo"tG,qq;4Is5rIT
-!.Y~>
-!<E0!joD4KeIDT0eH".M!7_&Le^XZM!<1L`!7_&Le^XZMeH","eH","e^XZM!!'=T$38TVeH".M
-!7fU"psoBErm_/Pe^XZMec#RHeGoUIeGoTWeGoUIeGoUJec#RJeH5g%eH#U!rrDlF$38TVeH".M
-!7fU"rm^uK\^^Z[rm_2Qe^XZMeH#NtrrDiE$38TVeH".M!7fU"rm^uKaOU<Co"G)'qpbkGs5rIW
-!.Y~>
-!<E0!joD4KeKFnBec41Ms4,["e^a]Mec41Ms4,["e^a]Mec41Ms4./KeH>j%ec2r*$NJZVec41M
-s4,["p=0TOe^a]Mec41Ms4,["rRCoJr7(fI[FGK]e^a]Mec5X!"96p%s8LONs4,["r7(fIqUGrQ
-ec42"e^a]Mec5X!!<9U[!<<&K%fb)0s4,["e^a]Mec42"q:,iPec42"e^a]Mec5X!!<:-js+Bh@
-qpbkGs5rIW!.Y~>
-!<E0!joD+Hg*!6Gg83NWV:sY"g=iCWg83NWV:sY"g=iCWg83NWV:qdFg&n2*g82+/$38c[g&Tj\
-!8?-,p=]oTg=cP\g&Tj\!8?-,rRq5Or7V,N[Ftfbg=cP\g&V-+!s%'/!<1[S!8?-,r7V,NqUu8V
-g&Th,g=cP\g&V-+!!'R`!!*#P%KP5:!8?-,g=cP\g&Th,q:Z/Ug&Th,g=cP\g&V-+!!(*os+0\>
-qq;4Is5rIT!.Y~>
-!<E0!joD4KeK=kBeH".M!7fU"e^XZMeH".M!7fU"e^XZMeH".M!7_)KeH5g%eGuo*$38TVeH".M
-!7fU"p=0QOe^XZMeH".M!7fU"rRClJr7(cI[FGH]e^XZMeH#U!!s$m%!<1LN!7fU"r7(cIqUGoQ
-eH","e^XZMeH#U!!!'R[!!*#K%KP&0!7fU"e^XZMeH","q:,fPeH","e^XZMeH#U!!!(*js+Bh@
-qpbkGs5rIW!.Y~>
-!<E0!joD4Jec5[Lec5[LeH,^#rr<#Krr<#K!<<&Ks8W)K$3/QUe^a^"e^a]*eHu9+s4./Le^a^"
-psoBDs4.,K#1`bRe^a^"rmgrH!7h#I[akEXs4.)Js4./L!nI>$rr3)Ns8UXKs7t1Ms4./"s8UX"
-rr<#KrVsR]r;ZfIs8W&Js8W,Ls8N/Ns8VrG#QN?Sec5["ec,UKec#Njec19nrrRiQs81=MV#TT>
-]`<Q~>
-!<E0!joD+GgAe#LgAe#Lg&\&(rh]YKrh]YK!2]\Ks/#_K$)Q@Pg=iC"g=iC/g'Ic5!87DQg=cN,
-ptG]Is4[GP#20%Wg=cN,rn@8M!8@>N[bC`]s4[DOs4[JQ!nmY.rW!&S!!(aP!;Y=R!87G,!!(a,
-rW)uPr;aObquHcNrrE#OrrE)Qrr<,S!!)lL#6<HXg&M-,gAV*PgAM#ogAc`qrrRcOs81LRU&X9;
-\c@6~>
-!<E0!joD4Jec,XLec,XLeH#[#rW)uKrW)uK!!*#KrrE&K#lrKUe^XX"e^XZ*eHl6+!7_&Le^XX"
-pso?Ds4.)K#1W\Re^XX"rmgoH!7guI[akBXs4.&Js4.,L!n@;$rW!&N!!(RK!;Y.M!7_)"!!(R"
-rW)uKr;aO]quHcIrrE#JrrE)Lrr<,N!!)lG#6<9SeGoU"ec#RKeboKjec19nrrRiQs81=MV#TT>
-]`<Q~>
-!<E0!joD3.eb%Als+/_]eH#W2eH#Wfec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD*+g@X)!!.ikbg&M,7g&M,kgAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD3.eb%Al!.i\]eGoT2eGoTfec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD3.eb7Pns8CLFs+/`!ebfCCec,T@ebfCCec,Tdec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD*+g@j8#!<(XK!.il&gA:mHgAV)EgA:mHgAV)igAca(s7Y1HJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD3.eb7Pn!<(IF!.i]!eb]@Cec#Q@eb]@Cec#Qdec1:%s7Y"CKE(uKeHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(JcGcDgAca(s81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKE(uFec1:%s81=MV#TT>]`<Q~>
-!<E0!joD3.eUc8%eY^msKE(uDKE(uKeHMcKk2s>WJ,~>
-!<E0!joD*+g4@t/g8<U(JcGcBJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD3.eUc8%eY^msKE(uDKE(uKeHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eY^msK)krCKE(uKeHMcKk2s>WJ,~>
-!<E0!joD*+g4@t/g8<U(JH5`AJcGcIg'+2Mk2s5TJ,~>
-!<E0!joD3.eUc8%eY^msK)krCKE(uKeHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eY^msKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD*+g4@t/g8<U(Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD3.eUc8%eY^msKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X;eH#X=eH#X7eH#WjeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-@g&M-Bg&M-<g&M,og&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU;eGoU=eGoU7eGoTjeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X;eH#X=eH#X7eH#WjeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-@g&M-Bg&M-<g&M,og&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU;eGoU=eGoU7eGoTjeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XAec,UKec#OJec5[JeH,^#rr2uKrVuZCs8W,Ls8N5Ps8UX"rVulIs8W)K
-!WU^Ls4>d$s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M-FgAV*PgAM$OgA_0Og&V3-rVurPr;cWHrrE)Qrr<2U!!(a,r;ciNrrE&P
-!<CjQ!8#p)!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoUAec#RKeboLJec,XJeH#[#rVurKr;cWCrrE)Lrr<2P!!(R"r;ciIrrE&K
-!<C[L!8#a$!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#XBeH#XHeH#XHeH#XJeH#XIeH#XDeHu9+ec41Ms4,["rm_#KrRD#Me^a^!
-eH#X!eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-Gg&M-Mg&M-Mg&M-Og&M-Ng&M-Ig'Ic5g&Tj\!8?-,rn7>PrRq>Rg=cQ+
-g&M-&g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUBeGoUHeGoUHeGoUJeGoUIeGoUDeHl6+eH".M!7fU"rm^uKrRCuMe^X[!
-eGoU!eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XAec5[JeH#XJec,UIeH#XIeH#XDeHu9+ec41Ms4,["rm_#KrRLoIrRCoJ
-eC=R!MU__,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-FgA_0Og&M-OgAV*Ng&M-Ng&M-Ig'Ic5g&Tj\!8?-,rn7>PrS%5NrRq5O
-eCjm&MV8%1VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUAec,XJeGoUJec#RIeGoUIeGoUDeHl6+eH".M!7fU"rm^uKrRLlIrRClJ
-eC=O!MU_\,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#X?eH#XKeHc-)ec5["ec5Tu!<;uI"96p%s8(7Ps4,["e^a]Mec5X!#liH*
-s4./"ec5X!!<:R!!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-Dg&M-Pg'7W3g&M-,g&V**!!)rN!s%'/!;bCU!8?-,g=cP\g&V-+#QWT4
-!87G,g&V-+!!(O&!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoU?eGoUKeHZ*)eGoU"eH#Qu!!)rI!s$m%!;b4P!7fU"e^XZMeH#U!#QWE*
-!7_)"eH#U!!!(O!!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#XBec,UHec5[Lec5XOec41MrVuiHs8VlEs8W&Js8N,Ms8LRKs8LRKs8LRI
-s45^#s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M-GgAV*MgA_0QgA_-Tg&Tj\r;cfMrrDiJrrE#Orr<)R!<1^P!<1^P!<1^N
-!7oj(!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoUBec#RHec,XLec,UOeH".Mr;cfHrrDiErrE#Jrr<)M!<1OK!<1OK!<1OI
-!7o[#!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X%ebfBWeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-*gA:l\g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU%eb]?WeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5ec,XGeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,:gA_0Lg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5ec,XGeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5eboLGeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,:gAM$Lg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5eboLGeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W4eb]@HeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,9gA:mMg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4eb]@HeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eVO8+s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g5#`dg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eVF3_eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W4eb]@HeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,9gA:mMg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4eb]@HeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W4ec#RHeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,9gAV*Mg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4ec#RHeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5ec,XGeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,:gA_0Lg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5ec,XGeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X)eH#XHeH#XIec5Z`eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-.g&M-Mg&M-NgA_/eg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU)eGoUHeGoUIec,W`eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X)eH#XAeH#W`eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-.g&M-Fg&M,eg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU)eGoUAeGoT`eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XCeH>j%s8W&Js8W,L"om-Qec5[Gec#OIec5[Jec,T_eH#W,eH#WHec19m
-^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-Hg&h?/!!)uOrrE)Q"T[6Vg&M-LgAM$NgA_0OgAV)dg&M,1g&M,MgAc`p
-_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUCeH5g%!!)uJrrE)L"T['QeGoUGeboLIec,XJec#Q_eGoT,eGoTHec19m
-^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XBeIV]1ec41Ms4,["ec42"ec5Ep!<;rH!<<&K"96p%s1["`s,,>,s/+?H
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M-Gg(+2;g&Tj\!8?-,g&Th,g&Up%!!)oM!!*#P!s%'/[email protected]!/fJ1!2eKM
-Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoUBeIMZ1eH".M!7fU"eH","eH#Bp!!)oH!!*#K!s$m%!5?t`!/f;,!2e<H
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#XBeHQ!'ec41Mrr<#K"TR$Pec5Ep!<;rH!<<&K"96p%s1["`s,,>,s/+?H
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M-Gg'%K1g&Tj\rW)uP"9@-Ug&Up%!!)oM!!*#P!s%'/[email protected]!/fJ1!2eKM
-Jb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoUBeHGs'eH".MrW)uK"9?sPeH#Bp!!)oH!!*#K!s$m%!5?t`!/f;,!2e<H
-KCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#XBeIMW0ec41Ms4,["e^a]Ms7b%Gs4,["rm_#Krm_,Ne^a]6eH#W,eH#WH
-ec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-Gg(",:g&Tj\!8?-,g=cP\!;G1L!8?-,rn7>Prn7GSg=cP@g&M,1g&M,M
-gAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUBeIDT0eH".M!7fU"e^XZM!;G"G!7fU"rm^uKrm_)Ne^XZ6eGoT,eGoTH
-ec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XCec,RQec5["ec5[KeH5d$s7Y"Cs8UXIs8UXLrrL[M^XW>aMU__,VUb^!
-o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-HgAV'Vg&M-,g&M-Pg&_9.!;>.H!<:dN!<:dQ!!1dR^Y/YfMV8%1VV;'$
-o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUCec#OQeGoU"eGoUKeH,a$!;=tC!<:UI!<:UL!!1UM^XW;aMU_\,VUb^!
-o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X1ebfBKeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-6gA:lPg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU1eb]?KeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XGec,W5eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-LgA_/:g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUGec,W5eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XJeboK2eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-OgAM#7g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUJeboK2eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH5d$eb]?0eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&_9.gA:l5g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eH,a$eb]?0eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eVO8+s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g5#`dg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eVF3_eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH5d$ebfE0eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&_9.gACr5g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eH,a$ebfE0eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XJeboK2eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-OgAM#7g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUJeboK2eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XGec,W5eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-LgA_/:g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUGec,W5eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XAeH#X*eH#XJeH#X=ec5[@ec5[2eH#W,eH#WHec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD+?g&Rt,g&M-Fg&M-/g&M-Og&M-BgA_0EgA_07g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5T
-J,~>
-!<E0!joD4BeGoT,eGoUAeGoU*eGoUJeGoU=ec,X@ec,X2eGoT,eGoTHec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD4BeH#W,eH#XAeH#X%eH#X<eH#X?eH#X2eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-Fg&M-*g&M-Ag&M-Dg&M-7g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUAeGoU%eGoU<eGoU?eGoU2eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XBec#OJeH,^#r;QiKs8VrG#liHTec5["s4.,Ks4./LrmguIrmh&Kp=00C
-rRLrJrRLrJrm_,Nec5[5eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-GgAM$Og&V3-qu?fP!!)lL#QWQYg&M-,!8@DPs4[JQrn@;Nrn@APp=]KH
-rS%8OrS%8Orn7GSg&M-:g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUBeboLJeH#[#qu?fK!!)lG#QWBTeGoU"!7h&Ks4.,LrmgrIrmh#Kp=0-C
-rRLoJrRLoJrm_)NeGoU5eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XAeH#XIeH#XJeH>j%ec5Kr"TR$Pec5X!!<;rH!<<#J!<<#J"96p%s7b%D
-s8LOYs4,["e^a]Mec41Ms4./4eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-Fg&M-Ng&M-Og&h?/g&V!'"9@-Ug&V-+!!)oM!!)uO!!)uO!s%'/!;G1I
-!<1[^!8?-,g=cP\g&Tj\!87G9g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUAeGoUIeGoUJeH5g%eH#Hr"9?sPeH#U!!!)oH!!)uJ!!)uJ!s$m%!;G"D
-!<1LY!7fU"e^XZMeH".M!7_)4eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XAeH#XIeH#XJeH>j%ec5Kr"TR$Pec5X!!<;rH!<<#J!<<#Jrr;]B!<<&K
-#636(s4,["r71iIk1'J3MU__,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-Fg&M-Ng&M-Og&h?/g&V!'"9@-Ug&V-+!!)oM!!)uO!!)uOrW)ZG!!*#P
-"p!B2!8?-,r7_/Nk1Te8MV8%1VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUAeGoUIeGoUJeH5g%eH#Hr"9?sPeH#U!!!)oH!!)uJ!!)uJrW)ZB!!*#K
-"p!3(!7fU"r71fIk1'G3MU_\,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#XAeHZ'(ec41Ms8CIMs4,["q:,QHec5Tu!<;rH!<<#J#liH*s4./"ec5Bo
-!<<&K%fb)0s4,["e^a]Mec42"kLBS4MU__,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-Fg'.Q2g&Tj\!<(UR!8?-,q:YlMg&V**!!)oM!!)uO#QWT4!87G,g&Um$
-!!*#P%KP5:!8?-,g=cP\g&Th,kLon9MV8%1VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUAeHQ$(eH".M!<(FM!7fU"q:,NHeH#Qu!!)oH!!)uJ#QWE*!7_)"eH#?o
-!!*#K%KP&0!7fU"e^XZMeH","kLBP4MU_\,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#X@ec5[Lec#OIec5[EeH5d$s8LRIs8UXIs8LRKs8LRKs7k.Bs8UXLs8CLJ
-s8UXLrrUaNs6.u5s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M-EgA_0QgAM$NgA_0Jg&_9.!<1^N!<:dN!<1^P!<1^P!;P:G!<:dQ!<(XO
-!<:dQ!!:jS!9i,:!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoU@ec,XLeboLIec,XEeH,a$!<1OI!<:UI!<1OK!<1OK!;P+B!<:UL!<(IJ
-!<:UL!!:[N!9hr5!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#X5eH#WFeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-:g&M,Kg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU5eGoTFeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X7ec5[JebfC,ebfBoeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-<gA_0OgA:m1gA:ltg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU7ec,XJeb]@,eb]?oeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5ec,XGeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,:gA_0Lg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5ec,XGeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5eboLGeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,:gAM$Lg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5eboLGeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W4eb]@HeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,9gA:mMg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4eb]@HeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eU[^_!!*%rec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g496c!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eU[^^!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W4eb]@HeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,9gA:mMg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4eb]@HeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W4ec#RHeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,9gAV*Mg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4ec#RHeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5ec,XGeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,:gA_0Lg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5ec,XGeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X)eH#XBec5Z`eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-.g&M-GgA_/eg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU)eGoUBec,W`eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X)eH#XAeH#W`eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-.g&M-Fg&M,eg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU)eGoUAeGoT`eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XAec5XPec42"ec,RMec5[KeH>j%s8W)KrVulIs8W&Jrr9^_!<7r,!<8qH
-s+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-FgA_-Ug&Th,gAV'Rg&M-Pg&h?/!!*#Pr;ciNrrE#OrW'[d!!%o1!!&nM
-s+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoUAec,UPeH","ec#OMeGoUKeH5g%!!*#Kr;ciIrrE#JrW'[_!!%o,!!&nH
-s+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#XBeH>j%ec5X!!<;rH!<<&K"96p%s8LOKs8CISs4,["e^a]Mec3A6!<7r,
-!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-Gg&h?/g&V-+!!)oM!!*#P!s%'/!<1[P!<(UX!8?-,g=cP\g&Sk@!!%o1
-!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoUBeH5g%eH#U!!!)oH!!*#K!s$m%!<1LK!<(FS!7fU"e^XZMeH!>6!!%o,
-!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#XBeH>j%ec5X!!<<#Jrr;uJ"96p%s8LOKs8CLIs8LONs4,["^=<5`MU__,
-VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-Gg&h?/g&V-+!!)uOrW)rO!s%'/!<1[P!<(XN!<1[S!8?-,^=iPeMV8%1
-VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUBeH5g%eH#U!!!)uJrW)rJ!s$m%!<1LK!<(II!<1LN!7fU"^=<2`MU_\,
-VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#XBeH>j%ec5X!!<<&K"96p%s8LONs4,["rm_MYe^a]Ms4,["e^a]Mec3A6
-!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-Gg&h?/g&V-+!!*#P!s%'/!<1[S!8?-,rn7h^g=cP\!8?-,g=cP\g&Sk@
-!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoUBeH5g%eH#U!!!*#K!s$m%!<1LN!7fU"rm_JYe^XZM!7fU"e^XZMeH!>6
-!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#XAec,UKec#OJec5XNec42!rrUaNs8LRKs8LRKs8CLJrrL[M^XW>aMU__,
-VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-FgAV*PgAM$OgA_-Sg&Tk+!!:jS!<1^P!<1^P!<(XO!!1dR^Y/YfMV8%1
-VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUAec#RKeboLJec,UNeH"/!!!:[N!<1OK!<1OK!<(IJ!!1UM^XW;aMU_\,
-VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#X?eH#W<eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-Dg&M,Ag&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU?eGoT<eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XBec,T:eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-GgAV)?g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUBec#Q:eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XGec,W5eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-LgA_/:g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUGec,W5eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XJeboK2eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-OgAM#7g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUJeboK2eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH5d$eb]?0eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&_9.gA:l5g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eH,a$eb]?0eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eU[^_!!*%rec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g496c!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eU[^^!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH5d$ebfE0eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&_9.gACr5g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eH,a$ebfE0eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XJeboK2eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-OgAM#7g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUJeboK2eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XGec,W5eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-LgA_/:g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUGec,W5eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X@ec,X&eGoUJeGoTjeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-EgA_0+g&M-Og&M,og&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU@ec5[&eH#XJeH#WjeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X?eGoU!eGoTjeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-Dg&M-&g&M,og&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU?eH#X!eH#WjeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XAec#RJec,XDec,XJec,XLec,USeH".M!!(OLrRLoJrmgrIb1-LlMU__,
-VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-FgAV*OgA_0IgA_0OgA_0QgA_-Xg&Tj\!!(^QrS%8Orn@;Nb1ZgqMV8%1
-VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUAec,UJec5[Dec5[Jec5[Lec5XSec41Ms8UXLrRLrJrmguIb1-IlMU_\,
-VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#XBeHl6+eH".M!7fU"q:-2[e^XZMeH".M!7_)"!7_)"!7_)"!<(FJ!<(FJ
-!6E[js,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M-Gg'Ic5g&Tj\!8?-,q:ZP`g=cP\g&Tj\!87G,!87G,!87G,!<(UO!<(UO
-!6Ejo!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoUBeHu9+ec41Ms4,["q:-5[e^a]Mec41Ms4./"s4./"s4./"s8CIJs8CIJ
-s2`^j!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#XBeHl6+eH".M!7fU"q:,HFr7);Xe^XZM!7_)"!7_)"!7_)JeGoUJeGoTj
-eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-Gg'Ic5g&Tj\!8?-,q:YfKr7VY]g=cP\!87G,!87G,!87GOg&M-Og&M,o
-g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUBeHu9+ec41Ms4,["q:,KFr7)>Xe^a]Ms4./"s4./"s4./JeH#XJeH#Wj
-eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XBeHl6+eH".M!7fU"q:-2[e^XZMeH".M!7_)"!7_)"!7_)"!<(FJ!<(FM
-!7fU"bLHUmMU__,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-Gg'Ic5g&Tj\!8?-,q:ZP`g=cP\g&Tj\!87G,!87G,!87G,!<(UO!<(UR
-!8?-,bLuprMV8%1VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUBeHu9+ec41Ms4,["q:-5[e^a]Mec41Ms4./"s4./"s4./"s8CIJs8CIM
-s4,["bLHRmMU_\,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#XAec,UQeH".M!!)cDrrE#JrrE)L!s$jOec#OPeH","!7guIrmh#Kb1-Ll
-MU__,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-FgA_-Vg&Tj\!!)cIrrE#OrrE)Q!s%$TgAV'Ug&Th,!8@>Nrn@APb1Zgq
-MV8%1VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUAec5XQec41Ms8ViDs8W&Js8W,L"96pOec,RPec42"s4.&Irmh&Kb1-Il
-MU_\,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X7eb]?EeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-<gA:lJg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU7ebfBEeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X5ec5[,eH#XHeH#XIec5[#eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-:gA_01g&M-Mg&M-NgA_0(g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU5ec,X,eGoUHeGoUIec,X#eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X4eH#X,eH#XAeH#X#eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-9g&M-1g&M-Fg&M-(g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU4eGoU,eGoUAeGoU#eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XBeH,^#rr<#Ks8W#I!<<#Js8W)Ks8W#Irr;uJs8VlErVulIs8W&Jrr:R"
-!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-Gg&V3-rW)uPrrDuN!!)uOrrE&PrrDuNrW)rOrrDiJr;ciNrrE#OrW(O'
-!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoUBeH#[#rW)uKrrDuI!!)uJrrE&KrrDuIrW)rJrrDiEr;ciIrrE#JrW(O"
-!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#XAeH#XJeH>j%ec5Tu!<<&K"96p%s8CIJs8LOKs8:CLs4,["psfBEqpb]H
-rm_,Ne^a]NeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-Fg&M-Og&h?/g&V**!!*#P!s%'/!<(UO!<1[P!;tOQ!8?-,pt>]Jqq;#M
-rn7GSg=cPXg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUAeGoUJeH5g%eH#Qu!!*#K!s$m%!<(FJ!<1LK!;t@L!7fU"psf?EqpbZH
-rm_)Ne^XZNeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XAeH#XJec,UHeH#XKec,UJec,UIec5[Kec,UCeH#XHeH#XKeH>j%ec44N
-!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-Fg&M-OgAV*Mg&M-PgAV*OgAV*NgA_0PgAV*Hg&M-Mg&M-Pg&h?/g&T^X
-!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoUAeGoUJec#RHeGoUKec#RJec#RIec,XKec#RCeGoUHeGoUKeH5g%eH"1N
-!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#XAeH#XJeH>j%ec5Tu!<<&K#liH*s4./"ec5Ns#636(s4,["psfKHe^a^!
-eH#XKeH>j%ec44N!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-Fg&M-Og&h?/g&V**!!*#P#QWT4!87G,g&V$("p!B2!8?-,pt>fMg=cQ+
-g&M-Pg&h?/g&T^X!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoUAeGoUJeH5g%eH#Qu!!*#K#QWE*!7_)"eH#Ks"p!3(!7fU"psfHHe^X[!
-eGoUKeH5g%eH"1N!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#XBec#OIec5[KeboIIec5[Kec5XOec41Mrr;rIs8VfCs8W,Lr;ZfIs8N,M
-s4>d$s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M-GgAM$NgA_0PgACsNgA_0PgA_-Tg&Tj\rW)oNrrDcHrrE)QquHcNrr<)R
-!8#p)!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoUBeboLIec,XKebfFIec,XKec,UOeH".MrW)oIrrDcCrrE)LquHcIrr<)M
-!8#a$!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#WnebfBceH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,sgA:lhg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoTneb]?ceGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5ec,XGeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,:gA_0Lg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5ec,XGeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5eboLGeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,:gAM$Lg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5eboLGeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W4eb]@HeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,9gA:mMg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4eb]@HeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eU[^_!!*%rec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g496c!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eU[^^!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W4eb]@HeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,9gA:mMg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4eb]@HeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W4ec#RHeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,9gAV*Mg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT4ec#RHeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W5ec,XGeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,:gA_0Lg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT5ec,XGeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X@ec5[Eec5[DeH#X=eH#X%eH#XHeH#X@eH#W,eH#WHec19m^&S-0eHMcK
-k2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-EgA_0JgA_0Ig&M-Bg&M-*g&M-Mg&M-Eg&M,1g&M,MgAc`p_Z0Z5g'+2M
-k2s5TJ,~>
-!<E0!joD4BeGoT,eGoU@ec,XEec,XDeGoU=eGoU%eGoUHeGoU@eGoT,eGoTHec19m^&S-0eHMcK
-k2s>WJ,~>
-!<E0!joD4BeH#W,eH#X?eH#XDeH#XDeH#X=eH#X%eH#X9eH#W,eH#WHec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD+?g&Rt,g&M-Dg&M-Ig&M-Ig&M-Bg&M-*g&M->g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5T
-J,~>
-!<E0!joD4BeGoT,eGoU?eGoUDeGoUDeGoU=eGoU%eGoU9eGoT,eGoTHec19m^&S-0eHMcKk2s>W
-J,~>
-!<E0!joD4BeH#W,eH#XAec,UJec5[IeH#XJec5[Kec#OIec5[Eec#OJeH,^#rr3&Ms8W)K"96pO
-s8CLIs8UXLs8:FIs8LRIs8LRKs8CLJs8UURs4./Le^a\WeH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-FgAV*OgA_0Ng&M-OgA_0PgAM$NgA_0JgAM$Og&V3-rW!#R!!*#P!s%$T
-!<(XN!<:dQ!;tRN!<1^N!<1^P!<(XO!<:aW!87DQg=cOag&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUAec#RJec,XIeGoUJec,XKeboLIec,XEeboLJeH#[#rW!#M!!*#K!s$jO
-!<(II!<:UL!;tCI!<1OI!<1OK!<(IJ!<:RR!7_&Le^XYWeGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XBeHu9+ec41Ms4,["rRCoJrm_,Ne^a^!eH#XJeH>j%ec5Ep!<;uI!<;rH
-!<<&K#636(s4,["qUGTGrm_,Ne^a^!eH#XHeH#XKeI2E-ec41Ms4,["ec1NW!<8qHs+BmUs8VuH
-"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-Gg'Ic5g&Tj\!8?-,rRq5Orn7GSg=cQ+g&M-Og&h?/g&Up%!!)rN!!)oM
-!!*#P"p!B2!8?-,qUtoLrn7GSg=cQ+g&M-Mg&M-Pg'[o7g&Tj\!8?-,g&R#a!!&nMs+0aXs8VuM
-"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoUBeHl6+eH".M!7fU"rRClJrm_)Ne^X[!eGoUJeH5g%eH#Bp!!)rI!!)oH
-!!*#K"p!3(!7fU"qUGQGrm_)Ne^X[!eGoUHeGoUKeI)B-eH".M!7fU"eGtKW!!&nHs+BmUs8VuH
-"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#XBeHQ!'ec41Mrr;oH!<<&Krr;rI!<<#Jrr;`C!<;uI!<<#Jrr;uJ"96p%
-s8LRKs8LRJs8LOKs81=Hs81=Hs8LOVs4,["e^a]Mec42"MU__,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-Gg'%K1g&Tj\rW)lM!!*#PrW)oN!!)uOrW)]H!!)rN!!)uOrW)rO!s%'/
-!<1^P!<1^O!<1[P!;kIM!;kIM!<1[[!8?-,g=cP\g&Th,MV8%1VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUBeHGs'eH".MrW)lH!!*#KrW)oI!!)uJrW)]C!!)rI!!)uJrW)rJ!s$m%
-!<1OK!<1OJ!<1LK!;k:H!;k:H!<1LV!7fU"e^XZMeH","MU_\,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#XBeHu9+ec41Ms4,["rRCoJrm_,Ne^a^!eHl3*ec42"e^a]peHZ'(ec41M
-s8LONs4,["rm_,Ne^a]teHQ!'s4,["rm_,Ne^a^!eH>j%ec5X!!<<&K$iec-s4,["e^a]Ms,,>,
-s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M-Gg'Ic5g&Tj\!8?-,rRq5Orn7GSg=cQ+g'@]4g&Th,g=cQ%g'.Q2g&Tj\
-!<1[S!8?-,rn7GSg=cQ)g'%K1!8?-,rn7GSg=cQ+g&h?/g&V-+!!*#P$NSo7!8?-,g=cP\!/fJ1
-!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoUBeHl6+eH".M!7fU"rRClJrm_)Ne^X[!eHc0*eH","e^XZpeHQ$(eH".M
-!<1LN!7fU"rm_)Ne^XZteHGs'!7fU"rm_)Ne^X[!eH5g%eH#U!!!*#K$NS`-!7fU"e^XZM!/f;,
-!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#XAec5XQec41Ms8W)Kr;ZfIs8W#Is8W)Ks8VfCs8W,LrVuoJs8N/Ns4.,K
-"4dGOec,UJec5XMec5X!s8W#Is8W,Lr;ZfIs8W,Lrr2uKrr7l+!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-FgA_-Vg&Tj\!!*#PquHcNrrDuNrrE&PrrDcHrrE)Qr;clOrr<,S!8@DP
-"53_TgAV*OgA_-Rg&V-+rrDuNrrE)QquHcNrrE)QrVurPrW%i0!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoUAec,UQeH".M!!*#KquHcIrrDuIrrE&KrrDcCrrE)Lr;clJrr<,N!7h&K
-"4[AOec#RJec,UMeH#U!rrDuIrrE)LquHcIrrE)LrVurKrW%i+!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#WtebfB]eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-$gA:lbg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoTteb]?]eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5ec,XGeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,:gA_0Lg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5ec,XGeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5eboLGeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,:gAM$Lg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5eboLGeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W4eb]@HeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,9gA:mMg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4eb]@HeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eVO8+s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g5#`dg&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eVF3_eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W4eb]@HeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,9gA:mMg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4eb]@HeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W4ec#RHeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,9gAV*Mg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT4ec#RHeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W5ec,XGeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,:gA_0Lg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT5ec,XGeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X4ec,X9eGoT^eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-9gA_0>g&M,cg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU4ec5[9eH#W^eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X3eGoU9eGoT^eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-8g&M->g&M,cg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU3eH#X9eH#W^eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XAec,XLeH5g%!!)uJrW)`DrrE)Lrr<2P!!(R"r;ciIrrE&K!<C[L!6`mm
-s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M-FgA_0Qg&h?/!!)uOrW)`IrrE)Qrr<2U!!(a,r;ciNrrE&P!<CjQ!6a'r
-!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoUAec5[LeH>j%s8W&Jrr;cDs8W,Ls8N5Ps8UX"rVulIs8W)K!WU^Ls3&pm
-!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#XBeIMZ1eH".M!7fU"e^XZMeH#Eq#lrN+!7fU"e^X[!eGoUJeH5g%eH#U!
-!!(*j!<7r,!<8qHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD+?g&Rt,g&M-Gg(+2;g&Tj\!8?-,g=cP\g&Us&#lr]5!8?-,g=cQ+g&M-Og&h?/g&V-+
-!!(*o!!%o1!!&nMs+0aXs8VuM"ektYk.1PC~>
-!<E0!joD4BeGoT,eGoUBeIV]1ec41Ms4,["e^a]Mec5Hq$3/Q+s4,["e^a^!eH#XJeH>j%ec5X!
-!<:-j!!%o,!!&nHs+BmUs8VuH"f21\k.LbF~>
-!<E0!joD4BeH#W,eH#XBec#RJeHl6+eH".M!7fU"q:,cOe^XZMeH".M!<1LK!<(II!<(FJ!6E[j
-s,,>,s/+?HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M-GgAV*Og'Ic5g&Tj\!8?-,q:Z,Tg=cP\g&Tj\!<1[P!<(XN!<(UO!6Ejo
-!/fJ1!2eKMJb$\Xs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoUBec,UJeHu9+ec41Ms4,["q:,fOe^a]Mec41Ms8LOKs8CLIs8CIJs2`^j
-!/f;,!2e<HKCZ_Us81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#XBeIMZ1eH".M!7fU"e^XZMeH#Eq#lrN+!7fU"e^X[!eHc0*eH","e^X[!
-eGoTjeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-Gg(+2;g&Tj\!8?-,g=cP\g&Us&#lr]5!8?-,g=cQ+g'@]4g&Th,g=cQ+
-g&M,og&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoUBeIV]1ec41Ms4,["e^a]Mec5Hq$3/Q+s4,["e^a^!eHl3*ec42"e^a^!
-eH#WjeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#XAec,XLec#OSeGoU"eGoU"!;Y1F!<(IJ!!1UMrmh#Krmh#KrmgrIb1-Ll
-MU__,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD+?g&Rt,g&M-FgA_0QgAV'Xg&M-,g&M-,!;Y@K!<(XO!!1dRrn@APrn@APrn@;Nb1Zgq
-MV8%1VV;'$o"tG,qq;4Is5rIT!.Y~>
-!<E0!joD4BeGoT,eGoUAec5[Lec,RSec5["ec5["s7t4Fs8CLJrrL[Mrmh&Krmh&KrmguIb1-Il
-MU_\,VUb^!o"G)'qpbkGs5rIW!.Y~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#X1eb]?KeH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M-6gA:lPg&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoU1ebfBKeGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`p_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19m^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19ks81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`ns81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19ks81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec17%^%D=+KE(uKeHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc^(_Y!j0JcGcIg'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec17%^%D=+KE(uKeHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec17'^&S--ec17'^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc^*_Z0Z2gAc^*_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec17'^&S--ec17'^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%^&S-.ec17'^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAca(_Z0Z3gAc^*_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%^&S-.ec17'^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:%^&S-/ec1:%^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAca(_Z0Z4gAca(_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:%^&S-/ec1:%^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:$^&S-0ec1:%^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAca'_Z0Z5gAca(_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:$^&S-0ec1:%^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:$^&S-1ec1:$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAca'_Z0Z6gAca'_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:$^&S-1ec1:$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:#^&S-2ec1:$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAca&_Z0Z7gAca'_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:#^&S-2ec1:$^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:#^&S-3ec1:#^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAca&_Z0Z8gAca&_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:#^&S-3ec1:#^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:"^&S-4ec1:#^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAca%_Z0Z9gAca&_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:"^&S-4ec1:#^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:"^&S*6eUrMP^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAca%_Z0W;g4=hQ_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:"^&S*6eUrMP^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:!]`A*3KD`F_s81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAca$_>sW8Jc*Cbs81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:!]`A*3KD`F_s81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec1:!]`S4dKDW@^s81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAca$_?0agJc!=as81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec1:!]`S4dKDW@^s81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19u^&N`^^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAca#_Z,2a_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19u^&N`^^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19u]`<]]^&S-0eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAca#_>o/`_Z0Z5g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19u]`<]]^&S-0eHMcKk2s>WJ,~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHec19ks81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,MgAc`ns81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHec19ks81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#WHeGt6js81=MV#TT>]`<Q~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,Mg&Q]ms81LRU&X9;\c@6~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoTHeGt6js81=MV#TT>]`<Q~>
-!<E0!joD4BeH#W,eH#W,eH#W,eH#W/eHMcKk2s>WJ,~>
-!<E0!joD+?g&Rt,g&M,1g&M,1g&M,4g'+2Mk2s5TJ,~>
-!<E0!joD4BeGoT,eGoT,eGoT,eGoT/eHMcKk2s>WJ,~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD*+g4@t/g5XeiU&X9;\c@6~>
-!<E0!joD3.eUc8%eW&)_V#TT>]`<Q~>
-!<E0!joD4SeU`@(K7SZXKBC\fV#TT>]`<Q~>
-!<E0!joD+Pg4=g+JUrBTJ`bYiU&X9;\c@6~>
-!<E0!joD4SeU`@(K7SZXKBC\fV#TT>]`<Q~>
-!<E0!joD4SeU`@(K7SZYK)kr6eHMcKk2s>WJ,~>
-!<E0!joD+Pg4=g+JUrBUJH5`4g'+2Mk2s5TJ,~>
-!<E0!joD4SeU`@(K7SZYK)kr6eHMcKk2s>WJ,~>
-!<E0!joD4Sec19n]`J/HJcC<$`W(q2s8V`)s8V63"f21\k.LbF~>
-!<E0!joD+PgAc`q_?'\RJcC<$`W(q7s8V`.s8V68"ektYk.1PC~>
-!<E0!joD4Sec19n]`J/HJcC<$`W(q2s8V`)s8V63"f21\k.LbF~>
-!<E0!joD4Sec19p^&S*5K=uj9JcEai!/$9ErVuT)s8V63"f21\k.LbF~>
-!<E0!joD+PgAc`s_Z0W:J\m!<JcEai!.g-HrVuT.s8V68"ektYk.1PC~>
-!<E0!joD4Sec19p^&S*5K=uj9JcEai!/$9ErVuT)s8V63"f21\k.LbF~>
-!<Bh3SGUk:KD3(Ys8R]Q^&S+`eUc8mec18]^&.j)^&S,peHMJVS=BQZJ,~>
-!<B_0RJY_<JbR%\s8RWO_Z0Xeg4@u"gAc_`_YaB._Z0Yug'*nUR@+$TJ,~>
-!<Bh3SGUk:KD3(Ys8R]Q^&S+`eUc8mec18]^&.j)^&S,peHMJVS=BQZJ,~>
-!!)uB!1`r:s+C-\rVm&OK7gl;s+/^Oe]HAAK8mSEs8UXJs8'G/s5qi8SB\a\S,e'~>
-!!)u?!1E`<s+1!_rVm&TJUt]<s+/mTg<&(KJW7PHs8UgOs8'V4s5r#=REE+PR/ha~>
-!!)uB!1`r:s+C-\rVm&OK7gl;s+/^Oe]HAAK8mSEs8UXJs8'G/s5qi8SB\a\S,e'~>
-!<CCD]`=T"ec1:!^&A!1ec17'^&S+`eUc8mec18]^&S-2ec#OG^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca$_YsN6gAc^*_Z0Xeg4@u"gAc_`_Z0Z7gAV'L_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:!^&A!1ec17'^&S+`eUc8mec18]^&S-2ec#OG^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec1:#^&A!/ec17'^&S+`eUc8mec18]^&S-0ec#OI^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca&_YsN4gAc^*_Z0Xeg4@u"gAc_`_Z0Z5gAV'N_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:#^&A!/ec17'^&S+`eUc8mec18]^&S-0ec#OI^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec1:%^&A!-ec17'^&S+`eUc8mec18]^&S-.ec#LL^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca(_YsN2gAc^*_Z0Xeg4@u"gAc_`_Z0Z3gAV$Q_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:%^&A!-ec17'^&S+`eUc8mec18]^&S-.ec#LL^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ebb!oec17'^&S+`eUc8mec18]^&S--ebt.#s5qi8SB\a\S,e'~>
-!<C:A\cA/qgA?HrgAc^*_Z0Xeg4@u"gAc_`_Z0Z2gAQU&s5r#=REE+PR/ha~>
-!<CCD]`=T"ebb!oec17'^&S+`eUc8mec18]^&S--ebt.#s5qi8SB\a\S,e'~>
-!<CCD]`=T"ec1:%^&<T[ec17'^&S+`eUc8mec18]^&S-.ebt+%^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca(_Yo&^gAc^*_Z0Xeg4@u"gAc_`_Z0Z3gAQR(_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:%^&<T[ec17'^&S+`eUc8mec18]^&S-.ebt+%^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec1:#^&<T]ec17'^&S+`eUc8mec18]^&S-0ebt."^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca&_Yo&`gAc^*_Z0Xeg4@u"gAc_`_Z0Z5gAQU%_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:#^&<T]ec17'^&S+`eUc8mec18]^&S-0ebt."^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec1:!^&<T_ec17'^&S+`eUc8mec18]^&S-2ebt-u^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAca$_Yo&bgAc^*_Z0Xeg4@u"gAc_`_Z0Z7gAQU#_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec1:!^&<T_ec17'^&S+`eUc8mec18]^&S-2ebt-u^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec19t^&<QeeUrLfs8RZ#J^qlms+?<Es8W,LrIas[s8V63"e<iN]po(Q~>
-!<C:A\cA/qgAca"_Yo#hg4=gls8RZ(J_J6"s+-0Hs8W,QrIOg^s8V68"e!NE\sWPK~>
-!<CCD]`=T"ec19t^&<QeeUrLfs8RZ#J^qlms+?<Es8W,LrIas[s8V63"e<iN]po(Q~>
-!<CCD]`=T"ec19r^&3Ka^&S+`eUc8mec18]^&S-2KD<.[s5qi8SB\a\S,e'~>
-!<C:A\cA/qgAc`u_Yerd_Z0Xeg4@u"gAc_`_Z0Z7Jb[+^s5r#=REE+PR/ha~>
-!<CCD]`=T"ec19r^&3Ka^&S+`eUc8mec18]^&S-2KD<.[s5qi8SB\a\S,e'~>
-!<CCD]`=T"ec19p^&EWc^&S+`K7SZqK8mSEs8R`F^&S,peHMJf]tKp9J,~>
-!<C:A\cA/qgAc`s_Z#)f_Z0XeJUrBmJW7PHs8RZD_Z0Yug'*ne]"4:0J,~>
-!<CCD]`=T"ec19p^&EWc^&S+`K7SZqK8mSEs8R`F^&S,peHMJf]tKp9J,~>
-!<CCD]`=T"ec19n]`Ni"s+,fRK>rP']`J.coY(;)k1'X*c+Uf\!.Y~>
-!<C:A\cA/qgAc`q_?,;*s+,`PJ]<8#_?'[foYUY.k1U!,b.>0P!.Y~>
-!<CCD]`=T"ec19n]`Ni"s+,fRK>rP']`J.coY(;)k1'X*c+Uf\!.Y~>
-!<CCD]`=T"ec18Qs+13$s02OceHMJf]tKp9J,~>
-!<C:A\cA/qgAc_Ts+13$s02Ocg'*ne]"4:0J,~>
-!<CCD]`=T"ec18Qs+13$s02OceHMJf]tKp9J,~>
-!<CCD]`=T"eGt5Qs+13$s0)IbeHMJf]tKp9J,~>
-!<C:A\cA/qg&Q\Ts+13$s0)Ibg'*ne]"4:0J,~>
-!<CCD]`=T"eGt5Qs+13$s0)IbeHMJf]tKp9J,~>
-!<CCD]`=RReUc8%eW&)_SB\a\S,e'~>
-!<C:A\cA.Lg4@t/g5XeiREE+PR/ha~>
-!<CCD]`=RReUc8%eW&)_SB\a\S,e'~>
-!<CCC^%%VDUk,=mUogEm^%.Znc2PBWS,e'~>
-!<C:@]()2>Tn/ngTrk!g](26hb5SsQR/ha~>
-!<CCC^%%VDUk,=mUogEm^%.Znc2PBWS,e'~>
-rr<&DrOqgI!53s`JcC<$XoIq9rk/B'!<7Q~>
-rr<&ArOVUC!4ma]JcC<$XoIq6rji0!!<7Q~>
-rr<&DrOqgI!53s`JcC<$XoIq9rk/B'!<7Q~>
-rr<&Dn%A^kJ`_OGJ`a)s!6suG!h98jJ,~>
-rr<&An%&LeJ`_OGJ`a)s!6XcA!gs&gJ,~>
-rr<&Dn%A^kJ`_OGJ`a)s!6suG!h98jJ,~>
-"9AH%S=K,_!1\W&J`_OGXl]W.n\+sm!W`9#J,~>
-"9AH%R@3TV!1AE#J`_OGXl]W+n[eag!W`9#J,~>
-"9AH%S=K,_!1\W&J`_OGXl]W.n\+sm!W`9#J,~>
-"9AK%!!)MYJ\?WJJ\A.unXTUZrr7K~>
-"9AK%!!)MVJ\$EDJ\%qonX9CWrr7K~>
-"9AK%!!)MYJ\?WJJ\A.unXTUZrr7K~>
-"TJH%s8RWMJH16$MZE\TJ,~>
-"TJH%s8RWMJH16$MZE\TJ,~>
-"TJH%s8RWMJH16$MZE\TJ,~>
-%%EndData
-showpage
-%%Trailer
-end
-%%EOF
diff --git a/lib/et/doc/src/sim_trans_move_actor.gif b/lib/et/doc/src/sim_trans_move_actor.gif
deleted file mode 100644
index f7185cada2..0000000000
--- a/lib/et/doc/src/sim_trans_move_actor.gif
+++ /dev/null
Binary files differ
diff --git a/lib/et/doc/src/sim_trans_move_actor.png b/lib/et/doc/src/sim_trans_move_actor.png
new file mode 100644
index 0000000000..c642720a8b
--- /dev/null
+++ b/lib/et/doc/src/sim_trans_move_actor.png
Binary files differ
diff --git a/lib/et/doc/src/sim_trans_move_actor.ps b/lib/et/doc/src/sim_trans_move_actor.ps
deleted file mode 100644
index b459735a82..0000000000
--- a/lib/et/doc/src/sim_trans_move_actor.ps
+++ /dev/null
@@ -1,6403 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: (ImageMagick)
-%%Title: (sim_trans_move_actor.ps)
-%%CreationDate: (Mon Oct 14 16:44:32 2002)
-%%BoundingBox: 0 0 512 426
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 1
-%%Orientation: Portrait
-%%PageOrder: Ascend
-%%Pages: 1
-%%EndComments
-
-%%BeginDefaults
-%%EndDefaults
-
-%%BeginProlog
-%
-% Display a color image. The image is displayed in color on
-% Postscript viewers or printers that support color, otherwise
-% it is displayed as grayscale.
-%
-/DirectClassPacket
-{
- %
- % Get a DirectClass packet.
- %
- % Parameters:
- % red.
- % green.
- % blue.
- % length: number of pixels minus one of this color (optional).
- %
- currentfile color_packet readhexstring pop pop
- compression 0 eq
- {
- /number_pixels 3 def
- }
- {
- currentfile byte readhexstring pop 0 get
- /number_pixels exch 1 add 3 mul def
- } ifelse
- 0 3 number_pixels 1 sub
- {
- pixels exch color_packet putinterval
- } for
- pixels 0 number_pixels getinterval
-} bind def
-
-/DirectClassImage
-{
- %
- % Display a DirectClass image.
- %
- systemdict /colorimage known
- {
- columns rows 8
- [
- columns 0 0
- rows neg 0 rows
- ]
- { DirectClassPacket } false 3 colorimage
- }
- {
- %
- % No colorimage operator; convert to grayscale.
- %
- columns rows 8
- [
- columns 0 0
- rows neg 0 rows
- ]
- { GrayDirectClassPacket } image
- } ifelse
-} bind def
-
-/GrayDirectClassPacket
-{
- %
- % Get a DirectClass packet; convert to grayscale.
- %
- % Parameters:
- % red
- % green
- % blue
- % length: number of pixels minus one of this color (optional).
- %
- currentfile color_packet readhexstring pop pop
- color_packet 0 get 0.299 mul
- color_packet 1 get 0.587 mul add
- color_packet 2 get 0.114 mul add
- cvi
- /gray_packet exch def
- compression 0 eq
- {
- /number_pixels 1 def
- }
- {
- currentfile byte readhexstring pop 0 get
- /number_pixels exch 1 add def
- } ifelse
- 0 1 number_pixels 1 sub
- {
- pixels exch gray_packet put
- } for
- pixels 0 number_pixels getinterval
-} bind def
-
-/GrayPseudoClassPacket
-{
- %
- % Get a PseudoClass packet; convert to grayscale.
- %
- % Parameters:
- % index: index into the colormap.
- % length: number of pixels minus one of this color (optional).
- %
- currentfile byte readhexstring pop 0 get
- /offset exch 3 mul def
- /color_packet colormap offset 3 getinterval def
- color_packet 0 get 0.299 mul
- color_packet 1 get 0.587 mul add
- color_packet 2 get 0.114 mul add
- cvi
- /gray_packet exch def
- compression 0 eq
- {
- /number_pixels 1 def
- }
- {
- currentfile byte readhexstring pop 0 get
- /number_pixels exch 1 add def
- } ifelse
- 0 1 number_pixels 1 sub
- {
- pixels exch gray_packet put
- } for
- pixels 0 number_pixels getinterval
-} bind def
-
-/PseudoClassPacket
-{
- %
- % Get a PseudoClass packet.
- %
- % Parameters:
- % index: index into the colormap.
- % length: number of pixels minus one of this color (optional).
- %
- currentfile byte readhexstring pop 0 get
- /offset exch 3 mul def
- /color_packet colormap offset 3 getinterval def
- compression 0 eq
- {
- /number_pixels 3 def
- }
- {
- currentfile byte readhexstring pop 0 get
- /number_pixels exch 1 add 3 mul def
- } ifelse
- 0 3 number_pixels 1 sub
- {
- pixels exch color_packet putinterval
- } for
- pixels 0 number_pixels getinterval
-} bind def
-
-/PseudoClassImage
-{
- %
- % Display a PseudoClass image.
- %
- % Parameters:
- % class: 0-PseudoClass or 1-Grayscale.
- %
- currentfile buffer readline pop
- token pop /class exch def pop
- class 0 gt
- {
- currentfile buffer readline pop
- token pop /depth exch def pop
- /grays columns 8 add depth sub depth mul 8 idiv string def
- columns rows depth
- [
- columns 0 0
- rows neg 0 rows
- ]
- { currentfile grays readhexstring pop } image
- }
- {
- %
- % Parameters:
- % colors: number of colors in the colormap.
- % colormap: red, green, blue color packets.
- %
- currentfile buffer readline pop
- token pop /colors exch def pop
- /colors colors 3 mul def
- /colormap colors string def
- currentfile colormap readhexstring pop pop
- systemdict /colorimage known
- {
- columns rows 8
- [
- columns 0 0
- rows neg 0 rows
- ]
- { PseudoClassPacket } false 3 colorimage
- }
- {
- %
- % No colorimage operator; convert to grayscale.
- %
- columns rows 8
- [
- columns 0 0
- rows neg 0 rows
- ]
- { GrayPseudoClassPacket } image
- } ifelse
- } ifelse
-} bind def
-
-/DisplayImage
-{
- %
- % Display a DirectClass or PseudoClass image.
- %
- % Parameters:
- % x & y translation.
- % x & y scale.
- % label pointsize.
- % image label.
- % image columns & rows.
- % class: 0-DirectClass or 1-PseudoClass.
- % compression: 0-none or 1-RunlengthEncoded.
- % hex color packets.
- %
- gsave
- /buffer 512 string def
- /byte 1 string def
- /color_packet 3 string def
- /pixels 768 string def
-
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- x y translate
- currentfile buffer readline pop
- token pop /x exch def
- token pop /y exch def pop
- currentfile buffer readline pop
- token pop /pointsize exch def pop
- /Times-Roman findfont pointsize scalefont setfont
- x y scale
- currentfile buffer readline pop
- token pop /columns exch def
- token pop /rows exch def pop
- currentfile buffer readline pop
- token pop /class exch def pop
- currentfile buffer readline pop
- token pop /compression exch def pop
- class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
- grestore
- showpage
-} bind def
-%%EndProlog
-%%Page: 1 1
-%%PageBoundingBox: 0 0 512 426
-DisplayImage
-0 0
-512 426
-12.000000
-512 426
-1
-0
-0
-64
-31446a
-394473
-314473
-000000
-ffffff
-bdbebd
-dedade
-d5d6d5
-949194
-ded6de
-9c999c
-d5d2d5
-c5c2c5
-bdb6bd
-838183
-7b817b
-8b918b
-7b7d7b
-838583
-b4b2b4
-a4a1a4
-bdbabd
-aca5ac
-acaaac
-cdcecd
-c5cac5
-949594
-c5c6c5
-bdc2bd
-b4b6b4
-949994
-838983
-a4a5a4
-acaeac
-9ca19c
-cdcacd
-9c9d9c
-8b8d8b
-d5ced5
-9c959c
-cdc6cd
-e6e6e6
-d5dad5
-8b898b
-b4aeb4
-c5bec5
-a4aaa4
-eeeeee
-ffa500
-ff0000
-0000ff
-ffffff
-ffffff
-ffffff
-ffffff
-ffffff
-ffffff
-ffffff
-ffffff
-ffffff
-ffffff
-ffffff
-ffffff
-ffffff
-000102000203030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303010201020101010103030404040404040404040404040404040405040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404050404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040403030101010202030404060606060606060606060606060606
-060507070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070705060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606062f2f030001010304060606060606060606
-060606060606060606050707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070506060606060606060606060606060606060606060606060606060606060606
-06060606060606060606060606060606060606060606060606060606060c030002030406
-060606060606060606060606060606060605070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-0707070707070707070707070707070707070707190b0707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707050606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606060606060606060606060606060606
-060c03010304060606060606060606060606060606060606060507070707070707070707
-070707070707070707070707070707070707070707080807070707070707070707070707
-07070707070707070707070707070707070707070707070c1407050f111e080807070e0f
-070707070707070707070707070707070707070707070707070707070707070707070707
-07070707070e0f07070e0f07070707070707070707070707070707070707070707070707
-070707070707071405070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070707070707070707070707070707070707
-070707070707070707070707070707070707070705060606060606060606060606060606
-06060606060606060606060a0a0a0a0a0a0a0a0a0a0606060606060606060606060a0a06
-0606060a0a06060606062103030409090909090a0a0909090909090a0a09090909050b0b
-0b0b0b0b0b0b0b0b0b0b0b0c0d0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b08080b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0c0f1d0b2511
-1b2608080b0b0e0f0b0b0c0d0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0e0f0b0b0e0f0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0c
-0d0b0b0b0b0b0b0b0b0b0b0b0b0b0b1d112d0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0509090909090909
-090909090909090909090909090909090909090a0a0a0a0a0a0a0a0a0a09090909090909
-090909090a0a0a0a09090a0a0a0a0909090921030304090909090a0a0a0a090909090a0a
-0a0a090909050b0b0b0b0b0b0b0b0b0b0b0b0b0e0f0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b2b1a0b0b0e0f0b0b0b0b0b0b0e0f0b0b0e0f0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0e0f0b0b0e0f0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0e0f0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b1a2b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0509090909090909090909090909090909090909090909090909090a0a0a0a0a0a0a0a0a
-0a09090909090909090909090a0a0a0a0a0a0a0a0a0a0909090921030304090909090a0a
-0a0a0a09090a0a0a0a0a090909050b0b0b0b0b0b0c101112130b141111110c0b0b0b0b0b
-0b0a11150b0b16120b0e0f0b0b0c101112130b17110c0b0a110c0b0a140b0c101112130b
-0b252516250b0b0b0b1511150b0a111111230e0f0b0b0e0f0b141111110c0c101112130b
-0b252516250b0e0f0b0b0b0b0b0b212b11112b230b212b112b210b0b0b0e0f0b0b0e0f0b
-0b0c101112130b0b212b11112b23141111110c212b112b210b0b0b252516250b0d11150b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0509090909090909090909090909090909090909090909090909090a
-0a0a0a0a0a0a0a0a0a0909090909090909090909090a0a0a0a0a0a0a0a09090909092103
-03040b0b0b0b0b0a0a0a0a0a0a0a0a0a0a0b0b0b0b051818181818190e12151a111b1b0f
-111c181818181818181d111e18181f20180e0f18190e12151a111b15111718121117180e
-1d190e12151a111b180e112b201818181822111b181b0f111c180e0f18180e0f181b0f11
-1c1b0e12151a111b180e112b20182b1f181818181820112b131d2e1b17111a051a111718
-180e0f18180e0f18190e12151a111b20112b131d2e1b1b0f111c2e111a051a111718180e
-112b20181b11221818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-18181818181818181818181818181818050b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0a0b0b0b0b0b0b0b0b0a0b0b0b0b0b0b0b0b0b0b0b0b0b0a0a0a0a0a0a
-0b0b0b0b0b0b210303040b0b0b0b0b0b0a0a0a0a0a0a0a0a0b0b0b0b0b05181818181821
-112223211121180e0f1818181818181818180e0f2305110c180e0f182111222321112118
-111a1b11121e1c112321112223211121180e112318181818181a111818180e0f18180e0f
-18180e0f18180e0f1821112223211121180e112318181818181818181812110c18181818
-1f111b181b111f18180e0f18180e0f182111222321112112110c18181818180e0f181f11
-1b181b111f18180e1123181818111a181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818050b0b0b0b0b0b0b0b0b0b0b
-0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0a0b0b0b0b0b0b0b0b0a0b0b0b0b0b0b0b0b0b0b0b
-0b0b0a0a0a0a0a0a0b0b0b0b0b0b210303040b0b0b0b0b0b0b0a0a0a0a0a0a0b0b0b0b0b
-0b05181818181820111111111120180e0f181818181818181818241121242518180e0f18
-2011111111112018100e21081e1217251820111111111120180e0f1818181818181a1118
-18180e0f18180e0f18180e0f18180e0f1820111111111120180e0f181818181818181818
-18111118181818180f11181818111118180e0f18180e0f18201111111111201111181818
-1818180e0f180f11181818111118180e0f18181818111a18181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-1818181818181818181818181818181818181818181818181818181818181818050b0b0b
-0b0b150a0a0a0a0a0a0a0a150b0b0b0b0b0b0b0b0b0b0b0a0b0b0b0b0b0b0b0b0a0b0b0b
-0b0b0b0b0b0b0b0b0b0a0a0a0a0a0a0a0a0b0b0b0b0b210303040b0b0b0b0b0b0b0b0a0a
-0a0a0b0b0b0b0b0b0b05181818181821112218181818180e0f1818181818181818181511
-250e1718180e0f18211122181818181814112520171125141821112218181818180e0f18
-181818181814111b18180e0f18180e0f18180e0f18180e0f1821112218181818180e0f18
-181818181818181818121105181818181f111b181b111f18180e0f18180e0f1821112218
-18181812110518181818180e0f181f111b181b111f18180e0f1818181b11221818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-181818181818181818181818181818181818181818181818181818181818181818181818
-18181818050b0b0b0b0b0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0a0b0b0b0b
-0b0b0b0b0a0b0b0b0b0b0b0b0b0b0b0b0a0a0a0a0a0a0a0a0a0a0b0b0b0b210303042626
-2626262626262627272626262626262626052323232323281211201d2113231f111d2823
-232323232323231211111b23230e0f23281211201d2113231d11110d1511111d23281211
-201d2113230e0f23232323232315112c23230e0f23230e0f23230e0f23231f111d0c1211
-201d2113230e0f2323232b1f2323232323171112210d170c17111a151a111623230e0f23
-230e0f23281211201d2113171112210d170c231f111d20111a151a111623230e0f232323
-2c110d232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323052626262626272727272727272727272626262626262626
-262626272626262626262626272626262626262626262626272727272626272727272626
-26262103030426262626262626262626262626262626262626052323232323230c1a0f11
-122123130e0f1523232323232323231411082323230e0f23230c1a0f1112212328111123
-2311112823230c1a0f111221230e0f23232323232323252523230e0f23230e0f23230e0f
-2323130e0f150c1a0f111221230e0f2323230e0f232323232323172b11112b2d23161211
-12172323230e0f23230e0f23230c1a0f11122123172b11112b2d23130e0f151612111217
-2323230e0f23232325252323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-23232323232323232323232323232323232323230526262626260d27272727272727270d
-262626262626262626262627272727272727272727262626262626262626262626272726
-262626272726262626262103030426262626262626262626262626262626262626052323
-232323232323232323232323232311111111111111152323232323232323232323232323
-2323232323232323232323232323232323232323232323232323232323230c0e16232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323170e0c232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323230526262626262626
-262626262626262626262626262626262626262626262626262626262626262626262626
-262626262626262626262626262626262626210303042323232323232323232323232323
-2323232323051b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b05141b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b14051b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-052323232323232323232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232321030304232323232323
-23232323232323232323232323051b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b05232323232323232323232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232103
-030423232323232323232323232323232323232323051b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b
-1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b0523232323232323232323232323232323232323
-232323232323232323232323232323232323232323232323232323232323232323232323
-2323232323232103030e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e030304292929140404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404140429291503030429292914040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040e14042929150303042929
-291404042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1404
-2929150303042929291404042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a0e0e14042929150303042929291404042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a0e0e14042929150303042929291404042a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1404292915030304292929140404
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e140429291503
-03042929291404042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-0e0e14042929150303042929291404042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a0e0e14042929150303042929291404042a2a2a2a2a2a2a0303030303
-0303032a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a03030303
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a030303032a2a2a2a2a2a2a2a03032a03032a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-03030303030303032a03032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a03032a2a2a03032a2a2a2a2a2a2a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e14042929150303042929291404042a2a2a2a
-2a2a2a03032a2a2a2a2a2a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0303
-2a2a2a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a03032a2a2a2a2a2a2a03032a03032a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a03032a2a2a2a2a2a2a03032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a03032a2a2a2a2a2a2a2a03032a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e14042929150303042929
-291404042a2a2a2a2a2a2a03032a2a2a2a03032a03032a2a030303032a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a03032a2a03032a03032a2a030303032a2a03032a2a03032a2a03032a2a
-030303032a2a03032a03032a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a2a2a03030303
-2a2a03032a03032a2a030303032a2a2a030303032a2a030303032a2a030303032a2a0303
-2a03032a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a03032a03032a030303032a2a0303
-03032a2a03032a03032a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a03032a2a030303032a
-2a03032a03032a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1404
-2929150303042929291404042a2a2a2a2a2a2a03032a2a2a2a03032a03032a03032a2a03
-032a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a03032a03032a03032a2a03032a03032a2a
-03032a2a03032a03032a2a03032a03030303032a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a
-2a2a2a03032a2a03032a03032a03032a03032a2a03032a03032a2a03032a2a03032a2a03
-032a2a03032a03030303032a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a03032a03032a
-2a03032a2a03032a2a03032a03030303032a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a03
-032a03032a2a03032a03032a0303032a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a0e0e14042929150303042929291404042a2a2a2a2a2a2a03030303032a03032a
-03032a03032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a03032a03032a03032a
-2a03032a2a03032a03032a03032a2a03032a2a03032a0303032a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a03032a2a2a2a2a03032a2a03032a03032a03032a03032a2a03032a03032a2a2a
-2a2a2a03032a2a03032a2a03032a0303032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03030303
-032a03032a03032a2a03032a2a03032a2a03032a0303032a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a030303030303032a03032a2a03032a03032a03032a2a03032a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a0e0e14042929150303042929291404042a2a2a2a2a2a2a03
-032a2a2a2a03032a03032a0303030303032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a032a2a03
-2a2a03032a0303030303032a2a03032a03032a03032a2a0303030303032a03032a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a2a03032a2a03032a03032a03032a03030303
-03032a03032a2a2a2a2a2a03032a2a03032a2a03032a03032a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a03032a2a2a2a03032a03032a2a03032a2a0303030303032a03032a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a03032a2a2a03032a0303030303032a03032a03032a2a03032a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1404292915030304292929140404
-2a2a2a2a2a2a2a03032a2a2a2a03032a03032a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a030303032a2a03032a03032a2a2a2a2a2a03032a03032a03032a2a03032a2a2a
-2a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a2a03032a2a03032a0303
-2a03032a03032a2a2a2a2a03032a2a2a2a2a2a03032a2a03032a2a03032a03032a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a03032a03032a2a03032a2a03032a2a2a2a2a
-03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a03032a03032a2a2a2a2a03032a
-03032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e140429291503
-03042929291404042a2a2a2a2a2a2a03032a2a2a2a03032a03032a03032a2a03032a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a03032a03032a2a03032a2a2a03032a2a0303
-2a2a2a03032a2a03032a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a030303
-032a2a03032a03032a03032a03032a2a03032a03032a2a03032a2a03032a0303032a2a03
-032a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a03032a03032a2a03032a
-0303032a2a03032a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a03032a0303
-2a2a03032a03032a0303032a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-0e0e14042929150303042929291404042a2a2a2a2a2a2a03032a2a2a2a03032a03032a2a
-030303032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a03032a2a030303032a2a
-2a2a03032a2a03032a2a2a2a030303032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a030303032a2a030303032a2a03032a03032a2a030303032a2a2a030303032a2a2a2a
-03032a2a030303032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a0303
-2a03032a2a2a03032a2a030303032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0303
-2a2a2a03032a2a030303032a2a03032a03032a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a0e0e14042929150303042929291404042a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e14042929150303042929291404042a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e14042929150303042929
-291404042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1404
-2929150303042929291404042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a0e0e14042929150303042929291404042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a0e0e14042929150303042929291404042a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1404292915030304292929140404
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e140429291503
-03042929291404042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-0e0e14042929150303042929291404040e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e140429291503030429292914040e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03030303032a2a2a2a2a2a2a2a2a2a2a0303
-2a2a2a2a2a2a2a2a2a03032a03032a2a2a2a2a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a03032a2a2a2a
-2a2a2a2a2a2a03032a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a2a2a03032a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a04040404
-040404040404042a2a2a2a2a2a2a2a0303030303032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0303
-2a2a2a03032a2a030303032a2a030303032a2a030303032a2a03032a03032a2a2a2a2a2a
-03032a2a2a2a2a030303032a2a03032a2a2a03032a2a030303032a2a03032a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a040404040404040404040e2a2a2a2a2a2a2a2a03032a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a03032a2a2a03032a03032a2a03032a2a03032a2a03032a2a03032a03032a
-03032a2a2a2a2a2a03032a2a2a2a03032a2a03032a03032a2a2a03032a03032a2a03032a
-03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a04042a2a2a2a2a2a2a0e0e2a2a2a2a2a2a2a2a03032a2a2a
-2a03032a03032a030303032a2a2a030303032a2a03030303032a2a030303032a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a03032a03032a2a03032a2a03032a2a2a2a
-2a2a03032a03032a03032a2a2a2a2a2a03032a2a2a2a03032a2a03032a2a03032a03032a
-2a03032a2a03032a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a04042a2a2a2a2a2a2a0e0e2a2a2a2a2a
-2a2a2a03032a2a2a2a030303030303032a2a03032a03032a2a03032a2a2a2a03032a0303
-2a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a03032a030303030303
-2a2a03032a2a2a03030303032a03032a03032a2a2a2a2a2a03032a2a2a2a030303030303
-2a2a03032a03032a2a0303030303032a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a04042a2a2a2a2a2a
-2a0e0e2a2a2a2a2a2a2a2a03030303032a0303032a2a03032a2a03032a03032a2a03032a
-2a2a03032a2a03032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a03
-032a03032a2a2a2a2a2a03032a2a03032a2a03032a03032a03032a2a2a2a2a2a03032a2a
-2a2a03032a2a2a2a2a2a2a0303032a2a2a03032a2a2a2a2a03032a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-04042a2a2a2a2a2a2a0e0e2a2a2a2a2a2a2a2a03032a2a2a2a03032a2a2a030303030303
-2a0303030303032a2a2a032a2a2a0303030303032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a03032a2a03032a2a03032a2a03032a2a03032a0303032a2a03032a03032a03032a2a
-2a2a2a2a03032a2a2a2a03032a2a03032a2a2a0303032a2a2a03032a2a03032a03032a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a04042a2a2a2a2a2a2a0e0e2a2a2a2a2a2a2a2a03032a2a2a2a03032a
-2a2a03032a2a2a2a2a03032a2a2a2a2a2a03032a2a2a03032a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a03030303032a2a2a2a030303032a2a2a2a03032a2a0303032a03
-0303032a03032a2a2a2a2a2a0303030303032a030303032a2a2a2a2a032a2a2a2a2a0303
-03032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a04042a2a2a2a2a2a2a0e0e2a2a2a2a2a2a2a2a03
-032a2a2a2a03032a2a2a03032a2a03032a03032a2a03032a03032a2a2a2a03032a2a0303
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a04042a2a2a2a2a2a2a0e0e2a
-2a2a2a2a2a2a2a03032a2a2a2a03032a2a2a2a030303032a2a2a030303032a2a03030303
-032a2a030303032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a04040e0e
-0e0e0e0e0e0e0e2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a030303032a2a2a03030303
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a030303032a2a2a03032a2a
-03032a03032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03
-032a2a2a03032a2a03032a03032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a03032a2a2a03032a2a03032a03032a2a03032a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a03032a2a03032a03032a2a03032a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a03032a2a03032a03
-032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a04040404040404040404042a2a2a2a2a2a2a2a03032a2a2a
-03032a03032a2a2a2a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a0303030303032a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03030303030303032a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a
-03032a2a03032a03032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a040404040404040404040e2a2a2a2a2a
-2a2a2a03032a2a2a03032a2a2a2a2a2a2a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a03032a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a03032a2a2a03032a2a03032a03032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a04042a2a2a2a2a2a
-2a0e0e2a2a2a2a2a2a2a2a03032a2a2a03032a03032a2a03032a03032a2a030303032a2a
-2a2a2a2a2a03032a2a2a2a03032a03032a030303032a2a032a0303032a0303032a2a2a2a
-2a2a2a2a2a2a2a2a03032a2a2a2a030303032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a030303032a2a2a030303032a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-04042a2a2a2a2a2a2a0e0e2a2a2a2a2a2a2a2a03032a2a2a03032a03032a03032a030303
-2a03032a2a03032a2a2a2a2a2a03032a2a2a2a030303030303032a2a03032a03032a2a03
-032a2a03032a2a2a2a2a2a2a2a2a2a2a03032a2a2a03032a2a03032a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a04042a2a2a2a2a2a2a0e0e2a2a2a2a2a2a2a2a030303030303032a03
-032a03032a2a03032a03032a2a03032a2a2a2a2a2a03030303032a0303032a2a03032a2a
-03032a03032a2a03032a2a03032a0303030303032a2a2a2a03032a2a2a03032a2a03032a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a04042a2a2a2a2a2a2a0e0e2a2a2a2a2a2a2a2a03
-032a2a2a03032a03032a03032a2a03032a0303030303032a2a2a2a2a2a03032a2a2a2a03
-032a2a2a03032a2a03032a03032a2a03032a2a03032a2a2a2a2a2a2a2a2a2a2a03032a2a
-2a03032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a04042a2a2a2a2a2a2a0e0e2a
-2a2a2a2a2a2a2a03032a2a2a03032a03032a03032a2a03032a03032a2a2a2a2a2a2a2a2a
-2a03032a2a2a2a03032a2a2a03032a2a03032a03032a2a03032a2a03032a030303030303
-2a2a2a2a03032a2a2a03032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a04042a2a
-2a2a2a2a2a0e0e2a2a2a2a2a2a2a2a03032a2a2a03032a03032a03032a0303032a03032a
-2a03032a2a2a2a2a2a03032a2a2a2a03032a2a2a03032a2a03032a03032a2a03032a2a03
-032a2a2a2a2a2a2a2a2a2a2a03032a2a2a03032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a04042a2a2a2a2a2a2a0e0e2a2a2a2a2a2a2a2a03032a2a2a03032a03032a2a03
-032a03032a2a030303032a2a2a2a2a2a2a03032a2a2a2a03032a2a2a2a030303032a2a03
-032a2a03032a2a03032a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a030303032a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a04040e0e0e0e0e0e0e0e0e2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04040404
-040404040404040404040404040404040404040404040404040404042a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c04040404040404040404040404040404040404040404040404040404040e0404
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a2a2a2a2a2a2a0e042a2a2a2a2a2a2a2a
-2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a2a2a2a2a2a2a0e04
-2a2a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a
-2a2a2a2a2a2a0e042a2a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-04042a2a2a2a2a2a2a2a2a2a2a2a0e042a2a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c04042a2a2a2a2a2a2a2a2a2a2a2a0e042a2a2a2a2a2a2a2a2a2a2a2a
-0e0e04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a2a2a2a2a2a2a0e042a2a2a2a
-2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a2a2a2a2a
-2a2a0e042a2a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a
-2a2a2a2a2a2a2a2a2a2a0e042a2a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a0404040404040404
-0404042a2a2a2a2a2a2a2a03032a2a2a03032a03032a2a2a2a2a03032a2a2a2a2a2a2a2a
-2a2a2a2a2a03032a2a2a03032a2a2a2a2a2a2a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c04042a2a2a2a2a2a2a2a2a2a2a2a0e042a2a2a2a2a2a2a2a2a2a2a2a0e0e0404
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-040404040404040404040e2a2a2a2a2a2a2a2a03032a2a2a03032a2a2a2a2a2a2a2a0303
-2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a03032a2a2a2a2a2a2a2a03032a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a2a2a2a2a2a2a0e042a2a2a2a2a2a2a2a
-2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a04042a2a2a2a2a2a2a0e0e2a2a2a2a2a2a2a2a03032a2a2a03032a03
-032a2a03032a03032a2a030303032a2a2a2a2a2a2a03032a2a2a03032a03032a03032a2a
-03032a2a03032a03032a03032a2a2a030303032a2a03032a2a03032a2a03032a03032a03
-032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a2a2a2a2a2a2a0e04
-2a2a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a04042a2a2a2a2a2a2a0e0e2a2a2a2a2a2a2a2a03
-032a2a2a03032a03032a03032a0303032a03032a2a03032a2a2a2a2a2a03032a2a2a0303
-2a0303032a03032a03032a03032a2a0303032a03032a03032a2a03032a03032a2a03032a
-2a03032a0303032a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04040e0e0e0e0e0e
-0e0e0e0e0e0e0e040e0e0e0e0e0e0e0e0e0e0e0e0e0e04042a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a04042a2a2a2a2a2a2a0e0e2a
-2a2a2a2a2a2a2a030303030303032a03032a03032a2a03032a03032a2a03032a2a2a2a2a
-2a03032a2a2a03032a03032a2a03032a030303032a2a2a03032a2a03032a03032a2a0303
-2a2a03032a03032a03032a2a03032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-040e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e04042a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a04042a2a
-2a2a2a2a2a0e0e2a2a2a2a2a2a2a2a03032a2a2a03032a03032a03032a2a03032a030303
-0303032a2a2a2a2a2a03032a2a2a03032a03032a2a03032a030303032a2a2a03032a2a03
-032a03032a2a03032a2a03032a03032a03032a2a03032a2a03032a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a04042a2a2a2a2a2a2a0e0e2a2a2a2a2a2a2a2a03032a2a2a03032a03032a0303
-2a2a03032a03032a2a2a2a2a2a2a2a2a2a03032a2a2a03032a03032a2a03032a03032a03
-032a2a03032a2a03032a03032a2a03032a2a03032a03032a03032a2a03032a2a03032a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-0e0404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-0404040404040404040404042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a04042a2a2a2a2a2a2a0e0e2a2a2a2a2a2a2a2a03032a2a2a
-03032a03032a03032a0303032a03032a2a03032a2a2a2a2a2a2a03032a03032a2a03032a
-2a03032a03032a2a03032a03032a2a03032a03032a2a03032a2a2a03032a2a03032a2a2a
-03032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a04042a2a2a2a2a2a2a0e0e2a2a2a2a2a
-2a2a2a03032a2a2a03032a03032a2a03032a03032a2a030303032a2a2a2a2a2a2a2a0303
-0303032a2a03032a2a03032a03032a2a2a030303032a2a03032a2a030303032a2a2a2a03
-032a2a03032a2a2a03032a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a04040e0e0e0e0e0e
-0e0e0e2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e2a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c0e1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c040e1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c040e0e1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c04040e0e1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c04042a0e0e1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c04042a2a0e0e1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c04
-042a2a2a0e0e1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c04042a2a2a2a0e0e1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c04042a2a2a2a2a0e0e1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c04042a2a2a2a2a2a0e0e1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c04042a2a2a2a2a
-2a2a0e0e1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a31312a2a2a2a2a2a2a2a2a2a2a2a31312a2a2a2a31312a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a31
-312a2a2a2a2a2a2a2a2a2a2a2a2a2a31312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-04042a2a2a2a2a2a2a2a0e0e1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a30302a2a303030302a30303030302a30302a30302a3030302a
-2a30302a2a30302a30303030302a3030302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a312a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c04042a2a2a2a2a2a2a2a2a0e0e1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a302a2a302a2a302a2a302a302a
-2a2a302a2a302a2a302a2a302a302a2a2a302a2a302a2a302a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a31312a312a
-2a31312a31312a2a2a2a2a2a2a2a2a3131312a2a3131312a2a2a2a31312a2a2a2a2a312a
-2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a31312a312a2a312a31312a2a2a2a31312a2a2a2a3131312a2a2a31312a
-2a2a31312a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a31312a2a2a2a31312a2a2a312a3131
-2a2a2a31312a2a2a312a3131312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a31312a312a2a312a31312a2a2a2a31312a
-2a2a2a3131312a2a2a31312a2a2a31312a2a2a2a2a2a2a2a2a2a313131312a31312a312a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e04040e0e0e0e0e0e0e0e0e0e0e0e1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a302a2a3030
-2a302a2a30302a2a2a2a30302a302a2a302a2a302a302a302a302a2a30302a302a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a312a312a312a2a312a2a312a2a2a2a2a2a2a2a312a2a2a2a2a312a2a312a2a312a
-2a312a2a2a2a312a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a312a312a2a312a2a312a2a312a2a312a2a312a
-2a2a2a2a2a2a312a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a312a2a2a312a2a312a2a312a
-2a312a2a312a312a2a2a312a2a312a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a312a312a2a312a
-2a312a2a312a2a312a2a312a2a2a2a2a2a2a312a2a2a2a2a312a2a2a2a2a2a2a2a2a2a31
-2a2a2a312a312a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e040e0e0e0e0e0e0e0e0e0e0e0e
-0e0e04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-302a2a302a2a302a30302a2a302a302a2a2a302a30302a2a302a2a302a302a302a302a2a
-302a30302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a312a312a312a2a312a2a312a2a2a2a2a2a2a2a2a31312a2a2a
-312a2a312a2a3131312a2a2a2a2a312a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a312a312a2a312a2a312a2a
-3131312a2a2a2a31312a2a2a2a2a312a2a2a3131312a2a2a2a2a2a2a2a2a2a2a312a2a2a
-312a2a312a2a312a2a2a2a2a31312a2a2a2a3131312a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a31
-2a312a312a2a312a2a312a2a3131312a2a2a2a31312a2a2a2a2a312a2a2a3131312a2a2a
-2a2a2a2a2a2a2a312a2a2a312a312a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a302a2a302a2a302a2a302a2a302a2a302a2a302a2a302a2a302a2a30
-2a2a302a302a2a2a302a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a312a312a2a312a2a312a2a2a2a2a2a
-2a2a2a2a2a312a2a312a2a312a2a312a2a312a2a2a2a312a2a2a2a2a312a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a312a31
-2a2a312a2a312a2a312a2a312a2a2a2a2a312a2a2a2a312a2a312a2a312a2a2a2a2a2a2a
-2a2a2a2a312a2a2a312a2a312a2a312a2a312a2a312a312a2a2a312a2a312a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a312a312a312a2a312a2a312a2a312a2a312a2a2a2a2a312a2a2a2a312a
-2a312a2a312a2a2a2a2a2a2a2a2a2a312a2a31312a312a312a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e04040404040404040404040404040404042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a30302a2a30302a2a302a3030302a2a3030302a
-2a302a2a2a30302a2a2a302a302a2a30302a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a312a31312a2a31
-312a2a2a2a2a2a2a2a2a3131312a2a3131312a31312a2a31312a2a2a31313131312a3131
-3131312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a312a312a31313131312a31312a2a31312a2a2a3131312a2a2a31313131312a3131
-2a312a2a2a2a2a2a2a2a31313131312a2a31312a2a2a2a31312a2a31312a31312a2a2a31
-312a2a2a313131312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a312a31313131312a31312a2a31312a2a2a3131
-312a2a2a31313131312a31312a312a2a2a2a2a2a2a2a2a2a31312a312a312a31312a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e04040404040404040404040404040e04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a0e0e0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a31312a2a2a2a3131313131312a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a3131313131312a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a3131313131
-312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a2a
-2a2a2a2a0e0e04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e04
-042a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a
-0e0e04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a
-2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e04042a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a0e0e0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a2a
-2a2a2a2a0e0e04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e04
-042a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a
-0e0e04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a
-2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e04042a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e04042a2a2a2a2a2a2a2a2a2a2a0e0e0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e04040e0e0e0e0e0e0e
-0e0e0e0e0e0e04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e04
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a312a2a2a2a2a31312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a312a31312a2a2a2a31312a2a312a312a31312a2a2a2a2a2a2a313131312a2a
-2a31312a2a2a2a3131312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a312a2a312a2a312a2a312a312a312a312a2a2a2a2a2a
-2a2a2a312a2a2a2a2a2a312a2a2a312a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a312a2a312a2a3131312a2a312a31
-2a312a2a2a2a2a2a2a2a2a312a2a2a2a2a2a312a2a2a312a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a312a2a312a2a
-312a2a312a2a312a312a2a2a2a2a2a2a2a2a2a312a2a312a2a2a312a2a2a312a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a3131312a31312a2a31312a2a2a312a312a2a2a2a2a2a2a2a2a2a2a31312a2a31313131
-312a2a31312a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a31
-31313131312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a030303032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a0303030303032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-0303030303312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a03030303032a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a030303032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a31312a2a2a2a2a2a2a2a2a2a2a2a2a2a31312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a313131312a2a
-312a31313131312a31312a2a2a2a2a2a2a312a312a31312a312a3131312a2a31312a2a2a
-313131312a2a2a31312a2a2a2a2a2a2a2a2a2a2a312a2a2a2a31312a2a2a2a31312a2a2a
-312a31312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a312a2a2a2a2a312a2a2a2a312a2a312a2a2a2a2a2a2a312a312a312a2a2a312a2a
-2a2a2a2a312a2a2a2a312a2a2a2a312a2a312a2a2a2a2a2a2a2a2a2a312a2a2a312a2a31
-2a2a312a2a312a2a312a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a312a2a2a2a312a2a312a2a2a2a2a2a2a312a31
-2a312a2a2a312a2a2a2a2a2a312a2a2a2a312a2a2a2a3131312a2a2a2a2a2a2a2a2a2a2a
-312a2a2a312a2a312a2a312a2a2a2a2a31312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a312a2a312a2a312a2a2a2a312a2a312a2a
-2a2a2a2a2a2a312a312a2a2a2a312a2a2a2a2a2a312a2a2a2a312a2a312a312a2a312a2a
-2a2a2a2a2a2a2a2a312a2a2a312a2a312a2a312a2a312a2a312a312a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a31312a2a31313131
-2a2a2a31312a2a2a2a2a2a2a2a2a312a312a2a2a313131312a2a31313131312a2a2a3131
-2a2a2a31312a2a2a2a2a2a2a2a2a31313131312a2a31312a2a2a2a31312a2a31312a3131
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a31312a2a2a2a3131313131312a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a3131313131312a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a030303032a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0303030303032a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a03030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-0303030303030303030303030303030303312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0303030303032a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0303032a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a
-2a2a2a2a31312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a31
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a31312a312a312a3131312a31312a2a2a31
-2a31312a2a2a313131312a2a2a31312a2a2a2a3131312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a312a2a312a2a2a312a2a
-2a2a2a2a312a2a2a312a2a312a2a2a312a2a2a2a312a2a312a2a312a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a312a
-2a312a2a2a312a2a2a2a3131312a2a2a312a2a312a2a2a312a2a2a2a3131312a2a2a312a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a312a2a312a2a2a312a2a2a312a2a312a2a2a312a2a312a2a2a312a2a312a
-312a2a312a2a312a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a3131312a2a313131312a2a31312a312a3131312a31
-312a2a2a31312a2a2a31312a2a2a2a31312a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a3131312a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a03032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a030303032a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a0303030303032a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-0303030303312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a03030303032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a030303032a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a03032a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a32322a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a322a
-2a2a2a322a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a322a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a322a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a3232322a2a2a32322a2a2a2a2a2a2a2a2a2a32322a2a2a2a32322a2a32
-322a322a2a32322a322a2a2a2a32322a2a2a323232322a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a322a2a322a2a322a2a322a2a2a2a2a2a2a2a322a2a32
-2a2a322a2a322a322a322a322a322a322a322a2a2a2a322a2a2a2a322a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a322a2a322a2a322a2a322a2a2a2a
-2a2a2a2a322a2a2a2a2a322a2a322a322a322a322a322a322a322a2a2a2a322a2a2a2a32
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a322a2a322a2a
-322a2a322a2a2a2a2a2a2a2a322a2a322a2a322a2a322a322a322a322a322a322a322a2a
-2a2a322a2a2a2a322a2a322a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a32322a322a2a32322a2a2a2a2a2a2a2a2a2a32322a2a2a2a32322a2a322a322a32
-32322a322a32322a32323232322a2a2a32322a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a3232323232322a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a31312a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a312a
-2a2a2a2a31312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a31
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a312a3131312a
-2a31312a2a2a2a2a312a2a2a2a31312a2a2a31312a2a2a2a2a3131312a2a2a31312a2a2a
-2a2a2a2a2a2a313131312a2a2a31312a2a2a2a3131312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a312a2a2a2a312a2a312a2a2a2a312a2a2a312a2a312a2a2a2a312a2a2a312a2a2a
-2a2a312a2a312a2a2a2a2a2a2a2a2a312a2a2a2a2a2a312a2a2a312a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a3131312a2a2a2a2a312a2a2a3131312a2a2a3131
-312a2a2a2a31312a2a2a3131312a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a312a2a2a312a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a312a2a312a2a2a2a312a2a2a
-312a2a312a312a2a312a2a2a2a2a2a312a2a312a2a312a2a2a2a2a2a2a2a2a312a2a312a
-2a2a312a2a2a312a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a313131312a2a2a31312a
-2a2a31313131312a2a31312a2a2a31312a312a2a3131312a2a2a2a31312a2a2a2a2a2a2a
-2a2a2a2a31312a2a31313131312a2a31312a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a3131313131312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a030303032a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0303030303032a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a03030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-0303030303030303030303030303030303312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0303030303032a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0303032a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a31312a2a2a2a2a2a2a2a2a31312a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a31
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a3131312a2a2a31312a2a2a2a2a312a2a2a
-2a31312a2a2a313131312a2a2a31312a2a2a2a2a2a2a2a2a313131312a2a312a3131312a
-31312a2a2a312a31312a2a2a2a3131312a2a31312a2a2a2a2a31312a2a2a313131312a2a
-2a31312a2a2a2a31312a2a312a31312a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a312a2a312a2a312a2a31
-2a2a2a2a312a2a2a312a2a312a2a2a312a2a2a2a312a2a312a2a2a2a2a2a2a2a2a312a2a
-2a2a2a312a2a2a2a2a2a312a2a2a312a2a312a2a312a2a2a2a2a2a2a312a2a2a312a2a31
-2a2a2a312a2a2a2a2a2a312a2a2a312a2a312a2a312a2a312a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a312a
-2a312a2a3131312a2a2a2a2a312a2a2a3131312a2a2a2a312a2a2a2a3131312a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a312a2a2a2a3131312a2a2a312a2a312a2a2a31312a2a2a3131
-312a2a2a312a2a2a2a2a2a312a2a2a2a2a2a312a2a2a312a2a312a2a312a2a312a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a312a2a312a2a312a2a312a2a2a2a312a2a2a312a2a312a2a2a312a2a312a
-312a2a312a2a2a2a2a2a2a2a2a312a2a312a2a312a2a2a312a2a312a2a2a312a2a312a2a
-2a2a2a312a312a2a312a2a2a312a2a312a2a2a312a2a312a2a2a312a2a2a312a2a312a2a
-312a2a312a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a31312a312a2a31312a2a2a31313131312a2a31312a
-2a2a2a2a31312a2a2a31312a2a2a2a2a2a2a2a2a2a2a31312a2a313131312a2a31312a31
-2a3131312a31312a3131312a2a2a31312a312a2a2a31312a2a2a2a2a31312a2a31313131
-312a2a31312a2a3131312a3131312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a3131313131312a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a030303032a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0303030303032a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-0303030303030303030303030303030303312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0303030303032a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0303032a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a03032a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a32322a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a322a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a322a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a32
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a32322a2a322a32322a2a2a2a3232322a2a2a2a2a2a2a2a2a32322a2a32
-322a32322a2a323232322a2a2a32322a2a2a322a3232322a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a322a2a322a2a322a2a322a2a322a2a322a2a2a2a2a2a
-2a2a322a2a322a2a322a2a322a2a2a322a2a2a2a322a2a322a2a2a322a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a3232322a2a2a322a2a322a2a322a
-2a322a2a2a2a2a2a2a2a322a2a322a2a322a2a322a2a2a322a2a2a2a3232322a2a2a2a32
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a322a2a322a2a
-322a2a322a2a322a2a322a2a2a2a2a2a2a2a322a2a322a2a322a2a322a2a2a322a2a322a
-322a2a322a2a2a322a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a32322a2a3232322a32322a2a32322a322a2a2a2a2a2a2a2a32322a2a2a2a32322a
-322a2a2a32322a2a2a32322a2a2a323232322a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a32
-32323232322a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e04040404040404040404040404040404042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c040404040404040404040404040e04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c04042a2a2a2a2a2a2a2a2a0e0e1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c04042a2a2a2a2a
-2a2a2a0e0e1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c04042a2a2a2a2a2a2a0e0e1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c04042a2a2a2a2a2a0e0e1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c04042a2a2a2a2a0e0e1c1c1c04042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c04042a2a2a2a0e0e1c
-1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c04
-042a2a2a0e0e1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a0e0e1c1c1c1c1c04042a2a0e0e1c1c1c1c04042a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c04042a0e0e1c1c1c1c1c04042a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c040e0e0e1c1c1c1c1c0404
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c040e0e
-1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c
-1c1c1c1c1c1c0e0e1c1c1c1c1c1c04042a2a2a2a2a2a1404292915030304292929142a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a0e0e1c1c1c1c1c1c1c0e1c1c1c1c1c1c1c04042a2a2a2a2a2a140429291503
-0304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e04040404040404040404040404040404042a2a2a2a
-2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0404040404040404040404040404
-040404042a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a302a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a312a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a312a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a14042929150303042929
-29142a2a2a2a2a2a0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404
-292915030304292929142a2a2a2a2a2a0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c041c040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404041c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04041c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a1404292915030304292929142a2a2a2a2a2a0e0e1c1c
-1c1c1c1c1c1c1c1c1c1c04040e1c04040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-04040404040e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c040404041c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a14042929150303150a0a0a0a2a2a
-2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c0404040e0e1c04042a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404040404041c1c1c1c1c1c1c1c
-1c04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0a150a0a0303
-03232323230a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c040404042a0e0e1c04042a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a0404
-04041c1c1c1c1c1c1c04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a0a2315150a0303231515150a2a2a2a2a2a2a0e0e1c1c1c1c1c1c040404042a2a2a0e
-0e1c04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04042a2a2a2a040404041c1c1c1c1c04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a0a2315150a0303231515150a2a2a2a2a2a2a0e0e1c1c1c1c0404
-04042a2a2a2a2a0e0e1c04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a040404041c1c1c04042a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0a2315150a0303231515150a2a2a2a2a2a2a
-0e0e1c1c040404042a2a2a2a2a2a2a0e0e1c04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a2a2a040404041c04042a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0a2315150a0303231515
-150a2a2a2a2a2a2a0e0e0e0e0e0e2a2a2a2a2a2a2a2a2a0e0e1c04042a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a2a2a
-2a0e0e0e0e04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0a23
-15150a0303231515150a2a2a2a2a2a2a0e0e1c1c0e0e0e0e2a2a2a2a2a2a2a0e0e1c0404
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c0404
-2a2a2a2a2a2a2a2a0e0e0e0e1c04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a0a2315150a0303231515150a2a2a2a2a2a2a0e0e1c1c1c1c0e0e0e0e2a2a
-2a2a2a0e0e1c04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c04042a2a2a2a2a2a0e0e0e0e1c1c1c04042a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a0a2315150a0303231515150a2a2a2a2a2a2a0e0e1c1c
-1c1c1c1c0e0e0e0e2a2a2a0e0e1c04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a0e0e0e0e1c1c1c1c1c04042a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0a2315150a0303231515150a2a2a
-2a2a2a2a0e0e1c1c1c1c1c1c1c1c0e0e0e0e2a0e0e1c04042a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a0e0e0e0e1c1c1c1c1c1c
-1c04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0a2315150a03
-03231515150a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c0e0e0e0e0e1c04042a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c04040e0e0e0e
-1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a0a2315150a0303231515150a2a2a2a2a2a2a0e0e1c1c1c1c1c1c1c1c1c1c1c1c0e0e
-0e1c04040e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c04040e0e1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a0a2315150a0303231515150a2a2a2a2a2a2a0e0e1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c0e1c040e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e
-0e0e1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c
-1c1c1c1c1c1c1c1c1c1c040e1c1c1c1c1c1c1c1c1c1c1c1c1c04042a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0a2315150a0303231515150a2a2a2a2a2a2a
-0e0e04040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-04040404040404040404040404040404040404040404040404040404040404040404042a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0a2315150a0303231515
-150a2a2a2a2a2a2a0e040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404042a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a0a23
-15150a0303231515150a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a
-2a2a2a2a2a2a0a2315150a030323151515150a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a1414
-141414141414141414141414141414141414141414141414141414141414141414141414
-141414141414141414141414141414141414141414141414141414141414141414141414
-141414141414141414141414141414141414141414141414141414141414141414141414
-141414141414141414141414141414141414141414141414141414141414141414141414
-141414141414141414141414141414141414141414141414141414141414141414141414
-141414141414141414141414141414141414141414141414141414141414141414141414
-141414141414141414141414141414141414141414141414141414141414141414141414
-141414141414141414141414141414141414141414141414141414141414141414141414
-141414141414141414141414141414141414141414141414141414141414141414141414
-141414141414141414141414141414141414141414141414141414141414141414141414
-141414141414141414141414141414141414141414141414141414141414141414141414
-141414141414141414141414141414141414141414141414141414141414141414141414
-14141414141414141414141414141414141414141414141414141414141414141414150a
-0a0a0a0a0a0a0a0a0a0a0a0a0a0a231515150a0302032315151515232323232323232323
-232323232315040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404040404040404040404040404040404040404040404040404040404040404
-040404040404232323232323232323232323232323231515150a03040103231515151515
-151515151515151515151515150a29292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-2929292929292929292929292929231515151515151515151515151515151515150a0304
-0101030a0a151515151515151515151515151515150a2929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292929292929292929292929292929
-292929292929292929292929292929292929292929292315151515151515151515151515
-1515150a0a03040402010103030a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a151515151515
-151515151515151515151515151515151515151515151515151515151515151515151515
-151515151515151515151515151515151515151515151515151515151515151515151515
-151515151515151515151515151515151515151515151515151515151515151515151515
-151515151515151515151515151515151515151515151515151515151515151515151515
-151515151515151515151515151515151515151515151515151515151515151515151515
-151515151515151515151515151515151515151515151515151515151515151515151515
-151515151515151515151515151515151515151515151515151515151515151515151515
-151515151515151515151515151515151515151515151515151515151515151515151515
-151515151515151515151515151515151515151515151515151515151515151515151515
-151515151515151515151515151515151515151515151515151515151515151515151515
-151515151515151515151515151515151515151515151515151515151515151515151515
-151515151515151515151515151515151515151515151515151515151515151515151515
-151515151515151515151515151515151515151515151515151515151515150a0a0a0a0a
-0a0a0a0a0a0a0a0a0a0a0a03030303040001020001030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303030303030303030303030303030303
-030303030303030303030303030303030303030303040403
-%%PageTrailer
-%%Trailer
-%%EOF
diff --git a/lib/et/doc/src/sim_trans_write_lock.gif b/lib/et/doc/src/sim_trans_write_lock.gif
deleted file mode 100644
index d62505fe35..0000000000
--- a/lib/et/doc/src/sim_trans_write_lock.gif
+++ /dev/null
Binary files differ
diff --git a/lib/et/doc/src/sim_trans_write_lock.png b/lib/et/doc/src/sim_trans_write_lock.png
new file mode 100644
index 0000000000..1ce15a33c5
--- /dev/null
+++ b/lib/et/doc/src/sim_trans_write_lock.png
Binary files differ
diff --git a/lib/et/doc/src/sim_trans_write_lock.ps b/lib/et/doc/src/sim_trans_write_lock.ps
deleted file mode 100644
index 80e03852dc..0000000000
--- a/lib/et/doc/src/sim_trans_write_lock.ps
+++ /dev/null
@@ -1,1287 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: GIMP PostScript file plugin V 1.12 by Peter Kirchgessner
-%%Title: /home/hakan/picts/sim_trans_write_lock.ps
-%%CreationDate: Mon Oct 14 17:06:30 2002
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%Pages: 1
-%%BoundingBox: 14 14 359 199
-%%EndComments
-%%BeginProlog
-% Use own dictionary to avoid conflicts
-10 dict begin
-%%EndProlog
-%%Page: 1 1
-% Translate for offset
-14.173228 14.173228 translate
-% Translate to begin of first scanline
-0.000000 184.755782 translate
-344.431594 -184.755782 scale
-% Image geometry
-412 221 8
-% Transformation matrix
-[ 412 0 0 221 0 0 ]
-% Strings to hold RGB-samples per scanline
-/rstr 412 string def
-/gstr 412 string def
-/bstr 412 string def
-{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
-{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
-true 3
-%%BeginData: 74154 ASCII Bytes
-colorimage
-!AQV60nB=U!.b.=!<5%\0f_7E~>
-r'Z)9JH16$mf<8RJ,~>
-"DW"!C3+q+JH16$mf<B/!budtJ,~>
-r]0uYnc&S<J[C!8]<hPemJd0^mJd0^nc/Uh!]_tqJ,~>
-r^?bdnc&SGS\BZdT=P"ZmJd0[mJd0[nc/Uhr^;8~>
-rcA)>nc&SuJaS*W]C#Z.mJd0^mJd0^nc/Uhrc<S~>
-s"OQTs8W)KqVM,3!%EJWb_q%)n:Lcks3:GkqVM/4!i5k@qpkQ"r8n'Vs3:GkqVDD<s8N'Z3Ih~>
-s$Qngs8W)LrS%8-ro3q>!&U[?JWZ.Y!]9r&rmLesrS%8-ro3t?!hoY>rmLesrS%8-ro3t?!hoY>
-rmLesrS%8-"lfR^!(95*~>
-s)S5As8W)KqVM,3!+LN9J_n#q!b22SqpkQ"r8n'Vs3:GkqVM/4!i5k@qpkQ""m5jb!-<43~>
-!]^8\rRLc$qW7c,JTJMG!.4]d!.4]d!.4]d!/(8l!/(8l!/(8l!/(8l!/pht@uG\TF,PBdF,PBd
-F-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-M#m
-F-M#mF-M#mF-M#mF-M#mF-M#mF-M#mF-L_ps81@ChYZF9V#U>BqVM,3!Mobmeb\/$joWd-3Ih~>
-"%3.hdf.hrgA]t.ir/!>1kC(kI/nitI/nitI/o!#I/o!#I<UO!I=6s'I=7*+I=76/I=76/I=7B3
-I=7B3I=7B3I=7N7I=7N7I=7N7I=7N7I=7N7I=7Z;I=7Z;I=7Z;I=7Z;I=7Z?I=7Z?I=7Z?I=7Z?
-I=7Z?I=7Z?I=7Z?I=7Z?I=7Z?I=7Z?I=7Z?I=7Z?I=7Z72#mR'rmq&%rndY6roO6Ts8LIGf)=>%
-hYuO6joM1UrmLesrS%8-ro+%Bc2^7_~>
-!cnAArRLc$qW7ceJ^(mQ!7h(n!7h(n!7h(n!7h(n!7h(n!7h(n!7h(ns4..os4..os4..o>MdoT
-c/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/.!q
-c/.!qc/.!qc/.!qc/.!qc/.!qc/.!qc/-]Ss81@ChYZF9V#U>BqVM,3!Mobmeb\/$joWd-F+=~>
-!\j]Trmgl%qrRtJjsbjrr+Z:SK6,%I!-A-S!-A-S!.4][!.4][!.4][E.`4HC4gSBC4gSBC5[.J
-C5[.JC5[.JC5[.JC6WdSC6WdSC6WdSC6WdSC6WdSC6WdSC6WdSC6WdSC7K?[C7K?[C7K?[C7K?[
-C7K?[C7K?[C7K?[C7K?[C7K?[C7K?[C7K?[C7K?[C7K?[.KB=rqVM,3!q)lar71Z#qrRtJV#UAC
-qVM/4!mL^"J,~>
-!^m%grmq&%rndY6roO:IjtqX7r-8?lNIf5t!.Fil!.Fil!.k,pIYE2qH%gZlH&6rpH&[5tH'*N#
-H'*N#H'Nf'H'Nf'H's5/H's5/H's5/H's5/H(BM3H(BM3H(BM3H(BM3H(fe7H(fe7H(fe7H(fe7
-H(fe7H(fe7H(fe7H(fe7H(fe7H(fe7H(fe7H(fe7H(fe7H(fe7H(fe72#l"Prmq&%rndY6roO@K
-U&WQhrmq&%rndY6roO@KU&WQhrmq&%rndY6s5jC.!(;>~>
-!cnAArmgl%qrRtJk$in\r5JZ[`l.r&rl"l^rl"l^rl"l^rl+o^s2G#_s2Ag)c,IZPc,IZPc,IZP
-c,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZP
-c,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,IZPc,F/lr71Z#qrRtJV#UACqVM,3!q)lar71Z#
-r8n(*!-<Y~>
-!<E0!eb\/"k5XiMjsd0Bs5)RH%#`)>PlLd.hVN!^pA`c["nqt2CA.]*C&i>SC&i>SC&iV[C&iV[
-C3>/MC2/BBC2/BBC;m8qC2/ZJC2/uSC2/uSC2/uSC2/uSC2/uSC208[C208[C208[C208[C208[
-C208[C208[C20PkC20PkC20PkC20PkC20PkC20PkC20PkC20PkC20PkC20PkC20PkC20PkC2,3t
-rRLc$qr[qH!Moboeb;B/k5XiMV#UDD!o?4/rSIQ?rT41L]`<Q~>
-!<E0!f)=>%hYuO6k5X]IjtrrXs5)RS%$ehTSbiB7hVNBtpA3Ea#PS":FnYZSH2_pdH2_r9I<fsX
-JU)B\Km@f`M0X5dNHoYhNHoZdZ@-k<Q$mdtR=04#R=04#R=04#SUGX'SUGX'SUGX'Tm_'+Tm_'+
-Tn.?/Tn.?/V1Ec3V1Ec3V1Ec3V1Ec3V1Ec3V1Ec3V1Ec3V1Ec3V1Ec3V1Ec3V1Ec3V1Ec3V1Ec3
-V1Ec3!]9c%rmq&%rndY6roX7G!hoJ=rmpp2r^?bJs69ZZqU5Ao"56"*gA]t/6ic6GjoXhZ!.Y~>
-!<E0!eb\/"k5XiMk$k4,s7Y9f%+Xdbec5[;p@cJEs8U`js8W,<s8N,=c2PZ^c2PZ^c2PZ^c2P]^
-c2Yc_c2Yc_c2Yb"e]l)$k0:lae]l(Pe]l(Pe]l(Pe]l(Pe]l(Pe]l(Pe]l(PhTa$YhTa$YhTa$Y
-hTa$YhTa$YhTa$YhTa$YhTa$YhTa$YhTa$YhTa$YhTa$YhTa$YhTa$YhTa$YhTa$YhTa$YhTa$Y
-@fQDWqVM,3s6]o`s8CLB62p$HmK'-`rRCu+5sbJ+s$?VG!q*`%J,~>
-!s&AOec+G*63#g?k5RaHmK)H!oO7iRPi6'PK9Yk7!J?X%@KP*)3T"9XKE%0%k5S=Fc-87Xp@^4M
-K9Y/#s7QRM@eTLMraGkBraGkBraGkKraL#7S75rSC1:Y!C1:Y)C1:YZs*J45C1:Y1C1:Y1C1:Y:
-C1:Y:C1:Y:F(/UCF(/UCF(/UCF(/UKF(/UKF(/UKF(/UKF(/UKF(/UKF(/UKF(/UKF(/UKF(/UK
-F(/UKF(/UKF(/UKF(/UKF(/UKF(/UKF8fVL.KBCtqVM,3rpBf_s8LOKhY0>9k5OcLV#UGE!8dZ?
-s5*]?s5s@L!PJJ`~>
-!s&APf)FD'5l]^?iWA717/lHPi\^:E!KEZ/D#oWen8/2cSa(%ng<rOLD%VX$R8E&G=\-id88\(o
-4Dg(Kghm)b"?^Ppp,r=k!-S9XI<BOHD0^,<D4-r3D1Q\DD1utHD2ECPD79IqD38sXD3]6\D3]B`
-D3]B`D4,ZdD4,ZdD4,ZdD4PrhD4PrhD4PrhD4u5lD4u5lD4u5lD5DMpD5DMpD5DMpD5DMpD5DMp
-D5DMpD5DMpD5DMpD5DMpD5DMpD5DMpD5DOWD#lKirmq&%rndY6roX4F!MTAhec=G$5lF+Nk5OWH
-U&+c>!8@B:s5*]Bs5s@H!P/8]~>
-!s&AOec+G*63#g?k5RaHmK)HZoXt:Me`"1Bc.2<s!R90[]`RWaKAX?Sc2Z%QpA^%tk2q<0s8R/R
-c.1U_s8N4C^&S+Rrk/<Nrk/<Nrk/<Nrk8?^s1SHOs1N9o`P&t0`P&tIs2D[r`P&t0`P&t8`P&t8
-`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8
-`P&t8`P&t8`P&t8`P&t8`P&t8`P&t8`W!OO@fQGXqVM,3rpBf_s8LOKhY0>9k5OcLV#UGE!8dZ?
-s5*]?s5s@L!PJJ`~>
-!W`8NrndT>rT=,Gs%<=Z!Tkj'=p"Et9&a"UpA[bT=p"Et9'TU[3T"!Qk05VQp@^4=;E6a@p@^4E
-pA[b@>6":$0j=;E0j7air`T;2r`T;:r`X_bpA[a+@TlrV@Tlr^@Tlr^@a4%V@TlrfC0Ff!C0Ff!
-C0Ff!C0Ff!C0Ff*C0Ff*C0Ff*C0Ff*C0Ff*C0Ff*C0Ff2C0Ff2C0Ff2C0Ff2C0Ff2C0Ff2C0Ff2
-C0Ff2C0Ff2C0Ff2C0Ff2C0Ff2C0Ff2C0Ff2=t0L%eb\/"k5F]OV#SuqhVRum!9X7J"f21Ke_]0W
-5lg'HmK(!$J,~>
-!W`8Orn@<9ro*q?rBpbQmc$(qB`e#)=lO,spA.q^B`e#)=mB]%84;?L''@V)=n_\S@:_ttC%h6_
-C%hC+h.co_#<Z_op,m&'D>n7!EG]E(F_ti,H1q);I;N\4JT5C<KlLg@M/gu'H$*h8O`bAPQ$$eT
-Q$$eTQ$$eTR<<4XR<`L\R<`L\SU"p`SU"p`SU"p`Tm:?dTm:?dTm:?dTm:?dTm:?dTm:?dTm:?d
-Tm:?dTm:?dTm:?dTm:?dTm:?dTm:?dTm:?d"efWeqUX6rgA]t.ir8*>l3?[MqUX6OgAF566icBK
-l3?[MqUX6OgAF566icBKl2eHrJ,~>
-!W`8NrndT>rT=,Gs%<=Z!Tmk`[/^.+UuJc]rrAkb[/^.+V!>>eKAX$Kp?$Fds8R/A["F"<s8R/I
-s8SnN[/^.2F0tuIF0r<frj2[=rj2[=rj7*es8Sn.]sP/c]sP/c]sP/c^#nai]sP/k]sP/k]sP/k
-]sP/k]sP/k]sP/k]sP/k]sP/k]sP/k]sP/k]sP/s]sP/s]sP/s]sP/s]sP/s]sP/s]sP/s]sP/s
-]sP/s]sP/s]sP/s]sP/s]sP/s]sP/s]sP/sZss'ceb\/"k5F]OV#SuqhVRum!9X7J"f21Ke_]0W
-5lg'HmK(!$J,~>
-!<E/uhY]\>k5RaH9)n;[jsg1*#'8Z$mZ^VVrr2t>qGI]kk5YJLC/USis6cEV;ZGSWKC8c0;RHH'
-s)SY+s6c+L;Vp8_mf/eT[/U(0F*ldDs6bgA;CBH`K2PUKmS`cY;GqSms6c+LV#PL6`W(9_`P#/j
-hZ*#.;GuB.XPWnR"G?_q3Q;!t#\s)5;H!5^0spr[s)SV*s6c+L;Vp93hGX(Iqbdflk5YJLC/USi
-s6cEV;ZHG(0iI`=0iEATs6cCT;OlnLs6as8rr74iSF6FFS5OE3hVPs.;N(Qr;Gr-V;Gr-V;Gr-V
-;GrE^;GrE^;GrE^;GrEf;GrEf;Gr`o;Gr`o;Gr`o;Gr`o;Gr`o;Gr`o;Gr`o;Gr`o;Gr`o;Gr`o
-;Gr`o;Gr`o;Gr`o;Gr`o;Gr`o;Gr`o;Gr`o;CV=iqVM,3r9aW^p=90!pHe`F!i5P?rSI?9!9X7J
-!PJJ`~>
-!<E/ugAXA;6il<0r'^SQ!TGs5AHmkFqX1%g^Ae-4L&,[email protected],h"d/6LTk1t;
-s8Rc^hYQZ6AS'l\Om`(>A\S0Ds+LU4qZ#uKqIM&"s-7/,[dI`#qIO5lhYQZ6A[;>iA]k%,A^8/(
-L#2[oTk.fpijRkFAH\:uI7VZ_rs3oDqIO73p,p(gs8Rc]hYQZ6AS'l\[c1llqYOh3Woj0Xl?Qs@
-lMp.Lral-''0Kk"p,loChYQZ:Bk==,qZ#i7^Ae.WM5ok@m]'iLET5utk%0hXI:ZuLF_,-HF_,-L
-F_,-LF_,-LF_,-PH"CQTH"CQTH"CQXH"CQXH"CQXH"CQ\H"CQ\H"CQ\H"CQ\H"CQ\H"CQ\H"CQ\
-H"CQ\H"CQ\H"CQ\H"CQ\H"CQ\H"CQ\H"CQ\H"Ai+f)=>%hYuO6k5OZGmK0*Uf)FD%5l3tKlMp8R
-U%[(9gAXA86icBKl2pCb!.Y~>
-!<E/uhY]\>k5RaH9)n;[k$n4p#0$$1p=6P,rr2u;qQpX\pAb0d]sQ>`s7Y"B[/]h'c1_1f[,1f^
-s2>H8s7Y!M[.a4<pA`[MhZ!QT`<>W/s7X_6ZmY#9c*Xk7p9al"['[g?s7Y!MhZ(R%k5WE-k2s%i
-mf3"2[']Q#hY-oT"O6tBKBE15#eg9<[']l5F5Hors2>E7s7Y!M[.a4Mp9al"qm6a]pAb0d]sQ>`
-s7Y"B[/^.>F0tuIF0s3[s7Y!M[+4mMs7XForr75feb9%:e[3</p@dYB[*AWH['\)k['\)k['\)k
-['\)k['\)k['\)k['\)k['\)k['\)k['\As['\As['\As['\B&['\B&['\B&['\B&['\B&['\B&
-['\B&['\B&['\B&['\B&['\B&['\B&['\B&ZsraZqVM,3r9aW^p=90!pHe`F!i5P?rSI?9!9X7J
-!PJJ`~>
-!<E/thYKP;9)e5ZhC8A#$tAquC;p3V@eTh"3D03I25L9/HYSd2SH$Q3^&O<p;YL.I[/]P[@eTh"
-9(q[f`W'+>pAa!Vs6`0^pA\#Nk5TL+F';35;CIJ']h22jUbVT:0k0kEC;p3VHiK!rmf/2;p3TF*
-mV9`@>#P(ohP;n*;BrRK5tYV[s&(TFp+]J=p+^%Ms&)J_mV9`@>#P(ohP;mgjtZg4I\d##HYSd2
-SH$Q3^&O<p;YKf=;YKf=@eT5)`W',;s5&*;PX/LHs&,*]c!%g\S6Ahas5'P+MuTkNHX]lNK47_V
-K47_VMdfR^MdfR^MeZ-fMeZ-fMeZ-fP\O)oP\O)oP\O)oP\O)oP\O)oP\O)oP\O)oP\O)oP\O)o
-+d?_>;Ntoo;Ntoo;Ntoo;Ntoo;Ntoo;Ntoo;Ntoo;CV>9hYZI4mK'[email protected]!)!1W!MoGd
-hYTS=k5=WJ]`<Q~>
-!<E0!gAg"05kmbHmK)0$r*9_Fp?le7s(Q?DqHZ?dr*;1_s5JTPPuXOXb%\`mSR#Ops5LKel:c'g
-qHZqkmVTi@BjLH4ijSmP9PsM">sRQPH!tu0;#=NHOoN-l?0\FTp@^U_p?le7s(R2eO]CiLO]Ct'
-=n_9#_Z+=UpAa!L5lP%6])PT'EVB675kan6?2!tSD>*g3;"j<o_Z+=UpAa!L5j%&grEXlTs5JTP
-PuXOXb%\`mSR#Opp,lXSp,[email protected][5XC%hC/RK(QH_Z-HH?2"<XW^)^HY#'sl?!WG,
-?!WG,?!WG0?!WS4?!WS4?!W_8?!W_8?!W_8?!Wk@?!Wk@?!Wk@?!X"D?!X"D?!X"D?!X"D?!X"D
-?!SVEF^8:DF^8:DF^8:DF^8:DF^8:DF^8:DF^8:DF^890pAN_EhYuO6k5OZFmK'$TrRq<<hVS7k
-roO8MlK\B:!MT5cgAg"05l="Mk5OZGmK'm!J,~>
-!<E/thYKP;9)e5ZhI?Da%(-'.Ut,L@[/^/aH_gS@2:_`pXIQYUc2ZXbec3UiXT/=gec5'%[/^/a
-KE(Y@ec2GHs8VN;s6c,Ys8S"(pA^qHUm.DHX=2'feXW`7c$TKjF0tu@Ut,L@`W*<@pA_Lqs/_Ib
-p8$7=UoaUrm`g+XX<ZU%K:K=Ks,1sus)Y:As)YRIs,2O0p8$7=UoaUrm`g+PmW8?.Ib"JdXIQYU
-c2ZXbec3UiXT/<AXT/<A^&Rf%ec2Gqs6ctY[#;$cs,48ak*4Erc*XSPs6e-Yc2YbQ`O)_J`O)_J
-`O)_J`O)_J`O)_Jc*XRRc+U3[c+U3[c+U3[c+U3[c+U3[c+U3[c+U3[c+U3[c+U3[c+U3[c+U3[
-+jI^%XNeG[XNeG[XNeG[XNeG[XNeG[XNeG[XNeG[XCCo"hYZI4mK'[email protected]!)!1W!MoGd
-hYTS=k5=WJ]`<Q~>
-!<E/uhZ)a:62aFUmf2t]hC8@p$^C[e3K*oi62(",62O80mf-0>5s[Nns%5:Ts5l=6pA[E5p@^45
-p@^5*s.hZ5s+<W2s$8C5p+]25p+\kqs/]]/62F2$pA[F"s&(lNp+_g3UcFA5K1c0W;ZH0u>5pmQ
-s.hZ5s+<W2s$8A"r^nE[s"Qf3p@^4,p@^45p@^45p@^5*s.hZ5s+<W2s$8A"8hi(!8q6:/;DCI'
-3Tg?63ElIF3D0#=0hV050pM^63K*oimf-0>8kM*0p@^6's%5:Ts5l=6pA[E5;Hj+>;Hc[bHWj$6
-K3Cl>K47GFK47GFK47GFK47GFMdf:NMdf:NMdf:NMdf:NMdf:NP[[6WP[[6WP[[6WP[[6WP[[6W
-P[aYb)3eT&8sEdW8sEdW8sEdW8sEdW8sEdW8sEfa8c^C7r8.>5qsOLX!MoGfh>fk=k5XiL9)e8Y
-p&Uu_r8%G9r':<Tr9aX[]`<Q~>
-!W`8Srnd\7qEtNYmdBZ:hDG.5$_@<t8<s43<VH,K<VooVmf-QX9MeFFs&DHus5m!XpA[fOp@^UO
-p@^V:s/JVTs+sbLs%G]Op,lLOp,l@;s/p?A:f[Bq-scE?:jr@P8G;a>Sc>]\Q2c\Ds2&@DlFq-8
-8=BLX8<s43<VH8[5Y1lW,L6<O<E]%h4B;+K4B_CO4B_CO4IQ5L8<s43<VH8[5Y,$C5lFi8mf-QX
-9MeFFs&DHus5m!Xp@^UOp@^V>s/Jb\s,$1D>sMOm9NCf[4QcZD6tQD\9Nh)c83g<ps2J2U=]pSu
-=]pSu=]p`$=]p`$=]p`$=]pl(=]pl,=]q#0=]q#0=]q#0=]q/4=]q/4=]q/4=]q/4=]q/4=]q/4
-=]q/4s&g5-EEQG4EEQG4EEQG4EEQG4EEQG4EEQG4EW0)C2"oYWrndY6roX4FrpKgW#,1bEg>:[O
-ro3q>s69SPrpKgW"/5GBgA]q/iql.DlMg2Qo""gO~>
-!<E/uhZ)a:62aFUmf2t]hI?DY$dJ^jK>mklSH&V1SGT*>pA^%tPa%+"s+>s*s6bf@s8R^us8RGA
-s8R/Zs2BW0s/_ajs+>[us*LRAs)X_(s2D(0PaqTGs8OC'^&O=Ts8R/bs2BW0s/_ajeXZ[5c)gql
-`W*o0`W*$0s8RFmMuKLsk5TLuV#UI9SH&V1V#UI9V#UI9`W*o0`W*$0s8RFmMkk]HrM4r:s,25g
-P`,88K7g9*mYdn@s)Y"9s)ZHb`Il/0XS2[PH^pUaV#UI9pA]btXT.^HV#UIAH^(W3eWd/2UqNk*
-UrB^:UrB^:UrB^:UrB^:UrB^:UrB^:UrB^:UrB^:UrB^:UrB^:Us69BUs69BUs69BUs69BUs69B
-Us6:HU`%FaUnl8BUnl8BUnl8BUnl8BUnl8BUnl8BrhKR(pAEeEk54THp&Uu_rS@N?qr[qH!)!7Y
-s7QJhpAEbIk57LF9)S)Yp:UHV~>
-!<E0!hYlU:62aFUmf)n\hC8@p!3H+u"IqdOp+cD9s8N*S62jLVrt7%P9)noG9(qs59(qs59(qs5
-XSi)3S3clB0hV050hV050hPoos8UVjq+;"$s+@]80gYO,0s(<Q$_0N5p5@2/k*4^WXSi)$S3clB
-1&OWX`W%Yb9(qs59(qs59(qs59(qs5XSi)$S3clB1&+B@rrFi?r_!4j%P^7As8OfGp@^45p@^5B
-r;V8:s8OfO;G'Pjp@^6@s"QfSs8Ofgp@^4U>"\h63D)nj>"VD>@S07F@S07F@S07F@S07F@S07N
-@S07N@S07N@S07N@S07N@S07W@S07W@S07W@S07W@S07W@S07W@S07W@S07W@S07W@S07W@S07W
-@S07W@S07W@S05pPY*CurS@OMr'C<S!i58Prq6AgpANhJ62]mEmK-#Kmf)n\V"XcD!9X2Fr_!1X
-s7QK,!.Y~>
-!<E0!hYuL7k57UK8FGpFnc@H$r)j$&r;Qnj9_S0BqH<ju!C0Za=VU`44B5Pas$0`\p,l@Kp,lLO
-p,oMUrtCqsp@^UKp@^UOp@^UOEQ8%Yg3rd"$GQOs]&#PLp@^VOr;R.q9\T&sf"U:7i]OCArrnre
-p@^UKrE0i[s$0^ip@^UOp@^UOp@^UOp@^VOr;Qqk9_S0B<V]etrrGAbr`Kg/s#a:as8P>ep@^UO
-p@^VOr;V8;s8P>m@9H`Mp@^WFs#a;(s8P?0p@^UoBjLbY86K)LD-:"uD-:#$D-:#$D-:#$D-:#(
-D-:#(EEQG0EEQG0EEQG0EEQG0EEQG4EEQG4F]hk8F]hk8F]hk8F]hk8F]hk8F]hk8F]hk8F]hk8
-F]hk8F]hk8F]hk8F]hiMR9;B;gA]q/SbYYTV=*dNncGNUgA]q17,m5*k5OWI8FGpFncGNUgA]q/
-iqZ"Amf2hY\c@6~>
-!<E0!hYlU:62aFUmf)n\hI?DY!7h#I"ML'"s)\%4s8N+@SGo>art9CCV#UIAV#UI9V#UI9V#UI9
-eboF\]p/QsF/8j9F/8j9F/61ns8VN#q4nASs/b)FF.E:1F4L3g$b_emp9`u,m_/%0eboFM]p/Qs
-F8VgJk5TLuV#UI9V#UI9V#UI9V#UI9eboFM]p/QsF82R2rrI22rhTSo%We/9s8RGAs8R/9s8R/j
-r;V8[s8R/9XJDZ!s8R0?s)X^;s8RGQs8R/RXJGmHK;><VXJDZ2[%sM:[%sM:[%sM:[%sM:[%sM:
-[%sM:[%sM:[%sM:[%sM:[%sMB[%sMB[%sMB[%sMB[%sMB[%sMB[%sMB[%sMB[%sMB[%sMB[%sMB
-[%sMB[%sMB[%sK"c(nhBrS@OMr'C<S!i58Prq6AgpANhJ62]mEmK-#Kmf)n\V"XcD!9X2Fr_!1X
-s7QK,!.Y~>
-!s&AXhYZI69)n>Xp&X#!r(7$Ts.oTJ"$-)K1&=KDmf-Jh8f$Rh8kNRmjtTL%p+]25p+]25p+_g3
-V#<"]3VN/$9(qs59(qs58kMBAV#TjKqFV0;s4-h$0hV050pM^6r@n^@XT..QPlK:00pM^6r@nC7
-p@^6=8cc$nr_!4a%l$]Mp+]25p+]25p+_g3V#<"M3VN/$pdtVUs'#@n''B3d8n.h_0hV050hV05
-0pM^6r@r`_s&r;m8m5-dp+b_08nr,@jtU'5p+]`C@fN5a8pa`68qUSF8qUSF8qUSF8qUSF8qUSF
-8rI.N8rI.N8rI.N8rI.N8rI.N8sEdW8sEdW8sF'_8sF'_8sF'_8sF'_8sF'_8sF'_8sF'_8sF'_
-8sF'_8sF'_8sF'_8d(An8h'K5h>l^962X=Tmeuh[V"XfE!Tl]Hk5F]K9()ZO!MoGgh>l^962X=T
-mf)n\]`<Q~>
-!s&AXhYuO6k5IaM8FGpFncJO=2#L>TRK'Gg49J.Jp,r1O!p]esrDaWqs&E'5s5lFDp@^UKp@^UK
-p@^V:s/u;_'1hij4B;+K4B;+K4B5BX=f)/`;#40#IK.adPsA@Cp,ncCY5LHk8?W!HV3V)7Y!AET
-Y5LHb8G;a>r)Ed's8H$up('8cp@^UKp@^UKp@^V:s/u;_"%`.Z4SVnXlMkGo<>+Ho<E3c5jucZ;
-p,l@Kp,ncCY5LJ2lMkEu<E3a=p@^W6s&F&]s5lFPp@^U[<GDK55ZNAL<E4li<E4li<E4li<E5#q
-<E5#q<E5#q<E5/u<E5/u<E5<$<E5<$<E5<(<E5H,<E5H,<E5H,<E5H,<E5H,<E5H,<E5H,<E5H,
-<E5H,<E5H,<E5H,<E5H,<E00iEE+jdrn[Y7q*b6R!:KjW!qr>Yrn[_97,n4.rosRQ8FHKJ!qr>Y
-rn[Y7q*b6R!:KjW!P/8]~>
-!s&AXhYZI69)n>Xp&X#Zr1!i-s2FqX",$XRF8DC.pA^BUS/1huK:K%CmW4ous)X_1s)X_1s)Z0Z
-`VjikKE(smSH&V1SH&V1S=Gh.`W,XrqO@u$s5s$gH^t-9F2e0urGrC"ec4dN[/]:5Hc?$(rGr'n
-s8R0<S/0ZTK:JJ3s)X_1s)X_1s)X_1s)Z0Z`Vji[KE(smpm_EZs-3JP'))?XS?2bYF.E:1F.E:1
-F2e0urGr&6s-3MQs.o\pG]WTYK<2H[mW53(s)Y!+XT-7dS@#)^S@u"oS@u"oS@u"oS@u"oS@u"o
-S@u"oS@u"oS@u"oSAhS"SAhS"SAhS"SAhS"SAhS"SAhS"SAhS"SAhS"SAhS"SAhS"SAhS"SAhS"
-SAhS"SAhS"SAhS"SAhS"@eTfX!9X2Fr(6tWrUp8fpAWnLk!At.rU'\Ymeuh[V"XfE!9X2Fr(6tW
-rq6B+!.Y~>
-!W`8Wqr[qHs%<=Zr:U0J.JudG;XXRTH^'.Tk5T0oqar`9s5o5dP[^0_]kYOdM_Ritp+]25p+]2%
-s(Z$2s."G#K1bk20hV050hUU.C/V-cC4lQC1&4Eemf3;Q3D0#=0iIH>S9pKQ8pgU<@UfB;C,o2[
-s."G#K1bk21&OWfF8pSQ9(qs59(qs59(qs59'6.g@da8dH^'.Tp@^459'5:68q*<1k)4SN@\!J3
-C;p420hV050hV050j=#FS:d&YSH%`0H^nhCk5T1ls1NKms,/U(p@^458u2Jr3I=q%8pb#>8qUSF
-8qUSF8qUSF8qUSF8qUSF8rI.N8rI.N8rI.N8rI.N8rI.N8sEdW8sF'_8sF'_8sF'_8sF'_8gT^:
-8kP=_8kP=_8kP=_8kP=_8kP=_8kP=_8kP=_8kLQ+hVRDWrB^<Qr:U>jp>4Zgk!B"/r9aPWr:U;i
-p>4Zgk5@UGmeocVp&Vi,J,~>
-!W`8Wro3q>s69\S8FGpFo)JCag,/_-$XrK"SV<>c<Ta=(@Ja%^U&X8;JXL5Cs2&p$s-5]Hp@^UK
-p@^[email protected]&/N7p,l@Kp,l@;s)hbUM04[ThE:U6,jPF09Lr1Wp,ldOqON>*M,f90s)E&Y
-s*7"@meWK.Q&/N7p,r7Q,(9KB:f[5_4B;+K4B;+K4B:PDF`$RCSV<>c<VH,K<E82Dr)J3>s5oGp
-R;&5l_KF$$Prr(?p,l@Kp,lpSqONV6M4st3Ob'?K<Ta=(Y5c@eb5[_l<VH,K<E64%D+&qh<E4`e
-<E4li<E4li<E5#q<E5#q<E5#q<E5/u<E5/u<E5/u<E5<(<E5<(<E5H,<E5H,<E5H,<E5H,<E5H,
-<E1?5EE-#,EE-#,EE-#,EE-#,EE-#,EE-#,EE-#,EE-!qo%r6_iqc(B8H/2[p'.5]hVR8O7/l?J
-lMp8P8H/2[p'%/\hVR8OrC$\N!(?fWrpg-a\c@6~>
-!W`8Wqr[qHs%<=Zr:U0J@f2`(V"Xi-]u@[TpA^YYqj]Ogs6dS-`N7&YeZ@p5[!S>Cs)X_1s)X_(
-s.$1as2D[j]q#-&F.E:1F.Dt(S>=]KXM+YrHhj0WpAb/FMk'hIF/8O0`P'7(SA"t&S>?2bUk>K:
-s2D[j]q#-&F8VOP[/ZqdSH&V1SH&V1SH&V1SG)uQXS2\5]u@[Ts8R/1SF6+KS:8`_m_-!HXMt4i
-XQKPiH^t-9F.E:1F/8O0`P'7(c2[4F[*>tJpA^Z-s4+L=s0R-Cs8R/1SCRY(K=%GES@u"oS@u"o
-S@u"oS@u"oS@u"oS@u"oS@u"oS@u"oSAhS"SAhS"SAhS"SAhS"SAhS"SAhS"SAhS"SAhS"S0c.U
-S=IR"S=IR"S=IR"S=IR"S=IR"S=IR"S=IR"S=F'^hVRDWrB^<Qr:U>jp>4Zgk!B"/r9aPWr:U;i
-p>4Zgk5@UGmeocVp&Vi,J,~>
-!<E/sk54TDp&X#!qaq3)^%VKoMa<9ps(_C&1lL5js5mcVPii#.PVG0jp@^45p@^45Mt[0c>.sY0
-mYaC)p+]25p+]0tpA\mPpAaj*;DIu>,cq$b0gSG*p+]0K^%VKoMa:8@s#ECFs#EA;@_ML8mYaC)
-p+cG:s4&5X9(qs59(qs59(qs58rNECC0J=Es6be2p@^459(qs5r(;ErhZ*W<@R67@s5oP#3D0#=
-0hV050hPogpAaQ=8sJ34s5mcVSG)ttSEBk6S2!#rp@^45F5GG%C0F5%HX]T>K47GFK47GFK47GF
-K47GFK47GFMdf:NMdf:NMdf:NMdf:NMdf:NP[[6WP\Nf_P\Nf_P\Nf_P\Nf_P\U4j)3el.8sF'_
-8sF'_8sF'_8sF'_8sF'_8sF)i8cgI0hYuX=Ud7<D8cYsjp&_&XhYu[:62F4Op&_&XhYlU:62g6O
-9)SA`]`<Q~>
-!<E0!ir8*>lMg5No)A=`g,/\'$YdKOs6>S7NUlpc9`%XCQ/;Q;iakfOk5X_34@E$>p,l1Fp,l02
-o(m??_Y4#pNC`d:4AbbF4A_%.qJj[Ks7XT<5l"5%Y5cL(9MkHV4A]b/pAaE;86Puh6qmIW6qC-g
-_Y4#pNC`d:4SqtTef[L[p@^UFp@^UFp@^UFNUlpcBu9TDlA\@.p,l/Jp@^WH:k"\ds8(_d9UY&C
-lBOJ";"jTF;"jTF:hdf?s6>S?Q/;Q;iakfOo(m@"k5X_;4@E$>p,l/shUXf+APc3SAPc3WAPc3W
-Bi%W_Bi%W_Bi%WcBi%WcBi%WcBi%WgD,=&kD,=&kD,=&oD,=&oD,=&oD,=&oD,=&oD,=&oD?!EM
-Q#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#6Ls!]9?%ro*pOr'^NT!ikh^rq6Demb[s&qaCBRs760_
-!ho&=ro+"A6q%%>!q&TMrpp*_!P/8]~>
-!<E/sk54TDp&X#ZqihG`eb9%:[#;Wks.oLU1pl]Ns6c,0^$bpoZu^kas8R/)s8R/)^%VK%Ut,2=
-p9]bXs)XG)s)XF<pA^rNpAb0LMgP8a,gHA>F-Mphs)XF#eb9%:[#:ISs*K\(s*KZgUt,2=p9]bX
-s)\(%s5kG^PlLc)PlLc)PlLc)PeHejUnlQ7s7WgXs8R/)PlLc)r02Z;mf3=TP`*6Cs7Wg@K9ZE9
-F-Q_)F-NKNpAainMmVpPs6c,0`V0>-`U<d"]lSgjs8R/)XR>4lS>;C6[%rqN[%rqN[%rqN[%rqN
-[%rqN]qgmW]qgmW]qgmW]qgmW]qgmW]qgmW]qgmW]qgmW]qgmW]qgmW]qgmW]qk[m)82i1PeElW
-PeElWPeElWPeElWPeElWPeEmlPQG=^hYuX=Ud7<D8cYsjp&_&XhYu[:62F4Op&_&XhYlU:62g6O
-9)SA`]`<Q~>
-!<E/tk54TDp&b9E.JcX;5rnp!"$oOF1&CnOF%SIk0`jX53W:`53W;YN1&jlG1&jiL5qt)[5rnp!%
-RE]A0hP%m0hP&(0eksSr\4C5qYp_?8kM)u3W;YN1&jiH5rnp!#XM'T0el9m0erZ"!C8aF0`s^60
-erPt(1Q]r8kLfm8kLfm8kLfm8kMB(0gS)cr\4L@8hi("9)gXC8cUmM0`jX53W:`53W;YN1&jlG1
-&acF3W:`85tX-tr\4U\;F*#l8icl*EB-X+=tqaQV"RDH>"VD6>"VD>@S07F@S07F@S07F@S07F@
-S07N@S07N@S07N@S07N@S07N@S07W@S07WC._*_C._*_C._*_C._*_C._*_C._*_C._*_C._*_C
-._*_C._*_C._*_C._*_8h'3*k54TDp&b8imec/Dmec\Zs.o)[k54TDp&Vi,J,~>
-!s&A\ir8*>lMg5No)A=aqURM":]X6Tr]C9R:e3_FrrRIB8GtXP9Me.V49.eK;#`ZX;#`ZX:^'BP
-4A8F6r]CZ]:cpj::cpj::e3]29L/S>!'pD\"aNp@6p*a6;#`ZX:]X6Tr]CHW:f'8::f'8:r_NVh
-5lNkJ85ME2qbS&BnsN<N4?QG:4?QG:4?QG:83B".9L/S>"%Z6N4T81W4SqqT8GtXP9Me.V49.eK
-;#`ZX;#`ZX:^C&h4?Pl":e3kN4F:@:83B"76p*Rs6r8#34?Rnhnm+dp:f)^S:f)jW:f)j[:f*!_
-:f*!_:f*!_:f*-c:f*-c:f*9g:f*9k:f*9k:f*Eo:f*Eo:f*Eo:f*Eo:f*Eo:f*Eo:f*Eo:f*Eo
-:f*Eo:f*Eo:f*Eo:f*Eo:f*Eo:f*ER2"(A&roX4FrpKdVrq6EiU$hp>roX4FrpKdVrq6EiU$hp>
-roX4FrpKdVrq6B(!.Y~>
-!<E/tk54TDp&b9E@eko^HiA'gK8YA'qYpVmMhD"M"+,raKDoolKDpf/F8q0uF8q.%K6)*dMgPGE%
-YK[\F,PrtF,Ps/F)ut\rc8'dqYp_pMi2q'HiAs'F8h'tHiA'lK8YY/F,PrtF8_!sHiA'gK8Xelq
-hl5[p:ZBBF*!7tF*!7tF*!7tK6)*dMgPGE"+uMQF8h*tF8LjqKDoooH]*f7rc8'lrepets,6nur
-egc'rc8O$Mh?@tF*j.9K6)*lKDoq3K8ZOiF*".rp5=QnMi4[,Mi4[,Mi4[,Mi4s4Mi4s4Mi4s4M
-i4s4Mi4s4Mi4s4Mi4s4Mi4s4Mi59=Mi59=Mi59=Mi59=Mi59=Mi59=Mi59=Mi59=Mi59=Mi59=M
-i59=Mi59=Mi59=Mi59,@da-UqsO@T!ro(aqr[eDqt:*kV!e-BqsO@T!PJJ`~>
-!<E/uk54TDpAb-neLBuRqCqt1bsD1\!'/Rq!b.Z[`^'Ssr]pNVr]tm/8jPa@8jPaH8jPaP8jPaP
-;F*T`;OgW>8jPaa;F*Tq>!YH$>!YH$>!YH$>!YH,>!YH,>!YH,>!YH,>!YH4>!YH4@R3;<@R3;<
-@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R39_Mdet$mel5Emec_X
-rrJq`r9!nEqtC'i!Mo/]k54TDp&b9-!.Y~>
-!W`8[roX4FrpKdVrq?Bg!S0*t:]OMl49/(#:]OMl49/(*:]b@%8B+L+<W>mF>ua]t@9HE'AQ_i+
-Bj"8/D-]t7EEuC;F^_+T5Zpo[JRqYSKk4(WKk4(WM.od_M.od_M.od_NG23cNG23cNG23cO_mok
-O_mokQ#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#0>oQ#0>o#*j%%
-2"'A_roX4FrpKdVrq?Bg"/5/Bir8*>lMg5No)A@_q?*GZio9t"rp'LNrpp'^!rBJ.J,~>
-!<E/uk54TDpAb-neRJ$+qJuXhc&;F>!/&g[!h?rV`esh]regc@repf@s,28pP`(HiP`(HiP`(Hq
-P`(HqPf8l6P`(I$S;W<,S;W<,S;W<4S;W<4S;W<4S;W<4S;W<4S;W<4S;W<4S;W<4S;W<=S;W<=
-S;W<=S;W<=S;W<=S;W<=S;W<=S;W<=S;W<=S;W<=S;W<=S;W<=S;W<=S;W<=S;UkEr9!nEqtC'i
-!Mo/]k54TDpAb-nV!e0CqsO@T!roq6J,~>
-!<E0!k54TDpAY'meL?&8r]pNEa$B\tr]pNVr]u$38jPa@8jPaH8jPaP8jPaP;F*T`;F*T@8jPaa
-;F*Tq>!YH$>!YH$>!YH$>!YH,>!YH,>!YH,>!YH,>!YH,>!YH4@R3;<@R3;<@R3;<@R3;<@R3;<
-@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R3;<@R39\.IR/sqsO@Trr3"pmeu;Fmec_W
-rrJq`rT="FqtC'i!PJJ`~>
-!<E0!k5OZFmf)eVpAXmhehhqOs%EGa7)qt$;#X.<<DZ@_>u43g@9#upAQ;DtBj",'D-9P+EEu73
-=]nElI:[email protected]@SM.K@SNG2'[NG2'[NG2'[O_IK_O_IK_Q"`oc
-Q"`ocQ"`ocQ"`ocQ"`ocQ"`ocQ"`ocQ"`ocQ"`ocQ"`ocQ"`oc#*imr9Jl1sroX4FrpKdVrq??f
-!ho&AroX4FrpKdVrq??f!ho&AroX4FrpKdVrq?Bg!P/8]~>
-!<E0!k54TDpAY'meRF)^rdt2ta+FAMrdt3/re(6/s+>`aMh?YHMh?YPMh?YPMh?YPMh?Y?Mh?YX
-P_4UiP_4UiP_4UiP_4UiP_4UiP_4UiP_4UiP_4UqP_4UqP_4UqP_4UqS:cI$S:cI$S:cI$S:cI$
-S:cI$S:cI$S:cI$S:cI$S:cI$S:cI$S:cI$S:cI$S:cI$S:cH'meu;Fmec_WrrJq`rT="FqtC$h
-!Mo/^k54TDpAb-n]`<Q~>
-!W`8_qsO@Tr;QfJ.=k*B9"R[t.IQ?\qsO@Tr;QkpmcN[/mec_Urr](bk2uR/qtC!g!PJJ`~>
-!W`8_rp'LNrpp'^rqcZp!R`fU=f5Df<<G)Ck2u[.rpKdVrq??fs8N1plK77.lMg5No)A@^qZ$Qt
-U$Ce&rp'LNrpp'^rqZ]r\c@6~>
-!W`8_qsO@Tr;QfJ@Y(>+Uq<E)@d`C@qsO@Tr;QkpmcN[/mec_Urr](bk2uR/qtC!g!PJJ`~>
-!!)DN!%EI)JI&jn!%I<"!2T"H!2T"H!!%N~>
-!!)DK!&T64JI&jn!&X)*!28eB!28eB!!%N~>
-!!)DN!+LKbJI&jn!+P>[!2T"H!2T"H!!%N~>
-!<E0!joD3.s+13$s7-*mV#TT>]`<Q~>
-!<E0!joD*+s+13$s7-*mU&X9;\c@6~>
-!<E0!joD3.s+13$s7-*mV#TT>]`<Q~>
-!<E0!joD3.s+13$s760oK;AP0k.LbF~>
-!<E0!joD*+s+13$s760oJYE,+k.1PC~>
-!<E0!joD3.s+13$s760oK;AP0k.LbF~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@uNgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@uNgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@uNgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@uNgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@uNgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@uNgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@uNgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV@Ys8(:A!!:[N!:889!<1OK!!:[N!;tCI!:/25!9Mc2!:SJ6!!^sR!7fU"!.i[Uec17*
-V#TT>]`<Q~>
-!<E0!joV7Vs8(IF!!:jS!:8G>!<1^P!!:jS!;tRN!:/A:!9Mr7!:SY;!!_-W!8?-,!.ijZgAc^-
-U&X9;\c@6~>
-!<E0!joV@Ys8(:A!!:[N!:889!<1OK!!:[N!;tCI!:/25!9Mc2!:SJ6!!^sR!7fU"!.i[Uec17*
-V#TT>]`<Q~>
-!<E0!joV@Ys8(:G!;b7G!:889!<1OK!;Y1F!:889!<1OK!9Vi3!:SJ<!;b7G!<:UL!.i[Uec17*
-V#TT>]`<Q~>
-!<E0!joV7Vs8(IL!;bFL!:8G>!<1^P!;Y@K!:8G>!<1^P!9W#8!:SYA!;bFL!<:dQ!.ijZgAc^-
-U&X9;\c@6~>
-!<E0!joV@Ys8(:G!;b7G!:889!<1OK!;Y1F!:889!<1OK!9Vi3!:SJ<!;b7G!<:UL!.i[Uec17*
-V#TT>]`<Q~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<1OK!"7<W!7fU"!7_&Le^aTuo%!a?rmh#Ks4.&J
-rmgrIs4.,L"4[AOeboLJec,UNeGoU?ec,XJec,UOeGoU"r;clJr;clJrr</O!!(RJ!.i[hec17*
-V#TT>]`<Q~>
-!<E0!joV7Vs8(IL!<(XO!!M!U!8?0*!:nkD!<1^P!"7K\!8?-,!87DQg=lK*o%O*Drn@APs4[DO
-rn@;Ns4[JQ"53_TgAM$OgA_-Sg&M-DgA_0OgA_-Tg&M-,r;clOr;clOrr</T!!(aO!.ijmgAc^-
-U&X9;\c@6~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<1OK!"7<W!7fU"!7_&Le^aTuo%!a?rmh#Ks4.&J
-rmgrIs4.,L"4[AOeboLJec,UNeGoU?ec,XJec,UOeGoU"r;clJr;clJrr</O!!(RJ!.i[hec17*
-V#TT>]`<Q~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@rmh#K#1W\ReGoU"rW!/Q!!(R"!!)T?rW)oI
-rrE)Lrr<;S!!(R"!!(RG!<:UL!!(RK!!:[N!;"b@!<(IJ!"[T[!7fU"!7fU"!7fU"!7goGs4.,L
-J^p7?s+:KNs5rIW!.Y~>
-!<E0!joV7Vs8(IL!<(XO!"%?Z!87DQg=cN,o@j3Ern@AP#20%Wg&M-,rW!/V!!(a,!!)TDrW)oN
-rrE)Qrr<;X!!(a,!!(aL!<:dQ!!(aP!!:jS!;"qE!<(XO!"[c`!8?-,!8?-,!8?-,!8@8Ls4[JQ
-J_HUIs+(?Is5rIT!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@rmh#K#1W\ReGoU"rW!/Q!!(R"!!)T?rW)oI
-rrE)Lrr<;S!!(R"!!(RG!<:UL!!(RK!!:[N!;"b@!<(IJ!"[T[!7fU"!7fU"!7fU"!7goGs4.,L
-J^p7?s+:KNs5rIW!.Y~>
-!<E0!joV@Ys8(:D!"@BX!7_&LeGoU"eGoU@ebT7WeGoU"!!(R"!!(OL!7fU"!:\P<!<:UL!<:UL
-!;tCI!!(RK!<:UL!;tCI!<:UL!;"b=!#!f^!7_&Le^XX"e^XX"e^XX"ec#RKec#Q"eX4neK*A(N
-k2s>WJ,~>
-!<E0!joV7Vs8(II!"@Q]!87DQg&M-,g&M-EgA1d\g&M-,!!(a,!!(^Q!8?-,!:\_A!<:dQ!<:dQ
-!;tRN!!(aP!<:dQ!;tRN!<:dQ!;"qB!#!uc!87DQg=cN,g=cN,g=cN,gAV*PgAV)'g6gUoJH_bI
-k2s5TJ,~>
-!<E0!joV@Ys8(:D!"@BX!7_&LeGoU"eGoU@ebT7WeGoU"!!(R"!!(OL!7fU"!:\P<!<:UL!<:UL
-!;tCI!!(RK!<:UL!;tCI!<:UL!;"b=!#!f^!7_&Le^XX"e^XX"e^XX"ec#RKec#Q"eX4neK*A(N
-k2s>WJ,~>
-!<E0!joV@Ys8(:G!<(IJ!!CaO!7grHo@<j@rmh#K$Io+VeGoU"eGoU"qZ-*8rVurKqZ-ZHqu?fK
-!!*#KrrDuIrrE)LrrDZ@rrE#Jrr<>T!!(R"!!(R"qZ$]J!!)rIrW%N"RaqFj"f21\k.LbF~>
-!<E0!joV7Vs8(IL!<(XO!!CpT!8@;Mo@j3Ern@AP$JGI[g&M-,g&M-,qZ-*=rVurPqZ-ZMqu?fP
-!!*#PrrDuNrrE)QrrDZErrE#Orr<>Y!!(a,!!(a,qZ$]O!!)rNrW%N'RbIdm"ektYk.1PC~>
-!<E0!joV@Ys8(:G!<(IJ!!CaO!7grHo@<j@rmh#K$Io+VeGoU"eGoU"qZ-*8rVurKqZ-ZHqu?fK
-!!*#KrrDuIrrE)LrrDZ@rrE#Jrr<>T!!(R"!!(R"qZ$]J!!)rIrW%N"RaqFj"f21\k.LbF~>
-!<E0!joV@Ys8(:G!<(IJ!!UmQ!7_&Ln(%F<rmh#K%+P=XeGoU"eGoU"!!)K<rrE&Krr<,N!!)rI
-rrE)Lrr<,N!!*#KrrDuIrrE)LrrDZ@rrE#Jrr<DV!!(R"!!(R"!!)rIrrDrHrW%N"S(7Ok"f21\
-k.LbF~>
-!<E0!joV7Vs8(IL!<(XO!!V'V!87DQn(RdArn@AP%,([]g&M-,g&M-,!!)KArrE&Prr<,S!!)rN
-rrE)Qrr<,S!!*#PrrDuNrrE)QrrDZErrE#Orr<D[!!(a,!!(a,!!)rNrrDrMrW%N'S(dmn"ektY
-k.1PC~>
-!<E0!joV@Ys8(:G!<(IJ!!UmQ!7_&Ln(%F<rmh#K%+P=XeGoU"eGoU"!!)K<rrE&Krr<,N!!)rI
-rrE)Lrr<,N!!*#KrrDuIrrE)LrrDZ@rrE#Jrr<DV!!(R"!!(R"!!)rIrrDrHrW%N"S(7Ok"f21\
-k.LbF~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@rmh#K#1W\ReGoU"rW!/Q!!(R"!!)W@rrE&K
-rr<V\!!(R"!!(OL!7fU"!7_&Lrmh#Ks4.,L#1W\Re^XX"o@<j@rRLoJ#LreSe^XX"ec#RKec,UN
-eGoUKec,XLec,W#eXP+hK*A(Nk2s>WJ,~>
-!<E0!joV7Vs8(IL!<(XO!"%?Z!87DQg=cN,o@j3Ern@AP#20%Wg&M-,rW!/V!!(a,!!)WErrE&P
-rr<Va!!(a,!!(^Q!8?-,!87DQrn@APs4[JQ#20%Wg=cN,o@j3ErS%8O#MK.Xg=cN,gAV*PgA_-S
-g&M-PgA_0QgA_/(g7-grJH_bIk2s5TJ,~>
-!<E0!joV@Ys8(:G!<(IJ!"%0U!7_&Le^XX"o@<j@rmh#K#1W\ReGoU"rW!/Q!!(R"!!)W@rrE&K
-rr<V\!!(R"!!(OL!7fU"!7_&Lrmh#Ks4.,L#1W\Re^XX"o@<j@rRLoJ#LreSe^XX"ec#RKec,UN
-eGoUKec,XLec,W#eXP+hK*A(Nk2s>WJ,~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<1OK!"7<W!7fU"!7_&Le^aTun^[O;rmgrIrmguJ
-!7h#JrRLiHs4.,Ls4.,Lo@<j@rRLoJ!n@8Nrmh#Ks4.&Js4.,LrRLiHJ^p4>s+:KNs5rIW!.Y~>
-!<E0!joV7Vs8(IL!<(XO!!M!U!8?0*!:nkD!<1^P!"7K\!8?-,!87DQg=lK*n_3m@rn@;Nrn@>O
-!8@AOrS%2Ms4[JQs4[JQo@j3ErS%8O!nmVSrn@APs4[DOs4[JQrS%2MJ_HRHs+(?Is5rIT!.Y~>
-!<E0!joV@Ys8(:G!<(IJ!!LgP!7fWu!:n\?!<1OK!"7<W!7fU"!7_&Le^aTun^[O;rmgrIrmguJ
-!7h#JrRLiHs4.,Ls4.,Lo@<j@rRLoJ!n@8Nrmh#Ks4.&Js4.,LrRLiHJ^p4>s+:KNs5rIW!.Y~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@uNgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@uNgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@uNgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@uNgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@uNgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@uNgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joV7Vs+/mTg4@uNgAc^-U&X9;\c@6~>
-!<E0!joV@Ys+/^OeUc9Dec17*V#TT>]`<Q~>
-!<E0!joD3.eUc8%ea_/nV#TT>]`<Q~>
-!<E0!joD*+g4@t/g@<l#U&X9;\c@6~>
-!<E0!joD3.eUc8%ea_/nV#TT>]`<Q~>
-!<E0!joD3.eUc8)eaA%oeYN6-k.LbF~>
-!<E0!joD*+g4@t3g?sLrg7eQ/k.1PC~>
-!<E0!joD3.eUc8)eaA%oeYN6-k.LbF~>
-!<E0!joV@/eU_IdC5Qd*eaJ+qs4*qFk2s>WJ,~>
-!<E0!joV71g4=g+JVo$Xg@'Rts4X1Hk2s5TJ,~>
-!<E0!joV@/eU`X0Mi*GleaJ+qs4*qFk2s>WJ,~>
-!<E0!joV@/eU_IdC5Zg,mf(c:KDN7]KDN:]rs%#Ls5rIW!.Y~>
-!<E0!joV71g4=g+JW#'Zs8LaPJbm4`Jbm7`rs%2Ns5rIT!.Y~>
-!<E0!joV@/eU`X0Mi3Jns8LRKKDN7]KDN:]rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I5XT._fec1:!]`J.cqRuq/#1]OLk2s>WJ,~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca$_?'[fqSN:4#25dNk2s5TJ,~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:!]`J.cqRuq/#1]OLk2s>WJ,~>
-!<E0!johL1eS8iMXF[I5XT._fec1:!]`S4dKDW@^rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca$_?0agJc!=ars%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:!]`S4dKDW@^rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I5XT._fec1:"^&S-4KDW@^rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca%_Z0Z9Jc!=ars%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:"^&S-4KDW@^rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMX8o@#!;rqs!.h5AXT._fec1:"^&S*6eUrMP^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g&Tk*!;tRL!.ijogAh3PgAca%_Z0W;g4=hQ_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:joFQB!;u!X!.j:&k5YJ\ec1:"^&S*6eUrMP^&S*:eYN6-k.LbF~>
-!<E0!joqR2eS8j#qZ-Srq>gPsq>gMrrW)hsquHbuquHAjquHYrq>^MsrW)r!rVur"q>^MsquH#`
-!!)u!!!*#"!!)u!!!%SOSZMkZrmh%$rOr72s4..%r4W.1#1]OLk2s>WJ,~>
-!<E0!joqI4g4=h/qZ-TKq>gQLq>gNKrW)iLquHcNquHBCquHZKq>^NLrW)rOrVurPq>^NLquH$9
-!!)uO!!*#P!!)uO!!%T(S_F,Drn@C'rPJU7s4[L(r5/L6#25dNk2s5TJ,~>
-!<E0!joqR2eVf@JqZ-TWq>gQXq>gNWrW)iXquHcZquHBOquHZWq>^NXrW)r[rVur\q>^NXquH$E
-!!)u[!!*#\!!)u[!!%T4S`]tPrmh%$rOr72s4..%r4W.1#1]OLk2s>WJ,~>
-!<E0!jp.^4eS8j#X8r4#!!)u!!!)u!#lq'.!3E7%XK2F"X8i7rX8i7tX8i7iX8i7rX8i8!X9/I(
-X8r1"!!*#"!!)u!!!*#"!!)5a!!)u!!!*#"!!)u!!!%SOSZMkZrmh%$rOr72rmh%$rOr72#1]OL
-k2s>WJ,~>
-!<E0!jp.U6g4=h/g&V**!!)uO!!)uO#lr]5!8?-,g=cQ)g&M-Kg&M-Mg&M-Bg&M-Kg&M-Og&h?/
-g&V')!!*#P!!)uO!!*#P!!)6:!!)uO!!*#P!!)uO!!%T(S_F,Drn@C'rPJU7rn@C'rPJU7#25dN
-k2s5TJ,~>
-!<E0!jp.^4eVf@JjoGAB!!)u[!!)u[#ls,M!9WDDk2l[Ajo>DWjo>DYjo>DNjo>DWjo>D[joYVG
-joG>A!!*#\!!)u[!!*#\!!)6F!!)u[!!*#\!!)u[!!%T4S`]tPrmh%$rOr72rmh%$rOr72#1]OL
-k2s>WJ,~>
-!<E0!jp.^4eS8j#X8r1"!!*#"!!)u!#lq'.!3E7%XK2F#X9&C'!;`bs!;iht!:[&i!;W\r!<&u$
-!3E7%r2]kuri?)"rN#u!ri?)"poOJqm]6Bgri?)"rN#u!JZPEDs6fm:s+C<as8W&Js+C9`s8N;R
-V#TT>]`<Q~>
-!<E0!jp.U6g4=h/g&V')!!*#P!!)uO#lr]5!8?-,g=cQ*g&_9.!;bCL!;kIM!:\\B!;Y=K!<(UR
-!8?-,r7V,Nrn7>PrRq5Orn7>PptG`Jmb.X@rn7>PrRq5OJ_H[Ks8W)Ps+10ds8W&Os+1-cs8N;W
-U&X9;\c@6~>
-!<E0!jp.^4eVf@JjoG>A!!*#\!!)u[#ls,M!9WDDk2l[BjoPPF!;bgX!;kmY!:]+N!;YaW!<)$^
-!9WDDr8mtZroO1\rT4([roO1\pu_SVmcFKLroO1\rT4([J``Ncs8W)Ks+C<as8W&Js+C9`s8N;R
-V#TT>]`<Q~>
-!<E0!jp.^4eS8j#X8r1"!!*#"!s#F(!;`bs!;`bu!3?1sX8i7tX8i7iX8i7rX9/I(X8r1"!!*#"
-!!)u!!s#F(!;rnu!;NYq!:Quh!<&u!!<&u!!.h5BXT._fec1:$^&S-1ec1:$^&S*:eYN6-k.LbF~>
-!<E0!jp.U6g4=h/g&V')!!*#P!s%'/!;bCL!;bCN!87GLg&M-Mg&M-Bg&M-Kg&h?/g&V')!!*#P
-!!)uO!s%'/!;tON!;P:J!:SVA!<(UO!<(UO!.ijpgAh3PgAca'_Z0Z6gAca'_Z0W?g7eQ/k.1PC~>
-!<E0!jp.^4eVf@JjoG>A!!*#\!s%KG!;bgX!;bgZ!9O:Xjo>DYjo>DNjo>DWjoYVGjoG>A!!*#\
-!!)u[!s%KG!;tsZ!;P^V!:T%M!<)$[!<)$[!.j:'k5YJ\ec1:$^&S-1ec1:$^&S*:eYN6-k.LbF~>
-!<E0!jp.^4eS8j#X8r1"!!*#"r;c\q!!)nt!!*#"!!)nt!!)nt!!)Mi!!)hrr;cbs!!*#"!!)u!
-r;cbs!!),^!!)qu!!)u!!!%SOSZMkZrmh%$s1SI4qpk_!rk8@3#1]OLk2s>WJ,~>
-!<E0!jp.U6g4=h/g&V')!!*#Pr;c]J!!)oM!!*#P!!)oM!!)oM!!)NB!!)iKr;ccL!!*#P!!)uO
-r;ccL!!)-7!!)rN!!)uO!!%T(S_F,Drn@C's2+g9qqD($rke^8#25dNk2s5TJ,~>
-!<E0!jp.^4eVf@JjoG>A!!*#\r;c]V!!)oY!!*#\!!)oY!!)oY!!)NN!!)iWr;ccX!!*#\!!)u[
-r;ccX!!)-C!!)rZ!!)u[!!%T4S`]tPrmh%$s1SI4qpk_!rk8@3#1]OLk2s>WJ,~>
-!<E0!jp.^4eS8j#X8r1"!!*#"!s#F(!;`bs!;ikq!;iht!;iht!<&u!!;3Dn!<&u!!<0&%!3E7%
-qlBi!X8r1"!s#F(!;rnu!<&u!!:-]d!;iht!<&u!!.h5BXT._fec1:%^&S-/ec1:%^&S*:eYN6-
-k.LbF~>
-!<E0!jp.U6g4=h/g&V')!!*#P!s%'/!;bCL!;kLJ!;kIM!;kIM!<(UO!;5%G!<(UO!<1[S!8?-,
-qq;)Og&V')!s%'/!;tON!<(UO!:/>=!;kIM!<(UO!.ijpgAh3PgAca(_Z0Z4gAca(_Z0W?g7eQ/
-k.1PC~>
-!<E0!jp.^4eVf@JjoG>A!!*#\!s%KG!;bgX!;kpV!;kmY!;kmY!<)$[!;5IS!<)$[!<2*_!9WDD
-qrRq[joG>A!s%KG!;tsZ!<)$[!:/bI!;kmY!<)$[!.j:'k5YJ\ec1:%^&S-/ec1:%^&S*:eYN6-
-k.LbF~>
-!<E0!jp.^4eS8j#X8r1"!!*#"!!)u!!!)qu!!)qu!!)qu!!)qu!!)nt!!)u!!!)\n!!)u!!!*#"
-!!)u!!!)u!!W];%r2]kurN#u!ri?)"rN#u!m&U0eqQ'YsrN#u!JZPEDs6fm:s+:Bds8VoFs+C?b
-s8N;RV#TT>]`<Q~>
-!<E0!jp.U6g4=h/g&V')!!*#P!!)uO!!)rN!!)rN!!)rN!!)rN!!)oM!!)uO!!)]G!!)uO!!*#P
-!!)uO!!)uO!W^pSr7V,NrRq5Orn7>PrRq5Om+MF>qUtoLrRq5OJ_H[Ks8W)Ps+(6gs8VoKs+13e
-s8N;WU&X9;\c@6~>
-!<E0!jp.^4eVf@JjoG>A!!*#\!!)u[!!)rZ!!)rZ!!)rZ!!)rZ!!)oY!!)u[!!)]S!!)u[!!*#\
-!!)u[!!)u[!W_?_r8mtZrT4([roO1\rT4([m,e9JqW7bXrT4([J``Ncs8W)Ks+:Bds8VoFs+C?b
-s8N;RV#TT>]`<Q~>
-!<E0!jp.^4eS8j#X8r4#!!)u!!!)u!!!)qu!!)qu!!)qu!!)qu!!)nt!!)u!!!)\n!!)u!!!*#"
-!!)u!!!)qu!!)nt!!)u!!!*#"!!)u!!!)u!rrDYl!!)u!!!*#"!!)u!!!%SOSZMkZrmh%$!knX6
-psoCs$,-B=eYN6-k.LbF~>
-!<E0!jp.U6g4=h/g&V**!!)uO!!)uO!!)rN!!)rN!!)rN!!)rN!!)oM!!)uO!!)]G!!)uO!!*#P
-!!)uO!!)rN!!)oM!!)uO!!*#P!!)uO!!)uOrrDZE!!)uO!!*#P!!)uO!!%T(S_F,Drn@C'!lG!;
-ptGb!$,Z`Bg7eQ/k.1PC~>
-!<E0!jp.^4eVf@JjoGAB!!)u[!!)u[!!)rZ!!)rZ!!)rZ!!)rZ!!)oY!!)u[!!)]S!!)u[!!*#\
-!!)u[!!)rZ!!)oY!!)u[!!*#\!!)u[!!)u[rrDZQ!!)u[!!*#\!!)u[!!%T4S`]tPrmh%$!knX6
-psoCs$,-B=eYN6-k.LbF~>
-!<E0!joqR2eS8j#qZ-Srq>gMrquHbur;Zi!r;cl!quHbuq#L/jq#LGrq>gGp!!)quq>^Msq#LAp
-rrDYlqZ-Srr;_DMS?2bYrmh%$s8VbE$,-B=eYN6-k.LbF~>
-!<E0!joqI4g4=h/qZ-TKq>gNKquHcNr;ZiOr;clOquHcNq#L0Cq#LHKq>gHI!!)rNq>^NLq#LBI
-rrDZEqZ-TKr;_E&SD+#Crn@C's8VbC$,Z`Bg7eQ/k.1PC~>
-!<E0!joqR2eVf@JqZ-TWq>gNWquHcZr;Zi[r;cl[quHcZq#L0Oq#LHWq>gHU!!)rZq>^NXq#LBU
-rrDZQqZ-TWr;_E2SEBkOrmh%$s8VbE$,-B=eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec17%s7:mCrs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t<gAh3PgAc^(s7:gArs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec17%s7:mCrs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I5XT._fec19m^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAc`p_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec19m^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec19krs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t<gAh3PgAc`nrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec19krs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I5XT._fec19nrs=>Xs4*qFk2s>WJ,~>
-!<E0!johC3g4=g+g4@t<gAh3PgAc`qrs=8Vs4X1Hk2s5TJ,~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec19nrs=>Xs4*qFk2s>WJ,~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXN7IC!.h5mXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g;qtJ!.ikFgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k/cZb!.j:Rk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!joqR2eS8j#quHVqrW)ktqZ-Vsq>^MsquEau!!(0C!!)nt!!)2`rW)5brr@bSs6fm:s+C@O
-p=91qs8N;RV#TT>]`<Q~>
-!<E0!joqI4g4=h/quHWJrW)lMqZ-WLq>^NLquEbN!!(0q!!)oM!!)39rW)6;rr@c,s8W)Ps+14M
-p=fOts8N;WU&X9;\c@6~>
-!<E0!joqR2eVf@JquHWVrW)lYqZ-WXq>^NXquEbZ!!(1(!!)oY!!)3ErW)6Grr@c8s8W)Ks+C@O
-p=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i7pX8i7tX8i8!X8i8"X8i8!X8i8"X8i7!X8i7<X8i7^X8i7bX8i6SXT._f
-ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hSg&M-Ig&M-Mg&M-Og&M-Pg&M-Og&M-Pg&M,Og&M,jg&M-7g&M-;g&M,,gAh3P
-gAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@bjo>DUjo>DYjo>D[jo>D\jo>D[jo>D\jo>C[jo>D!jo>DCjo>DGjo>C8k5YJ\
-ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8juX8i7qX9&C'!;rnu!<&u!!<0&"!<&u!!<0&"!;NYq!48j*!<'#!!<9/#!<9/"
-!<9/"!;ESo!<0)!!!]M)!3E7%!<'"u!;rqr!;iks!:d,j!;ikr!;iks!!0/$ri?/$XK;C$MQHjG
-rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSg&M-Jg&_9.!;tON!<(UO!<1[P!<(UO!<1[P!;P:J!4:JX!<(XO!<:dQ!<:dP
-!<:dP!;G4H!<1^O!!_-W!8?-,!<(XN!;tRK!;kLL!:ebC!;kLK!;kLL!!1dRrn7DRg=lN+MVA+1
-rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bjo>DVjoPPF!;tsZ!<)$[!<2*\!<)$[!<2*\!;P^V!4:nd!<)'[!<;3]!<;3\
-!<;3\!;GXT!<2-[!!_Qc!9WDD!<)'Z!;u!W!;kpX!:f1O!;kpW!;kpX!!23^roO7^k2uXCMWXs=
-rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i7qX9&C'!;rnu!<&u!!<0&%!3E7%r2]kupoOJqZ`F-,q5ai%X8o?'!3E7%
-rN#u!orJ,nr2]kuri?8'X8o?'!;rnu!;iht!;W\r!<0&"!:m2k!;rnu!<&u!!<&u!!<0)"!<0&%
-!3E7%LogXErmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSg&M-Jg&_9.!;tON!<(UO!<1[S!8?-,r7V,NptG`JZe>BZq:Z)Sg&Tj\!8?-,
-rRq5Op"BBGr7V,Nrn7MUg&Tj\!;tON!;kIM!;Y=K!<1[P!:nhD!;tON!<(UO!<(UO!<1^P!<1[S
-!8?-,Lt_n/rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bjo>DVjoPPF!;tsZ!<)$[!<2*_!9WDDr8mtZpu_SVZfV5fq;qq_joFQ+!9WDD
-rT4([p#Z5Sr8mtZroO@ajoFQ+!;tsZ!;kmY!;YaW!<2*\!:o7P!;tsZ!<)$[!<)$[!<2-\!<2*_
-!9WDDM!"a;rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i7rX8i8"X8i8!XS`(sXSi.sX8i7!X8i7rXT&:tX8i8!X8i7nX9J[+X8o?'
-!<0)"!;NVq!;iht!;`bs!;rnu!;!8l!<&u!!;ii"!3E7%r2]kuri?/$X8n$Ws6fm:s+C@Op=91q
-s8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Kg&M-Pg&M-OgACsLgAM$Lg&M,Og&M-KgA_0Mg&M-Og&M-Gg'.Q2g&Tj\
-!<1^P!;P7J!;kIM!;bCL!;tON!;"nE!<(UO!;kIP!8?-,r7V,Nrn7DRg&Qo^s8W)Ps+14Mp=fOt
-s8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>DWjo>D\jo>D[k555Xk5>;Xjo>C[jo>DWk5PGYjo>D[jo>DSjothJjoFQ+
-!<2-\!;P[V!;kmY!;bgX!;tsZ!;#=Q!<)$[!;km\!9WDDr8mtZroO7^joC2!s8W)Ks+C@Op=91q
-s8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i8!X8i8"XS`(sX8i8!X8i8"X9/I(X8r1"!!)u!!!'.&!!)hr!!)hr!s#F(
-!;*>s!3E7%XK2F$X8i7pX8i7tX8i7sXSMqgX8i8!X8i7tX9/I(X8r$srr@eTs6fm:s+C@Op=91q
-s8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Og&M-PgACsLg&M-Og&M-Pg&h?/g&V')!!)uO!!'.T!!)iK!!)iK!s%'/
-!;+tL!8?-,g=cQ+g&M-Ig&M-Mg&M-LgA1g@g&M-Og&M-Mg&h?/g&Up%rr@f-s8W)Ps+14Mp=fOt
-s8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>D[jo>D\k555Xjo>D[jo>D\joYVGjoG>A!!)u[!!'.`!!)iW!!)iW!s%KG
-!;,CX!9WDDk2l[Cjo>DUjo>DYjo>DXk5#)Ljo>D[jo>DYjoYVGjoG2=rr@f9s8W)Ks+C@Op=91q
-s8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i8!X9/I(X8r1"!!*#"!!)u!!!*#"!!)u!!!*#"!!)u!!!'.&!!)hr!!)hr
-!s#F(!;!8p!3?1%!<&u!!;EPp!;iht!;`bs!:?if!<&u!!;ii"!3E7%poFMsX8n$Ws6fm:s+C@O
-p=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V')!!*#P!!)uO!!*#P!!)uO!!*#P!!)uO!!'.T!!)iK!!)iK
-!s%'/!;"nI!87G,!<(UO!;G1I!;kIM!;bCL!:AJ?!<(UO!;kIP!8?-,pt>cLg&Qo^s8W)Ps+14M
-p=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>D[joYVGjoG>A!!*#\!!)u[!!*#\!!)u[!!*#\!!)u[!!'.`!!)iW!!)iW
-!s%KG!;#=U!9O:D!<)$[!;GUU!;kmY!;bgX!:AnK!<)$[!;km\!9WDDpuVVXjoC2!s8W)Ks+C@O
-p=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i8!X9/I(X8r1"!!*#"!!)u!!!*#"!!)u!!!*#"!!)u!!!)u!rrBC,!!*#"
-!!)u!!!)eqrrDVkrr<,%!!)u!!!)bp!!)nt!!*#"!!)u!!!)u!!!)Vl!!)qu!!)u!!!)u!!!)u!
-!!*#"!s#F(!/R`Vmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V')!!*#P!!)uO!!*#P!!)uO!!*#P!!)uO!!)uOrrBCZ!!*#P
-!!)uO!!)fJrrDWDrr<,S!!)uO!!)cI!!)oM!!*#P!!)uO!!)uO!!)WE!!)rN!!)uO!!)uO!!)uO
-!!*#P!s%'/!/TA/s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>D[joYVGjoG>A!!*#\!!)u[!!*#\!!)u[!!*#\!!)u[!!)u[rrBCf!!*#\
-!!)u[!!)fVrrDWPrr<,_!!)u[!!)cU!!)oY!!*#\!!)u[!!)u[!!)WQ!!)rZ!!)u[!!)u[!!)u[
-!!*#\!s%KG!/Te;s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!joqR2eS8j#q#CDrr;Zi!r;Zi!qZ-Vsq>^Msq#LAprrB@+rW)nur;cYp!!)Skrr<,%!!*#"
-r;c_rquHYrrW)hsr;cJkquH\sr;c_rr;churrE)#rW%hWs6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!joqI4g4=h/q#CEKr;ZiOr;ZiOqZ-WLq>^NLq#LBIrrB@YrW)oNr;cZI!!)TDrr<,S!!*#P
-r;c`KquHZKrW)iLr;cKDquH]Lr;c`Kr;ciNrrE)QrW%i0s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!joqR2eVf@Jq#CEWr;Zi[r;Zi[qZ-WXq>^NXq#LBUrrB@erW)oZr;cZU!!)TPrr<,_!!*#\
-r;c`WquHZWrW)iXr;cKPquH]Xr;c`Wr;ciZrrE)]rW%i<s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXR3(h!.h5HXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g?mSo!.ik!gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k3_:2!.j:-k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXR3(h!.h5HXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g?mSo!.ik!gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k3_:2!.j:-k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXRE7h!<'"o!7\+F!.h67XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g@*bo!<(XH!7]`t!.ikegAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k3qI2!<)'T!7^0+!.j:qk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXPU&Y!.h5XXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g>:Q`!.ik1gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k2,8#!.j:=k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp%X3eS8j#XSMnsXSW"qXSi.uXSr5!XSr3OX8i7hXSr4sXSr3NXO4-Lmf(c:KE(uFec1:%
-rs%#Ls5rIW!.Y~>
-!<E0!jp%O5g4=h/gA1dLgA:mJgAM$NgAV*OgAV)(g&M-AgAV*LgAV)'g<nXSs8LaPJcGcDgAca(
-rs%2Ns5rIT!.Y~>
-!<E0!jp%X3eVf@Jk5#&Xk5,/Vk5>;Zk5GA[k5G@4jo>DMk5GAXk5G@3k0`>ks8LRKKE(uFec1:%
-rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i8!X9/I(X8r4#!!*#"!!)u!!!*#"rrE&"rr@VO!!)Df!!)hr!!%SOdB*B9
-rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V**!!*#P!!)uO!!*#PrrE&Prr@W(!!)E?!!)iK!!%T(dG"X#
-rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bjo>D[joYVGjoGAB!!*#\!!)u[!!*#\rrE&\rr@W4!!)EK!!)iW!!%T4dH:K/
-rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i8!X9/I(X8r4#!s#F(!;ii%!3E7%X8o@$!<'#!!3E:%!!]M)!3?/#XSr5"
-XSr4mXS`(tX8r=&rW)hsrW)er!!)hr!!%SOdB*B9rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V**!s%'/!;kIS!8?-,g&Tk+!<(XO!3FoS!!_-W!87DQgAV*P
-gAV*FgACsMg&V3-rW)iLrW)fK!!)iK!!%T(dG"X#rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bjo>D[joYVGjoGAB!s%KG!;km_!9WDDjoFQC!<)'[!3G>_!!_Qc!9O7]k5GA\
-k5GARk555YjoGJErW)iXrW)fW!!)iW!!%T4dH:K/rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX9/I(X8r4#!!)u!!s#F(!;ii(!3E7%X8o=%X8r4#rrB+$rr<;*!!')#XK2F#
-X8i7nX8i8!X8i8"XT&;"X8i8!X8i8"X8i7tX8i7rX8i6OXO4-Lmf(c:KE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johC3g4=hSg&h?/g&V**!!)uO!s%'/!;kIV!8?-,g&Th,g&V**rrB+Rrr<;X!!(^Qg=cQ*
-g&M-Gg&M-Og&M-PgA_0Pg&M-Og&M-Pg&M-Mg&M-Kg&M,(g<nXSs8LaPJcGcDgAca(rs%2Ns5rIT
-!.Y~>
-!<E0!johL1eVf@bjoYVGjoGAB!!)u[!s%KG!;kmb!9WDDjoFNDjoGABrrB+^rr<;d!!)-]k2l[B
-jo>DSjo>D[jo>D\k5PG\jo>D[jo>D\jo>DYjo>DWjo>C4k0`>ks8LRKKE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johL1eS8juXSi.tX8i8"X8i8"X8i7tX9em.X8o?'!3E7%V5st'XK2E'X8o?'!<&u!!;3Dn
-!;W\r!<&u!!<0&"!;rnu!;rnu!;W\r!.h6!XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hSgAM$Mg&M-Pg&M-Pg&M-Mg'Ic5g&Tj\!8?-,V:l4Ug=cP\g&Tj\!<(UO!;5%G
-!;Y=K!<(UO!<1[P!;tON!;tON!;Y=K!.ikOgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@bk5>;Yjo>D\jo>D\jo>DYjp;%MjoFQ+!9WDDV</'ak2l[+joFQ+!<)$[!;5IS
-!;YaW!<)$[!<2*\!;tsZ!;tsZ!;YaW!.j:[k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8juX9/I(X8r4#r;cet!!)nt#lq'.!3E7%XK2DuX9J[+X8o?'!<0&%!3E7%o;qlj
-rN#u!rN#u!riGqrr2]kuq5aPrJZR8#s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&h?/g&V**r;cfM!!)oM#lr]5!8?-,g=cP'g'.Q2g&Tj\!<1[S!8?-,o@j-C
-rRq5OrRq5Orn@2Kr7V,Nq:YfKJ_JN*s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjoYVGjoGABr;cfY!!)oY#ls,M!9WDDk2lZ?jothJjoFQ+!<2*_!9WDDoB,uO
-rT4([rT4([roX%Wr8mtZq;qYWJ`bABs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i7sX8i8"X8i8"X8i7tX9/I(X8r1"!!&js"ota+!3E7%ri?2%XK2EjX8i8"
-X8i8!X8i8"X8i7oX8i7rX8i6OXO4-Lmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Lg&M-Pg&M-Pg&M-Mg&h?/g&V')!!&kL"p!B2!8?-,rn7GSg=cPqg&M-P
-g&M-Og&M-Pg&M-Hg&M-Kg&M,(g<nXSs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>DXjo>D\jo>D\jo>DYjoYVGjoG>A!!&kX"p!fJ!9WDDroO:_k2l[4jo>D\
-jo>D[jo>D\jo>DTjo>DWjo>C4k0`>ks8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i7sX8i8!X8i8"X8i8!X8i8"X8i7uX8i8!XT&:$X9J[+X8o?'!<'#!!;!8l
-!<&u!!<0&"!<&u!!<&u!!<&u!!;rnu!;W\r!.h6!XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hSg&M-Lg&M-Og&M-Pg&M-Og&M-Pg&M-Ng&M-OgA_/Rg'.Q2g&Tj\!<(XO!;"nE
-!<(UO!<1[P!<(UO!<(UO!<(UO!;tON!;Y=K!.ikOgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@bjo>DXjo>D[jo>D\jo>D[jo>D\jo>DZjo>D[k5PF^jothJjoFQ+!<)'[!;#=Q
-!<)$[!<2*\!<)$[!<)$[!<)$[!;tsZ!;YaW!.j:[k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp%X3eS8j#XSi.tXSr4uX8i8"XSi.uXSr5!XSr5!XT&:%XSr2'X8i7%!!)u!!!)VlquH_t
-rW)u"rW)nur;cetquH\squD;Le#`T;rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp%O5g4=h/gAM$MgAV*Ng&M-PgAM$NgAV*OgAV*OgA_/SgAV'Ug&M-,!!)uO!!)WEquH`M
-rW)uPrW)oNr;cfMquH]LquD<%e(Xj%rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!jp%X3eVf@Jk5>;Yk5GAZjo>D\k5>;Zk5GA[k5GA[k5PF_k5G>ajo>DD!!)u[!!)WQquH`Y
-rW)u\rW)oZr;cfYquH]XquD<1e)p]1rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8iMXS/^q!.h5?XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g@j5#!.ijmgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k4[p;!.j:$k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXS/^q!.h5?XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g@j5#!.ijmgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k4[p;!.j:$k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXSAmq!<'"o!.h5MXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+gA'D#!<(XH!.ik&gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k4n*;!<)'T!.j:2k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXP0`U!.h5[XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g=k6\!.ik4gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k1\qt!.j:@k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp%X3eS8j#XSMqrXSi-MXQlke!9pTa!:$Zc!.h6:XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp%O5g4=h/gA1gKgAM#&g?RAl!9r5:!:&;<!.ikhgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!jp%X3eVf@Jk5#)Wk5>:2k3D(/!9rYF!:&_H!.j:tk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jq+?=eS8j#X8o?'!3E7%XK2F#X8i6OXO+$K!9pQb!.h6:XT._fec1:%s7Y"CKE(rUeYN6-
-k.LbF~>
-!<E0!jq+6?g4=h/g&Tj\!8?-,g=cQ*g&M,(g<eOR!9r2;!.ikhgAh3PgAca(s7Y1HJcG`Sg7eQ/
-k.1PC~>
-!<E0!jq+?=eVf@JjoFQ+!9WDDk2l[Bjo>C4k0W5j!9rVG!.j:tk5YJ\ec1:%s7Y"CKE(rUeYN6-
-k.LbF~>
-!<E0!jq"9<eS8j#X8o?'!3E7%X8r.!!!)u!rrALhrr<A,!!')#!3?/#XSr4sXSr4tXS`(sXSr4s
-XSi.hX8i7tXSi.rXSr2#X8r7$!W]='rW)nurW)nurrE)#rr@VO!j(hXrmh%$s8VfCs+C@O#1]OL
-k2s>WJ,~>
-!<E0!jq"0>g4=h/g&Tj\!8?-,g&V$(!!)uOrrAMArr<AZ!!(^Q!87DQgAV*LgAV*MgACsLgAV*L
-gAM$Ag&M-MgAM$KgAV'Qg&V-+!W^s.rW)oNrW)oNrrE)Qrr@W(!o!\Srn@C's8VfHs+14M#25dN
-k2s5TJ,~>
-!<E0!jq"9<eVf@JjoFQ+!9WDDjoG;@!!)u[rrAMMrr<Af!!)-]!9O7]k5GAXk5GAYk555Xk5GAX
-k5>;Mjo>DYk5>;Wk5G>]joGDC!W_BFrW)oZrW)oZrrE)]rr@W4!p9O_rmh%$s8VfCs+C@O#1]OL
-k2s>WJ,~>
-!<E0!johL1eS8jsX8i8!X8i7tX8i8!XT&9gXT&8+X8i7%!3E7%!<0&"!<&u!!<0&"!<0&"!<&u!
-!;iht!;rnu!<&u!!:m2k!;rnu!<&u!!<&u!!<0)"!<0&%!3E7%r2]kuri?)"rN$/&X8o?'!.h6O
-mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hQg&M-Og&M-Mg&M-OgA_/@gA_-Yg&M-,!8?-,!<1[P!<(UO!<1[P!<1[P!<(UO
-!;kIM!;tON!<(UO!:nhD!;tON!<(UO!<(UO!<1^P!<1[S!8?-,r7V,Nrn7>PrRqDTg&Tj\!.il(
-s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@`jo>D[jo>DYjo>D[k5PFLk5PDejo>DD!9WDD!<2*\!<)$[!<2*\!<2*\!<)$[
-!;kmY!;tsZ!<)$[!:o7P!;tsZ!<)$[!<)$[!<2-\!<2*_!9WDDr8mtZroO1\rT47`joFQ+!.j;4
-s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jsX8i8!X8i7tX8i6aX9em.X8o?'!3E7%rN#u!ri?)"r2]u#XK2EqX8i7pX8i7k
-X8i8!X8i7tX9/I(X8r1"!!*#"!W];%r2]kur2]kuriH,"JZSgOs6fm:s+C@Op=91qs8N;RV#TT>
-]`<Q~>
-!<E0!johC3g4=hQg&M-Og&M-Mg&M,:g'Ic5g&Tj\!8?-,rRq5Orn7>Pr7V5Qg=cQ#g&M-Ig&M-D
-g&M-Og&M-Mg&h?/g&V')!!*#P!W^pSr7V,Nr7V,Nrn@APJ_L(Vs8W)Ps+14Mp=fOts8N;WU&X9;
-\c@6~>
-!<E0!johL1eVf@`jo>D[jo>DYjo>CFjp;%MjoFQ+!9WDDrT4([roO1\r8n(]k2l[;jo>DUjo>DP
-jo>D[jo>DYjoYVGjoG>A!!*#\!W_?_r8mtZr8mtZroX4\J`cpns8W)Ks+C@Op=91qs8N;RV#TT>
-]`<Q~>
-!<E0!johL1eS8jsX8i8!X8i7tX8i6aX9em.X8o?'!3E7%rN#u!riGqrriH%uqQ'YsqlK\qnuMfk
-rN#u!qlBl"XK2EsXT&:tXSMqrX8i6OXSf1"mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hQg&M-Og&M-Mg&M,:g'Ic5g&Tj\!8?-,rRq5Orn@2Krn@;NqUtoLqqCrJo%F'D
-rRq5Oqq;,Pg=cQ%gA_0MgA1gKg&M,(gAK\)s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@`jo>D[jo>DYjo>CFjp;%MjoFQ+!9WDDrT4([roX%WroX.ZqW7bXqr[eVo&]oP
-rT4([qrRt\k2l[=k5PGYk5#)Wjo>C4k5=BAs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jsX8i8!X8i7tX8i6aX9em.X8o?'!3E7%rN#u!ri?)"oW/#mqlBbtr2]kurN#u!
-nuMfkrN#u!qlBl"XK2EsX9&C'!;rnu!;NVq!.h6LXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hQg&M-Og&M-Mg&M,:g'Ic5g&Tj\!8?-,rRq5Orn7>Po\'9Fqq;#Mr7V,NrRq5O
-o%F'DrRq5Oqq;,Pg=cQ%g&_9.!;tON!;P7J!.il%gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@`jo>D[jo>DYjo>CFjp;%MjoFQ+!9WDDrT4([roO1\o]?,RqrRkYr8mtZrT4([
-o&]oPrT4([qrRt\k2l[=joPPF!;tsZ!;P[V!.j;1k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8jsX8i7uX8i8!X8i7uXT&9gX9em.X8o?'!3E7%rN#u!rN#u!rN$)$XK2F#X8i7t
-X8i7uX8i8"XT&:kX8i7uX8i8!X8i8!X8i8!X8i8"X9/I(X8r1"!!)u!!!*#"!!%SOr2fqdrmh%$
-s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hQg&M-Ng&M-Og&M-NgA_/@g'Ic5g&Tj\!8?-,rRq5OrRq5OrRq>Rg=cQ*g&M-M
-g&M-Ng&M-PgA_0Dg&M-Ng&M-Og&M-Og&M-Og&M-Pg&h?/g&V')!!)uO!!*#P!!%T(r7_2Nrn@C'
-s8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@`jo>DZjo>D[jo>DZk5PFLjp;%MjoFQ+!9WDDrT4([rT4([rT41^k2l[Bjo>DY
-jo>DZjo>D\k5PGPjo>DZjo>D[jo>D[jo>D[jo>D\joYVGjoG>A!!)u[!!*#\!!%T4r9"%Zrmh%$
-s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juXS`(sXSi.rXT&9hXSr2%X8i7%quHburW)nur;chuquHYrquH\srW!#$!!)\n
-quH\sr;c_rr;churrE)#rW)nur;chur;_DMriH.frmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSgACsLgAM$KgA_/AgAV'Sg&M-,quHcNrW)oNr;ciNquHZKquH]LrW!#R!!)]G
-quH]Lr;c`Kr;ciNrrE)QrW)oNr;ciNr;_E&rn@DPrn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bk555Xk5>;Wk5PFMk5G>_jo>DDquHcZrW)oZr;ciZquHZWquH]XrW!#^!!)]S
-quH]Xr;c`Wr;ciZrrE)]rW)oZr;ciZr;_E2roX7\rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXN[d@!.h5qXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g<A:G!.ikJgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k02u_!.j:Vk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMX8o@#!;rqs!;rqs!;rqs!:m2k!;`eq!:m2k!;NYq!:m2k!;NYq!;!;j!<'"r
-!:m5k!;rqt!:m5i!;iks!;iht!;W_q!;`es!;iht!:m5kmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g&Tk*!;tRL!;tRL!;tRL!:nhD!;bFJ!:nhD!;P:J!:nhD!;P:J!;"qC!<(XK
-!:nkD!;tRM!:nkB!;kLL!;kIM!;Y@J!;bFL!;kIM!:nkDs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:joFQB!;u!X!;u!X!;u!X!:o7P!;bjV!:o7P!;P^V!:o7P!;P^V!;#@O!<)'W
-!:o:P!;u!Y!:o:N!;kpX!;kmY!;YdV!;bjX!;kmY!:o:Ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp%X3eS8j#XSW"rXSr4uXSW"qXSr2#X8r7$q>^MsqZ+%*!!)u!!!*#"!!)u!!!*#"!!)u!
-!!*#"!!)u!!!)YmrrDqt!!)u!!!)YmrrDkr!W];%o;qrlq5aVtX8qmo!!)u!!!*#"!!)u!!!)Vl
-!W];%rN#u!ri?)"oW/#mrN#u!rN#u!q5jSrqQ'YspoFMsX8r1"rrDVks6fm:s+C@Op=91qs8N;R
-V#TT>]`<Q~>
-!<E0!jp%O5g4=h/gA:mKgAV*NgA:mJgAV'Qg&V-+q>^NLqZ+%X!!)uO!!*#P!!)uO!!*#P!!)uO
-!!*#P!!)uO!!)ZFrrDrM!!)uO!!)ZFrrDlK!W^pSo@j3Eq:YlMg&Ud!!!)uO!!*#P!!)uO!!)WE
-!W^pSrRq5Orn7>Po\'9FrRq5OrRq5Oq:biKqUtoLpt>cLg&V')rrDWDs8W)Ps+14Mp=fOts8N;W
-U&X9;\c@6~>
-!<E0!jp%X3eVf@Jk5,/Wk5GAZk5,/Vk5G>]joGDCq>^NXqZ+%d!!)u[!!*#\!!)u[!!*#\!!)u[
-!!*#\!!)u[!!)ZRrrDrY!!)u[!!)ZRrrDlW!W_?_oB-&Qq;q_YjoG&9!!)u[!!*#\!!)u[!!)WQ
-!W_?_rT4([roO1\o]?,RrT4([rT4([q<%\WqW7bXpuVVXjoG>ArrDWPs8W)Ks+C@Op=91qs8N;R
-V#TT>]`<Q~>
-!<E0!johL1eS8juX8i8!X8i7uX8i7uX8i8!X8i8"X8i8"XT&;!X8i8!X9/I(X8r4#!!'I/!!)u!
-!!*#"!!)u!!!*#"!!)u!!!*#"!!)u!!!)\n!W];%qlBbtrN#u!orJ2pX8r't!W];%oW/)oX8r't
-!W];%oW/#mrN#u!q5aPro;hunX8r4#!!)u!!!)\n!!)u!!!*#"!!)hr!W];%qlBbtpT+DrX8r4#
-!W];%nuVlZrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSg&M-Og&M-Ng&M-Ng&M-Og&M-Pg&M-PgA_0Og&M-Og&h?/g&V**!!'I]!!)uO
-!!*#P!!)uO!!*#P!!)uO!!*#P!!)uO!!)]G!W^pSqq;#MrRq5Op"BHIg&Us&!W^pSo\'?Hg&Us&
-!W^pSo\'9FrRq5Oq:YfKo@a6Gg&V**!!)uO!!)]G!!)uO!!*#P!!)iK!W^pSqq;#MpY#ZKg&V**
-!W^pSo%O-Drn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bjo>D[jo>DZjo>DZjo>D[jo>D\jo>D\k5PG[jo>D[joYVGjoGAB!!'Ii!!)u[
-!!*#\!!)u[!!*#\!!)u[!!*#\!!)u[!!)]S!W_?_qrRkYrT4([p#Z;UjoG5>!W_?_o]?2TjoG5>
-!W_?_o]?,RrT4([q;qYWoB$)SjoGAB!!)u[!!)]S!!)u[!!*#\!!)iW!W_?_qrRkYpZ;MWjoGAB
-!W_?_o&fuPrmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i8!X8i8!X9&C'!<&u!!<&u!!<0&"!<&u!!<&u!!<&u$!3E7%r2]kurN-#!
-\?#Z1ri?)"rN#u!ri?)"rN#u!q5aPro;holqlBbtrN#u!o;holqQ'c!XK2EmX8i7sX9/I(X8q^j
-!!)ks!!)Vl!s#F(!<&u!!<&u!!:[&i!<0&"!;EPp!;iht!;NVt!3E7%qlBbtnuVlZrmh%$s8VfC
-s+C@O#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSg&M-Og&M-Og&_9.!<(UO!<(UO!<1[P!<(UO!<(UO!<(UR!8?-,r7V,NrS%8O
-\Cpo_rn7>PrRq5Orn7>PrRq5Oq:YfKo@a0Eqq;#MrRq5Oo@a0EqUu#Og=cPtg&M-Lg&h?/g&UTq
-!!)lL!!)WE!s%'/!<(UO!<(UO!:\\B!<1[P!;G1I!;kIM!;P7M!8?-,qq;#Mo%O-Drn@C's8VfH
-s+14M#25dNk2s5TJ,~>
-!<E0!johL1eVf@bjo>D[jo>D[joPPF!<)$[!<)$[!<2*\!<)$[!<)$[!<)$^!9WDDr8mtZrT=+[
-\E3bkroO1\rT4([roO1\rT4([q;qYWoB$#QqrRkYrT4([oB$#QqW7k[k2l[7jo>DXjoYVGjoFl4
-!!)lX!!)WQ!s%KG!<)$[!<)$[!:]+N!<2*\!;GUU!;kmY!;P[Y!9WDDqrRkYo&fuPrmh%$s8VfC
-s+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i8!X8i8!X9&C'!<&u!!<&u!!<0&"!;NVt!3E7%rN#u!r2]kurN-#!\Z>c2
-rN#u!rN#u!ri?)"rN#u!qQ'YsnuMfkqlBbtrN#u!o;holqQ'c!XK2EmX8i7sX9/I(X8qak!!)hr
-!!)Vl!s#F(!<&u!!<0)"!:d,j!<&u"!3H/"qlBbtqlBeuXSr4tX9/I(X8r.!!!)Sks6fm:s+C@O
-p=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Og&M-Og&_9.!<(UO!<(UO!<1[P!;P7M!8?-,rRq5Or7V,NrS%8O\_7#`
-rRq5OrRq5Orn7>PrRq5OqUtoLo%F'Dqq;#MrRq5Oo@a0EqUu#Og=cPtg&M-Lg&h?/g&UWr!!)iK
-!!)WE!s%'/!<(UO!<1^P!:ebC!<(UP!8@DPqq;#Mqq;&NgAV*Mg&h?/g&V$(!!)TDs8W)Ps+14M
-p=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>D[jo>D[joPPF!<)$[!<)$[!<2*\!;P[Y!9WDDrT4([r8mtZrT=+[\`Nkl
-rT4([rT4([roO1\rT4([qW7bXo&]oPqrRkYrT4([oB$#QqW7k[k2l[7jo>DXjoYVGjoFo5!!)iW
-!!)WQ!s%KG!<)$[!<2-\!:f1O!<)$\!9X7\qrRkYqrRnZk5GAYjoYVGjoG;@!!)TPs8W)Ks+C@O
-p=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juX8i8!X8i8"X8i8"X8i8"X8i8"X8i7uXSi.sXSi.tX8i7uX8i7-X8i7uX8i8!
-X8i8"X8i8!X8i7tX8i7uXSW"qX8i7tX8i8!X8i8"XSW"qX8i7tX8i8"X8i7kX8i7tX8i8"X8i7j
-X8i7qX8i7mX8i8"X8i7uXSr2#X8qgm!!)qurrE&"!!)qu!!)ntrrE&"!!*#"!!*#"!!)nt!!)Sk
-s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Og&M-Pg&M-Pg&M-Pg&M-Pg&M-NgAM$LgAM$Mg&M-Ng&M,[g&M-Ng&M-O
-g&M-Pg&M-Og&M-Mg&M-NgA:mJg&M-Mg&M-Og&M-PgA:mJg&M-Mg&M-Pg&M-Dg&M-Mg&M-Pg&M-C
-g&M-Jg&M-Fg&M-Pg&M-NgAV'Qg&U]t!!)rNrrE&P!!)rN!!)oMrrE&P!!*#P!!*#P!!)oM!!)TD
-s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>D[jo>D\jo>D\jo>D\jo>D\jo>DZk5>;Xk5>;Yjo>DZjo>Cgjo>DZjo>D[
-jo>D\jo>D[jo>DYjo>DZk5,/Vjo>DYjo>D[jo>D\k5,/Vjo>DYjo>D\jo>DPjo>DYjo>D\jo>DO
-jo>DVjo>DRjo>D\jo>DZk5G>]joFu7!!)rZrrE&\!!)rZ!!)oYrrE&\!!*#\!!*#\!!)oY!!)TP
-s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juXS`(sXS`(tXSi.nX8i8!X9/I(X8r4#!!)qu!!'F.!!)nt!!)u!!!*#"!!)u!
-!!)qu!!)Mi!!)nt!!)u!!!)Vl!!)nt!!*#"!!)Sk!!)nt!!*#"!!)Sk!!)eq!!)Vl!!*#"!!)eq
-!!)Vl!!)nt!!)u!!!)qu!!)nt!!)u!!!*#"!!*#"!!)nt!!)Sks6fm:s+C@Op=91qs8N;RV#TT>
-]`<Q~>
-!<E0!johC3g4=hSgACsLgACsMgAM$Gg&M-Og&h?/g&V**!!)rN!!'F\!!)oM!!)uO!!*#P!!)uO
-!!)rN!!)NB!!)oM!!)uO!!)WE!!)oM!!*#P!!)TD!!)oM!!*#P!!)TD!!)fJ!!)WE!!*#P!!)fJ
-!!)WE!!)oM!!)uO!!)rN!!)oM!!)uO!!*#P!!*#P!!)oM!!)TDs8W)Ps+14Mp=fOts8N;WU&X9;
-\c@6~>
-!<E0!johL1eVf@bk555Xk555Yk5>;Sjo>D[joYVGjoGAB!!)rZ!!'Fh!!)oY!!)u[!!*#\!!)u[
-!!)rZ!!)NN!!)oY!!)u[!!)WQ!!)oY!!*#\!!)TP!!)oY!!*#\!!)TP!!)fV!!)WQ!!*#\!!)fV
-!!)WQ!!)oY!!)u[!!)rZ!!)oY!!)u[!!*#\!!*#\!!)oY!!)TPs8W)Ks+C@Op=91qs8N;RV#TT>
-]`<Q~>
-!<E0!johL1eS8juX8i7sX8i7uX9/I(X8r7$!!)u!!!)u!!!)u!!!)u!!s#F(!;rnu!4Js/!;`bs
-!<&u!!<0&"!<&u!!<&u!!:Quh!;iht!<&u!!;!8l!;ikp!;!8l!;ikp!;*>m!;EPp!;!;h!;W\r
-!;*>m!;`bs!<&u!!;rnu!;iht!<&u!!<0(s!;rnu!:m5kmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Lg&M-Ng&h?/g&V-+!!)uO!!)uO!!)uO!!)uO!s%'/!;tON!4LS]!;bCL
-!<(UO!<1[P!<(UO!<(UO!:SVA!;kIM!<(UO!;"nE!;kLI!;"nE!;kLI!;+tF!;G1I!;"qA!;Y=K
-!;+tF!;bCL!<(UO!;tON!;kIM!<(UO!<1^L!;tON!:nkDs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>DXjo>DZjoYVGjoGDC!!)u[!!)u[!!)u[!!)u[!s%KG!;tsZ!4M"i!;bgX
-!<)$[!<2*\!<)$[!<)$[!:T%M!;kmY!<)$[!;#=Q!;kpU!;#=Q!;kpU!;,CR!;GUU!;#@M!;YaW
-!;,CR!;bgX!<)$[!;tsZ!;kmY!<)$[!<2-X!;tsZ!:o:Ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i7sX8i7uX9/I(X8r4#!!*#"rrE&"!!)u!!!)u!!s#F(!<&u!!;rqu!55H6
-!<&u!!<0&"!<&u!!<0&"!<&u!!<0&"!<&u!!;!8l!;iht!<&u!!;!8l!;EPp!:m2k!;EPp!;ikt
-!;rnu!<&u!!;iht!;`es!;NVq!;W\r!;ikt!;rnu!<&u!!<&u!!<0&"!;rnu!;`bs!<0&"!;`bs
-!;iht!:m5kmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Lg&M-Ng&h?/g&V**!!*#PrrE&P!!)uO!!)uO!s%'/!<(UO!;tRN!57(d
-!<(UO!<1[P!<(UO!<1[P!<(UO!<1[P!<(UO!;"nE!;kIM!<(UO!;"nE!;G1I!:nhD!;G1I!;kLM
-!;tON!<(UO!;kIM!;bFL!;P7J!;Y=K!;kLM!;tON!<(UO!<(UO!<1[P!;tON!;bCL!<1[P!;bCL
-!;kIM!:nkDs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>DXjo>DZjoYVGjoGAB!!*#\rrE&\!!)u[!!)u[!s%KG!<)$[!;u!Z!57Lp
-!<)$[!<2*\!<)$[!<2*\!<)$[!<2*\!<)$[!;#=Q!;kmY!<)$[!;#=Q!;GUU!:o7P!;GUU!;kpY
-!;tsZ!<)$[!;kmY!;bjX!;P[V!;YaW!;kpY!;tsZ!<)$[!<)$[!<2*\!;tsZ!;bgX!<2*\!;bgX
-!;kmY!:o:Ps8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp%X3eS8j#XSi.tXSi,!XSMqqX98O)X8o@$!<'"q!!'+t!;ikt!55K2!<'"t!;rqs!<'"r
-!;3Gk!;rqs!;*Aj!;`er!;3Gk!;`er!;rqu!;rqq!;iht!;`es!;W_q!<'"u!;`es!;rqq!;rqt
-!<'"s!;iks!;`er!<0(t!;*Ammf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp%O5g4=h/gAM$MgAM!OgA1gJg&qE0g&Tk+!<(XJ!!(aM!;kLM!57+`!<(XM!;tRL!<(XK
-!;5(D!;tRL!;,"C!;bFK!;5(D!;bFK!;tRN!;tRJ!;kIM!;bFL!;Y@J!<(XN!;bFL!;tRJ!;tRM
-!<(XL!;kLL!;bFK!<1^M!;,"Fs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!jp%X3eVf@Jk5>;Yk5>8[k5#)Vjob\HjoFQC!<)'V!!)0Y!;kpY!57Ol!<)'Y!;u!X!<)'W
-!;5LP!;u!X!;,FO!;bjW!;5LP!;bjW!;u!Z!;u!V!;kmY!;bjX!;YdV!<)'Z!;bjX!;u!V!;u!Y
-!<)'X!;kpX!;bjW!<2-Y!;,FRs8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8jtXSr2#X8r7$r;churW)u"rW)u"q>gPsq>^MsrW)u"rW)u"q>gMrrVuu#!.h5&
-XOXEPmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hRgAV'Qg&V-+r;ciNrW)uPrW)uPq>gQLq>^NLrW)uPrW)uPq>gNKrVuuQ!.ijT
-g==pWs8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@ak5G>]joGDCr;ciZrW)u\rW)u\q>gQXq>^NXrW)u\rW)u\q>gNWrVuu]!.j9`
-k1/Vos8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8juX8i8"XT&;#X8i8!X8i8"XT&;"X8i8"X9J[+X8o?'!<0&"!<&u%!3E7%!<0&"
-!<0&+!3E7%XK2E'X8r7$rr@VOJZRD's6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-PgA_0Qg&M-Og&M-PgA_0Pg&M-Pg'.Q2g&Tj\!<1[P!<(US!8?-,!<1[P
-!<1[Y!8?-,g=cP\g&V-+rr@W(J_JZ.s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>D\k5PG]jo>D[jo>D\k5PG\jo>D\jothJjoFQ+!<2*\!<)$_!9WDD!<2*\
-!<2*e!9WDDk2l[+joGDCrr@W4J`bMFs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp.^4eS8j#X8r1"!W];%qlC&'XK2E'!3E7%ri?;(XK2E'X8r7$!!)u!#QUs-!3?1%X8r7$
-#lq'.!3E7%XK2F#X8i7uXT&9OXF[J.XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp.U6g4=h/g&V')!W^pSqq;;Ug=cP\!8?-,rn7PVg=cP\g&V-+!!)uO#QWT4!87G,g&V-+
-#lr]5!8?-,g=cQ*g&M-NgA_/(g4@u5gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!jp.^4eVf@JjoG>A!W_?_qrS.ak2l[+!9WDDroOCbk2l[+joGDC!!)u[#QX#L!9O:DjoGDC
-#ls,M!9WDDk2l[Bjo>DZk5PF4k(2[Mk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp.^4eS8j#X8r*u!!)nt#QUs-!3?1%X8r.!!!)nt!s#F(!<&u&!3?1%X8r.!!!)qu!!)bp
[email protected]:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp.U6g4=h/g&V!'!!)oM#QWT4!87G,g&V$(!!)oM!s%'/!<(UT!87G,g&V$(!!)rN!!)cI
-rr@W(J_Jo5s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!jp.^4eVf@JjoG8?!!)oY#QX#L!9O:DjoG;@!!)oY!s%KG!<)$`!9O:DjoG;@!!)rZ!!)cU
-rr@W4J`bbMs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp.^4eS8j#X8r*u!!)nt#QUs-!3E7%X8r.!!!)ntr;cet"TYX*!3?1tX8i7tXSi-MXF[J&
-XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp.U6g4=h/g&V!'!!)oM#QWT4!8?-,g&V$(!!)oMr;cfM"T[91!87GMg&M-MgAM#&g4@u-
-gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!jp.^4eVf@JjoG8?!!)oY#QX#L!9WDDjoG;@!!)oYr;cfY"T[]I!9O:Yjo>DYk5>:2k(2[E
-k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!jp.^4eS8j#X8r*u!!)nt#QUs-!3E7%X8r.!!!)nt!s#F(!<&u&!3E7%X8r.!!!)bp!!%SO
-JZRD's6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp.U6g4=h/g&V!'!!)oM#QWT4!8?-,g&V$(!!)oM!s%'/!<(UT!8?-,g&V$(!!)cI!!%T(
-J_JZ.s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!jp.^4eVf@JjoG8?!!)oY#QX#L!9WDDjoG;@!!)oY!s%KG!<)$`!9WDDjoG;@!!)cU!!%T4
-J`bMFs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!jp.^4eS8j#X8r*u!!)nt!s#F(!<0)"!;iht!;iht!<&u$!3E7%riH,"qlBbtr2]kurN#u!
-JZOF(eZAf=rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp.U6g4=h/g&V!'!!)oM!s%'/!<1^P!;kIM!;kIM!<(UR!8?-,rn@APqq;#Mr7V,NrRq5O
-J_G\/e_:''rn@C's8VfHs+14M#25dNk2s5TJ,~>
-!<E0!jp.^4eVf@JjoG8?!!)oY!s%KG!<2-\!;kmY!;kmY!<)$^!9WDDroX4\qrRkYr8mtZrT4([
-J`_OGe`Qo3rmh%$s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!johL1eS8juX8i8!X9/I(X8r4#!!*#"!!*#"rrDqt!!)nt!!)u!!s#F(!<0)"!;iht!;rqu
-!<0&"!;rqu!.h5&XPBoWmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=hSg&M-Og&h?/g&V**!!*#P!!*#PrrDrM!!)oM!!)uO!s%'/!<1^P!;kIM!;tRN
-!<1[P!;tRN!.ijTg>(E^s8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@bjo>D[joYVGjoGAB!!*#\!!*#\rrDrY!!)oY!!)u[!s%KG!<2-\!;kmY!;u!Z
-!<2*\!;u!Z!.j9`k1o,!s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8jtXSi.tXSi.uXSr5!X8i8!XS`(tXSMnsXSr5!X8i8!XS`(tX8r=&rW)hsrr@VO
-JZRY.s6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hRgAM$MgAM$NgAV*Og&M-OgACsMgA1dLgAV*Og&M-OgACsMg&V3-rW)iLrr@W(
-J_Jo5s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@ak5>;Yk5>;Zk5GA[jo>D[k555Yk5#&Xk5GA[jo>D[k555YjoGJErW)iXrr@W4
-J`bbMs8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8jOX8i7EX8i7*XSi.WX8i7JXT&:DX8i7FXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=h-g&M,sg&M,XgAM$0g&M-#gA_/rg&M,tgAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@<jo>D*jo>Cdk5>;<jo>D/k5PG)jo>D+k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8juXSr4VX8i7EX8i7tX8i7`XSr4bXT&:hX8i7VX8i7YX8i7jX8i7`XT&:_X8i7G
-XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hSgAV*/g&M,sg&M-Mg&M-9gAV*;gA_0Ag&M-/g&M-2g&M-Cg&M-9gA_08g&M,u
-gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@bk5GA;jo>D*jo>DYjo>DEk5GAGk5PGMjo>D;jo>D>jo>DOjo>DEk5PGDjo>D,
-k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8jsX8i6oX8i7^X8i7bX8i7hX8i7VX8i7YX8i7jX8i7_X8i7_X8i7GXT._fec1:%
-s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hQg&M,Hg&M-7g&M-;g&M-Ag&M-/g&M-2g&M-Cg&M-8g&M-8g&M,ugAh3PgAca(
-s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@`jo>CTjo>DCjo>DGjo>DMjo>D;jo>D>jo>DOjo>DDjo>DDjo>D,k5YJ\ec1:%
-s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8jtX9&C'!;iks!!0/$riH)!"fq\(X8i8"XT&;!XSr4tXT&;#XT&:uXSr4mXSr5!
-XSr2(X8i7%X8i8!XSr4tXS`(qXSr4iX8i7tXSi.rXSr2#X8r7$!W]='rW)YnqZ-Srr;cetrrE)#
-rrDVk!!)u!rr<8)!!')#!3H/"s/c2"p8n/lr2fhsrN$#"XSr4bX9&C'XSr4uXSr5!XSr5"XSr4u
-X8i7GXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hRg&_9.!;kLL!!1dRrn@>O"kiqVg&M-PgA_0OgAV*MgA_0QgA_0NgAV*FgAV*O
-gAV'Vg&M-,g&M-OgAV*MgACsJgAV*Bg&M-MgAM$KgAV'Qg&V-+!W^s.rW)ZGqZ-TKr;cfMrrE)Q
-rrDWD!!)uOrr<8W!!(^Q!8@DPs4[GPp=fEEr7_)LrRq8PgAV*;g&_9.gAV*NgAV*OgAV*PgAV*N
-g&M,ugAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@ajoPPF!;kpX!!23^roX1["m,dbjo>D\k5PG[k5GAYk5PG]k5PGZk5GARk5GA[
-k5G>bjo>DDjo>D[k5GAYk555Vk5GANjo>DYk5>;Wk5G>]joGDC!W_BFrW)ZSqZ-TWr;cfYrrE)]
-rrDWP!!)u[rr<8c!!)-]!9X7\s5s:\p?)8Qr9!qXrT4+\k5GAGjoPPFk5GAZk5GA[k5GA\k5GAZ
-jo>D,k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8jtX9&C'!;rnu!<0)"!<9,#!<0)"!<0&"!<&u!!;iht!;ii$!3?1%X8r7$!!*#"
-!!)\n!!)qu!!*#""TYV(XK2F"X8i7tX8i7rX8i8"X8i7kX8i7uX8i8!X8i8!X8i8"XT&;"X9/I(
-X8qgm!!)nt!!)u!!!)u!"TYV(XK2EnX8i7uXT&8*X8i7%!3E7%rN#u!oW/#mqQ'YsrN#u!riH,"
-ri?)"l`:0gXK2F"X8i8"X8i8"X8i8!X8i7uX8i7GXT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=hRg&_9.!;tON!<1^P!<:aQ!<1^P!<1[P!<(UO!;kIM!;kIR!87G,g&V-+!!*#P
-!!)]G!!)rN!!*#P"T[6Vg=cQ)g&M-Mg&M-Kg&M-Pg&M-Dg&M-Ng&M-Og&M-Og&M-PgA_0Pg&h?/
-g&U]t!!)oM!!)uO!!)uO"T[6Vg=cPug&M-NgA_-Xg&M-,!8?-,rRq5Oo\'9FqUtoLrRq5Orn@AP
-rn7>Ple2F@g=cQ)g&M-Pg&M-Pg&M-Og&M-Ng&M,ugAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf@ajoPPF!;tsZ!<2-\!<;0]!<2-\!<2*\!<)$[!;kmY!;km^!9O:DjoGDC!!*#\
-!!)]S!!)rZ!!*#\"T[Zbk2l[Ajo>DYjo>DWjo>D\jo>DPjo>DZjo>D[jo>D[jo>D\k5PG\joYVG
-joFu7!!)oY!!)u[!!)u["T[Zbk2l[8jo>DZk5PDdjo>DD!9WDDrT4([o]?,RqW7bXrT4([roX4\
-roO1\lfJ9Lk2l[Ajo>D\jo>D\jo>D[jo>DZjo>D,k5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8juX8i8"X8i8"X8i7uX9&C'!;rnu!<0&"!<&u!!;iht!;ikt!;iht!;rnu!;<Ju
-!3E7%XK2F$XT&:qX8i7tX8i7sX8i7uX8i7lX8i8!X8i7tX9/I(X8r1"!!*#"!W];%nZ2]jr2]ku
-qlBbtriH,"n>lTiqlC)(XK2E'X8o?'!<&u!!;*>m!;3Dn!<0&"!;rnu!:6cg!3?1uX8i7uX9/I(
-X8r4#!!)nt!!(?Hs6fm:s+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johC3g4=hSg&M-Pg&M-Pg&M-Ng&_9.!;tON!<1[P!<(UO!;kIM!;kLM!;kIM!;tON!;>+N
-!8?-,g=cQ+gA_0Jg&M-Mg&M-Lg&M-Ng&M-Eg&M-Og&M-Mg&h?/g&V')!!*#P!W^pSn_*sCr7V,N
-qq;#Mrn@APnCdjBqq;>Vg=cP\g&Tj\!<(UO!;+tF!;5%G!<1[P!;tON!:8D@!87GNg&M-Ng&h?/
-g&V**!!)oM!!(@!s8W)Ps+14Mp=fOts8N;WU&X9;\c@6~>
-!<E0!johL1eVf@bjo>D\jo>D\jo>DZjoPPF!;tsZ!<2*\!<)$[!;kmY!;kpY!;kmY!;tsZ!;>OZ
-!9WDDk2l[Ck5PGVjo>DYjo>DXjo>DZjo>DQjo>D[jo>DYjoYVGjoG>A!!*#\!W_?_n`BfOr8mtZ
-qrRkYroX4\nE']NqrS1bk2l[+joFQ+!<)$[!;,CR!;5IS!<2*\!;tsZ!:8hL!9O:Zjo>DZjoYVG
-joGAB!!)oY!!(@-s8W)Ks+C@Op=91qs8N;RV#TT>]`<Q~>
-!<E0!johL1eS8juXS`(tX8i7sX8i7uX8i8"X8i8!X8i7tX8i7tX8i7sXSMqjX9J[+X8o?'!<0&"
-!;EPp!;iht!;`en!;!8l!<&u!!;ii"!3E7%poOJqn>lTir2]kuqlBbtri?)"m]6Bgr2^)&XK2E'
-X8r7$!s#F(!;!8l!;W_o!<0&"!;rnu!:6fe!;iko!<0&%!3E7%qlBbtcE.'6rmh%$s8VfCs+C@O
-#1]OLk2s>WJ,~>
-!<E0!johC3g4=hSgACsMg&M-Lg&M-Ng&M-Pg&M-Og&M-Mg&M-Mg&M-LgA1gCg'.Q2g&Tj\!<1[P
-!;G1I!;kIM!;bFG!;"nE!<(UO!;kIP!8?-,ptG`JnCdjBr7V,Nqq;#Mrn7>Pmb.X@r7V>Tg=cP\
-g&V-+!s%'/!;"nE!;Y@H!<1[P!;tON!:8G>!;kLH!<1[S!8?-,qq;#McJ&<urn@C's8VfHs+14M
-#25dNk2s5TJ,~>
-!<E0!johL1eVf@bk555Yjo>DXjo>DZjo>D\jo>D[jo>DYjo>DYjo>DXk5#)OjothJjoFQ+!<2*\
-!;GUU!;kmY!;bjS!;#=Q!<)$[!;km\!9WDDpu_SVnE']Nr8mtZqrRkYroO1\mcFKLr8n1`k2l[+
-joGDC!s%KG!;#=Q!;YdT!<2*\!;tsZ!:8kJ!;kpT!<2*_!9WDDqrRkYcK>0,rmh%$s8VfCs+C@O
-#1]OLk2s>WJ,~>
-!<E0!jp.^4eS8j#X8r1"!s#F(!;`bs!;rnu!<0&"!<&u!!;iht!;iht!;`bs!:Qul!3?1%!<&u!
-!;EPp!;iht!;`bs!:?if!<&u!!;ii"!3E7%poFMsX8qdl!!)qu!!)nt!!*#"!!)Gg!!)qu"ota+
-!3E7%ri?2%XK2EnX8i7sX8i8!X8i8"X8i7uX8i7eX9&C'!;rnu!;NVt!3E7%qlBbtcE.'6rmh%$
-s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp.U6g4=h/g&V')!s%'/!;bCL!;tON!<1[P!<(UO!;kIM!;kIM!;bCL!:SVE!87G,!<(UO
-!;G1I!;kIM!;bCL!:AJ?!<(UO!;kIP!8?-,pt>cLg&UZs!!)rN!!)oM!!*#P!!)H@!!)rN"p!B2
-!8?-,rn7GSg=cPug&M-Lg&M-Og&M-Pg&M-Ng&M->g&_9.!;tON!;P7M!8?-,qq;#McJ&<urn@C'
-s8VfHs+14M#25dNk2s5TJ,~>
-!<E0!jp.^4eVf@JjoG>A!s%KG!;bgX!;tsZ!<2*\!<)$[!;kmY!;kmY!;bgX!:T%Q!9O:D!<)$[
-!;GUU!;kmY!;bgX!:AnK!<)$[!;km\!9WDDpuVVXjoFr6!!)rZ!!)oY!!*#\!!)HL!!)rZ"p!fJ
-!9WDDroO:_k2l[8jo>DXjo>D[jo>D\jo>DZjo>DJjoPPF!;tsZ!;P[Y!9WDDqrRkYcK>0,rmh%$
-s8VfCs+C@O#1]OLk2s>WJ,~>
-!<E0!jp.^4eS8j#X8r1"!!*#"!!)u!!s#F(!<0)"!<0&"!<0)"!;iht!;iht!;W\r!<&u!!;3Gn
-!!95%!<&u!!;EPp!;iht!<0&"!<&u!!<&u!!;!8l!;rnu!<&u!!<&u!!<&u!!<0&%!3E7%nuMfk
-qlBbtrN#u!rN#u!m]6Bgr2^)&XK2E'X8r4#rrDVk!!*#"!!*#"!!*#"rrE&"rrE&"!!)qurrDVk
-!s#F(!;rnu!<&u!!<'#!!;`bs!7%\Gmf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!jp.U6g4=h/g&V')!!*#P!!)uO!s%'/!<1^P!<1[P!<1^P!;kIM!;kIM!;Y=K!<(UO!;5(G
-!!:jS!<(UO!;G1I!;kIM!<1[P!<(UO!<(UO!;"nE!;tON!<(UO!<(UO!<(UO!<1[S!8?-,o%F'D
-qq;#MrRq5OrRq5Omb.X@r7V>Tg=cP\g&V**rrDWD!!*#P!!*#P!!*#PrrE&PrrE&P!!)rNrrDWD
-!s%'/!;tON!<(UO!<(XO!;bCL!7'<us8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!jp.^4eVf@JjoG>A!!*#\!!)u[!s%KG!<2-\!<2*\!<2-\!;kmY!;kmY!;YaW!<)$[!;5LS
-!!;9_!<)$[!;GUU!;kmY!<2*\!<)$[!<)$[!;#=Q!;tsZ!<)$[!<)$[!<)$[!<2*_!9WDDo&]oP
-qrRkYrT4([rT4([mcFKLr8n1`k2l[+joGABrrDWP!!*#\!!*#\!!*#\rrE&\rrE&\!!)rZrrDWP
-!s%KG!;tsZ!<)$[!<)'[!;bgX!7'a,s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!joqR2eS8j#r;Zi!r;chur;cetrVuu#!<'"u!!95%!<0(t!<0(u!;`eq!;*Am!!95%!<0(u
-!;ikq!;rqt!;ikr!;*Aj!<'"t!;ikr!<0)"!<9/"!;<Ml!;rqs!<'"t!:[&i!<'"u!!TG(!3?/#
-rN#u!nZ;]ir2fkt#-7e)X8i7%rW)hsrrDYlrrE)#rW)nur;c_r!!)ks!!(<Gs6fm:s+C@Op=91q
-s8N;RV#TT>]`<Q~>
-!<E0!joqI4g4=h/r;ZiOr;ciNr;cfMrVuuQ!<(XN!!:jS!<1^M!<1^N!;bFJ!;,"F!!:jS!<1^N
-!;kLJ!;tRM!;kLK!;,"C!<(XM!;kLK!<1^P!<:dP!;>.E!;tRL!<(XM!:\\B!<(XN!!V'V!87DQ
-rRq5On_3sBr7_,M#20%Wg&M-,rW)iLrrDZErrE)QrW)oNr;c`K!!)lL!!(<us8W)Ps+14Mp=fOt
-s8N;WU&X9;\c@6~>
-!<E0!joqR2eVf@Jr;Zi[r;ciZr;cfYrVuu]!<)'Z!!;9_!<2-Y!<2-Z!;bjV!;,FR!!;9_!<2-Z
-!;kpV!;u!Y!;kpW!;,FO!<)'Y!;kpW!<2-\!<;3\!;>RQ!;u!X!<)'Y!:]+N!<)'Z!!VKb!9O7]
-rT4([n`KfNr9!tY#3Gmcjo>DDrW)iXrrDZQrrE)]rW)oZr;c`W!!)lX!!(=,s8W)Ks+C@Op=91q
-s8N;RV#TT>]`<Q~>
-!<E0!johL1eS8j_X8i6OXN.CB!:d,j!7n7O!8adW!;W\r!7%\Gmf(c:KE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johC3g4=h=g&M,(g;hnI!:ebC!7om(!8cE0!;Y=K!7'<us8LaPJcGcDgAca(rs%2Ns5rIT
-!.Y~>
-!<E0!johL1eVf@Ljo>C4k/ZTa!:f1O!7p<4!8ci<!;YaW!7'a,s8LRKKE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johL1eS8j_X8i6OXN%=A!:m2k!7n4O!8X^V!;`bs!6qVFmf(c:KE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johC3g4=h=g&M,(g;_hH!:nhD!7oj(!8Z?/!;bCL!6s6ts8LaPJcGcDgAca(rs%2Ns5rIT
-!.Y~>
-!<E0!johL1eVf@Ljo>C4k/QN`!:o7P!7p94!8Zc;!;bgX!6s[+s8LRKKE(uFec1:%rs%#Ls5rIW
-!.Y~>
-!<E0!johL1eS8jaXSi-MXLYG2!<'"o!5Yc8!62,?mf(c:KE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=h?gAM#&g:>r9!<(XH!5[Cf!63ams8LaPJcGcDgAca(rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf@Nk5>:2k.0XQ!<)'T!5[gr!641$s8LRKKE(uFec1:%rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7Y1HJcG`Sg7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7Y"CKE(rUeYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%s7CsDrs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(s7CmBrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%s7CsDrs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I5XT._fec17%s7:mCrs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t<gAh3PgAc^(s7:gArs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec17%s7:mCrs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I5XT._fec19m^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAc`p_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec19m^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec19krs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t<gAh3PgAc`nrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec19krs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I5XT._fec17%^%D=2KE(u%V#TT>]`<Q~>
-!<E0!johC3g4=g+g4@t<gAh3PgAc^(_Y!j7JcGc(U&X9;\c@6~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec17%^%D=2KE(u%V#TT>]`<Q~>
-!<E0!johL1eS8iMXF[I5XT._fec17'^&S--ec17.^&S,_V#TT>]`<Q~>
-!<E0!johC3g4=g+g4@t<gAh3PgAc^*_Z0Z2gAc^1_Z0YiU&X9;\c@6~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec17'^&S--ec17.^&S,_V#TT>]`<Q~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%^&S-.ec17.^&S,_V#TT>]`<Q~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(_Z0Z3gAc^1_Z0YiU&X9;\c@6~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%^&S-.ec17.^&S,_V#TT>]`<Q~>
-!<E0!johL1eS8iMXF[I5XT._fec1:%^&S-/ec1:%^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca(_Z0Z4gAca(_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:%^&S-/ec1:%^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:$^&S-0ec1:%^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca'_Z0Z5gAca(_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:$^&S-0ec1:%^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:$^&S-1ec1:$^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca'_Z0Z6gAca'_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:$^&S-1ec1:$^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:#^&S-2ec1:$^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca&_Z0Z7gAca'_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:#^&S-2ec1:$^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:#^&S-3ec1:#^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca&_Z0Z8gAca&_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:#^&S-3ec1:#^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:"^&S-4ec1:#^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca%_Z0Z9gAca&_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:"^&S-4ec1:#^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:"^&S*6eUrMP^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca%_Z0W;g4=hQ_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:"^&S*6eUrMP^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMXF[I5XT._fec1:!]`A*3KD`F_rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca$_>sW8Jc*Cbrs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:!]`A*3KD`F_rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I5XT._fec1:!]`S4dKDW@^rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca$_?0agJc!=ars%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec1:!]`S4dKDW@^rs%#Ls5rIW!.Y~>
-!<E0!johL1eS8iMXF[I5XT._fec19u^&N`^^&S*:eYN6-k.LbF~>
-!<E0!johC3g4=g+g4@t<gAh3PgAca#_Z,2a_Z0W?g7eQ/k.1PC~>
-!<E0!johL1eVf?:k(2ZTk5YJ\ec19u^&N`^^&S*:eYN6-k.LbF~>
-!<E0!johL1eS8iMmXaebmf(c:KDN7]KDN:]rs%#Ls5rIW!.Y~>
-!<E0!johC3g4=g+s+13/s8LaPJbm4`Jbm7`rs%2Ns5rIT!.Y~>
-!<E0!johL1eVf?:s+13/s8LRKKDN7]KDN:]rs%#Ls5rIW!.Y~>
-!<E0!jo_F0eS9['JaSHarmh%$nG`^CV#TT>]`<Q~>
-!<E0!jo_=2g4=hTJcCZ.rn@C'nG`^HU&X9;\c@6~>
-!<E0!jo_F0eVf"YJcCZ.rmh%$nG`^CV#TT>]`<Q~>
-!<E0!joD3.eUc8)eGt6jrs%#Ls5rIW!.Y~>
-!<E0!joD*+g4@t3g&Q]mrs%2Ns5rIT!.Y~>
-!<E0!joD3.eUc8)eGt6jrs%#Ls5rIW!.Y~>
-!<E0!joD3.eUc8%ea_/nV#TT>]`<Q~>
-!<E0!joD*+g4@t/g@<l#U&X9;\c@6~>
-!<E0!joD3.eUc8%ea_/nV#TT>]`<Q~>
-!<E0!joD3.eUc8%ea_/nV#TT>]`<Q~>
-!<E0!joD*+g4@t/g@<l#U&X9;\c@6~>
-!<E0!joD3.eUc8%ea_/nV#TT>]`<Q~>
-!<E0!joM:.JV/N+LkG$D"f21\k.LbF~>
-!<E0!joM10JUrB'Lk4mG"ektYk.1PC~>
-!<E0!joM:.JV/N+LkG$D"f21\k.LbF~>
-!<E0!joM:.JV/N+M1Yg.ldZ07s5rIW!.Y~>
-!<E0!joM10JUrB'M1G[,le2N9s5rIT!.Y~>
-!<E0!joM:.JV/N+M1Yg.ldZ07s5rIW!.Y~>
-!<E0!jo_F0K7id/!WTias+13OrrTn6s7F#)s6J2=V#TT>]`<Q~>
-!<E0!jo_=2JV!F0!WU#fs+13OrrU(;s7F2.s6JABU&X9;\c@6~>
-!<E0!jo_F0K7id/!WTias+13OrrTn6s7F#)s6J2=V#TT>]`<Q~>
-!<E0!jo_F0K7ij1s8N+P]n-37s/l;%K>%6`p:^M+ldZ07s5rIW!.Y~>
-!<E0!jo_=2JV!L2s8N+N_L_`<s/l;%J\qBcp;6k0le2N9s5rIT!.Y~>
-!<E0!jo_F0K7ij1s8N+P]n-37s/l;%K>%6`p:^M+ldZ07s5rIW!.Y~>
-!<?U-5m#ShKD3(Ys8R]Q^&S+`eUc8Tec17%^&.j)^&S,ueHJ6J5sYJNJ,~>
-!<@-<9ENq!JbR%\s8RWO_Z0Xeg4@t^gAc^(_YaB._Z0Z%g'(/i9M>EdJ,~>
-!<BM*PQKBfKD3(Ys8R]Q^&S+`eUc8Tec17%^&.j)^&S,ueHM2EP`u.JJ,~>
-!!)tU"$tIiKDE4Zrrpr*K>%<bJ^o>%Ygrc+"MOj8e^aWuqRuq/ldZ/)Mdg-]!.Y~>
-!!)t_"&.F"Jbd1]rrq,-J\qHeJ_G\/YhK,."N(3=g=lN*qSN:4le2M9Q#Ue;!.Y~>
-!!)u:"-h>gKDE4Zrrpr*K>%<bJ^o>%Ygrc+"MOj8e^aWuqRuq/ldZ0'`O*":!.Y~>
-!<A&W@KSpHK7j'7rVulIs+:Bds8RZ#J^q!Ts+:Bds8W&JrVuf/s8VE8"[S&U@R1!E~>
-!<ADaE<AngJV!^8rVulNs+(6gs8RZ(J_I?^s+(6gs8W&OrVuf4s8VE="\b2$ED-@_~>
-!<C+<ZicQCK7j'7rVulIs+:Bds8RZ#J^q!Ts+:Bds8W&JrVuf/s8VE8"dI!5[$1Q@~>
-!<A&W@KSpHK7j-9rVufGs+:Bds8RZ#J^q!Ts+:Bds8VuHrVul1s8VE8"[S&U@R1!E~>
-!<ADaE<AngJV!d:rVufLs+(6gs8RZ(J_I?^s+(6gs8VuMrVul6s8VE="\b2$ED-@_~>
-!<C+<ZicQCK7j-9rVufGs+:Bds8RZ#J^q!Ts+:Bds8VuHrVul1s8VE8"dI!5[$1Q@~>
-!<A&W@Kf'JK7gkNrVu`Es+:Bds8RZ#J^q!Ts+:Bds8VoFrVlr4s8VE8"[S&U@R1!E~>
-!<ADaE<T%iJUt\TrVu`Js+(6gs8RZ(J_I?^s+(6gs8VoKrVlr9s8VE="\b2$ED-@_~>
-!<C+<Ziu]EK7gkNrVu`Es+:Bds8RZ#J^q!Ts+:Bds8VoFrVlr4s8VE8"dI!5[$1Q@~>
-!<A&W@KAdFqh+[os+:Bds8RZ#J^q!Ts+:Bds8VlErIb.MldZ/)Mdg-]!.Y~>
-!<ADaE</beqgnOrs+(6gs8RZ(J_I?^s+(6gs8VlJrIP"Kle2M9Q#Ue;!.Y~>
-!<C+<ZiQEAqh+[os+:Bds8RZ#J^q!Ts+:Bds8VlErIb.MldZ0'`O*":!.Y~>
-!<A&W@Kf'JK7gkNrIasss+:Bds8RZ#J^q!Ts+:Bds8VoFrIY0bs8VE8"[S&U@R1!E~>
-!<ADaE<T%iJUt\TrIOh!s+(6gs8RZ(J_I?^s+(6gs8VoKrIG$es8VE="\b2$ED-@_~>
-!<C+<Ziu]EK7gkNrIasss+:Bds8RZ#J^q!Ts+:Bds8VoFrIY0bs8VE8"dI!5[$1Q@~>
-!<A&W@KSpHK7j-9rIb$us+:Bds8RZ#J^q!Ts+:Bds8VuHrIb*_s8VE8"[S&U@R1!E~>
-!<ADaE<AngJV!d:rIOn#s+(6gs8RZ(J_I?^s+(6gs8VuMrIOsbs8VE="\b2$ED-@_~>
-!<C+<ZicQCK7j-9rIb$us+:Bds8RZ#J^q!Ts+:Bds8VuHrIb*_s8VE8"dI!5[$1Q@~>
-!<A&W@KSpHK7j'7rIb+"s+:Bds8RZ#J^q!Ts+:Bds8W&JrIb$]s8VE8"[S&U@R1!E~>
-!<ADaE<AngJV!^8rIOt%s+(6gs8RZ(J_I?^s+(6gs8W&OrIOm`s8VE="\b2$ED-@_~>
-!<C+<ZicQCK7j'7rIb+"s+:Bds8RZ#J^q!Ts+:Bds8W&JrIb$]s8VE8"dI!5[$1Q@~>
-!<A&W@KSpHK7j!5rIY:(K7gl;s+/^OeZdU(K*8mfs4,ZuKDN:]s6J2=6&T2]5lcE~>
-!<ADaE<AngJV!X6rIG.+JUt]<s+/mTg9B<2JHWjis4Z3*Jbm7`s6JAB9U0U;9E9S~>
-!<C+<ZicQCK7j!5rIY:(K7gl;s+/^OeZdU(K*8mfs4,ZuKDN:]s6J2=Pf:#:PQ64~>
-!<A&W@KSpHK7ip3r.>'as8RZ#J^q!Ts+:Bds8W%Mpq?_-ldZ/)Mdg-]!.Y~>
-!<ADaE<AngJV!R4r.+pds8RZ(J_I?^s+(6gs8W%Kpqm(2le2M9Q#Ue;!.Y~>
-!<C+<ZicQCK7ip3r.>'as8RZ#J^q!Ts+:Bds8W%Mpq?_-ldZ0'`O*":!.Y~>
-!<A&W@KSpHK7ij1rdt9cs8RY&JV1+X"MOj8K7im2s8VE8"[S&U@R1!E~>
-!<ADaE<AngJV!L2rdb-fs8RY$JUstT"N(3=JV!O3s8VE="\b2$ED-@_~>
-!<C+<ZicQCK7ij1rdt9cs8RY&JV1+X"MOj8K7im2s8VE8"dI!5[$1Q@~>
-!<A&W@KSpHK7id/!e\2dJV/N+Xb-\gs+BsWs8VE8"[S&U@R1!E~>
-!<ADaE<AngJV!F0!eJ5gJUrB'XapPjs+0gZs8VE="\b2$ED-@_~>
-!<C+<ZicQCK7id/!e\2dJV/N+Xb-\gs+BsWs8VE8"dI!5[$1Q@~>
-!<A&W@KSpHK7eaTJcCW-ldZ/)Mdg-]!.Y~>
-!<ADaE<AngJUrCPJcCW-le2M9Q#Ue;!.Y~>
-!<C+<ZicQCK7eaTJcCW-ldZ0'`O*":!.Y~>
-!<A&W@KJjGK7X&Rs,$dAeHJ6s@U_V'J,~>
-!<ADaE<8hfJV!iPs,$dAg'(08EH+YPJ,~>
-!<C+<ZiZKBK7X&Rs,$dAeHM2V['Z%tJ,~>
-!<A&W@K8]FeUc8%ea_/n6&T2]5lcE~>
-!<ADaE<&[`g4@t/g@<l#9U0U;9E9S~>
-!<C+<ZiH>AeUc8%ea_/nPf:#:PQ64~>
-!<A&V@dua8Uk,>(U]=lp5lciB@KAapJ,~>
-!<AD`EUc_RTn/o"T`B*'9E:@WE</`5J,~>
-!<C+;[.0B3Uk,>(U]@dmPQ8]%ZiQBkJ,~>
-!\j\5rF5AV!+LNZJcCl4nVdBU!^Qh:J,~>
-!^m$RrGhFo!-*SiJcCl4nWj)n!_`UJJ,~>
-!cn@\rNu18!47=WJcCl4n\tL7!gE]8J,~>
-!]^7=mpZ8_J`_OGOlcY%mpZ>a!7cT~>
-!^m$Rmr8>$J`_OGOlcY/mr8D&!8;r~>
-!cn@\n$E(ZJ`_OGOlcY_n$E.\!7cT~>
-">Mn:5sb$M!'u1uJ``*W!/pAVs$6\de^]0~>
-s$Qng9MFtr!).t+J``*W!1!(os%EIog=h&~>
-s)S5APa(^F!0i&sJ``*W!6+K8s-*Qbe^]0~>
-r]0uYn3MW=J\@2Z!+PIarrE&KJ,~>
-r^?bdn4\DEJ\$uT!-.O&rrE&PJ,~>
-rcA)>n<AL;J\@2Z!4;9\rrE&KJ,~>
-">Mnk3B;WjJH16$mf3C=s8LQ!~>
-r'Z)9JH16$mf3CB!<1]&~>
-"DW!mF)um4JH16$mf3C=!<1N!~>
-%%EndData
-showpage
-%%Trailer
-end
-%%EOF
diff --git a/lib/et/doc/src/user_guide.gif b/lib/et/doc/src/user_guide.gif
deleted file mode 100644
index e6275a803d..0000000000
--- a/lib/et/doc/src/user_guide.gif
+++ /dev/null
Binary files differ
diff --git a/lib/et/doc/src/warning.gif b/lib/et/doc/src/warning.gif
deleted file mode 100644
index 96af52360e..0000000000
--- a/lib/et/doc/src/warning.gif
+++ /dev/null
Binary files differ
diff --git a/lib/et/examples/Makefile b/lib/et/examples/Makefile
index 553fe55f3b..67a6536fdf 100644
--- a/lib/et/examples/Makefile
+++ b/lib/et/examples/Makefile
@@ -1,19 +1,19 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 2002-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 2002-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
#
@@ -38,7 +38,9 @@ RELSYSDIR = $(RELEASE_PATH)/lib/et-$(VSN)
MODULES = \
- et_demo
+ et_demo \
+ et_display_demo \
+ et_trace_demo
ERL_FILES= $(MODULES:=.erl)
diff --git a/lib/et/examples/et_demo.erl b/lib/et/examples/et_demo.erl
index 57e7e77246..e439e6882c 100644
--- a/lib/et/examples/et_demo.erl
+++ b/lib/et/examples/et_demo.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2002-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2002-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
%%----------------------------------------------------------------------
@@ -23,24 +23,29 @@
-module(et_demo).
-export([
- sim_trans/0,
+ sim_trans/0, sim_trans/1,
+ live_trans/0, live_trans/1,
mgr_actors/1,
- live_trans/0,
- start/0,
- start/1,
+ start/0, start/1,
filters/0,
trace_mnesia/0
]).
+%% Test
+-export([s/0, t/0, t/1, init/0, gen/3]).
+
-include_lib("et/include/et.hrl").
%%----------------------------------------------------------------------
%sim_trans
sim_trans() ->
+ sim_trans([]).
+
+sim_trans(ExtraOptions) ->
Options = [{dict_insert, {filter, mgr_actors}, fun mgr_actors/1}],
- {ok, Viewer} = et_viewer:start_link(Options),
- Collector = et_viewer:get_collector_pid(Viewer),
+ {ok, Viewer} = et_viewer:start_link(Options ++ ExtraOptions),
+ Collector = et_viewer:get_collector_pid(Viewer),
et_collector:report_event(Collector, 60, my_shell, mnesia_tm, start_outer,
"Start outer transaction"),
et_collector:report_event(Collector, 40, mnesia_tm, my_shell, new_tid,
@@ -56,11 +61,13 @@ sim_trans() ->
et_collector:report_event(Collector, 60, my_shell, mnesia_tm, delete_transaction,
"End of outer transaction"),
et_collector:report_event(Collector, 20, my_shell, end_outer,
- "Transaction returned {atomic, ok}").
+ "Transaction returned {atomic, ok}"),
+ {collector, Collector}.
+
%sim_trans
%mgr_actors
-mgr_actors(E) when record(E, event) ->
+mgr_actors(E) when is_record(E, event) ->
Actor = fun(A) ->
case A of
mnesia_tm -> trans_mgr;
@@ -94,9 +101,13 @@ start(ExtraOptions) ->
%live_trans
live_trans() ->
- et_demo:start([{title, "Mnesia tracer"},
- {hide_actions, true},
- {active_filter, named_process_info_nolink}]),
+ live_trans([]).
+
+live_trans(ExtraOptions) ->
+ Options = [{title, "Mnesia tracer"},
+ {hide_actions, true},
+ {active_filter, named_process_info_nolink}],
+ et_demo:start(Options ++ ExtraOptions),
mnesia:start(),
mnesia:create_table(my_tab, [{ram_copies, [node()]}]),
et_demo:trace_mnesia(),
@@ -146,7 +157,7 @@ filters() ->
%filters
%module_as_actor
-module_as_actor(E) when record(E, event) ->
+module_as_actor(E) when is_record(E, event) ->
case lists:keysearch(mfa, 1, E#event.contents) of
{value, {mfa, {M, F, _A}}} ->
case lists:keysearch(pam_result, 1, E#event.contents) of
@@ -163,7 +174,7 @@ module_as_actor(E) when record(E, event) ->
%%----------------------------------------------------------------------
%plain_process_info
-plain_process_info(E) when record(E, event) ->
+plain_process_info(E) when is_record(E, event) ->
case E#event.label of
send -> true;
send_to_non_existing_process -> true;
@@ -182,7 +193,7 @@ plain_process_info(E) when record(E, event) ->
%plain_process_info
%plain_process_info_nolink
-plain_process_info_nolink(E) when record(E, event) ->
+plain_process_info_nolink(E) when is_record(E, event) ->
(E#event.label /= link) and
(E#event.label /= unlink) and
(E#event.label /= getting_linked) and
@@ -191,7 +202,7 @@ plain_process_info_nolink(E) when record(E, event) ->
%%----------------------------------------------------------------------
-named_process_info(E) when record(E, event) ->
+named_process_info(E) when is_record(E, event) ->
case plain_process_info(E) of
true ->
{true, E#event{to = pid_to_name(E#event.to),
@@ -201,7 +212,7 @@ named_process_info(E) when record(E, event) ->
false
end.
-named_process_info_nolink(E) when record(E, event) ->
+named_process_info_nolink(E) when is_record(E, event) ->
case plain_process_info_nolink(E) of
true ->
{true, E#event{to = pid_to_name(E#event.to),
@@ -211,7 +222,7 @@ named_process_info_nolink(E) when record(E, event) ->
false
end.
-pid_to_name(Pid) when pid(Pid) ->
+pid_to_name(Pid) when is_pid(Pid) ->
case process_info(Pid, registered_name) of
{registered_name, Name} ->
Name;
@@ -225,7 +236,7 @@ pid_to_name(Other) ->
%%----------------------------------------------------------------------
-node_process_info(E) when record(E, event) ->
+node_process_info(E) when is_record(E, event) ->
case plain_process_info(E) of
true ->
{true, E#event{to = pid_to_node(E#event.to),
@@ -234,7 +245,7 @@ node_process_info(E) when record(E, event) ->
false ->
false
end.
-node_process_info_nolink(E) when record(E, event) ->
+node_process_info_nolink(E) when is_record(E, event) ->
case plain_process_info_nolink(E) of
true ->
{true, E#event{to = pid_to_node(E#event.to),
@@ -244,21 +255,21 @@ node_process_info_nolink(E) when record(E, event) ->
false
end.
-pid_to_node(Pid) when pid(Pid) ->
+pid_to_node(Pid) when is_pid(Pid) ->
node(Pid);
-pid_to_node(Name) when atom(Name) ->
+pid_to_node(Name) when is_atom(Name) ->
node();
-pid_to_node({_Name, Node}) when atom(Node) ->
+pid_to_node({_Name, Node}) when is_atom(Node) ->
Node.
%%----------------------------------------------------------------------
-application_as_actor(E) when record(E, event) ->
+application_as_actor(E) when is_record(E, event) ->
{true, E#event{to = pid_to_application(E#event.to),
from = pid_to_application(E#event.from),
label = msg_to_label(E)}}.
-pid_to_application(Pid) when pid(Pid) ->
+pid_to_application(Pid) when is_pid(Pid) ->
case application:get_application(Pid) of
{ok, Name} ->
Name;
@@ -268,7 +279,7 @@ pid_to_application(Pid) when pid(Pid) ->
%%----------------------------------------------------------------------
-msg_to_label(E) when record(E, event) ->
+msg_to_label(E) when is_record(E, event) ->
case lists:keysearch(msg, 1, E#event.contents) of
{value, {msg, Msg}} ->
mnesia_msg_to_label(Msg, E#event.label);
@@ -349,3 +360,35 @@ mnesia_msg_to_label(Msg, Label) ->
_ -> Label
end.
+%%----------------------------------------------------------------------
+
+s() ->
+ spawn(fun() -> t(), timer:sleep(infinity) end).
+
+t() ->
+ t(500).
+
+t(N) ->
+ Collector = init(),
+ gen(Collector, 1, N),
+ Collector.
+
+init() ->
+ EvenFilter =
+ fun(#event{label = Label}) ->
+ case catch (list_to_integer(Label) div 10) rem 2 of
+ 0 ->
+ false;
+ _ ->
+ true
+ end
+ end,
+ OddFilter = fun(E) -> not EvenFilter(E) end,
+ {ok, Viewer} = et_viewer:start_link([{dict_insert, {filter, odd_tens}, EvenFilter},
+ {dict_insert, {filter, even_tens}, OddFilter},
+ {active_filter, odd_tens}]),
+ et_viewer:get_collector_pid(Viewer).
+
+gen(Collector, From, To) ->
+ [et_collector:report_event(Collector, 20, from, to, integer_to_list(I), [I]) || I <- lists:seq(From, To)],
+ ok.
diff --git a/lib/et/examples/et_display_demo.erl b/lib/et/examples/et_display_demo.erl
new file mode 100644
index 0000000000..ebcbc2e816
--- /dev/null
+++ b/lib/et/examples/et_display_demo.erl
@@ -0,0 +1,32 @@
+%%
+%% %CopyrightBegin%
+%% %CopyrightEnd%
+%%
+
+%module
+-module(et_display_demo).
+
+-export([test/0]).
+
+test() ->
+ {ok, Viewer} = et_viewer:start([{title,"Coffee Order"}, {max_actors,10}]),
+ Drink = {drink,iced_chai_latte},
+ Size = {size,grande},
+ Milk = {milk,whole},
+ Flavor = {flavor,vanilla},
+ C = et_viewer:get_collector_pid(Viewer),
+ et_collector:report_event(C,99,customer,barrista1,place_order,[Drink,Size,Milk,Flavor]),
+ et_collector:report_event(C,80,barrista1,register,enter_order,[Drink,Size,Flavor]),
+ et_collector:report_event(C,80,register,barrista1,give_total,"$5"),
+ et_collector:report_event(C,80,barrista1,barrista1,get_cup,[Drink,Size]),
+ et_collector:report_event(C,80,barrista1,barrista2,give_cup,[]),
+ et_collector:report_event(C,90,barrista1,customer,request_money,"$5"),
+ et_collector:report_event(C,90,customer,barrista1,pay_money,"$5"),
+ et_collector:report_event(C,80,barrista2,barrista2,get_chai_mix,[]),
+ et_collector:report_event(C,80,barrista2,barrista2,add_flavor,[Flavor]),
+ et_collector:report_event(C,80,barrista2,barrista2,add_milk,[Milk]),
+ et_collector:report_event(C,80,barrista2,barrista2,add_ice,[]),
+ et_collector:report_event(C,80,barrista2,barrista2,swirl,[]),
+ et_collector:report_event(C,80,barrista2,customer,give_tasty_beverage,[Drink,Size]),
+ ok.
+%module
diff --git a/lib/et/examples/et_trace_demo.erl b/lib/et/examples/et_trace_demo.erl
new file mode 100644
index 0000000000..5c16d4b77c
--- /dev/null
+++ b/lib/et/examples/et_trace_demo.erl
@@ -0,0 +1,38 @@
+%%
+%% %CopyrightBegin%
+%% %CopyrightEnd%
+%%
+
+%module
+-module(et_trace_demo).
+
+-export([test/0]).
+
+test() ->
+ et_viewer:start([
+ {title,"Coffee Order"},
+ {trace_global,true},
+ {trace_pattern,{et,max}},
+ {max_actors,10}
+ ]),
+ %% dbg:p(all,call),
+ %% dbg:tpl(et, trace_me, 5, []),
+ Drink = {drink,iced_chai_latte},
+ Size = {size,grande},
+ Milk = {milk,whole},
+ Flavor = {flavor,vanilla},
+ et:trace_me(99,customer,barrista1,place_order,[Drink,Size,Milk,Flavor]),
+ et:trace_me(80,barrista1,register,enter_order,[Drink,Size,Flavor]),
+ et:trace_me(80,register,barrista1,give_total,"$5"),
+ et:trace_me(80,barrista1,barrista1,get_cup,[Drink,Size]),
+ et:trace_me(80,barrista1,barrista2,give_cup,[]),
+ et:trace_me(90,barrista1,customer,request_money,"$5"),
+ et:trace_me(90,customer,barrista1,pay_money,"$5"),
+ et:trace_me(80,barrista2,barrista2,get_chai_mix,[]),
+ et:trace_me(80,barrista2,barrista2,add_flavor,[Flavor]),
+ et:trace_me(80,barrista2,barrista2,add_milk,[Milk]),
+ et:trace_me(80,barrista2,barrista2,add_ice,[]),
+ et:trace_me(80,barrista2,barrista2,swirl,[]),
+ et:trace_me(80,barrista2,customer,give_tasty_beverage,[Drink,Size]),
+ ok.
+%module
diff --git a/lib/et/src/Makefile b/lib/et/src/Makefile
index c590852625..bb6632ee91 100644
--- a/lib/et/src/Makefile
+++ b/lib/et/src/Makefile
@@ -1,19 +1,19 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 2000-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 2000-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
#
@@ -127,9 +127,16 @@ $(EBIN)/et_selector.$(EMULATOR): et_selector.erl ../include/et.hrl
$(EBIN)/et_contents_viewer.$(EMULATOR): et_contents_viewer.erl ../include/et.hrl et_internal.hrl
+$(EBIN)/et_gs_contents_viewer.$(EMULATOR): et_gs_contents_viewer.erl ../include/et.hrl et_internal.hrl
+$(EBIN)/et_wx_contents_viewer.$(EMULATOR): et_wx_contents_viewer.erl ../include/et.hrl et_internal.hrl
+
$(EBIN)/et_collector.$(EMULATOR): et_collector.erl ../include/et.hrl et_internal.hrl
$(EBIN)/et_viewer.$(EMULATOR): et_viewer.erl ../include/et.hrl et_internal.hrl
+$(EBIN)/et_gs_viewer.$(EMULATOR): et_gs_viewer.erl ../include/et.hrl et_internal.hrl
+
+$(EBIN)/et_wx_viewer.$(EMULATOR): et_wx_viewer.erl ../include/et.hrl et_internal.hrl
+
diff --git a/lib/et/src/et.app.src b/lib/et/src/et.app.src
index 0c7bef7c3d..dc22ce4223 100644
--- a/lib/et/src/et.app.src
+++ b/lib/et/src/et.app.src
@@ -1,20 +1,20 @@
%% This is an -*- erlang -*- file.
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2002-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2002-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
{application, et,
@@ -25,8 +25,13 @@
et,
et_collector,
et_contents_viewer,
+ et_gs_contents_viewer,
+ et_gs_viewer,
et_selector,
- et_viewer
+ et_viewer,
+ et_viewer,
+ et_wx_contents_viewer,
+ et_wx_viewer
]},
{registered, [et_collector]},
{applications, [stdlib, kernel]},
diff --git a/lib/et/src/et.erl b/lib/et/src/et.erl
index 9c0a7f8f49..e2cd8564c3 100644
--- a/lib/et/src/et.erl
+++ b/lib/et/src/et.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2000-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2000-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
%%----------------------------------------------------------------------
@@ -84,13 +84,15 @@
-module(et).
-export([
- phone_home/4, report_event/4,
- phone_home/5, report_event/5
+ trace_me/4, phone_home/4, report_event/4,
+ trace_me/5, phone_home/5, report_event/5
]).
%%----------------------------------------------------------------------
%% Reports an event, such as a message
%%
+%% trace_me(DetailLevel, FromTo, Label, Contents) -> hopefully_traced
+%% trace_me(DetailLevel, From, To, Label, Contents) -> hopefully_traced
%% report_event(DetailLevel, FromTo, Label, Contents) -> hopefully_traced
%% report_event(DetailLevel, From, To, Label, Contents) -> hopefully_traced
%% phone_home(DetailLevel, FromTo, Label, Contents) -> hopefully_traced
@@ -123,18 +125,28 @@
%% Other events (termed actions) may be undirected and only have one actor.
%%----------------------------------------------------------------------
+trace_me(DetailLevel, FromTo, Label, Contents)
+ when is_integer(DetailLevel) ->
+ ?MODULE:trace_me(DetailLevel, FromTo, FromTo, Label, Contents).
+
+trace_me(DetailLevel, _From, _To, _Label, _Contents)
+ when is_integer(DetailLevel) ->
+ hopefully_traced.
+
phone_home(DetailLevel, FromTo, Label, Contents) ->
%% N.B External call
- ?MODULE:report_event(DetailLevel, FromTo, FromTo, Label, Contents).
+ ?MODULE:trace_me(DetailLevel, FromTo, FromTo, Label, Contents).
phone_home(DetailLevel, From, To, Label, Contents) ->
%% N.B External call
- ?MODULE:report_event(DetailLevel, From, To, Label, Contents).
+ ?MODULE:trace_me(DetailLevel, From, To, Label, Contents).
report_event(DetailLevel, FromTo, Label, Contents) ->
%% N.B External call
- ?MODULE:report_event(DetailLevel, FromTo, FromTo, Label, Contents).
+ ?MODULE:trace_me(DetailLevel, FromTo, FromTo, Label, Contents).
+
+report_event(DetailLevel, From, To, Label, Contents)
+ when is_integer(DetailLevel) ->
+ %% N.B External call
+ ?MODULE:trace_me(DetailLevel, From, To, Label, Contents).
-report_event(DetailLevel, _From, _To, _Label, _Contents)
- when integer(DetailLevel) ->
- hopefully_traced.
diff --git a/lib/et/src/et_collector.erl b/lib/et/src/et_collector.erl
index ea23c188f7..a63d15fb4c 100644
--- a/lib/et/src/et_collector.erl
+++ b/lib/et/src/et_collector.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2000-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2000-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
%%----------------------------------------------------------------------
@@ -36,6 +36,7 @@
iterate/3,
iterate/5,
+ lookup/2,
start_trace_client/3,
start_trace_port/1,
@@ -45,6 +46,7 @@
get_global_pid/0,
%% get_table_handle/1,
+ get_table_size/1,
change_pattern/2,
make_key/2,
@@ -55,13 +57,19 @@
multicast/2
]).
+%% Internal export
+-export([monitor_trace_port/2]).
+
%% gen_server callbacks
-export([init/1,terminate/2, code_change/3,
handle_call/3, handle_cast/2, handle_info/2]).
+-include("et_internal.hrl").
-include("../include/et.hrl").
-record(state, {parent_pid,
+ auto_shutdown, % Optionally shutdown when the last subscriber dies
+ event_tab_size,
event_tab,
dict_tab,
event_order,
@@ -102,7 +110,7 @@
%% stored by the collector. By replacing the default collector filter
%% with a customized dito it is possible to allow any trace data as
%% input. The collector filter is a dictionary entry with the
-%% predefined key {filter, collector} and the value is a fun of
+%% predefined key {filter, all} and the value is a fun of
%% arity 1. See et_selector:parse_event/2 for interface details,
%% such as which erlang:trace/1 tuples that are accepted.
%%
@@ -126,7 +134,7 @@
%% option() =
%% {parent_pid, pid()} |
%% {event_order, event_order()} |
-%% {dict_insert, {filter, collector}, collector_fun()} |
+%% {dict_insert, {filter, all}, collector_fun()} |
%% {dict_insert, {filter, event_filter_name()}, event_filter_fun()} |
%% {dict_insert, {subscriber, pid()}, dict_val()} |
%% {dict_insert, dict_key(), dict_val()} |
@@ -139,7 +147,7 @@
%%
%% event_order() = trace_ts | event_ts
%% trace_pattern() = detail_level() | dbg_match_spec()
-%% detail_level() = min | max | integer(X) when X =< 0, X >= 100
+%% detail_level() = min | max | integer(X) when X >= 0, X =< 100
%% trace_client() =
%% {event_file, file_name()} |
%% {dbg_trace_type(), dbg_trace_parameters()}
@@ -159,19 +167,16 @@
start_link(Options) ->
case parse_opt(Options, default_state(), [], []) of
- {ok, S, Dict2, Clients} when S#state.trace_global == false ->
- case gen_server:start_link(?MODULE, [S, Dict2], []) of
- {ok, Pid} when S#state.parent_pid /= self() ->
- unlink(Pid),
- start_clients(Pid, Clients);
- {ok,Pid} ->
- start_clients(Pid, Clients);
- {error, Reason} ->
- {error, Reason}
- end;
- {ok, S, Dict2, Clients} when S#state.trace_global == true ->
- case gen_server:start_link({global, ?MODULE}, ?MODULE, [S, Dict2], []) of
- {ok, Pid} when S#state.parent_pid /= self() ->
+ {ok, S, Dict2, Clients} ->
+ Res =
+ case S#state.trace_global of
+ false ->
+ gen_server:start_link(?MODULE, [S, Dict2], []);
+ true ->
+ gen_server:start_link({global, ?MODULE}, ?MODULE, [S, Dict2], [])
+ end,
+ case Res of
+ {ok, Pid} when S#state.parent_pid =/= self() ->
unlink(Pid),
start_clients(Pid, Clients);
{ok,Pid} ->
@@ -185,6 +190,7 @@ start_link(Options) ->
default_state() ->
#state{parent_pid = self(),
+ auto_shutdown = false,
event_order = trace_ts,
subscribers = [],
trace_global = false,
@@ -196,28 +202,30 @@ default_state() ->
parse_opt([], S, Dict, Clients) ->
{Mod, Pattern} = et_selector:make_pattern(S#state.trace_pattern),
Fun = fun(E) -> et_selector:parse_event(Mod, E) end,
- Default = {dict_insert, {filter, collector}, Fun},
+ Default = {dict_insert, {filter, ?DEFAULT_FILTER_NAME}, Fun},
{ok, S#state{trace_pattern = {Mod, Pattern}}, [Default | Dict], Clients};
parse_opt([H | T], S, Dict, Clients) ->
case H of
- {parent_pid, Parent} when Parent == undefined ->
+ {parent_pid, Parent} when Parent =:= undefined ->
parse_opt(T, S#state{parent_pid = Parent}, Dict, Clients);
- {parent_pid, Parent} when pid(Parent) ->
+ {parent_pid, Parent} when is_pid(Parent) ->
parse_opt(T, S#state{parent_pid = Parent}, Dict, Clients);
- {event_order, Order} when Order == trace_ts ->
+ {auto_shutdown, Bool} when Bool =:= true; Bool =:= false ->
+ parse_opt(T, S#state{auto_shutdown = Bool}, Dict, Clients);
+ {event_order, Order} when Order =:= trace_ts ->
parse_opt(T, S#state{event_order = Order}, Dict, Clients);
- {event_order, Order} when Order == event_ts ->
+ {event_order, Order} when Order =:= event_ts ->
parse_opt(T, S#state{event_order = Order}, Dict, Clients);
{dict_insert, {filter, Name}, Fun} ->
if
- atom(Name), function(Fun) ->
+ is_atom(Name), is_function(Fun) ->
parse_opt(T, S, Dict ++ [H], Clients);
true ->
{error, {bad_option, H}}
end;
{dict_insert, {subscriber, Pid}, _Val} ->
if
- pid(Pid) ->
+ is_pid(Pid) ->
parse_opt(T, S, Dict ++ [H], Clients);
true ->
{error, {bad_option, H}}
@@ -228,17 +236,17 @@ parse_opt([H | T], S, Dict, Clients) ->
parse_opt(T, S, Dict ++ [H], Clients);
{trace_client, Client = {_, _}} ->
parse_opt(T, S, Dict, Clients ++ [Client]);
- {trace_global, Bool} when Bool == false ->
+ {trace_global, Bool} when Bool =:= false ->
parse_opt(T, S#state{trace_global = Bool}, Dict, Clients);
- {trace_global, Bool} when Bool == true ->
+ {trace_global, Bool} when Bool =:= true ->
parse_opt(T, S#state{trace_global = Bool}, Dict, Clients);
- {trace_pattern, {Mod, _} = Pattern} when atom(Mod) ->
+ {trace_pattern, {Mod, _} = Pattern} when is_atom(Mod) ->
parse_opt(T, S#state{trace_pattern = Pattern}, Dict, Clients);
{trace_pattern, undefined = Pattern} ->
parse_opt(T, S#state{trace_pattern = Pattern}, Dict, Clients);
- {trace_port, Port} when integer(Port) ->
+ {trace_port, Port} when is_integer(Port) ->
parse_opt(T, S#state{trace_port = Port}, Dict, Clients);
- {trace_max_queue, MaxQueue} when integer(MaxQueue) ->
+ {trace_max_queue, MaxQueue} when is_integer(MaxQueue) ->
parse_opt(T, S#state{trace_port = MaxQueue}, Dict, Clients);
Bad ->
{error, {bad_option, Bad}}
@@ -352,19 +360,19 @@ do_load_event_file(Fun, Fd, Cont, Acc, FileName, BadBytes) ->
%% Returns: {ok, Continuation} | exit(Reason)
%%----------------------------------------------------------------------
-report(CollectorPid, TraceOrEvent) when pid(CollectorPid) ->
+report(CollectorPid, TraceOrEvent) when is_pid(CollectorPid) ->
case get_table_handle(CollectorPid) of
- {ok, TH} when record(TH, table_handle) ->
+ {ok, TH} when is_record(TH, table_handle) ->
report(TH, TraceOrEvent);
{error, Reason} ->
exit(Reason)
end;
-report(TH, TraceOrEvent) when record(TH, table_handle) ->
+report(TH, TraceOrEvent) when is_record(TH, table_handle) ->
Fun = TH#table_handle.filter,
case Fun(TraceOrEvent) of
false ->
{ok, TH};
- true when record(TraceOrEvent, event) ->
+ true when is_record(TraceOrEvent, event) ->
Key = make_key(TH, TraceOrEvent),
case catch ets:insert(TH#table_handle.event_tab, {Key, TraceOrEvent}) of
true ->
@@ -373,7 +381,7 @@ report(TH, TraceOrEvent) when record(TH, table_handle) ->
%% Refresh the report handle and try again
report(TH#table_handle.collector_pid, TraceOrEvent)
end;
- {true, Event} when record(Event, event) ->
+ {true, Event} when is_record(Event, event) ->
Key = make_key(TH, Event),
case catch ets:insert(TH#table_handle.event_tab, {Key, Event}) of
true ->
@@ -401,7 +409,7 @@ report(TH, TraceOrEvent) when record(TH, table_handle) ->
report(TH#table_handle.collector_pid, TraceOrEvent)
end
end;
-report(TH, end_of_trace) when record(TH, table_handle) ->
+report(TH, end_of_trace) when is_record(TH, table_handle) ->
{ok, TH};
report(_, Bad) ->
exit({bad_event, Bad}).
@@ -410,7 +418,9 @@ report_event(CollectorPid, DetailLevel, FromTo, Label, Contents) ->
report_event(CollectorPid, DetailLevel, FromTo, FromTo, Label, Contents).
report_event(CollectorPid, DetailLevel, From, To, Label, Contents)
- when integer(DetailLevel), DetailLevel >= 0, DetailLevel =< 100, list(Contents) ->
+ when is_integer(DetailLevel),
+ DetailLevel >= ?detail_level_min,
+ DetailLevel =< ?detail_level_max ->
TS= erlang:now(),
E = #event{detail_level = DetailLevel,
trace_ts = TS,
@@ -431,32 +441,38 @@ report_event(CollectorPid, DetailLevel, From, To, Label, Contents)
%% Key = record(event_ts) | record(trace_ts)
%%----------------------------------------------------------------------
-make_key(TH, Stuff) when record(TH, table_handle) ->
+make_key(TH, Stuff) when is_record(TH, table_handle) ->
make_key(TH#table_handle.event_order, Stuff);
make_key(trace_ts, Stuff) ->
if
- record(Stuff, event) ->
+ is_record(Stuff, event) ->
#event{trace_ts = R, event_ts = P} = Stuff,
#trace_ts{trace_ts = R, event_ts = P};
- record(Stuff, trace_ts) ->
+ is_record(Stuff, trace_ts) ->
Stuff;
- record(Stuff, event_ts) ->
+ is_record(Stuff, event_ts) ->
#event_ts{trace_ts = R, event_ts = P} = Stuff,
#trace_ts{trace_ts = R, event_ts = P}
end;
make_key(event_ts, Stuff) ->
if
- record(Stuff, event) ->
+ is_record(Stuff, event) ->
#event{trace_ts = R, event_ts = P} = Stuff,
#event_ts{trace_ts = R, event_ts = P};
- record(Stuff, event_ts) ->
+ is_record(Stuff, event_ts) ->
Stuff;
- record(Stuff, trace_ts) ->
+ is_record(Stuff, trace_ts) ->
#trace_ts{trace_ts = R, event_ts = P} = Stuff,
#event_ts{trace_ts = R, event_ts = P}
end.
%%----------------------------------------------------------------------
+%%----------------------------------------------------------------------
+
+get_table_size(CollectorPid) when is_pid(CollectorPid) ->
+ call(CollectorPid, get_table_size).
+
+%%----------------------------------------------------------------------
%% get_table_handle(CollectorPid) -> Handle
%%
%% Return a table handle
@@ -465,7 +481,7 @@ make_key(event_ts, Stuff) ->
%% Handle = record(table_handle)
%%----------------------------------------------------------------------
-get_table_handle(CollectorPid) when pid(CollectorPid) ->
+get_table_handle(CollectorPid) when is_pid(CollectorPid) ->
call(CollectorPid, get_table_handle).
%%----------------------------------------------------------------------
@@ -480,7 +496,7 @@ get_table_handle(CollectorPid) when pid(CollectorPid) ->
get_global_pid() ->
case global:whereis_name(?MODULE) of
- CollectorPid when pid(CollectorPid) ->
+ CollectorPid when is_pid(CollectorPid) ->
CollectorPid;
undefined ->
exit(global_collector_not_started)
@@ -505,7 +521,7 @@ change_pattern(CollectorPid, RawPattern) ->
call(CollectorPid, {change_pattern, Pattern}).
%%----------------------------------------------------------------------
-%% dict_insert(CollectorPid, {filter, collector}, FilterFun) -> ok
+%% dict_insert(CollectorPid, {filter, all}, FilterFun) -> ok
%% dict_insert(CollectorPid, {subscriber, SubscriberPid}, Void) -> ok
%% dict_insert(CollectorPid, Key, Val) -> ok
%%
@@ -532,14 +548,14 @@ change_pattern(CollectorPid, RawPattern) ->
dict_insert(CollectorPid, Key = {filter, Name}, Fun) ->
if
- atom(Name), function(Fun) ->
+ is_atom(Name), is_function(Fun) ->
call(CollectorPid, {dict_insert, Key, Fun});
true ->
exit({badarg, Key})
end;
dict_insert(CollectorPid, Key = {subscriber, Pid}, Val) ->
if
- pid(Pid) ->
+ is_pid(Pid) ->
call(CollectorPid, {dict_insert, Key, Val});
true ->
exit({badarg, Key})
@@ -626,9 +642,9 @@ multicast(CollectorPid, Msg) ->
%% Pid = dbg_trace_client_pid()
%%----------------------------------------------------------------------
-start_trace_client(CollectorPid, Type, FileName) when Type == event_file ->
+start_trace_client(CollectorPid, Type, FileName) when Type =:= event_file ->
load_event_file(CollectorPid, FileName);
-start_trace_client(CollectorPid, Type, FileName) when Type == file ->
+start_trace_client(CollectorPid, Type, FileName) when Type =:= file ->
WaitFor = {make_ref(), end_of_trace},
EventFun = fun(E, {ReplyTo, {ok, TH}}) -> {ReplyTo, report(TH, E)} end,
EndFun = fun({ReplyTo, {ok, _TH}}) -> ReplyTo ! WaitFor, ReplyTo end,
@@ -658,9 +674,9 @@ start_trace_client(CollectorPid, Type, Parameters) ->
{trace_client_pid, Pid}.
trace_spec_wrapper(EventFun, EndFun, EventInitialAcc)
- when function(EventFun), function(EndFun) ->
+ when is_function(EventFun), is_function(EndFun) ->
{fun(Trace, Acc) ->
- case Trace == end_of_trace of
+ case Trace =:= end_of_trace of
true -> EndFun(Acc);
false -> EventFun(Trace, Acc)
end
@@ -670,6 +686,17 @@ trace_spec_wrapper(EventFun, EndFun, EventInitialAcc)
start_trace_port(Parameters) ->
dbg:tracer(port, dbg:trace_port(ip, Parameters)).
+monitor_trace_port(CollectorPid, Parameters) ->
+ Res = start_trace_port(Parameters),
+ spawn(fun() ->
+ MonitorRef = erlang:monitor(process, CollectorPid),
+ receive
+ {'DOWN', MonitorRef, _, _, _} ->
+ dbg:stop_clear()
+ end
+ end),
+ Res.
+
%%----------------------------------------------------------------------
%% iterate(Handle, Prev, Limit) ->
%% iterate(Handle, Prev, Limit, undefined, Prev)
@@ -702,24 +729,24 @@ iterate(Handle, Prev, Limit) ->
%% Acc = NewAcc = term()
%%----------------------------------------------------------------------
-iterate(_, _, Limit, _, Acc) when Limit == 0 ->
+iterate(_, _, Limit, _, Acc) when Limit =:= 0 ->
Acc;
-iterate(CollectorPid, Prev, Limit, Fun, Acc) when pid(CollectorPid) ->
+iterate(CollectorPid, Prev, Limit, Fun, Acc) when is_pid(CollectorPid) ->
case get_table_handle(CollectorPid) of
- {ok, TH} when record(TH, table_handle) ->
+ {ok, TH} when is_record(TH, table_handle) ->
iterate(TH, Prev, Limit, Fun, Acc);
{error, Reason} ->
exit(Reason)
end;
-iterate(TH, Prev, Limit, Fun, Acc) when record(TH, table_handle) ->
+iterate(TH, Prev, Limit, Fun, Acc) when is_record(TH, table_handle) ->
if
- Limit == infinity ->
+ Limit =:= infinity ->
next_iterate(TH, Prev, Limit, Fun, Acc);
- integer(Limit), Limit > 0 ->
+ is_integer(Limit), Limit > 0 ->
next_iterate(TH, Prev, Limit, Fun, Acc);
- Limit == '-infinity' ->
+ Limit =:= '-infinity' ->
prev_iterate(TH, Prev, Limit, Fun, Acc);
- integer(Limit), Limit < 0 ->
+ is_integer(Limit), Limit < 0 ->
prev_iterate(TH, Prev, Limit, Fun, Acc)
end.
@@ -793,7 +820,7 @@ prev_iterate(TH, Prev, Limit, Fun, Acc) ->
lookup_and_apply(TH, Prev, Next, Limit, 1, Fun, Acc)
end.
-lookup_and_apply(TH, _Prev, Next, Limit, Incr, Fun, _Acc) when Fun == undefined ->
+lookup_and_apply(TH, _Prev, Next, Limit, Incr, Fun, _Acc) when Fun =:= undefined ->
Limit2 = incr(Limit, Incr),
iterate(TH, Next, Limit2, Fun, Next);
lookup_and_apply(TH, Prev, Next, Limit, Incr, Fun, Acc) ->
@@ -801,17 +828,33 @@ lookup_and_apply(TH, Prev, Next, Limit, Incr, Fun, Acc) ->
case catch ets:lookup_element(Tab, Next, 2) of
{'EXIT', _} ->
iterate(TH#table_handle.collector_pid, Prev, Limit, Fun, Acc);
- E when record(E, event) ->
+ E when is_record(E, event) ->
Acc2 = Fun(E, Acc),
Limit2 = incr(Limit, Incr),
iterate(TH, Next, Limit2, Fun, Acc2)
end.
+lookup(CollectorPid, Key) when is_pid(CollectorPid) ->
+ case get_table_handle(CollectorPid) of
+ {ok, TH} when is_record(TH, table_handle) ->
+ lookup(TH, Key);
+ {error, Reason} ->
+ {error, Reason}
+ end;
+lookup(TH, Key) when is_record(TH, table_handle) ->
+ Tab = TH#table_handle.event_tab,
+ case catch ets:lookup_element(Tab, Key, 2) of
+ {'EXIT', _} ->
+ {error, enoent};
+ E when is_record(E, event) ->
+ {ok, E}
+ end.
+
incr(Val, Incr) ->
if
- Val == infinity -> Val;
- Val == '-infinity' -> Val;
- integer(Val) -> Val + Incr
+ Val =:= infinity -> Val;
+ Val =:= '-infinity' -> Val;
+ is_integer(Val) -> Val + Incr
end.
%%----------------------------------------------------------------------
@@ -824,13 +867,18 @@ incr(Val, Incr) ->
%% table_handle() = record(table_handle)
%%----------------------------------------------------------------------
-clear_table(CollectorPid) when pid(CollectorPid) ->
+clear_table(CollectorPid) when is_pid(CollectorPid) ->
call(CollectorPid, clear_table);
-clear_table(TH) when record(TH, table_handle) ->
+clear_table(TH) when is_record(TH, table_handle) ->
clear_table(TH#table_handle.collector_pid).
call(CollectorPid, Request) ->
- gen_server:call(CollectorPid, Request, infinity).
+ try
+ gen_server:call(CollectorPid, Request, infinity)
+ catch
+ exit:{noproc,_} ->
+ {error, no_collector}
+ end.
%%%----------------------------------------------------------------------
%%% Callback functions from gen_server
@@ -849,7 +897,7 @@ init([InitialS, Dict]) ->
case InitialS#state.parent_pid of
undefined ->
ignore;
- Pid when pid(Pid) ->
+ Pid when is_pid(Pid) ->
link(Pid)
end,
Funs = [fun init_tables/1,
@@ -860,7 +908,7 @@ init([InitialS, Dict]) ->
init_tables(S) ->
EventTab = ets:new(et_events, [ordered_set, {keypos, 1}, public]),
DictTab = ets:new(et_dict, [ordered_set, {keypos, 1}, public]),
- S#state{event_tab = EventTab, dict_tab = DictTab}.
+ S#state{event_tab = EventTab, dict_tab = DictTab, event_tab_size = 0}.
init_global(S) ->
case S#state.trace_global of
@@ -889,44 +937,53 @@ init_global(S) ->
handle_call({multicast, Msg}, _From, S) ->
do_multicast(S#state.subscribers, Msg),
- {reply, ok, S};
+ reply(ok, S);
handle_call(Msg = {dict_insert, _Key, _Val}, _From, S) ->
S2 = do_dict_insert(Msg, S),
- {reply, ok, S2};
+ reply(ok, S2);
handle_call(Msg = {dict_delete, _Key}, _From, S) ->
- S2 = do_dict_delete(Msg, S),
- {reply, ok, S2};
-
+ try
+ S2 = do_dict_delete(Msg, S),
+ reply(ok, S2)
+ catch
+ throw:{stop, R} ->
+ opt_unlink(S#state.parent_pid),
+ {stop, R, S}
+ end;
handle_call({dict_lookup, Key}, _From, S) ->
Reply = ets:lookup(S#state.dict_tab, Key),
- {reply, Reply, S};
+ reply(Reply, S);
handle_call({dict_match, Pattern}, _From, S) ->
case catch ets:match_object(S#state.dict_tab, Pattern) of
{'EXIT', _Reason} ->
- {reply, [], S};
+ reply([], S);
Matching ->
- {reply, Matching, S}
+ reply(Matching, S)
end;
handle_call(get_table_handle, _From, S) ->
- [{_, TableFilter}] = ets:lookup(S#state.dict_tab, {filter, collector}),
+ [{_, TableFilter}] = ets:lookup(S#state.dict_tab, {filter, ?DEFAULT_FILTER_NAME}),
TH = #table_handle{collector_pid = self(),
event_tab = S#state.event_tab,
event_order = S#state.event_order,
filter = TableFilter},
- {reply, {ok, TH}, S};
+ reply({ok, TH}, S);
+
+handle_call(get_table_size, _From, S) ->
+ Size = ets:info(S#state.event_tab, size),
+ reply({ok, Size}, S);
handle_call(close, _From, S) ->
case S#state.file of
undefined ->
- {reply, {error, file_not_open}, S};
+ reply({error, file_not_open}, S);
F ->
Reply = disk_log:close(F#file.desc),
S2 = S#state{file = undefined},
- {reply, Reply, S2}
+ reply(Reply, S2)
end;
handle_call({save_event_file, FileName, Options}, _From, S) ->
Default = #file{name = FileName,
@@ -934,7 +991,7 @@ handle_call({save_event_file, FileName, Options}, _From, S) ->
file_opt = write,
table_opt = keep},
case parse_file_options(Default, Options) of
- {ok, F} when record(F, file) ->
+ {ok, F} when is_record(F, file) ->
case file_open(F) of
{ok, Fd} ->
F2 = F#file{desc = Fd},
@@ -966,16 +1023,16 @@ handle_call({save_event_file, FileName, Options}, _From, S) ->
end,
case F2#file.table_opt of
keep ->
- {reply, Reply2, S3};
+ reply(Reply2, S3);
clear ->
S4 = do_clear_table(S3),
- {reply, Reply2, S4}
+ reply(Reply2, S4)
end;
{error, Reason} ->
- {reply, {error, {file_open, Reason}}, S}
+ reply({error, {file_open, Reason}}, S)
end;
{error, Reason} ->
- {reply, {error, Reason}, S}
+ reply({error, Reason}, S)
end;
handle_call({change_pattern, Pattern}, _From, S) ->
@@ -983,23 +1040,23 @@ handle_call({change_pattern, Pattern}, _From, S) ->
rpc:multicall(Ns, et_selector, change_pattern, [Pattern]),
Reply = {old_pattern, S#state.trace_pattern},
S2 = S#state{trace_pattern = Pattern},
- {reply, Reply, S2};
+ reply(Reply, S2);
handle_call(clear_table, _From, S) ->
S2 = do_clear_table(S),
- {reply, ok, S2};
+ reply(ok, S2);
handle_call(stop, _From, S) ->
do_multicast(S#state.subscribers, close),
case S#state.trace_global of
- true -> rpc:multicall(S#state.trace_nodes, dbg, stop, []);
+ true -> rpc:multicall(S#state.trace_nodes, dbg, stop_clear, []);
false -> ignore
end,
{stop, shutdown, ok, S};
handle_call(Request, From, S) ->
ok = error_logger:format("~p(~p): handle_call(~p, ~p, ~p)~n",
[?MODULE, self(), Request, From, S]),
- {reply, {error, {bad_request, Request}}, S}.
+ reply({error, {bad_request, Request}}, S).
%%----------------------------------------------------------------------
%% Func: handle_cast/2
@@ -1011,7 +1068,7 @@ handle_call(Request, From, S) ->
handle_cast(Msg, S) ->
ok = error_logger:format("~p(~p): handle_cast(~p, ~p)~n",
[?MODULE, self(), Msg, S]),
- {noreply, S}.
+ noreply(S).
%%----------------------------------------------------------------------
%% Func: handle_info/2
@@ -1020,54 +1077,67 @@ handle_cast(Msg, S) ->
%% {stop, Reason, State} (terminate/2 is called)
%%----------------------------------------------------------------------
+handle_info(timeout, S) ->
+ S2 = check_size(S),
+ noreply(S2);
handle_info({nodeup, Node}, S) ->
Port = S#state.trace_port,
MaxQueue = S#state.trace_max_queue,
- case rpc:call(Node, ?MODULE, start_trace_port, [{Port, MaxQueue}]) of
+ case rpc:call(Node, ?MODULE, monitor_trace_port, [self(), {Port, MaxQueue}]) of
{ok, _} ->
- listen_on_trace_port(Node, Port, S);
- {error, Reason} when Reason == already_started->
+ S2 = listen_on_trace_port(Node, Port, S),
+ noreply(S2);
+ {error, Reason} when Reason =:= already_started->
ok = error_logger:format("~p(~p): producer ignored(~p:~p):~n ~p~n",
[?MODULE, self(), Node, Port, Reason]),
S2 = S#state{trace_port = Port + 1},
- {noreply, S2};
+ noreply(S2);
{badrpc, Reason} ->
ok = error_logger:format("~p(~p): producer ignored(~p:~p):~n ~p~n",
[?MODULE, self(), Node, Port, Reason]),
S2 = S#state{trace_port = Port + 1},
- {noreply, S2};
+ noreply(S2);
{error, Reason} ->
self() ! {nodeup, Node},
ok = error_logger:format("~p(~p): producer retry(~p:~p):~n ~p~n",
[?MODULE, self(), Node, Port, Reason]),
S2 = S#state{trace_port = Port + 1},
- {noreply, S2}
+ noreply(S2)
end;
handle_info({nodedown, Node}, S) ->
- {noreply, S#state{trace_nodes = S#state.trace_nodes -- [Node]}};
+ noreply(S#state{trace_nodes = S#state.trace_nodes -- [Node]});
handle_info({register_trace_client, Pid}, S) ->
link(Pid),
- {noreply, S};
+ noreply(S);
-handle_info({'EXIT', Pid, Reason}, S) when Pid == S#state.parent_pid ->
+handle_info({'EXIT', Pid, Reason}, S) when Pid =:= S#state.parent_pid ->
{stop, Reason, S};
-handle_info(Info = {'EXIT', Pid, _Reason}, S) ->
- OldSubscribers = S#state.subscribers,
+handle_info(Info = {'EXIT', Pid, Reason}, S) ->
+ OldSubscribers = S#state.subscribers,
case lists:member(Pid, OldSubscribers) of
- true ->
- S2 = do_dict_delete({dict_delete, {subscriber, Pid}}, S),
- {noreply, S2};
+ true when Reason =:= shutdown ->
+ try
+ S2 = do_dict_delete({dict_delete, {subscriber, Pid}}, S),
+ noreply(S2)
+ catch
+ throw:{stop, R} ->
+ opt_unlink(S#state.parent_pid),
+ {stop, R, S}
+ end;
+ true ->
+ opt_unlink(S#state.parent_pid),
+ {stop, Reason, S};
false ->
ok = error_logger:format("~p(~p): handle_info(~p, ~p)~n",
[?MODULE, self(), Info, S]),
- {noreply, S}
+ noreply(S)
end;
handle_info(Info, S) ->
ok = error_logger:format("~p(~p): handle_info(~p, ~p)~n",
[?MODULE, self(), Info, S]),
- {noreply, S}.
+ noreply(S).
listen_on_trace_port(Node, Port, S) ->
[_Name, Host] = string:tokens(atom_to_list(Node), [$@]),
@@ -1075,20 +1145,17 @@ listen_on_trace_port(Node, Port, S) ->
{trace_client_pid, RemotePid} ->
rpc:call(Node, et_selector, change_pattern, [S#state.trace_pattern]),
link(RemotePid),
- S2 = S#state{trace_nodes = [Node | S#state.trace_nodes],
- trace_port = Port + 1},
- {noreply, S2};
- {'EXIT', Reason} when Reason == already_started->
+ S#state{trace_nodes = [Node | S#state.trace_nodes],
+ trace_port = Port + 1};
+ {'EXIT', Reason} when Reason =:= already_started->
ok = error_logger:format("~p(~p): consumer ignored(~p:~p): ~p~n",
[?MODULE, self(), Node, Port, Reason]),
- S2 = S#state{trace_port = Port + 1},
- {noreply, S2};
+ S#state{trace_port = Port + 1};
{'EXIT', Reason} ->
self() ! {nodeup, Node},
ok = error_logger:format("~p(~p): consumer retry(~p:~p):~n ~p~n",
[?MODULE, self(), Node, Port, Reason]),
- S2 = S#state{trace_port = Port + 1},
- {noreply, S2}
+ S#state{trace_port = Port + 1}
end.
%%----------------------------------------------------------------------
@@ -1120,7 +1187,7 @@ do_clear_table(S) ->
NewTab = ets:new(et_events, [ordered_set, {keypos, 1}, public]),
S#state{event_tab = NewTab}.
-do_dict_insert(Msg = {dict_insert, Key = {subscriber, Pid}, Val}, S) when pid(Pid) ->
+do_dict_insert(Msg = {dict_insert, Key = {subscriber, Pid}, Val}, S) when is_pid(Pid) ->
OldSubscribers = S#state.subscribers,
NewSubscribers =
case lists:member(Pid, OldSubscribers) of
@@ -1133,6 +1200,8 @@ do_dict_insert(Msg = {dict_insert, Key = {subscriber, Pid}, Val}, S) when pid(Pi
[Pid | OldSubscribers]
end,
do_multicast(NewSubscribers, Msg),
+ Size = ets:info(S#state.event_tab, size),
+ do_multicast(NewSubscribers, {more_events, Size}),
ets:insert(S#state.dict_tab, {Key, Val}),
S#state{subscribers = NewSubscribers};
do_dict_insert(Msg = {dict_insert, Key, Val}, S) ->
@@ -1147,11 +1216,18 @@ do_dict_delete(Msg = {dict_delete, Key = {subscriber, Pid}}, S) ->
case lists:member(Pid, OldSubscribers) of
true ->
unlink(Pid),
- S#state{subscribers = OldSubscribers -- [Pid]};
+ S2 = S#state{subscribers = OldSubscribers -- [Pid]},
+ if
+ S2#state.auto_shutdown,
+ S2#state.subscribers =:= [] ->
+ throw({stop, shutdown});
+ true ->
+ S2
+ end;
false ->
S
end;
-do_dict_delete({dict_delete, {filter, collector}}, S) ->
+do_dict_delete({dict_delete, {filter, ?DEFAULT_FILTER_NAME}}, S) ->
S;
do_dict_delete(Msg = {dict_delete, Key}, S) ->
do_multicast(S#state.subscribers, Msg),
@@ -1202,3 +1278,33 @@ do_multicast([Pid | Pids], Msg) ->
do_multicast(Pids, Msg);
do_multicast([], _Msg) ->
ok.
+
+opt_unlink(Pid) ->
+ if
+ Pid =:= undefined ->
+ ignore;
+ true ->
+ unlink(Pid)
+ end.
+
+reply(Reply, #state{subscribers = []} = S) ->
+ {reply, Reply, S};
+reply(Reply, S) ->
+ {reply, Reply, S, 500}.
+
+noreply(#state{subscribers = []} = S) ->
+ {noreply, S};
+noreply(S) ->
+ {noreply, S, 500}.
+
+check_size(S) ->
+ Size = ets:info(S#state.event_tab, size),
+ if
+ Size =:= S#state.event_tab_size ->
+ S;
+ true ->
+ %% Tell the subscribers that more events are available
+ Msg = {more_events, Size},
+ do_multicast(S#state.subscribers, Msg),
+ S#state{event_tab_size = Size}
+ end.
diff --git a/lib/et/src/et_contents_viewer.erl b/lib/et/src/et_gs_contents_viewer.erl
index 29ca93ca64..f6a87bd608 100644
--- a/lib/et/src/et_contents_viewer.erl
+++ b/lib/et/src/et_gs_contents_viewer.erl
@@ -1,26 +1,26 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2000-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2000-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
%%----------------------------------------------------------------------
%% Purpose: Displays details of a trace event
%%----------------------------------------------------------------------
--module(et_contents_viewer).
+-module(et_gs_contents_viewer).
-behaviour(gen_server).
@@ -75,7 +75,7 @@ start_link(Options) ->
case parse_opt(Options, default_state()) of
{ok, S} ->
case gen_server:start_link(?MODULE, [S], []) of
- {ok, ContentsPid} when S#state.parent_pid /= self() ->
+ {ok, ContentsPid} when S#state.parent_pid =/= self() ->
unlink(ContentsPid),
{ok, ContentsPid};
Other ->
@@ -88,8 +88,8 @@ start_link(Options) ->
default_state() ->
#state{parent_pid = self(),
viewer_pid = undefined,
- active_filter = collector,
- filters = [#filter{name = collector, function = fun(E) -> E end}],
+ active_filter = ?DEFAULT_FILTER_NAME,
+ filters = [?DEFAULT_FILTER],
width = 600,
height = 300}.
@@ -97,11 +97,11 @@ parse_opt([], S) ->
Name = S#state.active_filter,
Filters = S#state.filters,
if
- S#state.event == undefined ->
+ S#state.event =:= undefined ->
{error, {badarg, no_event}};
- atom(Name) ->
+ is_atom(Name) ->
case lists:keysearch(Name, #filter.name, Filters) of
- {value, F} when record(F, filter) ->
+ {value, F} when is_record(F, filter) ->
{ok, S#state{active_filter = Name}};
false ->
{error, {badarg, {no_such_filter, Name, Filters}}}
@@ -109,27 +109,27 @@ parse_opt([], S) ->
end;
parse_opt([H | T], S) ->
case H of
- {parent_pid, ParentPid} when pid(ParentPid) ->
+ {parent_pid, ParentPid} when is_pid(ParentPid) ->
parse_opt(T, S#state{parent_pid = ParentPid});
- {viewer_pid, ViewerPid} when pid(ViewerPid) ->
+ {viewer_pid, ViewerPid} when is_pid(ViewerPid) ->
parse_opt(T, S#state{viewer_pid = ViewerPid});
{event_order, trace_ts} ->
parse_opt(T, S#state{event_order = trace_ts});
{event_order, event_ts} ->
parse_opt(T, S#state{event_order = event_ts});
- {event, Event} when record(Event, event) ->
+ {event, Event} when is_record(Event, event) ->
parse_opt(T, S#state{event = Event});
- {active_filter, Name} when atom(Name) ->
+ {active_filter, Name} when is_atom(Name) ->
parse_opt(T, S#state{active_filter = Name});
- F when record(F, filter),
- atom(F#filter.name),
- function(F#filter.function) ->
+ F when is_record(F, filter),
+ is_atom(F#filter.name),
+ is_function(F#filter.function) ->
Filters = lists:keydelete(F#filter.name, #filter.name, S#state.filters),
Filters2 = lists:keysort(#filter.name, [F | Filters]),
parse_opt(T, S#state{filters = Filters2});
- {width, Width} when integer(Width), Width > 0 ->
+ {width, Width} when is_integer(Width), Width > 0 ->
parse_opt(T, S#state{width = Width});
- {height, Height} when integer(Height), Height > 0 ->
+ {height, Height} when is_integer(Height), Height > 0 ->
parse_opt(T, S#state{height = Height});
Bad ->
{error, {bad_option, Bad}}
@@ -164,7 +164,7 @@ call(ContentsPid, Request) ->
%% {stop, Reason}
%%----------------------------------------------------------------------
-init([S]) when record(S, state) ->
+init([S]) when is_record(S, state) ->
process_flag(trap_exit, true),
S2 = create_window(S),
{ok, S2}.
@@ -223,11 +223,11 @@ handle_info({gs, Button, click, Data, _Other}, S) ->
FileName = ["et_contents_viewer_", now_to_string(TimeStamp), ".save"],
file:write_file(lists:flatten(FileName), Bin),
{noreply, S};
- _PopupMenuItem when record(Data, filter) ->
+ _PopupMenuItem when is_record(Data, filter) ->
F = Data,
ChildState= S#state{active_filter = F#filter.name},
case gen_server:start_link(?MODULE, [ChildState], []) of
- {ok, Pid} when S#state.parent_pid /= self() ->
+ {ok, Pid} when S#state.parent_pid =/= self() ->
unlink(Pid),
{noreply, S};
_ ->
@@ -312,11 +312,11 @@ handle_info({gs, _Obj, keypress, _, [KeySym, _Keycode, _Shift, _Control | _]}, S
{noreply, S};
0 ->
- case lists:keysearch(collector, #filter.name, S#state.filters) of
- {value, F} when record(F, filter) ->
+ case lists:keysearch(?DEFAULT_FILTER_NAME, #filter.name, S#state.filters) of
+ {value, F} when is_record(F, filter) ->
ChildState= S#state{active_filter = F#filter.name},
case gen_server:start_link(?MODULE, [ChildState], []) of
- {ok, Pid} when S#state.parent_pid /= self() ->
+ {ok, Pid} when S#state.parent_pid =/= self() ->
unlink(Pid);
_ ->
ignore
@@ -325,12 +325,12 @@ handle_info({gs, _Obj, keypress, _, [KeySym, _Keycode, _Shift, _Control | _]}, S
ignore
end,
{noreply, S};
- Int when integer(Int), Int > 0, Int =< 9 ->
+ Int when is_integer(Int), Int > 0, Int =< 9 ->
case catch lists:nth(Int, S#state.filters) of
- F when record(F, filter) ->
+ F when is_record(F, filter) ->
ChildState= S#state{active_filter = F#filter.name},
case gen_server:start_link(?MODULE, [ChildState], []) of
- {ok, Pid} when S#state.parent_pid /= self() ->
+ {ok, Pid} when S#state.parent_pid =/= self() ->
unlink(Pid);
_ ->
ignore
@@ -356,7 +356,7 @@ handle_info({gs, _Obj, configure, [], [W, H | _]}, S) ->
{noreply, S2};
handle_info({'EXIT', Pid, Reason}, S) ->
if
- Pid == S#state.parent_pid ->
+ Pid =:= S#state.parent_pid ->
unlink(Pid),
{stop, Reason, S};
true ->
@@ -428,7 +428,7 @@ create_filter_menu(Bar, Filters) ->
Menu = gs:menu(Button, []),
gs:menuitem(Menu, [{label, {text, "Select Filter"}}, {bg, lightblue}, {enable, false}]),
gs:menuitem(Menu, [{itemtype, separator}]),
- Item = fun(F, N) when F#filter.name == collector->
+ Item = fun(F, N) when F#filter.name =:= ?DEFAULT_FILTER_NAME->
Label = lists:concat([pad_string(F#filter.name, 20), "(0)"]),
gs:menuitem(Menu, [{label, {text, Label}}, {data, F}]),
N + 1;
@@ -449,9 +449,9 @@ create_hide_menu(Bar, S) ->
From = E#event.from,
To = E#event.to,
if
- S#state.viewer_pid == undefined ->
+ S#state.viewer_pid =:= undefined ->
ignore;
- From == To ->
+ From =:= To ->
gs:menuitem(Menu, [{label, {text, "Hide actor in Viewer "}}, {bg, lightblue}, {enable, false}]),
gs:menuitem(Menu, [{itemtype, separator}]),
gs:menuitem({hide, [From]}, Menu, [{label, {text,"From=To (f|t|b)"}}]),
@@ -483,9 +483,9 @@ create_search_menu(Bar, S) ->
{bg, lightblue}, {enable, false}]),
gs:menuitem(Menu, [{itemtype, separator}]),
if
- S#state.viewer_pid == undefined ->
+ S#state.viewer_pid =:= undefined ->
S;
- From == To ->
+ From =:= To ->
Key = et_collector:make_key(S#state.event_order, E),
ModeS = {search_actors, forward, Key, [From]},
ModeR = {search_actors, reverse, Key, [From]},
@@ -508,7 +508,7 @@ config_editor(Editor, S) ->
case catch FilterFun(Event) of
true ->
do_config_editor(Editor, Event, lightblue, S#state.event_order);
- {true, Event2} when record(Event2, event) ->
+ {true, Event2} when is_record(Event2, event) ->
do_config_editor(Editor, Event2, lightblue, S#state.event_order);
false ->
do_config_editor(Editor, Event, red, S#state.event_order);
@@ -536,7 +536,7 @@ term_to_string(Term) ->
end.
now_to_string({Mega, Sec, Micro} = Now)
- when integer(Mega), integer(Sec), integer(Micro) ->
+ when is_integer(Mega), is_integer(Sec), is_integer(Micro) ->
{{Y, Mo, D}, {H, Mi, S}} = calendar:now_to_universal_time(Now),
lists:concat([Y, "-", Mo, "-", D, " ", H, ".", Mi, ".", S, ".", Micro]);
now_to_string(Other) ->
@@ -548,14 +548,14 @@ event_to_string(Event, TsKey) ->
Deep =
["DETAIL LEVEL: ", term_to_string(Event#event.detail_level),
"\nLABEL: ", term_to_string(Event#event.label),
- case Event#event.from == Event#event.to of
+ case Event#event.from =:= Event#event.to of
true ->
["\nACTOR: ", term_to_string(Event#event.from)];
false ->
["\nFROM: ", term_to_string(Event#event.from),
"\nTO: ", term_to_string(Event#event.to)]
end,
- case ReportedTs == ParsedTs of
+ case ReportedTs =:= ParsedTs of
true ->
["\nPARSED: ", now_to_string(ParsedTs)];
false ->
@@ -571,9 +571,9 @@ event_to_string(Event, TsKey) ->
"\nCONTENTS:\n\n", term_to_string(Event#event.contents)],
lists:flatten(Deep).
-pad_string(Atom, MinLen) when atom(Atom) ->
+pad_string(Atom, MinLen) when is_atom(Atom) ->
pad_string(atom_to_list(Atom), MinLen);
-pad_string(String, MinLen) when integer(MinLen), MinLen >= 0 ->
+pad_string(String, MinLen) when is_integer(MinLen), MinLen >= 0 ->
Len = length(String),
case Len >= MinLen of
true ->
@@ -584,7 +584,7 @@ pad_string(String, MinLen) when integer(MinLen), MinLen >= 0 ->
send_viewer_event(S, Event) ->
case S#state.viewer_pid of
- ViewerPid when pid(ViewerPid) ->
+ ViewerPid when is_pid(ViewerPid) ->
ViewerPid ! {et, Event};
undefined ->
ignore
diff --git a/lib/et/src/et_gs_viewer.erl b/lib/et/src/et_gs_viewer.erl
new file mode 100644
index 0000000000..0af7814d15
--- /dev/null
+++ b/lib/et/src/et_gs_viewer.erl
@@ -0,0 +1,1481 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%
+%%----------------------------------------------------------------------
+%% Purpose: Displays a sequence chart for trace events (messages/actions)
+%%----------------------------------------------------------------------
+
+-module(et_gs_viewer).
+
+-behaviour(gen_server).
+
+%% External exports
+-export([start_link/1]).
+
+%% gen_server callbacks
+-export([init/1, terminate/2, code_change/3,
+ handle_call/3, handle_cast/2, handle_info/2]).
+
+-include("../include/et.hrl").
+-include("et_internal.hrl").
+
+-define(unknown, "UNKNOWN").
+
+-record(state,
+ {parent_pid, % Pid of parent process
+ collector_pid, % Pid of collector process
+ event_order, % Field to be used as primary key
+ trace_pattern, % Collector trace pattern
+ active_filter, % Name of the active filter
+ filters, % List of possible filters
+ selected_actor, % Actor selected by user
+ first_event, % Key of first event (regardless of visibility)
+ last_event, % Key of last event (regardless of visibility)
+ max_events, % Maximum number of shown events
+ events, % Queue containg all event keys (regardless of visibility)
+ max_actors, % Maximum number of shown actors
+ actors, % List of known actors
+ refresh_needed, % Refresh is needed in order to show all actors
+ display_mode, % Display all or only matching actors
+ detail_level, % Show only events with lesser detail level
+ hide_actions, % Hide/show events where to == from actor (bool)
+ hide_unknown, % Hide/show events with unknown actor (bool)
+ is_suspended, % Suspend viewer updates (bool)
+ title, % GUI: Window title
+ win, % GUI: Window object
+ menubar, % GUI: Menu bar object
+ packer, % GUI: Packer object
+ width, % GUI: Window width
+ height, % GUI: Window height
+ scale, % GUI: Scaling factor on canvas
+ font, % GUI: Font to be used on text labels
+ canvas_width, % GUI: Canvas width
+ canvas_height, % GUI: Canvas height
+ canvas, % GUI: Canvas object
+ y_pos}). % GUI: Current y position on canvas
+
+-record(actor, {name, string}).
+
+-define(initial_x, 10).
+-define(incr_x, 60).
+-define(initial_y, 15).
+-define(incr_y, 15).
+
+%%%----------------------------------------------------------------------
+%%% Client side
+%%%----------------------------------------------------------------------
+
+start_link(Options) ->
+ case parse_opt(Options, default_state(), []) of
+ {ok, S, CollectorOpt} ->
+ case S#state.collector_pid of
+ CollectorPid when is_pid(CollectorPid) ->
+ case gen_server:start_link(?MODULE, [S], []) of
+ {ok, Pid} when S#state.parent_pid =/= self() ->
+ unlink(Pid),
+ {ok, Pid};
+ Other ->
+ Other
+ end;
+ undefined ->
+ case et_collector:start_link(CollectorOpt) of
+ {ok, CollectorPid} ->
+ S2 = S#state{collector_pid = CollectorPid},
+ case gen_server:start_link(?MODULE, [S2], []) of
+ {ok, Pid} when S#state.parent_pid =/= self() ->
+ unlink(Pid),
+ {ok, Pid};
+ Other ->
+ Other
+ end;
+ {error, Reason} ->
+ {error, {et_collector, Reason}}
+ end
+ end;
+ {error, Reason} ->
+ {error, Reason}
+ end.
+
+default_state() ->
+ #state{parent_pid = self(),
+ collector_pid = undefined,
+ detail_level = ?detail_level_max,
+ active_filter = ?DEFAULT_FILTER_NAME,
+ filters = [?DEFAULT_FILTER],
+ event_order = trace_ts,
+ is_suspended = false,
+ max_events = 100,
+ first_event = first,
+ last_event = first,
+ events = queue_new(),
+ max_actors = 5,
+ actors = [create_actor(?unknown)],
+ selected_actor = ?unknown,
+ hide_actions = false,
+ hide_unknown = false,
+ refresh_needed = false,
+ display_mode = all,
+ scale = 2,
+ canvas_height = 0,
+ canvas_width = 0,
+ width = 800,
+ height = 600}.
+
+parse_opt([], S, CollectorOpt) ->
+ {ok, S, [{parent_pid, S#state.parent_pid} | CollectorOpt]};
+parse_opt([H | T], S, CollectorOpt) ->
+ case H of
+ {parent_pid, Parent} when Parent =:= undefined ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S#state{parent_pid = Parent}, CollectorOpt2);
+ {parent_pid, Parent} when is_pid(Parent) ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S#state{parent_pid = Parent}, CollectorOpt2);
+ {title, Title} ->
+ parse_opt(T, S#state{title = name_to_string(Title)}, CollectorOpt);
+ {detail_level, Level} when is_integer(Level),
+ Level >= ?detail_level_min,
+ Level =< ?detail_level_max ->
+ parse_opt(T, S#state{detail_level = Level}, CollectorOpt);
+ {detail_level, max} ->
+ parse_opt(T, S#state{detail_level = ?detail_level_max}, CollectorOpt);
+ {detail_level, min} ->
+ parse_opt(T, S#state{detail_level = ?detail_level_min}, CollectorOpt);
+ {is_suspended, true} ->
+ parse_opt(T, S#state{is_suspended = true}, CollectorOpt);
+ {is_suspended, false} ->
+ parse_opt(T, S#state{is_suspended = false}, CollectorOpt);
+ {scale, Scale} when is_integer(Scale), Scale > 0 ->
+ parse_opt(T, S#state{scale = Scale}, CollectorOpt);
+ {width, W} when is_integer(W), W > 0 ->
+ parse_opt(T, S#state{width = W, canvas_width = W}, CollectorOpt);
+ {height, WH} when is_integer(WH), WH > 0 ->
+ parse_opt(T, S#state{height = WH, canvas_height = WH}, CollectorOpt);
+ {collector_pid, Pid} when is_pid(Pid) ->
+ parse_opt(T, S#state{collector_pid = Pid}, CollectorOpt);
+ {collector_pid, undefined} ->
+ parse_opt(T, S#state{collector_pid = undefined}, CollectorOpt);
+ {active_filter, Name} when is_atom(Name) ->
+ parse_opt(T, S#state{active_filter = Name}, CollectorOpt);
+ {event_order, trace_ts} -> %% BUGBUG: Verify event_order with collector
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S#state{event_order = trace_ts}, CollectorOpt2);
+ {event_order, event_ts} -> %% BUGBUG: Verify event_order with collector
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S#state{event_order = event_ts}, CollectorOpt2);
+ {trace_port, _Port} ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S, CollectorOpt2);
+ {trace_max_queue, _Queue} ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S, CollectorOpt2);
+ {trace_pattern, _Pattern} ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S, CollectorOpt2);
+ {trace_global, _Boolean} ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S, CollectorOpt2);
+ {trace_client, _Client} ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S, CollectorOpt2);
+ {dict_insert, {filter, Name}, Fun} ->
+ if
+ is_atom(Name), is_function(Fun) ->
+ F = #filter{name = Name, function = Fun},
+ Filters = lists:keydelete(Name, #filter.name, S#state.filters),
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S#state{filters = Filters ++ [F]}, CollectorOpt2);
+ true ->
+ {error, {bad_option, H}}
+ end;
+ {dict_insert, {subscriber, Pid}, _Val} ->
+ if
+ is_pid(Pid) ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S, CollectorOpt2);
+ true ->
+ {error, {bad_option, H}}
+ end;
+ {dict_insert, _Key, _Val} ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S, CollectorOpt2);
+ {dict_delete, {filter, Name}} ->
+ Filters = lists:keydelete(Name, #filter.name, S#state.filters),
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S#state{filters = Filters}, CollectorOpt2);
+ {dict_delete, _Key} ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S, CollectorOpt2);
+ {max_events, Max} when is_integer(Max), Max > 0->
+ parse_opt(T, S#state{max_events = Max}, CollectorOpt);
+ {max_events, Max} when Max =:= infinity ->
+ parse_opt(T, S#state{max_events = Max}, CollectorOpt);
+ {max_actors, Max} when is_integer(Max), Max >= 0->
+ parse_opt(T, S#state{max_actors = Max}, CollectorOpt);
+ {max_actors, Max} when Max =:= infinity ->
+ parse_opt(T, S#state{max_actors = Max}, CollectorOpt);
+ {actors, ActorNames} when is_list(ActorNames) ->
+ ActorNames2 =
+ case lists:member(?unknown, ActorNames) of
+ false -> [?unknown | ActorNames];
+ true -> ActorNames
+ end,
+ Actors = [create_actor(Name) || Name <- ActorNames2],
+ parse_opt(T, S#state{actors = Actors}, CollectorOpt);
+ {first_event, First} ->
+ parse_opt(T, S#state{first_event = First}, CollectorOpt);
+ {hide_unknown, Bool} when Bool =:= false ->
+ parse_opt(T, S#state{hide_unknown = Bool}, CollectorOpt);
+ {hide_unknown, Bool} when Bool =:= true ->
+ parse_opt(T, S#state{hide_unknown = Bool}, CollectorOpt);
+ {hide_actions, Bool} when Bool =:= false ->
+ parse_opt(T, S#state{hide_actions = Bool}, CollectorOpt);
+ {hide_actions, Bool} when Bool =:= true ->
+ parse_opt(T, S#state{hide_actions = Bool}, CollectorOpt);
+ {display_mode, Mode = all} ->
+ parse_opt(T, S#state{display_mode = Mode}, CollectorOpt);
+ {display_mode, Mode = {search_actors, Dir, _Key, Actors}} when is_list(Actors), Dir =:= forward ->
+ parse_opt(T, S#state{display_mode = Mode}, CollectorOpt);
+ {display_mode, Mode = {search_actors, Dir, _Key, Actors}} when is_list(Actors), Dir =:= reverse ->
+ parse_opt(T, S#state{display_mode = Mode}, CollectorOpt);
+
+ Bad ->
+ {error, {bad_option, Bad}}
+ end;
+parse_opt(BadList, _S, _CollectorOpt) ->
+ {error, {bad_option_list, BadList}}.
+
+do_dict_insert({filter, Name}, Fun, S) when is_atom(Name), is_function(Fun) ->
+ F = #filter{name = Name, function = Fun},
+ Filters = lists:keydelete(Name, #filter.name, S#state.filters),
+ Filters2 = lists:keysort(#filter.name, [F | Filters]),
+ gs:destroy(filter_menu),
+ create_filter_menu(S#state.active_filter, Filters2),
+ S#state{filters = Filters2};
+do_dict_insert(_Key, _Val, S) ->
+ %% ok = error_logger:format("~p(~p): handle_info({et, {dict_insert, ~p, ~p}})~n",
+ %% [?MODULE, self(), Key, Val]),
+ S.
+
+do_dict_delete({filter, Name}, S) when is_atom(Name), Name =/= S#state.active_filter ->
+ Filters = lists:keydelete(Name, #filter.name, S#state.filters),
+ gs:destroy(filter_menu),
+ create_filter_menu(S#state.active_filter, Filters),
+ S#state{filters = Filters};
+do_dict_delete(_Key, S) ->
+ %% ok = error_logger:format("~p(~p): handle_info({et, {dict_delete, ~p}})~n",
+ %% [?MODULE, self(), Key]),
+ S.
+
+%%%----------------------------------------------------------------------
+%%% Callback functions from gen_server
+%%%----------------------------------------------------------------------
+
+%%----------------------------------------------------------------------
+%% Func: init/1
+%% Returns: {ok, State} |
+%% {ok, State, Timeout} |
+%% ignore |
+%% {stop, Reason}
+%%----------------------------------------------------------------------
+
+init([S]) when is_record(S, state) ->
+ process_flag(trap_exit, true),
+ InitialTimeout = 0,
+ case S#state.parent_pid of
+ undefined ->
+ ignore;
+ Pid when is_pid(Pid) ->
+ link(Pid)
+ end,
+ et_collector:dict_insert(S#state.collector_pid,
+ {subscriber, self()},
+ ?MODULE),
+ {ok, create_main_window(S), InitialTimeout}.
+
+%%----------------------------------------------------------------------
+%% Func: handle_call/3
+%% Returns: {reply, Reply, State} |
+%% {reply, Reply, State, Timeout} |
+%% {noreply, State} |
+%% {noreply, State, Timeout} |
+%% {stop, Reason, Reply, State} | (terminate/2 is called)
+%% {stop, Reason, State} (terminate/2 is called)
+%%----------------------------------------------------------------------
+
+handle_call(get_collector_pid, _From, S) ->
+ Reply = S#state.collector_pid,
+ reply(Reply, S);
+handle_call(stop, _From, S) ->
+ gs:destroy(S#state.win),
+ {stop, shutdown, ok, S};
+handle_call(Request, From, S) ->
+ ok = error_logger:format("~p(~p): handle_call(~p, ~p, ~p)~n",
+ [?MODULE, self(), Request, From, S]),
+ Reply = {error, {bad_request, Request}},
+ reply(Reply, S).
+
+%%----------------------------------------------------------------------
+%% Func: handle_cast/2
+%% Returns: {noreply, State} |
+%% {noreply, State, Timeout} |
+%% {stop, Reason, State} (terminate/2 is called)
+%%----------------------------------------------------------------------
+
+handle_cast(Msg, S) ->
+ ok = error_logger:format("~p(~p): handle_cast(~p, ~p)~n",
+ [?MODULE, self(), Msg, S]),
+ noreply(S).
+
+%%----------------------------------------------------------------------
+%% Func: handle_info/2
+%% Returns: {noreply, State} |
+%% {noreply, State, Timeout} |
+%% {stop, Reason, State} (terminate/2 is called)
+%%----------------------------------------------------------------------
+
+handle_info({et, {more_events, _Size}}, S) ->
+ noreply(S);
+handle_info({et, {insert_actors, ActorNames}}, S) when is_list(ActorNames) ->
+ Fun = fun(N, Actors) ->
+ case lists:keymember(N, #actor.name, Actors) of
+ true -> Actors;
+ false -> Actors ++ [create_actor(N)]
+ end
+ end,
+ Actors = lists:foldl(Fun, S#state.actors, ActorNames),
+ S2 = refresh_main_window(S#state{actors = Actors}),
+ noreply(S2);
+handle_info({et, {delete_actors, ActorNames}}, S) when is_list(ActorNames)->
+ Fun = fun(N, Actors) when N =:= ?unknown ->
+ Actors;
+ (N, Actors) ->
+ lists:keydelete(N, #actor.name, Actors)
+ end,
+ New = lists:foldl(Fun, S#state.actors, ActorNames),
+ S2 = refresh_main_window(S#state{actors = New}),
+ noreply(S2);
+handle_info({et, {dict_insert, Key, Val}}, S) ->
+ S2 = do_dict_insert(Key, Val, S),
+ noreply(S2);
+handle_info({et, {dict_delete, Key}}, S) ->
+ S2 = do_dict_delete(Key, S),
+ noreply(S2);
+handle_info({et, first}, S) ->
+ S2 = scroll_first(S),
+ noreply(S2);
+handle_info({et, prev}, S) ->
+ S2 = scroll_prev(S),
+ noreply(S2);
+handle_info({et, next}, S) ->
+ S2 = scroll_next(S),
+ noreply(S2);
+handle_info({et, last}, S) ->
+ S2 = scroll_last(S),
+ noreply(S2);
+handle_info({et, refresh}, S) ->
+ S2 = refresh_main_window(S),
+ noreply(S2);
+handle_info({et, {display_mode, Mode}}, S) ->
+ S2 = change_display_mode(Mode, S),
+ noreply(S2);
+handle_info({et, close}, S) ->
+ gs:destroy(S#state.win),
+ {stop, shutdown, S};
+handle_info({gs, Button, click, Data, Other} = Click, S) ->
+ CollectorPid = S#state.collector_pid,
+ case Button of
+ close ->
+ gs:destroy(S#state.win),
+ {stop, shutdown, S};
+ suspended ->
+ case Other of
+ [_Text, _Group, Bool | _] when Bool =:= true ->
+ S2 = do_suspend(S),
+ noreply(S2);
+ [_Text, _Group, Bool | _] when Bool =:= false ->
+ S2 = do_resume(S),
+ noreply(S2);
+ _ ->
+ click_error(Click, S),
+ noreply(S)
+ end;
+ hide_actions ->
+ case Other of
+ [_Text, _Group, Bool | _] when Bool =:= true ->
+ S2 = refresh_main_window(S#state{hide_actions = Bool}),
+ noreply(S2);
+ [_Text, _Group, Bool | _] when Bool =:= false ->
+ S2 = refresh_main_window(S#state{hide_actions = Bool}),
+ noreply(S2);
+ _ ->
+ click_error(Click, S),
+ noreply(S)
+ end;
+ hide_unknown ->
+ case Other of
+ [_Text, _Group, Bool | _] when Bool =:= true ->
+ S2 = refresh_main_window(S#state{hide_unknown = Bool}),
+ noreply(S2);
+ [_Text, _Group, Bool | _] when Bool =:= false ->
+ S2 = refresh_main_window(S#state{hide_unknown = Bool}),
+ noreply(S2);
+ _ ->
+ click_error(Click, S),
+ noreply(S)
+ end;
+ up ->
+ S2 = scroll_up(S),
+ noreply(S2);
+ down ->
+ S2 = scroll_down(S),
+ noreply(S2);
+ first ->
+ S2 = scroll_first(S),
+ noreply(S2);
+ prev ->
+ S2 = scroll_prev(S),
+ noreply(S2);
+ next ->
+ S2 = scroll_next(S),
+ noreply(S2);
+ last ->
+ S2 = scroll_last(S),
+ noreply(S2);
+ refresh ->
+ S2 = refresh_main_window(S),
+ noreply(S2);
+ {display_mode, Mode} ->
+ S2 = change_display_mode(Mode, S),
+ noreply(S2);
+ close_all ->
+ close_all(S);
+ close_all_others ->
+ close_all_others(S);
+ first_all ->
+ et_collector:multicast(CollectorPid, first),
+ noreply(S);
+ prev_all ->
+ et_collector:multicast(CollectorPid, prev),
+ noreply(S);
+ next_all ->
+ et_collector:multicast(CollectorPid, next),
+ noreply(S);
+ last_all ->
+ et_collector:multicast(CollectorPid, last),
+ noreply(S);
+ refresh_all ->
+ et_collector:multicast(CollectorPid, refresh),
+ noreply(S);
+ clear_all ->
+ et_collector:clear_table(CollectorPid),
+ et_collector:multicast(CollectorPid, refresh),
+ noreply(S);
+ load_all ->
+ et_collector:start_trace_client(CollectorPid, event_file, "et_viewer.log"),
+ noreply(S);
+ save_all ->
+ et_collector:save_event_file(CollectorPid,
+ "et_viewer.log",
+ [existing, write, keep]),
+ noreply(S);
+ {open_viewer, Scale} ->
+ Actors = [A#actor.name || A <- S#state.actors],
+ open_viewer(Scale, S#state.active_filter, Actors, S),
+ noreply(S);
+ _Level when Data =:= detail_level, is_integer(hd(Other)),
+ hd(Other) >= ?detail_level_min,
+ hd(Other) =< ?detail_level_max ->
+ S2 = S#state{detail_level = hd(Other)},
+ noreply(S2);
+ _PopupMenuItem when is_record(Data, filter) ->
+ open_viewer(S#state.scale, Data#filter.name, [?unknown], S),
+ noreply(S);
+ _ ->
+ click_error(Click, S),
+ noreply(S)
+ end;
+handle_info({gs, _Obj, destroy,_, _}, S) ->
+ gs:destroy(S#state.win),
+ {stop, shutdown, S};
+handle_info({gs, _Obj, buttonpress, _, [_Button, X, Y | _]}, S) ->
+ S3 =
+ case y_to_n(Y, S) of
+ actor ->
+ %% Actor click
+ case S#state.actors of
+ [] ->
+ S;
+ _ ->
+ N = x_to_n(X, S),
+ A = lists:nth(N, S#state.actors),
+ S#state{selected_actor = A}
+ end;
+ {event, N} ->
+ %% Event click
+ List = queue_to_list(S#state.events),
+ S2 = S#state{events = list_to_queue(List)},
+
+ Key = lists:nth(N, List),
+ Pid = S#state.collector_pid,
+ Fun = fun create_contents_window/2,
+ case et_collector:iterate(Pid, Key, -1) of
+ Prev when Prev =:= Key ->
+ et_collector:iterate(Pid, first, 1, Fun, S2);
+ Prev ->
+ et_collector:iterate(Pid, Prev, 1, Fun, S2)
+ end
+ end,
+ noreply(S3);
+handle_info({gs, _Obj, buttonrelease, _, [_Button, X, Y | _]}, S) ->
+ S2 =
+ case y_to_n(Y, S) of
+ actor ->
+ %% Actor click
+ case S#state.actors of
+ [] ->
+ S;
+ Actors ->
+ N = x_to_n(X, S),
+ New = lists:nth(N, S#state.actors),
+ Old = S#state.selected_actor,
+ case New#actor.name =:= Old#actor.name of
+ true ->
+ A = S#state.selected_actor,
+ toggle_search_for_actor(A#actor.name, S);
+ false ->
+ move_actor(Old, New, Actors, S)
+ end
+ end;
+ {event, _N} ->
+ %% Event click ignored
+ S
+ end,
+ noreply(S2);
+handle_info({gs, _Obj, keypress, _, [KeySym, _Keycode, _Shift, _Control | _]} = Key, S) ->
+ case KeySym of
+ 'c' ->
+ close_all_others(S);
+ 'C' ->
+ close_all(S);
+ 'Up' ->
+ S2 = scroll_up(S),
+ noreply(S2);
+ 'Down' ->
+ S2 = scroll_down(S),
+ noreply(S2);
+ 'f' ->
+ S2 = scroll_first(S),
+ noreply(S2);
+ 'p' ->
+ S2 = scroll_prev(S),
+ noreply(S2);
+ 'Prior' ->
+ S2 = scroll_prev(S),
+ noreply(S2);
+ 'n' ->
+ S2 = scroll_next(S),
+ noreply(S2);
+ 'Next' ->
+ S2 = scroll_next(S),
+ noreply(S2);
+ 'l' ->
+ S2 = scroll_last(S),
+ noreply(S2);
+ 'r' ->
+ S2 = refresh_main_window(S),
+ noreply(S2);
+ 'F' ->
+ et_collector:multicast(S#state.collector_pid, first),
+ noreply(S);
+ 'P' ->
+ et_collector:multicast(S#state.collector_pid, prev),
+ noreply(S);
+ 'N' ->
+ et_collector:multicast(S#state.collector_pid, next),
+ noreply(S);
+ 'L' ->
+ et_collector:multicast(S#state.collector_pid, last),
+ noreply(S);
+ 'R' ->
+ et_collector:multicast(S#state.collector_pid, refresh),
+ noreply(S);
+
+ 'a' ->
+ S2 = S#state{display_mode = all},
+ S3 = refresh_main_window(S2),
+ noreply(S3);
+
+ 'equal' ->
+ Scale = S#state.scale,
+ Actors = [A#actor.name || A <- S#state.actors],
+ open_viewer(Scale, S#state.active_filter, Actors, S),
+ noreply(S);
+ 'plus' ->
+ Scale = S#state.scale + 1,
+ Actors = [A#actor.name || A <- S#state.actors],
+ open_viewer(Scale, S#state.active_filter, Actors, S),
+ noreply(S);
+ 'minus' ->
+ case S#state.scale of
+ 1 ->
+ gs:config(S#state.canvas, beep);
+ Scale ->
+ Actors = [A#actor.name || A <- S#state.actors],
+ open_viewer(Scale - 1, S#state.active_filter, Actors, S)
+ end,
+ noreply(S);
+ 0 ->
+ case lists:keysearch(?DEFAULT_FILTER_NAME, #filter.name, S#state.filters) of
+ {value, F} when is_record(F, filter) ->
+ open_viewer(S#state.scale, F#filter.name, [?unknown], S);
+ false ->
+ gs:config(S#state.canvas, beep)
+ end,
+ noreply(S);
+ Int when is_integer(Int), Int > 0, Int =< 9 ->
+ case catch lists:nth(Int, S#state.filters) of
+ F when is_record(F, filter) ->
+ open_viewer(S#state.scale, F#filter.name, [?unknown], S);
+ {'EXIT', _} ->
+ gs:config(S#state.canvas, beep)
+ end,
+ noreply(S);
+
+ 'Shift_L' ->
+ noreply(S);
+ 'Shift_R' ->
+ noreply(S);
+ 'Caps_Lock' ->
+ noreply(S);
+
+ _ ->
+ click_error(Key, S),
+ noreply(S)
+ end;
+handle_info({gs, _Obj,configure, [], [W, H | _]}, S) ->
+ gs:config(S#state.packer, [{width, W}, {height, H}]),
+ S2 = S#state{width = W, height = H},
+ noreply(S2);
+handle_info(timeout, S) ->
+ Try =
+ case S#state.display_mode of
+ {search_actors, reverse, _, _} ->
+ -10;
+ _ ->
+ 10
+ end,
+ if
+ S#state.is_suspended =:= true ->
+ {noreply, S, infinity};
+ S#state.max_events =:= infinity ->
+ display_more_events(Try, S);
+ true ->
+ Needed = S#state.max_events - queue_length(S#state.events),
+ if
+ Needed =< 0 -> {noreply, S, infinity};
+ Needed > 10 -> display_more_events(Try, S);
+ Needed =< 10 -> display_more_events(Needed, S)
+ end
+ end;
+
+handle_info({'EXIT', Pid, Reason}, S) ->
+ if
+ Pid =:= S#state.collector_pid ->
+ unlink(Pid),
+ gs:destroy(S#state.win),
+ {stop, Reason, S};
+ Pid =:= S#state.parent_pid ->
+ unlink(Pid),
+ gs:destroy(S#state.win),
+ {stop, Reason, S};
+ true ->
+ noreply(S)
+ end;
+handle_info(Info, S) ->
+ ok = error_logger:format("~p(~p): handle_info(~p, ~p)~n",
+ [?MODULE, self(), Info, S]),
+ noreply(S).
+
+%%----------------------------------------------------------------------
+%% Func: terminate/2
+%% Purpose: Shutdown the server
+%% Returns: any (ignored by gen_server)
+%%----------------------------------------------------------------------
+
+terminate(_Reason, _S) ->
+ ignore.
+
+%%----------------------------------------------------------------------
+%% Func: code_change/3
+%% Purpose: Convert process state when code is changed
+%% Returns: {ok, NewState}
+%%----------------------------------------------------------------------
+
+code_change(_OldVsn, S, _Extra) ->
+ {ok, S}.
+
+%%%----------------------------------------------------------------------
+%%% Handle suspend/resume
+%%%----------------------------------------------------------------------
+
+reply(Reply, S) ->
+ case queue_length(S#state.events) of
+ _ when S#state.is_suspended =:= true ->
+ {reply, Reply, S, infinity};
+ _ when S#state.max_events =:= infinity ->
+ {reply, Reply, S, 500};
+ N when N >= S#state.max_events ->
+ {reply, Reply, S, infinity};
+ _ ->
+ {reply, Reply, S, 0}
+ end.
+
+noreply(S) ->
+ case queue_length(S#state.events) of
+ _ when S#state.is_suspended =:= true ->
+ {noreply, S, infinity};
+ _ when S#state.max_events =:= infinity ->
+ {noreply, S, 500};
+ N when N >= S#state.max_events ->
+ {noreply, S, infinity};
+ _ ->
+ {noreply, S, 0}
+ end.
+
+do_suspend(S) ->
+ config_suspend(S#state{is_suspended = true}).
+
+do_resume(S) ->
+ config_suspend(S#state{is_suspended = false}).
+
+config_suspend(S) ->
+ Suspended = S#state.is_suspended,
+ gs:config(refresh, [{enable, not Suspended}]),
+ gs:config(refresh_all, [{enable, not Suspended}]),
+ gs:config(clear_all, [{enable, not Suspended}]),
+ S.
+
+refresh_main_window(S) ->
+ Pid = S#state.collector_pid,
+ Key = S#state.first_event,
+ case et_collector:iterate(Pid, Key, -1) of
+ Prev when Prev =:= Key ->
+ scroll_first(S);
+ _Prev ->
+ S2 = S#state{last_event = S#state.first_event},
+ clear_canvas(S2)
+ end.
+
+scroll_first(S) ->
+ S2 = S#state{first_event = first, last_event = first},
+ clear_canvas(S2).
+
+scroll_prev(S) ->
+ Try =
+ case S#state.max_events of
+ infinity -> -10;
+ Max -> -Max
+ end,
+ Key = et_collector:iterate(S#state.collector_pid, S#state.first_event, Try),
+ S2 = S#state{first_event = Key, last_event = Key},
+ clear_canvas(S2).
+
+scroll_next(S) ->
+ S2 = S#state{first_event = S#state.last_event},
+ clear_canvas(S2).
+
+scroll_up(S) ->
+ Key = et_collector:iterate(S#state.collector_pid, S#state.first_event, -5),
+ S2 = S#state{first_event = Key, last_event = Key},
+ clear_canvas(S2).
+
+scroll_down(S) ->
+ Key = et_collector:iterate(S#state.collector_pid, S#state.first_event, 5),
+ S2 = S#state{first_event = Key, last_event = Key},
+ clear_canvas(S2).
+
+scroll_last(S) ->
+ S2 = S#state{first_event = last, last_event = last},
+ clear_canvas(S2).
+
+change_display_mode(Mode, S) ->
+ case Mode of
+ all ->
+ S2 = S#state{display_mode = Mode},
+ refresh_main_window(S2);
+ {search_actors, _Dir, _Key, []} ->
+ S2 = S#state{display_mode = all},
+ refresh_main_window(S2);
+ {search_actors, _Dir, Key, Actors} when is_list(Actors) ->
+ Pid = S#state.collector_pid,
+ Prev = et_collector:iterate(Pid, Key, -1),
+ S2 = S#state{first_event = Prev,
+ last_event = Prev,
+ display_mode = Mode},
+ clear_canvas(S2)
+ end.
+
+close_all(S) ->
+ et_collector:multicast(S#state.collector_pid, close),
+ timer:sleep(timer:seconds(1)),
+ spawn(et_collector, stop, [S#state.collector_pid]),
+ gs:destroy(S#state.win),
+ {stop, shutdown, S}.
+
+close_all_others(S) ->
+ Fun =
+ fun({{subscriber, Pid}, _}) ->
+ if
+ Pid =:= self() ->
+ ignore;
+ true ->
+ unlink(Pid),
+ Pid ! {et, close}
+ end
+ end,
+ All = et_collector:dict_match(S#state.collector_pid,
+ {{subscriber, '_'}, '_'}),
+ lists:foreach(Fun, All),
+ noreply(S).
+
+click_error(Click, S) ->
+ gs:config(S#state.canvas, beep),
+ io:format("~p: ignored: ~p~n", [?MODULE, Click]).
+
+%%%----------------------------------------------------------------------
+%%% Clone viewer
+%%%----------------------------------------------------------------------
+
+open_viewer(Scale, FilterName, Actors, S) ->
+ Filters = [{dict_insert, {filter, F#filter.name}, F#filter.function}
+ || F <- S#state.filters],
+ Options =
+ [{parent_pid, S#state.parent_pid},
+ {title, S#state.title},
+ {collector_pid, S#state.collector_pid},
+ {is_suspended, S#state.is_suspended},
+ {detail_level, S#state.detail_level},
+ {active_filter, FilterName},
+ {event_order, S#state.event_order},
+ {first_event, S#state.first_event},
+ {max_events, S#state.max_events},
+ {max_actors, S#state.max_actors},
+ {hide_actions, S#state.hide_actions},
+ {hide_unknown, S#state.hide_unknown},
+ {is_suspended, S#state.is_suspended},
+ {actors, Actors},
+ {scale, Scale},
+ {width, S#state.width},
+ {height, S#state.height} | Filters],
+ case start_link(Options) of
+ {ok, ViewerPid} ->
+ unlink(ViewerPid),
+ ok;
+ {error, Reason} ->
+ ok = error_logger:format("~p: Failed to start a new window: ~p~n",
+ [?MODULE, Reason])
+ end.
+
+%%%----------------------------------------------------------------------
+%%% Handle graphics
+%%%----------------------------------------------------------------------
+
+create_main_window(S) ->
+ Font = select_font(S#state.scale),
+ GS = gs:start(),
+ Name = name_to_string(S#state.active_filter),
+ Title = case S#state.title of
+ undefined -> atom_to_list(?MODULE);
+ Explicit -> name_to_string(Explicit)
+ end,
+ WinOpt = [{title, Title ++ " (filter: " ++ Name ++ ")"},
+ {configure, true},
+ {width, S#state.width},
+ {height, S#state.height}],
+ Win = gs:window(GS, WinOpt),
+ Bar = gs:menubar(Win, []),
+
+ create_file_menu(Bar),
+ create_viewer_menu(Bar),
+ create_collector_menu(Bar),
+ gs:menubutton(filter_button, Bar, [{label, {text, "Filter"}}]),
+ create_filter_menu(S#state.active_filter, S#state.filters),
+ create_help_menu(Bar),
+
+ config_suspend(S),
+
+ PackerOpt = [{packer_x, [{fixed, 5}, {fixed, 40}, {fixed, 40},
+ {stretch, 1}, {fixed, 5}]},
+ {packer_y, [{fixed, 30}, {fixed, 30},
+ {stretch, 1}, {fixed, 30}]},
+ {x, 0}, {y, 30}],
+ Packer = gs:frame(Win, PackerOpt),
+ gs:checkbutton(suspended, Packer, [{label,{text,"Freeze"}},
+ {x, 10}, {y, 0},
+ {width, 120}, {align, w},
+ {select, S#state.is_suspended}]),
+ gs:checkbutton(hide_actions, Packer, [{label,{text,"Hide From=To"}},
+ {x, 10}, {y, 20},
+ {width, 120}, {align, w},
+ {select, S#state.hide_actions}]),
+ gs:checkbutton(hide_unknown, Packer, [{label,{text,"Hide Unknown"}},
+ {x, 10}, {y, 40},
+ {width, 120}, {align, w},
+ {select, S#state.hide_unknown}]),
+ gs:scale(Packer, [{text,"Detail Level"},
+ {range, {?detail_level_min, ?detail_level_max}},
+ {orient, horizontal},
+ {x, 150}, {y, 0}, {height, 65}, {width, 200},
+ {pos, S#state.detail_level}, {data, detail_level}]),
+ CanvasW = calc_canvas_width(S),
+ CanvasH = calc_canvas_height(S),
+ CanOpt = [{pack_xy, {{2, 4}, 3}}, {vscroll, right}, {hscroll, bottom},
+ {scrollregion, {2, 2, CanvasW, CanvasH}}],
+ Canvas = gs:canvas(Packer, CanOpt),
+ gs:config(Canvas, [{buttonpress, true}, {buttonrelease, true}]),
+ gs:config(Packer, [{width, S#state.width}, {height, S#state.height}]),
+ gs:config(Win, [{map, true}, {keypress, true}]),
+ S2 = S#state{title = Title,
+ win = Win, font = Font, packer = Packer,
+ canvas_width = CanvasW, canvas_height = CanvasH,
+ canvas = Canvas,
+ y_pos = ?initial_y * S#state.scale},
+ draw_all_actors(S2).
+
+select_font(Scale) when is_integer(Scale) ->
+ case Scale of
+ 1 -> {courier, 7};
+ 2 -> {courier, 10};
+ 3 -> {courier, 12};
+ 4 -> {courier, 14};
+ S -> {courier, S * 4}
+ end.
+
+create_file_menu(Bar) ->
+ Button = gs:menubutton(Bar, [{label, {text, "File"}}]),
+ Menu = gs:menu(Button, []),
+ gs:menuitem(close_all, Menu, [{label, {text, "Close Collector and all Viewers (C) "}}]),
+ gs:menuitem(close_all_others, Menu, [{label, {text, "Close other Viewers, but keep Collector (c)"}}]),
+ gs:menuitem(close, Menu, [{label, {text, "Close this Viewer, but keep Collector"}}]),
+ gs:menuitem(Menu, [{itemtype, separator}]),
+
+ gs:menuitem(clear_all, Menu, [{label, {text, "Clear Collector"}}]),
+ gs:menuitem(load_all, Menu, [{label, {text, "Load Collector from the file \"et_viewer.log\""}}]),
+ gs:menuitem(save_all, Menu, [{label, {text, "Save Collector to the file \"et_viewer.log\""}}]).
+
+create_viewer_menu(Bar) ->
+ Button = gs:menubutton(Bar, [{label, {text, "Viewer"}}]),
+ Menu = gs:menu(Button, []),
+ gs:menuitem(Menu, [{label, {text, "Scroll this Viewer"}}, {bg, lightblue}, {enable,false}]),
+ gs:menuitem(Menu, [{itemtype, separator}]),
+ gs:menuitem(first, Menu, [{label, {text, "First (f)"}}]),
+ gs:menuitem(prev, Menu, [{label, {text, "Prev (p)"}}]),
+ gs:menuitem(next, Menu, [{label, {text, "Next (n)"}}]),
+ gs:menuitem(last, Menu, [{label, {text, "Last (l)"}}]),
+ gs:menuitem(refresh, Menu, [{label, {text, "Refresh (r)"}}]),
+ gs:menuitem(Menu, [{itemtype, separator}]),
+ gs:menuitem(up, Menu, [{label, {text, "Up 5 (Up)"}}]),
+ gs:menuitem(down, Menu, [{label, {text, "Down 5 (Down)"}}]),
+ gs:menuitem(Menu, [{itemtype, separator}]),
+ gs:menuitem(Menu, [{label, {text, "Search in this Viewer"}}, {bg, lightblue}, {enable,false}]),
+ gs:menuitem(Menu, [{itemtype, separator}]),
+ gs:menuitem({mode, all}, Menu, [{label, {text, "Abort search. Display all (a)"}}]).
+
+create_collector_menu(Bar) ->
+ Button = gs:menubutton(Bar, [{label, {text, "Collector"}}]),
+ Menu = gs:menu(Button, []),
+ gs:menuitem(Menu, [{label, {text, "Scroll all Viewers"}}, {bg, lightblue}, {enable,false}]),
+ gs:menuitem(Menu, [{itemtype, separator}]),
+ gs:menuitem(first_all, Menu, [{label, {text, "First (F)"}}]),
+ gs:menuitem(prev_all, Menu, [{label, {text, "Prev (P)"}}]),
+ gs:menuitem(next_all, Menu, [{label, {text, "Next (N)"}}]),
+ gs:menuitem(last_all, Menu, [{label, {text, "Last (L)"}}]),
+ gs:menuitem(refresh_all, Menu, [{label, {text, "Refresh (R)"}}]).
+
+create_filter_menu(ActiveFilterName, Filters) ->
+ Menu = gs:menu(filter_menu, filter_button, []),
+ Item = fun(F, N) when F#filter.name =:= collector ->
+ Label = lists:concat([pad_string(F#filter.name, 20), "(0)"]),
+ gs:menuitem(Menu, [{label, {text, Label}}, {data, F}]),
+ N + 1;
+ (F, N) ->
+ Label = lists:concat([pad_string(F#filter.name, 20), "(", N, ")"]),
+ gs:menuitem(Menu, [{label, {text, Label}}, {data, F}]),
+ N + 1
+ end,
+ gs:menuitem(Menu, [{label, {text, "Same Filter New Scale"}}, {bg, lightblue}, {enable,false}]),
+ gs:menuitem(Menu, [{itemtype, separator}]),
+ {value, Filter} = lists:keysearch(ActiveFilterName, #filter.name, Filters),
+ Same = lists:concat([pad_string(ActiveFilterName, 20), "(=)"]),
+ Larger = lists:concat([pad_string(ActiveFilterName, 20), "(+)"]),
+ Smaller = lists:concat([pad_string(ActiveFilterName, 20), "(-)"]),
+ gs:menuitem(Menu, [{label, {text, Same}}, {data, Filter}]),
+ gs:menuitem(Menu, [{label, {text, Smaller}}, {data, Filter}]),
+ gs:menuitem(Menu, [{label, {text, Larger}}, {data, Filter}]),
+ gs:menuitem(Menu, [{itemtype, separator}]),
+ gs:menuitem(Menu, [{label, {text, "New Filter Same Scale"}}, {bg, lightblue}, {enable,false}]),
+ gs:menuitem(Menu, [{itemtype, separator}]),
+ lists:foldl(Item, 1, Filters).
+
+create_help_menu(Bar) ->
+ Button = gs:menubutton(Bar, [{label, {text, "Help"}}]),
+ Menu = gs:menu(Button, []),
+ gs:menuitem(Menu, [{label, {text, "Display details of an event"}},
+ {bg, lightblue}, {enable,false}]),
+ gs:menuitem(Menu, [{label, {text, " Single click on the name tag or the arrow (Mouse-1)"}},
+ {enable,false}]),
+ gs:menuitem(Menu, [{itemtype, separator}]),
+ gs:menuitem(Menu, [{label, {text, "Toggle actor search"}},
+ {bg, lightblue}, {enable,false}]),
+ gs:menuitem(Menu, [{label, {text, " Single click on the name tag (Mouse-1)"}},
+ {enable,false}]),
+ gs:menuitem(Menu, [{itemtype, separator}]),
+ gs:menuitem(Menu, [{label, {text, "Move actor"}},
+ {bg, lightblue}, {enable,false}]),
+ gs:menuitem(Menu, [{label, {text, " se drag and drop on name tag (Mouse-1)"}},
+ {enable,false}]).
+
+clear_canvas(S) ->
+ gs:destroy(S#state.canvas),
+ CanvasW = calc_canvas_width(S),
+ CanvasH = calc_canvas_height(S),
+ CanOpt = [{pack_xy, {{2, 4}, 3}}, {vscroll, right}, {hscroll, bottom},
+ {scrollregion, {2, 2, CanvasW, CanvasH}}],
+ Canvas = gs:canvas(S#state.packer, CanOpt),
+ gs:config(S#state.packer, [{width, S#state.width}, {height, S#state.height}]),
+ gs:config(Canvas, [{buttonpress, true}, {buttonrelease, true}]),
+ S2 = S#state{refresh_needed = false,
+ y_pos = ?initial_y * S#state.scale,
+ canvas = Canvas,
+ canvas_width = CanvasW,
+ canvas_height = CanvasH,
+ events = queue_new()},
+ draw_all_actors(S2).
+
+calc_canvas_width(S) ->
+ Min = calc_min_actors(S),
+ CanvasW = ((2 * ?initial_x) + (Min * ?incr_x)) * S#state.scale,
+ lists:max([CanvasW, S#state.width - (15 * S#state.scale), S#state.canvas_width]).
+
+calc_canvas_height(S) ->
+ Min = calc_min_events(S),
+ CanvasH = ((2 * ?initial_y) + (Min * ?incr_y)) * S#state.scale,
+ lists:max([CanvasH, S#state.height - (4 * 30), S#state.canvas_height]).
+
+calc_min_actors(S) ->
+ Max = S#state.max_actors,
+ N = length(S#state.actors),
+ if
+ Max =:= infinity ->
+ N * 2;
+ Max < N ->
+ N;
+ true ->
+ Max
+ end.
+
+calc_min_events(S) ->
+ Max = S#state.max_events,
+ N = queue_length(S#state.events),
+ if
+ Max =:= infinity ->
+ N * 2;
+ Max < N ->
+ N;
+ true ->
+ Max
+ end.
+
+display_more_events(Try, S) ->
+ Name = S#state.active_filter,
+ {value, F} = lists:keysearch(Name, #filter.name, S#state.filters),
+ FilterFun = F#filter.function,
+ Fun = fun(Event, State) ->
+ case catch FilterFun(Event) of
+ true ->
+ State2 = ensure_key(Event, State),
+ opt_display_event(Event, State2);
+ {true, Event2} ->
+ State2 = ensure_key(Event2, State),
+ opt_display_event(Event2, State2);
+ false ->
+ ensure_key(Event, State);
+ Bad ->
+ Contents = {bad_filter, Name, Bad, Event},
+ Event2 = Event#event{contents = Contents,
+ from = bad_filter,
+ to = bad_filter},
+ State2 = ensure_key(Event2, State),
+ opt_display_event(Event2, State2)
+ end
+ end,
+ Pid = S#state.collector_pid,
+ S2 = et_collector:iterate(Pid, S#state.last_event, Try, Fun, S),
+ case queue_length(S2#state.events) - queue_length(S#state.events) of
+ Diff when Diff =:= Try ->
+ %% Got as much as requested, look for more
+ %% io:format("Done: ~p~n", [{Try, Diff}]),
+ {noreply, S2, 0};
+ _Diff when S2#state.first_event =:= S#state.first_event,
+ S2#state.last_event =:= S#state.last_event ->
+ %% Got lesser than requested, wait a while before looking for more
+ %% io:format("More: ~p~n", [{Try, Diff}]),
+ {noreply, S2, 500};
+ _Diff ->
+ %% Got lesser than requested, look for more
+ %% io:format("More2: ~p~n", [{Try, Diff}]),
+ {noreply, S2, 0}
+ end.
+
+ensure_key(E, S) when is_record(E, event), is_record(S, state) ->
+ Key = et_collector:make_key(S#state.event_order, E),
+ case S#state.first_event of
+ first ->
+ S#state{first_event = Key, last_event = Key};
+ last ->
+ S#state{first_event = Key, last_event = Key};
+ _ ->
+ S#state{last_event = Key}
+ end.
+
+opt_display_event(E, S) ->
+ case S#state.display_mode of
+ all ->
+ display_event(E, S);
+ {search_actors, _Dir, _FirstKey, Actors} ->
+ %% Key = S#state.last_event,
+ From = select_actor_name(E#event.from, S),
+ case lists:member(From, Actors) of
+ true ->
+ display_event(E, S);
+ false ->
+ To = select_actor_name(E#event.to, S),
+ case lists:member(To, Actors) of
+ true ->
+ display_event(E, S);
+ false ->
+ S
+ end
+ end
+ end.
+
+select_actor_name(Name, S) ->
+ case lists:keymember(Name, #actor.name, S#state.actors) of
+ true -> Name;
+ false -> ?unknown
+ end.
+
+display_event(E, S) when E#event.detail_level < S#state.detail_level ->
+ {FromRefresh, From} = ensure_actor(E#event.from, S),
+ {FromName, FromPos, S2} = From,
+ {ToRefresh, To} = ensure_actor(E#event.to, S2),
+ {ToName, ToPos, S3} = To,
+ if
+ FromRefresh =/= false, ToRefresh =/= false ->
+ Key = S#state.last_event,
+ refresh_beep(S),
+ S3#state{refresh_needed = true,
+ events = queue_in(Key, S3#state.events)};
+ FromName =:= ToName ->
+ case S#state.hide_actions of
+ true ->
+ S3;
+ false ->
+ Label = name_to_string(E#event.label),
+ draw_named_arrow(Label, FromName, FromPos, ToName, ToPos, S3)
+ end;
+ true ->
+ Label = name_to_string(E#event.label),
+ draw_named_arrow(Label, FromName, FromPos, ToName, ToPos, S3)
+ end;
+display_event(_, S) ->
+ S.
+
+draw_named_arrow(Label, FromName, FromPos, ToName, ToPos, S) ->
+ Key = S#state.last_event,
+ case S#state.y_pos + (?incr_y * S#state.scale) of
+ _ when S#state.hide_unknown =:= true, FromName =:= ?unknown ->
+ S;
+ _ when S#state.hide_unknown =:= true, ToName =:= ?unknown ->
+ S;
+ Y when Y > S#state.canvas_height ->
+ refresh_beep(S),
+ S#state{refresh_needed = true,
+ events = queue_in(Key, S#state.events)};
+ Y ->
+ S2 = S#state{y_pos = Y, events = queue_in(Key, S#state.events)},
+ S3 = draw_arrow(FromPos, ToPos, S2),
+ draw_label(Label, FromName, ToName, FromPos, ToPos, S3)
+ end.
+
+refresh_beep(S) ->
+ case S#state.refresh_needed of
+ false ->
+ gs:config(S#state.canvas, beep),
+ gs:config(S#state.canvas, beep),
+ gs:config(S#state.canvas, beep);
+ true ->
+ ignore
+ end.
+
+draw_arrow(Pos, Pos, S) ->
+ S;
+draw_arrow(FromPos, ToPos, S) ->
+ Y = S#state.y_pos,
+ CanOpts = [{coords, [{FromPos , Y}, {ToPos, Y}]},
+ {arrow, last},{width, 1}, {fg, black}],
+ gs:line(S#state.canvas, CanOpts),
+ S.
+
+draw_label(Label, FromName, ToName, FromPos, ToPos, S) ->
+ Colour =
+ if
+ FromName =:= ?unknown,
+ ToName =:= ?unknown -> blue; %turquoise;
+ FromName =:= ?unknown -> orange;
+ ToName =:= ?unknown -> orange;
+ FromPos =:= ToPos -> blue;
+ true -> red
+ end,
+ Scale = S#state.scale,
+ X = lists:min([FromPos, ToPos]) + (6 * Scale),
+ Y = S#state.y_pos,
+ write_text(Label, X, Y, Colour, S),
+ S.
+
+draw_all_actors(State) ->
+ Scale = State#state.scale,
+ Fun = fun(A, X) ->
+ draw_actor(A, X, State),
+ X + (?incr_x * Scale)
+ end,
+ lists:foldl(Fun, ?initial_x * Scale, State#state.actors),
+ State.
+
+%% Returns: {NeedsRefreshBool, {ActorPos, NewsS, NewActors}}
+ensure_actor(Name, S) ->
+ do_ensure_actor(Name, S, S#state.actors, 0).
+
+do_ensure_actor(Name, S, [H | _], N) when H#actor.name =:= Name ->
+ Pos = (?initial_x + (N * ?incr_x)) * S#state.scale,
+ {false, {Name, Pos, S}};
+do_ensure_actor(Name, S, [_ | T], N) ->
+ do_ensure_actor(Name, S, T, N + 1);
+do_ensure_actor(Name, S, [], N) ->
+ %% A brand new actor, let's see if it does fit
+ Pos = (?initial_x + (N * ?incr_x)) * S#state.scale,
+ MaxActors = S#state.max_actors,
+ if
+ is_integer(MaxActors), N > MaxActors ->
+ %% Failed on max_actors limit, put into unknown
+ %% Assume that unknown always is in actor list
+ ensure_actor(?unknown, S);
+ Pos > (S#state.canvas_width - ((?initial_x - 15) * S#state.scale)) ->
+ %% New actor does not fit in canvas, refresh needed
+ A = create_actor(Name),
+ draw_actor(A, Pos, S),
+ {true, {Name, Pos, S#state{actors = S#state.actors ++ [A]}}};
+ true ->
+ %% New actor fits in canvas. Draw the new actor.
+ A = create_actor(Name),
+ draw_actor(A, Pos, S),
+ {false, {Name, Pos, S#state{actors = S#state.actors ++ [A]}}}
+ end.
+
+draw_actor(A, LineX, S) ->
+ Scale = S#state.scale,
+ TextX = LineX - (5 * Scale),
+ TextY = ?initial_y * Scale,
+ LineTopY = TextY + ((?incr_y / 2) * Scale),
+ LineBotY = S#state.canvas_height - ((?incr_y / 2) * Scale),
+ Colour = case A#actor.name of
+ ?unknown -> orange;
+ _ -> red
+ end,
+ write_text(A#actor.string, TextX, TextY, Colour, S),
+ LineOpt = [{coords, [{LineX, LineTopY}, {LineX, LineBotY}]},
+ {width, 1}, {fg, Colour}],
+ gs:line(S#state.canvas, LineOpt).
+
+toggle_search_for_actor(ActorName,S) ->
+ case S#state.display_mode of
+ all ->
+ io:format("~p: search for: ~p ++ ~p~n", [?MODULE, [], [ActorName]]),
+ %% Search for this actor
+ Key = S#state.first_event,
+ Actors = [ActorName],
+ Mode = {search_actors, forward, Key, Actors},
+ change_display_mode(Mode, S);
+ {search_actors, Dir, Key, Actors}->
+ Actors2 =
+ case lists:member(ActorName, Actors) of
+ true ->
+ io:format("~p: search for: ~p -- ~p~n", [?MODULE, Actors, [ActorName]]),
+ %% Remove actor from search list
+ Actors -- [ActorName];
+ false ->
+ io:format("~p: search for: ~p ++ ~p~n", [?MODULE, Actors, [ActorName]]),
+ %% Add actor from search list
+ [ActorName | Actors]
+ end,
+ Mode2 = {search_actors, Dir, Key, Actors2},
+ change_display_mode(Mode2, S)
+ end.
+
+move_actor(From, To, Actors, S) ->
+ Pos = #actor.name,
+ ToName = To#actor.name,
+ FromName = From#actor.name,
+ ToIx = actor_index(ToName, Pos, Actors),
+ FromIx = actor_index(FromName, Pos, Actors),
+ if
+ FromIx =/= 0, ToIx =/= 0, ToIx > FromIx ->
+ Actors2 = lists:keydelete(FromName, Pos, Actors),
+ Actors3 = insert_actor_after(From, To, Actors2),
+ S2 = S#state{actors = Actors3},
+ refresh_main_window(S2);
+ FromIx =/= 0, ToIx =/= 0 ->
+ Actors2 = lists:keydelete(FromName, Pos, Actors),
+ Actors3 = insert_actor_before(From, To, Actors2),
+ S2 = S#state{actors = Actors3},
+ refresh_main_window(S2);
+ true ->
+ %% Ignore
+ S
+ end.
+
+insert_actor_after(From, To, [H | T]) ->
+ case To#actor.name =:= H#actor.name of
+ true -> [H, From | T];
+ false -> [H | insert_actor_after(From, To, T)]
+ end;
+insert_actor_after(_From, _To, []) ->
+ [].
+
+insert_actor_before(From, To, [H | T]) ->
+ case To#actor.name =:= H#actor.name of
+ true -> [From, H | T];
+ false -> [H | insert_actor_before(From, To, T)]
+ end;
+insert_actor_before(_From, _To, []) ->
+ [].
+
+actor_index(_Key, _Pos, []) ->
+ 0;
+actor_index(Key, Pos, [H | T]) ->
+ case Key =:= element(Pos, H) of
+ false -> actor_index(Key, Pos, T) + 1;
+ true -> 1
+ end.
+
+y_to_n(Y, S) ->
+ Y2 = ((Y / S#state.scale) - ?initial_y + (?incr_y / 2)),
+ N = round(Y2 / ?incr_y - 0.2),
+ MaxN = queue_length(S#state.events),
+ if
+ N =< 0 -> actor;
+ N > MaxN -> actor;
+ true -> {event, N}
+ end.
+
+x_to_n(X, S) ->
+ Scale = S#state.scale,
+ Len = length(S#state.actors),
+ X2 = X - (?initial_x * Scale),
+ N = X2 / (?incr_x * Scale),
+ N2 = trunc(N + 1.5),
+ if
+ N2 > Len -> Len;
+ N2 < 1 -> 1;
+ true -> N2
+ end.
+
+write_text(Text, X, Y, Colour, S) ->
+ Opt = [{coords, [{X, Y - (?incr_y * S#state.scale / 2)}]},
+ {font, S#state.font}, {fg, Colour}, {text, Text}],
+ gs:text(S#state.canvas, Opt).
+
+create_contents_window(Event, S) ->
+ Options = [{viewer_pid, self()},
+ {event, Event},
+ {event_order, S#state.event_order},
+ {active_filter, S#state.active_filter}
+ | S#state.filters],
+ case et_gs_contents_viewer:start_link(Options) of
+ {ok, _Pid} ->
+ S;
+ {error, Reason} ->
+ ok = error_logger:format("~p(~p): create_contents_window(~p) ->~n ~p~n",
+ [?MODULE, self(), Options, Reason]),
+ S
+ end.
+
+%%%----------------------------------------------------------------------
+%%% String padding of actors
+%%%----------------------------------------------------------------------
+
+create_actor(Name) ->
+ String = name_to_string(Name),
+ PaddedString = pad_string(String, 8),
+ #actor{name = Name, string = PaddedString}.
+
+name_to_string(Name) ->
+ case catch io_lib:format("~s", [Name]) of
+ {'EXIT', _} -> lists:flatten(io_lib:format("~w", [Name]));
+ GoodString -> lists:flatten(GoodString)
+ end.
+
+pad_string(Atom, MinLen) when is_atom(Atom) ->
+ pad_string(atom_to_list(Atom), MinLen);
+pad_string(String, MinLen) when is_integer(MinLen), MinLen >= 0 ->
+ Len = length(String),
+ case Len >= MinLen of
+ true ->
+ String;
+ false ->
+ String ++ lists:duplicate(MinLen - Len, $ )
+ end.
+
+%%%----------------------------------------------------------------------
+%%% Queue management
+%%%----------------------------------------------------------------------
+
+queue_new() ->
+ {0, [], []}.
+
+queue_in(X, {Size, In, Out}) ->
+ {Size + 1, [X | In], Out}.
+
+%% queue_out(Q) ->
+%% case Q of
+%% {Size, In, [H | Out]} -> {{value, H}, {Size - 1, In, Out}};
+%% {Size, [], []} -> {empty, {Size, [], []}};
+%% {Size, In, _} -> queue_out({Size, [], lists:reverse(In)})
+%% end.
+
+queue_to_list({_Size, [], Out}) ->
+ Out;
+queue_to_list({_Size, In, Out}) ->
+ Out ++ lists:reverse(In).
+
+queue_length({Size, _In, _Out}) ->
+ Size.
+
+list_to_queue(List) when is_list(List) ->
+ {length(List), [], List}.
diff --git a/lib/et/src/et_internal.hrl b/lib/et/src/et_internal.hrl
index b6f84f5b4b..419d35afcd 100644
--- a/lib/et/src/et_internal.hrl
+++ b/lib/et/src/et_internal.hrl
@@ -1,23 +1,29 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2002-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2002-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
%%----------------------------------------------------------------------
%% Purpose: Definition of internal data structures
%%----------------------------------------------------------------------
+-define(detail_level_min, 0).
+-define(detail_level_max, 100).
+
-record(filter, {name, function}).
+
+-define(DEFAULT_FILTER_NAME, all).
+-define(DEFAULT_FILTER, #filter{name = ?DEFAULT_FILTER_NAME, function = fun(E) -> E end}).
diff --git a/lib/et/src/et_selector.erl b/lib/et/src/et_selector.erl
index 845359622d..f39f21aa70 100644
--- a/lib/et/src/et_selector.erl
+++ b/lib/et/src/et_selector.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2001-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2001-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
%%----------------------------------------------------------------------
@@ -39,16 +39,16 @@
%% RawPattern = detail_level()
%% TracePattern = erlang_trace_pattern_match_spec()
%%
-%% detail_level() = min | max | integer(X) when X =< 0, X >= 100
+%% detail_level() = min | max | integer(X) when X >= 0, X =< 100
%%
-%% min - minimum level of tracing (ignore calls to report_event/4,5)
-%% max - maximum level of tracing (all calls to report_event/4,5)
+%% min - minimum level of tracing (ignore calls to trace_me/4,5)
+%% max - maximum level of tracing (all calls to trace_me/4,5)
%% integer() - explicit detail level of tracing
%%----------------------------------------------------------------------
make_pattern(undefined) ->
{undefined, undefined};
-make_pattern({Mod, Pattern}) when atom(Mod) ->
+make_pattern({Mod, Pattern}) when is_atom(Mod) ->
case Pattern of
min ->
{Mod, []};
@@ -57,7 +57,7 @@ make_pattern({Mod, Pattern}) when atom(Mod) ->
Body = [],
Cond = [],
{Mod, [{Head, Cond, Body}]};
- DetailLevel when integer(DetailLevel) ->
+ DetailLevel when is_integer(DetailLevel) ->
Head = ['$1', '_', '_', '_', '_'],
Body = [],
Cond = [{ '<', '$1', DetailLevel}],
@@ -80,28 +80,31 @@ make_pattern({Mod, Pattern}) when atom(Mod) ->
%% detail_level() = min | max | integer(X) when X =<0, X >= 100
%% empty_match_spec() = []
%%
-%% Min detail level deactivates tracing of calls to report_event/4,5
+%% Min detail level deactivates tracing of calls to trace_me/4,5
%%
-%% Max detail level activates tracing of all calls to report_event/4,5
+%% Max detail level activates tracing of all calls to trace_me/4,5
%%
%% integer(X) detail level activates tracing of all calls to
-%% report_event/4,5 whose detail level argument is lesser than X.
+%% trace_me/4,5 whose detail level argument is lesser than X.
%%
-%% An empty match spec deactivates tracing of calls to report_event/4,5
+%% An empty match spec deactivates tracing of calls to trace_me/4,5
%%
-%% Other match specs activates tracing of calls to report_event/4,5
+%% Other match specs activates tracing of calls to trace_me/4,5
%% accordlingly with erlang:trace_pattern/2.
%%----------------------------------------------------------------------
-change_pattern({Mod, Pattern}) when atom(Mod) ->
- MFA = {Mod, report_event, 5},
+change_pattern({Mod, Pattern}) when is_atom(Mod) ->
+ MFA = {Mod, trace_me, 5},
case Pattern of
undefined ->
ignore;
[] ->
+ error_to_exit(old_ctp(MFA)),
error_to_exit(dbg:ctp(MFA)),
error_to_exit(dbg:p(all, clear));
- List when list(List) ->
+ List when is_list(List) ->
+ error_to_exit(old_ctp(MFA)),
+ error_to_exit(old_tp(MFA, Pattern)),
error_to_exit(dbg:ctp(MFA)),
error_to_exit(dbg:tp(MFA, Pattern)),
error_to_exit(dbg:p(all, [call, timestamp]));
@@ -110,6 +113,18 @@ change_pattern({Mod, Pattern}) when atom(Mod) ->
end,
ok.
+old_ctp({Mod, _Fun, Args}) ->
+ case Mod of
+ et -> ignore;
+ _ -> dbg:ctp({Mod, report_event, Args})
+ end.
+
+old_tp({Mod, _Fun, Args}, Pattern) ->
+ case Mod of
+ et -> ignore;
+ _ -> dbg:tp({Mod, report_event, Args}, Pattern)
+ end.
+
error_to_exit({error, Reason}) ->
exit(Reason);
error_to_exit({ok, Res}) ->
@@ -148,7 +163,7 @@ error_to_exit({ok, Res}) ->
%% label - Label intended to provide a brief event summary.
%% contents - All nitty gritty details of the event.
%%
-%% See et:report_event/4 and et:report_event/5 for details.
+%% See et:trace_me/4 and et:trace_me/5 for details.
%%
%% Returns:
%%
@@ -161,7 +176,7 @@ error_to_exit({ok, Res}) ->
%% should be dropped
%%----------------------------------------------------------------------
-parse_event(_Mod, E) when record(E, event) ->
+parse_event(_Mod, E) when is_record(E, event) ->
true;
parse_event(Mod, Trace) ->
ParsedTS = erlang:now(),
@@ -293,6 +308,14 @@ parse_event(Mod, Trace, ParsedTS, ReportedTS, From, Label, Contents) ->
{msg, Msg}]}};
call ->
case Contents of
+ [{M, trace_me, [UserDetailLevel, UserFrom, UserTo, UserLabel, UserContents]}] when M == Mod, Mod /= undefined ->
+ {true, #event{detail_level = UserDetailLevel,
+ trace_ts = ReportedTS,
+ event_ts = ParsedTS,
+ from = UserFrom,
+ to = UserTo,
+ label = UserLabel,
+ contents = UserContents}}; % Term
[{M, report_event, [UserDetailLevel, UserFrom, UserTo, UserLabel, UserContents]}] when M == Mod, Mod /= undefined ->
{true, #event{detail_level = UserDetailLevel,
trace_ts = ReportedTS,
@@ -358,6 +381,21 @@ parse_event(Mod, Trace, ParsedTS, ReportedTS, From, Label, Contents) ->
{to, From},
{mfa, MFA},
{return, ReturnValue}]}};
+ exception_from ->
+ DetailLevel = 54,
+ [MFA, Exception] = Contents,
+ {true, #event{detail_level = DetailLevel,
+ trace_ts = ReportedTS,
+ event_ts = ParsedTS,
+ from = From,
+ to = From,
+ label = Label,
+ contents = [{label, Label},
+ {detail_level, DetailLevel},
+ {from, From},
+ {to, From},
+ {mfa, MFA},
+ {exception, Exception}]}};
spawn ->
DetailLevel = 25,
[NewPid, MFA] = Contents,
diff --git a/lib/et/src/et_viewer.erl b/lib/et/src/et_viewer.erl
index ede2c401eb..d9bd01f8d0 100644
--- a/lib/et/src/et_viewer.erl
+++ b/lib/et/src/et_viewer.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2000-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2000-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
%%----------------------------------------------------------------------
@@ -22,66 +22,23 @@
-module(et_viewer).
--behaviour(gen_server).
%% External exports
-export([file/1,
start/0,
start/1,
+ start/2,
start_link/1,
+ start_link/2,
+ open_event/2,
stop/1,
get_collector_pid/1]).
-%% gen_server callbacks
--export([init/1, terminate/2, code_change/3,
- handle_call/3, handle_cast/2, handle_info/2]).
-
-include("../include/et.hrl").
-include("et_internal.hrl").
-define(unknown, "UNKNOWN").
--record(state,
- {parent_pid, % Pid of parent process
- collector_pid, % Pid of collector process
- event_order, % Field to be used as primary key
- trace_pattern, % Collector trace pattern
- active_filter, % Name of the active filter
- filters, % List of possible filters
- selected_actor, % Actor selected by user
- first_event, % Key of first event (regardless of visibility)
- last_event, % Key of last event (regardless of visibility)
- max_events, % Maximum number of shown events
- events, % Queue containg all event keys (regardless of visibility)
- max_actors, % Maximum number of shown actors
- actors, % List of known actors
- refresh_needed, % Refresh is needed in order to show all actors
- display_mode, % Display all or only matching actors
- detail_level, % Show only events with lesser detail level
- hide_actions, % Hide/show events where to == from actor (bool)
- hide_unknown, % Hide/show events with unknown actor (bool)
- is_suspended, % Suspend viewer updates (bool)
- title, % GUI: Window title
- win, % GUI: Window object
- menubar, % GUI: Menu bar object
- packer, % GUI: Packer object
- width, % GUI: Window width
- height, % GUI: Window height
- scale, % GUI: Scaling factor on canvas
- font, % GUI: Font to be used on text labels
- canvas_width, % GUI: Canvas width
- canvas_height, % GUI: Canvas height
- canvas, % GUI: Canvas object
- y_pos}). % GUI: Current y position on canvas
-
--record(actor, {name, string}).
-
--define(initial_x, 10).
--define(incr_x, 60).
--define(initial_y, 15).
--define(incr_y, 15).
--define(detail_level_min, 0).
--define(detail_level_max, 100).
%%%----------------------------------------------------------------------
%%% Client side
@@ -99,7 +56,7 @@
%%----------------------------------------------------------------------
file(FileName) ->
- start_link([{trace_client, {file, FileName}}]).
+ start_link([{trace_client, {file, FileName}}], default).
%%----------------------------------------------------------------------
%% start() -> ok
@@ -113,14 +70,19 @@ file(FileName) ->
%%----------------------------------------------------------------------
start() ->
- start([{trace_global, true}]).
+ start([{trace_global, true}], default).
%%----------------------------------------------------------------------
%% start(Options) -> {ok, ViewerPid} | {error, Reason}
%%----------------------------------------------------------------------
+start(GUI) when GUI =:= wx; GUI =:= gs; GUI =:= default ->
+ start_link([{trace_global, true}], GUI);
start(Options) ->
- start_link([{parent_pid, undefined} | Options]).
+ start_link([{parent_pid, undefined} | Options], default).
+
+start(Options, GUI) ->
+ start_link([{parent_pid, undefined} | Options], GUI).
%%----------------------------------------------------------------------
%% start_link(Options) -> {ok, ViewerPid} | {error, Reason}
@@ -177,216 +139,31 @@ start(Options) ->
%% and returns false | true | {true, NewEvent}.
%%----------------------------------------------------------------------
-start_link(Options) ->
- case parse_opt(Options, default_state(), []) of
- {ok, S, CollectorOpt} ->
- case S#state.collector_pid of
- CollectorPid when pid(CollectorPid) ->
- case gen_server:start_link(?MODULE, [S], []) of
- {ok, Pid} when S#state.parent_pid /= self() ->
- unlink(Pid),
- {ok, Pid};
- Other ->
- Other
- end;
- undefined ->
- case et_collector:start_link(CollectorOpt) of
- {ok, CollectorPid} ->
- S2 = S#state{collector_pid = CollectorPid},
- case gen_server:start_link(?MODULE, [S2], []) of
- {ok, Pid} when S#state.parent_pid /= self() ->
- unlink(Pid),
- {ok, Pid};
- Other ->
- Other
- end;
- {error, Reason} ->
- {error, {et_collector, Reason}}
- end
- end;
- {error, Reason} ->
- {error, Reason}
- end.
-
-default_state() ->
- #state{parent_pid = self(),
- collector_pid = undefined,
- detail_level = ?detail_level_max,
- active_filter = collector,
- filters = [#filter{name = collector, function = fun(E) -> E end}],
- event_order = trace_ts,
- is_suspended = false,
- max_events = 100,
- first_event = first,
- last_event = first,
- events = queue_new(),
- max_actors = 5,
- actors = [create_actor(?unknown)],
- selected_actor = ?unknown,
- hide_actions = false,
- hide_unknown = false,
- refresh_needed = false,
- display_mode = all,
- scale = 2,
- canvas_height = 0,
- canvas_width = 0,
- width = 800,
- height = 600}.
-
-parse_opt([], S, CollectorOpt) ->
- {ok, S, [{parent_pid, S#state.parent_pid} | CollectorOpt]};
-parse_opt([H | T], S, CollectorOpt) ->
- case H of
- {parent_pid, Parent} when Parent == undefined ->
- CollectorOpt2 = [H | CollectorOpt],
- parse_opt(T, S#state{parent_pid = Parent}, CollectorOpt2);
- {parent_pid, Parent} when pid(Parent) ->
- CollectorOpt2 = [H | CollectorOpt],
- parse_opt(T, S#state{parent_pid = Parent}, CollectorOpt2);
- {title, Title} ->
- parse_opt(T, S#state{title = name_to_string(Title)}, CollectorOpt);
- {detail_level, Level} when integer(Level),
- Level >= ?detail_level_min,
- Level =< ?detail_level_max ->
- parse_opt(T, S#state{detail_level = Level}, CollectorOpt);
- {detail_level, max} ->
- parse_opt(T, S#state{detail_level = ?detail_level_max}, CollectorOpt);
- {detail_level, min} ->
- parse_opt(T, S#state{detail_level = ?detail_level_min}, CollectorOpt);
- {is_suspended, true} ->
- parse_opt(T, S#state{is_suspended = true}, CollectorOpt);
- {is_suspended, false} ->
- parse_opt(T, S#state{is_suspended = false}, CollectorOpt);
- {scale, Scale} when integer(Scale), Scale > 0 ->
- parse_opt(T, S#state{scale = Scale}, CollectorOpt);
- {width, W} when integer(W), W > 0 ->
- parse_opt(T, S#state{width = W, canvas_width = W}, CollectorOpt);
- {height, WH} when integer(WH), WH > 0 ->
- parse_opt(T, S#state{height = WH, canvas_height = WH}, CollectorOpt);
- {collector_pid, Pid} when pid(Pid) ->
- parse_opt(T, S#state{collector_pid = Pid}, CollectorOpt);
- {collector_pid, undefined} ->
- parse_opt(T, S#state{collector_pid = undefined}, CollectorOpt);
- {active_filter, Name} when atom(Name) ->
- parse_opt(T, S#state{active_filter = Name}, CollectorOpt);
- {event_order, trace_ts} -> %% BUGBUG: Verify event_order with collector
- CollectorOpt2 = [H | CollectorOpt],
- parse_opt(T, S#state{event_order = trace_ts}, CollectorOpt2);
- {event_order, event_ts} -> %% BUGBUG: Verify event_order with collector
- CollectorOpt2 = [H | CollectorOpt],
- parse_opt(T, S#state{event_order = event_ts}, CollectorOpt2);
- {trace_port, _Port} ->
- CollectorOpt2 = [H | CollectorOpt],
- parse_opt(T, S, CollectorOpt2);
- {trace_max_queue, _Queue} ->
- CollectorOpt2 = [H | CollectorOpt],
- parse_opt(T, S, CollectorOpt2);
- {trace_pattern, _Pattern} ->
- CollectorOpt2 = [H | CollectorOpt],
- parse_opt(T, S, CollectorOpt2);
- {trace_global, _Boolean} ->
- CollectorOpt2 = [H | CollectorOpt],
- parse_opt(T, S, CollectorOpt2);
- {trace_client, _Client} ->
- CollectorOpt2 = [H | CollectorOpt],
- parse_opt(T, S, CollectorOpt2);
- {dict_insert, {filter, Name}, Fun} ->
- if
- atom(Name), function(Fun) ->
- F = #filter{name = Name, function = Fun},
- Filters = lists:keydelete(Name, #filter.name, S#state.filters),
- CollectorOpt2 = [H | CollectorOpt],
- parse_opt(T, S#state{filters = Filters ++ [F]}, CollectorOpt2);
- true ->
- {error, {bad_option, H}}
- end;
- {dict_insert, {subscriber, Pid}, _Val} ->
- if
- pid(Pid) ->
- CollectorOpt2 = [H | CollectorOpt],
- parse_opt(T, S, CollectorOpt2);
- true ->
- {error, {bad_option, H}}
- end;
- {dict_insert, _Key, _Val} ->
- CollectorOpt2 = [H | CollectorOpt],
- parse_opt(T, S, CollectorOpt2);
- {dict_delete, {filter, Name}} ->
- Filters = lists:keydelete(Name, #filter.name, S#state.filters),
- CollectorOpt2 = [H | CollectorOpt],
- parse_opt(T, S#state{filters = Filters}, CollectorOpt2);
- {dict_delete, _Key} ->
- CollectorOpt2 = [H | CollectorOpt],
- parse_opt(T, S, CollectorOpt2);
- {max_events, Max} when integer(Max), Max > 0->
- parse_opt(T, S#state{max_events = Max}, CollectorOpt);
- {max_events, Max} when Max == infinity ->
- parse_opt(T, S#state{max_events = Max}, CollectorOpt);
- {max_actors, Max} when integer(Max), Max >= 0->
- parse_opt(T, S#state{max_actors = Max}, CollectorOpt);
- {max_actors, Max} when Max == infinity ->
- parse_opt(T, S#state{max_actors = Max}, CollectorOpt);
- {actors, ActorNames} when list(ActorNames) ->
- ActorNames2 =
- case lists:member(?unknown, ActorNames) of
- false -> [?unknown | ActorNames];
- true -> ActorNames
- end,
- Actors = [create_actor(Name) || Name <- ActorNames2],
- parse_opt(T, S#state{actors = Actors}, CollectorOpt);
- {first_event, First} ->
- parse_opt(T, S#state{first_event = First}, CollectorOpt);
- {hide_unknown, Bool} when Bool == false ->
- parse_opt(T, S#state{hide_unknown = Bool}, CollectorOpt);
- {hide_unknown, Bool} when Bool == true ->
- parse_opt(T, S#state{hide_unknown = Bool}, CollectorOpt);
- {hide_actions, Bool} when Bool == false ->
- parse_opt(T, S#state{hide_actions = Bool}, CollectorOpt);
- {hide_actions, Bool} when Bool == true ->
- parse_opt(T, S#state{hide_actions = Bool}, CollectorOpt);
- {display_mode, Mode = all} ->
- parse_opt(T, S#state{display_mode = Mode}, CollectorOpt);
- {display_mode, Mode = {search_actors, Dir, _Key, Actors}} when list(Actors), Dir == forward ->
- parse_opt(T, S#state{display_mode = Mode}, CollectorOpt);
- {display_mode, Mode = {search_actors, Dir, _Key, Actors}} when list(Actors), Dir == reverse ->
- parse_opt(T, S#state{display_mode = Mode}, CollectorOpt);
+start_link(GUI) when GUI =:= wx; GUI =:= gs; GUI =:= default ->
+ start_link([{trace_global, true}], GUI);
+start_link(Options) ->
+ start_link(Options, default).
- Bad ->
- {error, {bad_option, Bad}}
- end;
-parse_opt(BadList, _S, _CollectorOpt) ->
- {error, {bad_option_list, BadList}}.
+start_link(Options, GUI) ->
+ case GUI of
+ wx ->
+ et_wx_viewer:start_link(Options);
+ gs ->
+ et_gs_viewer:start_link(Options);
+ default ->
+ start_link(Options, which_gui())
+ end.
-do_dict_insert({filter, Name}, Fun, S) when atom(Name), function(Fun) ->
- F = #filter{name = Name, function = Fun},
- Filters = lists:keydelete(Name, #filter.name, S#state.filters),
- Filters2 = lists:keysort(#filter.name, [F | Filters]),
- gs:destroy(filter_menu),
- create_filter_menu(S#state.active_filter, Filters2),
- S#state{filters = Filters2};
-do_dict_insert(_Key, _Val, S) ->
- %% ok = error_logger:format("~p(~p): handle_info({et, {dict_insert, ~p, ~p}})~n",
- %% [?MODULE, self(), Key, Val]),
- S.
-do_dict_delete({filter, Name}, S) when atom(Name), Name /= S#state.active_filter ->
- Filters = lists:keydelete(Name, #filter.name, S#state.filters),
- gs:destroy(filter_menu),
- create_filter_menu(S#state.active_filter, Filters),
- S#state{filters = Filters};
-do_dict_delete(_Key, S) ->
- %% ok = error_logger:format("~p(~p): handle_info({et, {dict_delete, ~p}})~n",
- %% [?MODULE, self(), Key]),
- S.
+which_gui() ->
+ try
+ wx:new(),
+ wx:destroy(),
+ wx
+ catch _:_ ->
+ gs
+ end.
-%%----------------------------------------------------------------------
-%% get_collector_pid(ViewerPid) -> CollectorPid
-%%
-%% Returns the identifier of the collector process
-%%
-%% ViewerPid = pid()
-%% CollectorPid = pid()
-%%----------------------------------------------------------------------
get_collector_pid(ViewerPid) ->
call(ViewerPid, get_collector_pid).
@@ -402,1201 +179,14 @@ get_collector_pid(ViewerPid) ->
stop(ViewerPid) ->
call(ViewerPid, stop).
-call(ViewerPid, Request) ->
- gen_server:call(ViewerPid, Request, infinity).
-
-%%%----------------------------------------------------------------------
-%%% Callback functions from gen_server
-%%%----------------------------------------------------------------------
%%----------------------------------------------------------------------
-%% Func: init/1
-%% Returns: {ok, State} |
-%% {ok, State, Timeout} |
-%% ignore |
-%% {stop, Reason}
-%%----------------------------------------------------------------------
-init([S]) when record(S, state) ->
- process_flag(trap_exit, true),
- InitialTimeout = 0,
- case S#state.parent_pid of
- undefined ->
- ignore;
- Pid when pid(Pid) ->
- link(Pid)
- end,
- et_collector:dict_insert(S#state.collector_pid,
- {subscriber, self()},
- ?MODULE),
- {ok, create_main_window(S), InitialTimeout}.
+open_event(ViewerPid, N) ->
+ call(ViewerPid, {open_event, N}).
%%----------------------------------------------------------------------
-%% Func: handle_call/3
-%% Returns: {reply, Reply, State} |
-%% {reply, Reply, State, Timeout} |
-%% {noreply, State} |
-%% {noreply, State, Timeout} |
-%% {stop, Reason, Reply, State} | (terminate/2 is called)
-%% {stop, Reason, State} (terminate/2 is called)
-%%----------------------------------------------------------------------
-
-handle_call(get_collector_pid, _From, S) ->
- Reply = S#state.collector_pid,
- reply(Reply, S);
-handle_call(stop, _From, S) ->
- gs:destroy(S#state.win),
- {stop, shutdown, ok, S};
-handle_call(Request, From, S) ->
- ok = error_logger:format("~p(~p): handle_call(~p, ~p, ~p)~n",
- [?MODULE, self(), Request, From, S]),
- Reply = {error, {bad_request, Request}},
- reply(Reply, S).
-
-%%----------------------------------------------------------------------
-%% Func: handle_cast/2
-%% Returns: {noreply, State} |
-%% {noreply, State, Timeout} |
-%% {stop, Reason, State} (terminate/2 is called)
-%%----------------------------------------------------------------------
-
-handle_cast(Msg, S) ->
- ok = error_logger:format("~p(~p): handle_cast(~p, ~p)~n",
- [?MODULE, self(), Msg, S]),
- noreply(S).
-
-%%----------------------------------------------------------------------
-%% Func: handle_info/2
-%% Returns: {noreply, State} |
-%% {noreply, State, Timeout} |
-%% {stop, Reason, State} (terminate/2 is called)
-%%----------------------------------------------------------------------
-
-handle_info({et, {insert_actors, ActorNames}}, S) when list(ActorNames) ->
- Fun = fun(N, Actors) ->
- case lists:keymember(N, #actor.name, Actors) of
- true -> Actors;
- false -> Actors ++ [create_actor(N)]
- end
- end,
- Actors = lists:foldl(Fun, S#state.actors, ActorNames),
- S2 = refresh_main_window(S#state{actors = Actors}),
- noreply(S2);
-handle_info({et, {delete_actors, ActorNames}}, S) when list(ActorNames)->
- Fun = fun(N, Actors) when N == ?unknown ->
- Actors;
- (N, Actors) ->
- lists:keydelete(N, #actor.name, Actors)
- end,
- New = lists:foldl(Fun, S#state.actors, ActorNames),
- S2 = refresh_main_window(S#state{actors = New}),
- noreply(S2);
-handle_info({et, {dict_insert, Key, Val}}, S) ->
- S2 = do_dict_insert(Key, Val, S),
- noreply(S2);
-handle_info({et, {dict_delete, Key}}, S) ->
- S2 = do_dict_delete(Key, S),
- noreply(S2);
-handle_info({et, first}, S) ->
- S2 = scroll_first(S),
- noreply(S2);
-handle_info({et, prev}, S) ->
- S2 = scroll_prev(S),
- noreply(S2);
-handle_info({et, next}, S) ->
- S2 = scroll_next(S),
- noreply(S2);
-handle_info({et, last}, S) ->
- S2 = scroll_last(S),
- noreply(S2);
-handle_info({et, refresh}, S) ->
- S2 = refresh_main_window(S),
- noreply(S2);
-handle_info({et, {display_mode, Mode}}, S) ->
- S2 = change_display_mode(Mode, S),
- noreply(S2);
-handle_info({et, close}, S) ->
- gs:destroy(S#state.win),
- {stop, shutdown, S};
-handle_info({gs, Button, click, Data, Other} = Click, S) ->
- CollectorPid = S#state.collector_pid,
- case Button of
- close ->
- gs:destroy(S#state.win),
- {stop, shutdown, S};
- suspended ->
- case Other of
- [_Text, _Group, Bool | _] when Bool == true ->
- S2 = do_suspend(S),
- noreply(S2);
- [_Text, _Group, Bool | _] when Bool == false ->
- S2 = do_resume(S),
- noreply(S2);
- _ ->
- click_error(Click, S),
- noreply(S)
- end;
- hide_actions ->
- case Other of
- [_Text, _Group, Bool | _] when Bool == true ->
- S2 = refresh_main_window(S#state{hide_actions = Bool}),
- noreply(S2);
- [_Text, _Group, Bool | _] when Bool == false ->
- S2 = refresh_main_window(S#state{hide_actions = Bool}),
- noreply(S2);
- _ ->
- click_error(Click, S),
- noreply(S)
- end;
- hide_unknown ->
- case Other of
- [_Text, _Group, Bool | _] when Bool == true ->
- S2 = refresh_main_window(S#state{hide_unknown = Bool}),
- noreply(S2);
- [_Text, _Group, Bool | _] when Bool == false ->
- S2 = refresh_main_window(S#state{hide_unknown = Bool}),
- noreply(S2);
- _ ->
- click_error(Click, S),
- noreply(S)
- end;
- up ->
- S2 = scroll_up(S),
- noreply(S2);
- down ->
- S2 = scroll_down(S),
- noreply(S2);
- first ->
- S2 = scroll_first(S),
- noreply(S2);
- prev ->
- S2 = scroll_prev(S),
- noreply(S2);
- next ->
- S2 = scroll_next(S),
- noreply(S2);
- last ->
- S2 = scroll_last(S),
- noreply(S2);
- refresh ->
- S2 = refresh_main_window(S),
- noreply(S2);
- {display_mode, Mode} ->
- S2 = change_display_mode(Mode, S),
- noreply(S2);
- close_all ->
- close_all(S);
- close_all_others ->
- close_all_others(S);
- first_all ->
- et_collector:multicast(CollectorPid, first),
- noreply(S);
- prev_all ->
- et_collector:multicast(CollectorPid, prev),
- noreply(S);
- next_all ->
- et_collector:multicast(CollectorPid, next),
- noreply(S);
- last_all ->
- et_collector:multicast(CollectorPid, last),
- noreply(S);
- refresh_all ->
- et_collector:multicast(CollectorPid, refresh),
- noreply(S);
- clear_all ->
- et_collector:clear_table(CollectorPid),
- et_collector:multicast(CollectorPid, refresh),
- noreply(S);
- load_all ->
- et_collector:start_trace_client(CollectorPid, event_file, "et_viewer.log"),
- noreply(S);
- save_all ->
- et_collector:save_event_file(CollectorPid,
- "et_viewer.log",
- [existing, write, keep]),
- noreply(S);
- {open_viewer, Scale} ->
- Actors = [A#actor.name || A <- S#state.actors],
- open_viewer(Scale, S#state.active_filter, Actors, S),
- noreply(S);
- _Level when Data == detail_level, integer(hd(Other)),
- hd(Other) >= ?detail_level_min,
- hd(Other) =< ?detail_level_max ->
- S2 = S#state{detail_level = hd(Other)},
- noreply(S2);
- _PopupMenuItem when record(Data, filter) ->
- open_viewer(S#state.scale, Data#filter.name, [?unknown], S),
- noreply(S);
- _ ->
- click_error(Click, S),
- noreply(S)
- end;
-handle_info({gs, _Obj, destroy,_, _}, S) ->
- gs:destroy(S#state.win),
- {stop, shutdown, S};
-handle_info({gs, _Obj, buttonpress, _, [_Button, X, Y | _]}, S) ->
- S3 =
- case y_to_n(Y, S) of
- actor ->
- %% Actor click
- case S#state.actors of
- [] ->
- S;
- _ ->
- N = x_to_n(X, S),
- A = lists:nth(N, S#state.actors),
- S#state{selected_actor = A}
- end;
- {event, N} ->
- %% Event click
- List = queue_to_list(S#state.events),
- S2 = S#state{events = list_to_queue(List)},
-
- Key = lists:nth(N, List),
- Pid = S#state.collector_pid,
- Fun = fun create_contents_window/2,
- case et_collector:iterate(Pid, Key, -1) of
- Prev when Prev == Key ->
- et_collector:iterate(Pid, first, 1, Fun, S2);
- Prev ->
- et_collector:iterate(Pid, Prev, 1, Fun, S2)
- end
- end,
- noreply(S3);
-handle_info({gs, _Obj, buttonrelease, _, [_Button, X, Y | _]}, S) ->
- S2 =
- case y_to_n(Y, S) of
- actor ->
- %% Actor click
- case S#state.actors of
- [] ->
- S;
- Actors ->
- N = x_to_n(X, S),
- New = lists:nth(N, S#state.actors),
- Old = S#state.selected_actor,
- case New#actor.name == Old#actor.name of
- true ->
- A = S#state.selected_actor,
- toggle_search_for_actor(A#actor.name, S);
- false ->
- move_actor(Old, New, Actors, S)
- end
- end;
- {event, _N} ->
- %% Event click ignored
- S
- end,
- noreply(S2);
-handle_info({gs, _Obj, keypress, _, [KeySym, _Keycode, _Shift, _Control | _]} = Key, S) ->
- case KeySym of
- 'c' ->
- close_all_others(S);
- 'C' ->
- close_all(S);
- 'Up' ->
- S2 = scroll_up(S),
- noreply(S2);
- 'Down' ->
- S2 = scroll_down(S),
- noreply(S2);
- 'f' ->
- S2 = scroll_first(S),
- noreply(S2);
- 'p' ->
- S2 = scroll_prev(S),
- noreply(S2);
- 'Prior' ->
- S2 = scroll_prev(S),
- noreply(S2);
- 'n' ->
- S2 = scroll_next(S),
- noreply(S2);
- 'Next' ->
- S2 = scroll_next(S),
- noreply(S2);
- 'l' ->
- S2 = scroll_last(S),
- noreply(S2);
- 'r' ->
- S2 = refresh_main_window(S),
- noreply(S2);
- 'F' ->
- et_collector:multicast(S#state.collector_pid, first),
- noreply(S);
- 'P' ->
- et_collector:multicast(S#state.collector_pid, prev),
- noreply(S);
- 'N' ->
- et_collector:multicast(S#state.collector_pid, next),
- noreply(S);
- 'L' ->
- et_collector:multicast(S#state.collector_pid, last),
- noreply(S);
- 'R' ->
- et_collector:multicast(S#state.collector_pid, refresh),
- noreply(S);
-
- 'a' ->
- S2 = S#state{display_mode = all},
- S3 = refresh_main_window(S2),
- noreply(S3);
-
- 'equal' ->
- Scale = S#state.scale,
- Actors = [A#actor.name || A <- S#state.actors],
- open_viewer(Scale, S#state.active_filter, Actors, S),
- noreply(S);
- 'plus' ->
- Scale = S#state.scale + 1,
- Actors = [A#actor.name || A <- S#state.actors],
- open_viewer(Scale, S#state.active_filter, Actors, S),
- noreply(S);
- 'minus' ->
- case S#state.scale of
- 1 ->
- gs:config(S#state.canvas, beep);
- Scale ->
- Actors = [A#actor.name || A <- S#state.actors],
- open_viewer(Scale - 1, S#state.active_filter, Actors, S)
- end,
- noreply(S);
- 0 ->
- case lists:keysearch(collector, #filter.name, S#state.filters) of
- {value, F} when record(F, filter) ->
- open_viewer(S#state.scale, F#filter.name, [?unknown], S);
- false ->
- gs:config(S#state.canvas, beep)
- end,
- noreply(S);
- Int when integer(Int), Int > 0, Int =< 9 ->
- case catch lists:nth(Int, S#state.filters) of
- F when record(F, filter) ->
- open_viewer(S#state.scale, F#filter.name, [?unknown], S);
- {'EXIT', _} ->
- gs:config(S#state.canvas, beep)
- end,
- noreply(S);
-
- 'Shift_L' ->
- noreply(S);
- 'Shift_R' ->
- noreply(S);
- 'Caps_Lock' ->
- noreply(S);
-
- _ ->
- click_error(Key, S),
- noreply(S)
- end;
-handle_info({gs, _Obj,configure, [], [W, H | _]}, S) ->
- gs:config(S#state.packer, [{width, W}, {height, H}]),
- S2 = S#state{width = W, height = H},
- noreply(S2);
-handle_info(timeout, S) ->
- Try =
- case S#state.display_mode of
- {search_actors, reverse, _, _} ->
- -10;
- _ ->
- 10
- end,
- if
- S#state.is_suspended == true ->
- {noreply, S, infinity};
- S#state.max_events == infinity ->
- display_more_events(Try, S);
- true ->
- Needed = S#state.max_events - queue_length(S#state.events),
- if
- Needed =< 0 -> {noreply, S, infinity};
- Needed > 10 -> display_more_events(Try, S);
- Needed =< 10 -> display_more_events(Needed, S)
- end
- end;
-
-handle_info({'EXIT', Pid, Reason}, S) ->
- if
- Pid == S#state.collector_pid ->
- unlink(Pid),
- gs:destroy(S#state.win),
- {stop, Reason, S};
- Pid == S#state.parent_pid ->
- unlink(Pid),
- gs:destroy(S#state.win),
- {stop, Reason, S};
- true ->
- noreply(S)
- end;
-handle_info(Info, S) ->
- ok = error_logger:format("~p(~p): handle_info(~p, ~p)~n",
- [?MODULE, self(), Info, S]),
- noreply(S).
-
-%%----------------------------------------------------------------------
-%% Func: terminate/2
-%% Purpose: Shutdown the server
-%% Returns: any (ignored by gen_server)
-%%----------------------------------------------------------------------
-
-terminate(_Reason, _S) ->
- ignore.
-
-%%----------------------------------------------------------------------
-%% Func: code_change/3
-%% Purpose: Convert process state when code is changed
-%% Returns: {ok, NewState}
-%%----------------------------------------------------------------------
-
-code_change(_OldVsn, S, _Extra) ->
- {ok, S}.
-
-%%%----------------------------------------------------------------------
-%%% Handle suspend/resume
-%%%----------------------------------------------------------------------
-
-reply(Reply, S) ->
- case queue_length(S#state.events) of
- _ when S#state.is_suspended == true ->
- {reply, Reply, S, infinity};
- _ when S#state.max_events == infinity ->
- {reply, Reply, S, 500};
- N when N >= S#state.max_events ->
- {reply, Reply, S, infinity};
- _ ->
- {reply, Reply, S, 0}
- end.
-
-noreply(S) ->
- case queue_length(S#state.events) of
- _ when S#state.is_suspended == true ->
- {noreply, S, infinity};
- _ when S#state.max_events == infinity ->
- {noreply, S, 500};
- N when N >= S#state.max_events ->
- {noreply, S, infinity};
- _ ->
- {noreply, S, 0}
- end.
-
-do_suspend(S) ->
- config_suspend(S#state{is_suspended = true}).
-
-do_resume(S) ->
- config_suspend(S#state{is_suspended = false}).
-
-config_suspend(S) ->
- Suspended = S#state.is_suspended,
- gs:config(refresh, [{enable, not Suspended}]),
- gs:config(refresh_all, [{enable, not Suspended}]),
- gs:config(clear_all, [{enable, not Suspended}]),
- S.
-
-refresh_main_window(S) ->
- Pid = S#state.collector_pid,
- Key = S#state.first_event,
- case et_collector:iterate(Pid, Key, -1) of
- Prev when Prev == Key ->
- scroll_first(S);
- _Prev ->
- S2 = S#state{last_event = S#state.first_event},
- clear_canvas(S2)
- end.
-
-scroll_first(S) ->
- S2 = S#state{first_event = first, last_event = first},
- clear_canvas(S2).
-
-scroll_prev(S) ->
- Try =
- case S#state.max_events of
- infinity -> -10;
- Max -> -Max
- end,
- Key = et_collector:iterate(S#state.collector_pid, S#state.first_event, Try),
- S2 = S#state{first_event = Key, last_event = Key},
- clear_canvas(S2).
-
-scroll_next(S) ->
- S2 = S#state{first_event = S#state.last_event},
- clear_canvas(S2).
-
-scroll_up(S) ->
- Key = et_collector:iterate(S#state.collector_pid, S#state.first_event, -5),
- S2 = S#state{first_event = Key, last_event = Key},
- clear_canvas(S2).
-
-scroll_down(S) ->
- Key = et_collector:iterate(S#state.collector_pid, S#state.first_event, 5),
- S2 = S#state{first_event = Key, last_event = Key},
- clear_canvas(S2).
-
-scroll_last(S) ->
- S2 = S#state{first_event = last, last_event = last},
- clear_canvas(S2).
-
-change_display_mode(Mode, S) ->
- case Mode of
- all ->
- S2 = S#state{display_mode = Mode},
- refresh_main_window(S2);
- {search_actors, _Dir, _Key, []} ->
- S2 = S#state{display_mode = all},
- refresh_main_window(S2);
- {search_actors, _Dir, Key, Actors} when list(Actors) ->
- Pid = S#state.collector_pid,
- Prev = et_collector:iterate(Pid, Key, -1),
- S2 = S#state{first_event = Prev,
- last_event = Prev,
- display_mode = Mode},
- clear_canvas(S2)
- end.
-
-close_all(S) ->
- et_collector:multicast(S#state.collector_pid, close),
- timer:sleep(timer:seconds(1)),
- spawn(et_collector, stop, [S#state.collector_pid]),
- gs:destroy(S#state.win),
- {stop, shutdown, S}.
-
-close_all_others(S) ->
- Fun =
- fun({{subscriber, Pid}, _}) ->
- if
- Pid == self() ->
- ignore;
- true ->
- unlink(Pid),
- Pid ! {et, close}
- end
- end,
- All = et_collector:dict_match(S#state.collector_pid,
- {{subscriber, '_'}, '_'}),
- lists:foreach(Fun, All),
- noreply(S).
-
-click_error(Click, S) ->
- gs:config(S#state.canvas, beep),
- io:format("~p: ignored: ~p~n", [?MODULE, Click]).
-
-%%%----------------------------------------------------------------------
-%%% Clone viewer
-%%%----------------------------------------------------------------------
-open_viewer(Scale, FilterName, Actors, S) ->
- Filters = [{dict_insert, {filter, F#filter.name}, F#filter.function}
- || F <- S#state.filters],
- Options =
- [{parent_pid, S#state.parent_pid},
- {title, S#state.title},
- {collector_pid, S#state.collector_pid},
- {is_suspended, S#state.is_suspended},
- {detail_level, S#state.detail_level},
- {active_filter, FilterName},
- {event_order, S#state.event_order},
- {first_event, S#state.first_event},
- {max_events, S#state.max_events},
- {max_actors, S#state.max_actors},
- {hide_actions, S#state.hide_actions},
- {hide_unknown, S#state.hide_unknown},
- {is_suspended, S#state.is_suspended},
- {actors, Actors},
- {scale, Scale},
- {width, S#state.width},
- {height, S#state.height} | Filters],
- case start_link(Options) of
- {ok, ViewerPid} ->
- unlink(ViewerPid),
- ok;
- {error, Reason} ->
- ok = error_logger:format("~p: Failed to start a new window: ~p~n",
- [?MODULE, Reason])
- end.
-
-%%%----------------------------------------------------------------------
-%%% Handle graphics
-%%%----------------------------------------------------------------------
-
-create_main_window(S) ->
- Font = select_font(S#state.scale),
- GS = gs:start(),
- Name = name_to_string(S#state.active_filter),
- Title = case S#state.title of
- undefined -> atom_to_list(?MODULE);
- Explicit -> name_to_string(Explicit)
- end,
- WinOpt = [{title, Title ++ " (filter: " ++ Name ++ ")"},
- {configure, true},
- {width, S#state.width},
- {height, S#state.height}],
- Win = gs:window(GS, WinOpt),
- Bar = gs:menubar(Win, []),
-
- create_file_menu(Bar),
- create_viewer_menu(Bar),
- create_collector_menu(Bar),
- gs:menubutton(filter_button, Bar, [{label, {text, "Filter"}}]),
- create_filter_menu(S#state.active_filter, S#state.filters),
- create_help_menu(Bar),
-
- config_suspend(S),
-
- PackerOpt = [{packer_x, [{fixed, 5}, {fixed, 40}, {fixed, 40},
- {stretch, 1}, {fixed, 5}]},
- {packer_y, [{fixed, 30}, {fixed, 30},
- {stretch, 1}, {fixed, 30}]},
- {x, 0}, {y, 30}],
- Packer = gs:frame(Win, PackerOpt),
- gs:checkbutton(suspended, Packer, [{label,{text,"Freeze"}},
- {x, 10}, {y, 0},
- {width, 120}, {align, w},
- {select, S#state.is_suspended}]),
- gs:checkbutton(hide_actions, Packer, [{label,{text,"Hide From=To"}},
- {x, 10}, {y, 20},
- {width, 120}, {align, w},
- {select, S#state.hide_actions}]),
- gs:checkbutton(hide_unknown, Packer, [{label,{text,"Hide Unknown"}},
- {x, 10}, {y, 40},
- {width, 120}, {align, w},
- {select, S#state.hide_unknown}]),
- gs:scale(Packer, [{text,"Detail Level"},
- {range, {?detail_level_min, ?detail_level_max}},
- {orient, horizontal},
- {x, 150}, {y, 0}, {height, 65}, {width, 200},
- {pos, S#state.detail_level}, {data, detail_level}]),
- CanvasW = calc_canvas_width(S),
- CanvasH = calc_canvas_height(S),
- CanOpt = [{pack_xy, {{2, 4}, 3}}, {vscroll, right}, {hscroll, bottom},
- {scrollregion, {2, 2, CanvasW, CanvasH}}],
- Canvas = gs:canvas(Packer, CanOpt),
- gs:config(Canvas, [{buttonpress, true}, {buttonrelease, true}]),
- gs:config(Packer, [{width, S#state.width}, {height, S#state.height}]),
- gs:config(Win, [{map, true}, {keypress, true}]),
- S2 = S#state{title = Title,
- win = Win, font = Font, packer = Packer,
- canvas_width = CanvasW, canvas_height = CanvasH,
- canvas = Canvas,
- y_pos = ?initial_y * S#state.scale},
- draw_all_actors(S2).
-
-select_font(Scale) when integer(Scale) ->
- case Scale of
- 1 -> {courier, 7};
- 2 -> {courier, 10};
- 3 -> {courier, 12};
- 4 -> {courier, 14};
- S -> {courier, S * 4}
- end.
-
-create_file_menu(Bar) ->
- Button = gs:menubutton(Bar, [{label, {text, "File"}}]),
- Menu = gs:menu(Button, []),
- gs:menuitem(close_all, Menu, [{label, {text, "Close Collector and all Viewers (C) "}}]),
- gs:menuitem(close_all_others, Menu, [{label, {text, "Close other Viewers, but keep Collector (c)"}}]),
- gs:menuitem(close, Menu, [{label, {text, "Close this Viewer, but keep Collector"}}]),
- gs:menuitem(Menu, [{itemtype, separator}]),
-
- gs:menuitem(clear_all, Menu, [{label, {text, "Clear Collector"}}]),
- gs:menuitem(load_all, Menu, [{label, {text, "Load Collector from the file \"et_viewer.log\""}}]),
- gs:menuitem(save_all, Menu, [{label, {text, "Save Collector to the file \"et_viewer.log\""}}]).
-
-create_viewer_menu(Bar) ->
- Button = gs:menubutton(Bar, [{label, {text, "Viewer"}}]),
- Menu = gs:menu(Button, []),
- gs:menuitem(Menu, [{label, {text, "Scroll this Viewer"}}, {bg, lightblue}, {enable,false}]),
- gs:menuitem(Menu, [{itemtype, separator}]),
- gs:menuitem(first, Menu, [{label, {text, "First (f)"}}]),
- gs:menuitem(prev, Menu, [{label, {text, "Prev (p)"}}]),
- gs:menuitem(next, Menu, [{label, {text, "Next (n)"}}]),
- gs:menuitem(last, Menu, [{label, {text, "Last (l)"}}]),
- gs:menuitem(refresh, Menu, [{label, {text, "Refresh (r)"}}]),
- gs:menuitem(Menu, [{itemtype, separator}]),
- gs:menuitem(up, Menu, [{label, {text, "Up 5 (Up)"}}]),
- gs:menuitem(down, Menu, [{label, {text, "Down 5 (Down)"}}]),
- gs:menuitem(Menu, [{itemtype, separator}]),
- gs:menuitem(Menu, [{label, {text, "Search in this Viewer"}}, {bg, lightblue}, {enable,false}]),
- gs:menuitem(Menu, [{itemtype, separator}]),
- gs:menuitem({mode, all}, Menu, [{label, {text, "Abort search. Display all (a)"}}]).
-
-create_collector_menu(Bar) ->
- Button = gs:menubutton(Bar, [{label, {text, "Collector"}}]),
- Menu = gs:menu(Button, []),
- gs:menuitem(Menu, [{label, {text, "Scroll all Viewers"}}, {bg, lightblue}, {enable,false}]),
- gs:menuitem(Menu, [{itemtype, separator}]),
- gs:menuitem(first_all, Menu, [{label, {text, "First (F)"}}]),
- gs:menuitem(prev_all, Menu, [{label, {text, "Prev (P)"}}]),
- gs:menuitem(next_all, Menu, [{label, {text, "Next (N)"}}]),
- gs:menuitem(last_all, Menu, [{label, {text, "Last (L)"}}]),
- gs:menuitem(refresh_all, Menu, [{label, {text, "Refresh (R)"}}]).
-
-create_filter_menu(ActiveFilterName, Filters) ->
- Menu = gs:menu(filter_menu, filter_button, []),
- Item = fun(F, N) when F#filter.name == collector ->
- Label = lists:concat([pad_string(F#filter.name, 20), "(0)"]),
- gs:menuitem(Menu, [{label, {text, Label}}, {data, F}]),
- N + 1;
- (F, N) ->
- Label = lists:concat([pad_string(F#filter.name, 20), "(", N, ")"]),
- gs:menuitem(Menu, [{label, {text, Label}}, {data, F}]),
- N + 1
- end,
- gs:menuitem(Menu, [{label, {text, "Same Filter New Scale"}}, {bg, lightblue}, {enable,false}]),
- gs:menuitem(Menu, [{itemtype, separator}]),
- {value, Filter} = lists:keysearch(ActiveFilterName, #filter.name, Filters),
- Same = lists:concat([pad_string(ActiveFilterName, 20), "(=)"]),
- Larger = lists:concat([pad_string(ActiveFilterName, 20), "(+)"]),
- Smaller = lists:concat([pad_string(ActiveFilterName, 20), "(-)"]),
- gs:menuitem(Menu, [{label, {text, Same}}, {data, Filter}]),
- gs:menuitem(Menu, [{label, {text, Smaller}}, {data, Filter}]),
- gs:menuitem(Menu, [{label, {text, Larger}}, {data, Filter}]),
- gs:menuitem(Menu, [{itemtype, separator}]),
- gs:menuitem(Menu, [{label, {text, "New Filter Same Scale"}}, {bg, lightblue}, {enable,false}]),
- gs:menuitem(Menu, [{itemtype, separator}]),
- lists:foldl(Item, 1, Filters).
-
-create_help_menu(Bar) ->
- Button = gs:menubutton(Bar, [{label, {text, "Help"}}]),
- Menu = gs:menu(Button, []),
- gs:menuitem(Menu, [{label, {text, "Display details of an event"}},
- {bg, lightblue}, {enable,false}]),
- gs:menuitem(Menu, [{label, {text, " Single click on the name tag or the arrow (Mouse-1)"}},
- {enable,false}]),
- gs:menuitem(Menu, [{itemtype, separator}]),
- gs:menuitem(Menu, [{label, {text, "Toggle actor search"}},
- {bg, lightblue}, {enable,false}]),
- gs:menuitem(Menu, [{label, {text, " Single click on the name tag (Mouse-1)"}},
- {enable,false}]),
- gs:menuitem(Menu, [{itemtype, separator}]),
- gs:menuitem(Menu, [{label, {text, "Move actor"}},
- {bg, lightblue}, {enable,false}]),
- gs:menuitem(Menu, [{label, {text, " se drag and drop on name tag (Mouse-1)"}},
- {enable,false}]).
-
-clear_canvas(S) ->
- gs:destroy(S#state.canvas),
- CanvasW = calc_canvas_width(S),
- CanvasH = calc_canvas_height(S),
- CanOpt = [{pack_xy, {{2, 4}, 3}}, {vscroll, right}, {hscroll, bottom},
- {scrollregion, {2, 2, CanvasW, CanvasH}}],
- Canvas = gs:canvas(S#state.packer, CanOpt),
- gs:config(S#state.packer, [{width, S#state.width}, {height, S#state.height}]),
- gs:config(Canvas, [{buttonpress, true}, {buttonrelease, true}]),
- S2 = S#state{refresh_needed = false,
- y_pos = ?initial_y * S#state.scale,
- canvas = Canvas,
- canvas_width = CanvasW,
- canvas_height = CanvasH,
- events = queue_new()},
- draw_all_actors(S2).
-
-calc_canvas_width(S) ->
- Min = calc_min_actors(S),
- CanvasW = ((2 * ?initial_x) + (Min * ?incr_x)) * S#state.scale,
- lists:max([CanvasW, S#state.width - (15 * S#state.scale), S#state.canvas_width]).
-
-calc_canvas_height(S) ->
- Min = calc_min_events(S),
- CanvasH = ((2 * ?initial_y) + (Min * ?incr_y)) * S#state.scale,
- lists:max([CanvasH, S#state.height - (4 * 30), S#state.canvas_height]).
-
-calc_min_actors(S) ->
- Max = S#state.max_actors,
- N = length(S#state.actors),
- if
- Max == infinity ->
- N * 2;
- Max < N ->
- N;
- true ->
- Max
- end.
-
-calc_min_events(S) ->
- Max = S#state.max_events,
- N = queue_length(S#state.events),
- if
- Max == infinity ->
- N * 2;
- Max < N ->
- N;
- true ->
- Max
- end.
-
-display_more_events(Try, S) ->
- Name = S#state.active_filter,
- {value, F} = lists:keysearch(Name, #filter.name, S#state.filters),
- FilterFun = F#filter.function,
- Fun = fun(Event, State) ->
- case catch FilterFun(Event) of
- true ->
- State2 = ensure_key(Event, State),
- opt_display_event(Event, State2);
- {true, Event2} ->
- State2 = ensure_key(Event2, State),
- opt_display_event(Event2, State2);
- false ->
- ensure_key(Event, State);
- Bad ->
- Contents = {bad_filter, Name, Bad, Event},
- Event2 = Event#event{contents = Contents,
- from = bad_filter,
- to = bad_filter},
- State2 = ensure_key(Event2, State),
- opt_display_event(Event2, State2)
- end
- end,
- Pid = S#state.collector_pid,
- S2 = et_collector:iterate(Pid, S#state.last_event, Try, Fun, S),
- case queue_length(S2#state.events) - queue_length(S#state.events) of
- Diff when Diff == Try ->
- %% Got as much as requested, look for more
- %% io:format("Done: ~p~n", [{Try, Diff}]),
- {noreply, S2, 0};
- _Diff when S2#state.first_event == S#state.first_event,
- S2#state.last_event == S#state.last_event ->
- %% Got lesser than requested, wait a while before looking for more
- %% io:format("More: ~p~n", [{Try, Diff}]),
- {noreply, S2, 500};
- _Diff ->
- %% Got lesser than requested, look for more
- %% io:format("More2: ~p~n", [{Try, Diff}]),
- {noreply, S2, 0}
- end.
-
-ensure_key(E, S) when record(E, event), record(S, state) ->
- Key = et_collector:make_key(S#state.event_order, E),
- case S#state.first_event of
- first ->
- S#state{first_event = Key, last_event = Key};
- last ->
- S#state{first_event = Key, last_event = Key};
- _ ->
- S#state{last_event = Key}
- end.
-
-opt_display_event(E, S) ->
- case S#state.display_mode of
- all ->
- display_event(E, S);
- {search_actors, _Dir, _FirstKey, Actors} ->
- %% Key = S#state.last_event,
- From = select_actor_name(E#event.from, S),
- case lists:member(From, Actors) of
- true ->
- display_event(E, S);
- false ->
- To = select_actor_name(E#event.to, S),
- case lists:member(To, Actors) of
- true ->
- display_event(E, S);
- false ->
- S
- end
- end
- end.
-
-select_actor_name(Name, S) ->
- case lists:keymember(Name, #actor.name, S#state.actors) of
- true -> Name;
- false -> ?unknown
- end.
-
-display_event(E, S) when E#event.detail_level < S#state.detail_level ->
- {FromRefresh, From} = ensure_actor(E#event.from, S),
- {FromName, FromPos, S2} = From,
- {ToRefresh, To} = ensure_actor(E#event.to, S2),
- {ToName, ToPos, S3} = To,
- if
- FromRefresh /= false, ToRefresh /= false ->
- Key = S#state.last_event,
- refresh_beep(S),
- S3#state{refresh_needed = true,
- events = queue_in(Key, S3#state.events)};
- FromName == ToName ->
- case S#state.hide_actions of
- true ->
- S3;
- false ->
- Label = name_to_string(E#event.label),
- draw_named_arrow(Label, FromName, FromPos, ToName, ToPos, S3)
- end;
- true ->
- Label = name_to_string(E#event.label),
- draw_named_arrow(Label, FromName, FromPos, ToName, ToPos, S3)
- end;
-display_event(_, S) ->
- S.
-
-draw_named_arrow(Label, FromName, FromPos, ToName, ToPos, S) ->
- Key = S#state.last_event,
- case S#state.y_pos + (?incr_y * S#state.scale) of
- _ when S#state.hide_unknown == true, FromName == ?unknown ->
- S;
- _ when S#state.hide_unknown == true, ToName == ?unknown ->
- S;
- Y when Y > S#state.canvas_height ->
- refresh_beep(S),
- S#state{refresh_needed = true,
- events = queue_in(Key, S#state.events)};
- Y ->
- S2 = S#state{y_pos = Y, events = queue_in(Key, S#state.events)},
- S3 = draw_arrow(FromPos, ToPos, S2),
- draw_label(Label, FromName, ToName, FromPos, ToPos, S3)
- end.
-
-refresh_beep(S) ->
- case S#state.refresh_needed of
- false ->
- gs:config(S#state.canvas, beep),
- gs:config(S#state.canvas, beep),
- gs:config(S#state.canvas, beep);
- true ->
- ignore
- end.
-
-draw_arrow(Pos, Pos, S) ->
- S;
-draw_arrow(FromPos, ToPos, S) ->
- Y = S#state.y_pos,
- CanOpts = [{coords, [{FromPos , Y}, {ToPos, Y}]},
- {arrow, last},{width, 1}, {fg, black}],
- gs:line(S#state.canvas, CanOpts),
- S.
-
-draw_label(Label, FromName, ToName, FromPos, ToPos, S) ->
- Colour =
- if
- FromName == ?unknown,
- ToName == ?unknown -> blue; %turquoise;
- FromName == ?unknown -> orange;
- ToName == ?unknown -> orange;
- FromPos == ToPos -> blue;
- true -> red
- end,
- Scale = S#state.scale,
- X = lists:min([FromPos, ToPos]) + (6 * Scale),
- Y = S#state.y_pos,
- write_text(Label, X, Y, Colour, S),
- S.
-
-draw_all_actors(State) ->
- Scale = State#state.scale,
- Fun = fun(A, X) ->
- draw_actor(A, X, State),
- X + (?incr_x * Scale)
- end,
- lists:foldl(Fun, ?initial_x * Scale, State#state.actors),
- State.
-
-%% Returns: {NeedsRefreshBool, {ActorPos, NewsS, NewActors}}
-ensure_actor(Name, S) ->
- do_ensure_actor(Name, S, S#state.actors, 0).
-
-do_ensure_actor(Name, S, [H | _], N) when H#actor.name == Name ->
- Pos = (?initial_x + (N * ?incr_x)) * S#state.scale,
- {false, {Name, Pos, S}};
-do_ensure_actor(Name, S, [_ | T], N) ->
- do_ensure_actor(Name, S, T, N + 1);
-do_ensure_actor(Name, S, [], N) ->
- %% A brand new actor, let's see if it does fit
- Pos = (?initial_x + (N * ?incr_x)) * S#state.scale,
- MaxActors = S#state.max_actors,
- if
- integer(MaxActors), N > MaxActors ->
- %% Failed on max_actors limit, put into unknown
- %% Assume that unknown always is in actor list
- ensure_actor(?unknown, S);
- Pos > (S#state.canvas_width - ((?initial_x - 15) * S#state.scale)) ->
- %% New actor does not fit in canvas, refresh needed
- A = create_actor(Name),
- draw_actor(A, Pos, S),
- {true, {Name, Pos, S#state{actors = S#state.actors ++ [A]}}};
- true ->
- %% New actor fits in canvas. Draw the new actor.
- A = create_actor(Name),
- draw_actor(A, Pos, S),
- {false, {Name, Pos, S#state{actors = S#state.actors ++ [A]}}}
- end.
-
-draw_actor(A, LineX, S) ->
- Scale = S#state.scale,
- TextX = LineX - (5 * Scale),
- TextY = ?initial_y * Scale,
- LineTopY = TextY + ((?incr_y / 2) * Scale),
- LineBotY = S#state.canvas_height - ((?incr_y / 2) * Scale),
- Colour = case A#actor.name of
- ?unknown -> orange;
- _ -> red
- end,
- write_text(A#actor.string, TextX, TextY, Colour, S),
- LineOpt = [{coords, [{LineX, LineTopY}, {LineX, LineBotY}]},
- {width, 1}, {fg, Colour}],
- gs:line(S#state.canvas, LineOpt).
-
-toggle_search_for_actor(ActorName,S) ->
- case S#state.display_mode of
- all ->
- io:format("~p: search for: ~p ++ ~p~n", [?MODULE, [], [ActorName]]),
- %% Search for this actor
- Key = S#state.first_event,
- Actors = [ActorName],
- Mode = {search_actors, forward, Key, Actors},
- change_display_mode(Mode, S);
- {search_actors, Dir, Key, Actors}->
- Actors2 =
- case lists:member(ActorName, Actors) of
- true ->
- io:format("~p: search for: ~p -- ~p~n", [?MODULE, Actors, [ActorName]]),
- %% Remove actor from search list
- Actors -- [ActorName];
- false ->
- io:format("~p: search for: ~p ++ ~p~n", [?MODULE, Actors, [ActorName]]),
- %% Add actor from search list
- [ActorName | Actors]
- end,
- Mode2 = {search_actors, Dir, Key, Actors2},
- change_display_mode(Mode2, S)
- end.
-
-move_actor(From, To, Actors, S) ->
- Pos = #actor.name,
- ToName = To#actor.name,
- FromName = From#actor.name,
- ToIx = actor_index(ToName, Pos, Actors),
- FromIx = actor_index(FromName, Pos, Actors),
- if
- FromIx /= 0, ToIx /= 0, ToIx > FromIx ->
- Actors2 = lists:keydelete(FromName, Pos, Actors),
- Actors3 = insert_actor_after(From, To, Actors2),
- S2 = S#state{actors = Actors3},
- refresh_main_window(S2);
- FromIx /= 0, ToIx /= 0 ->
- Actors2 = lists:keydelete(FromName, Pos, Actors),
- Actors3 = insert_actor_before(From, To, Actors2),
- S2 = S#state{actors = Actors3},
- refresh_main_window(S2);
- true ->
- %% Ignore
- S
- end.
-
-insert_actor_after(From, To, [H | T]) ->
- case To#actor.name == H#actor.name of
- true -> [H, From | T];
- false -> [H | insert_actor_after(From, To, T)]
- end;
-insert_actor_after(_From, _To, []) ->
- [].
-
-insert_actor_before(From, To, [H | T]) ->
- case To#actor.name == H#actor.name of
- true -> [From, H | T];
- false -> [H | insert_actor_before(From, To, T)]
- end;
-insert_actor_before(_From, _To, []) ->
- [].
-
-actor_index(_Key, _Pos, []) ->
- 0;
-actor_index(Key, Pos, [H | T]) ->
- case Key == element(Pos, H) of
- false -> actor_index(Key, Pos, T) + 1;
- true -> 1
- end.
-
-y_to_n(Y, S) ->
- Y2 = ((Y / S#state.scale) - ?initial_y + (?incr_y / 2)),
- N = round(Y2 / ?incr_y - 0.2),
- MaxN = queue_length(S#state.events),
- if
- N =< 0 -> actor;
- N > MaxN -> actor;
- true -> {event, N}
- end.
-
-x_to_n(X, S) ->
- Scale = S#state.scale,
- Len = length(S#state.actors),
- X2 = X - (?initial_x * Scale),
- N = X2 / (?incr_x * Scale),
- N2 = trunc(N + 1.5),
- if
- N2 > Len -> Len;
- N2 < 1 -> 1;
- true -> N2
- end.
-
-write_text(Text, X, Y, Colour, S) ->
- Opt = [{coords, [{X, Y - (?incr_y * S#state.scale / 2)}]},
- {font, S#state.font}, {fg, Colour}, {text, Text}],
- gs:text(S#state.canvas, Opt).
-
-create_contents_window(Event, S) ->
- Options = [{viewer_pid, self()},
- {event, Event},
- {event_order, S#state.event_order},
- {active_filter, S#state.active_filter}
- | S#state.filters],
- case et_contents_viewer:start_link(Options) of
- {ok, _Pid} ->
- S;
- {error, Reason} ->
- ok = error_logger:format("~p(~p): create_contents_window(~p) ->~n ~p~n",
- [?MODULE, self(), Options, Reason]),
- S
- end.
-
-%%%----------------------------------------------------------------------
-%%% String padding of actors
-%%%----------------------------------------------------------------------
-
-create_actor(Name) ->
- String = name_to_string(Name),
- PaddedString = pad_string(String, 8),
- #actor{name = Name, string = PaddedString}.
-
-name_to_string(Name) ->
- case catch io_lib:format("~s", [Name]) of
- {'EXIT', _} -> lists:flatten(io_lib:format("~w", [Name]));
- GoodString -> lists:flatten(GoodString)
- end.
-
-pad_string(Atom, MinLen) when atom(Atom) ->
- pad_string(atom_to_list(Atom), MinLen);
-pad_string(String, MinLen) when integer(MinLen), MinLen >= 0 ->
- Len = length(String),
- case Len >= MinLen of
- true ->
- String;
- false ->
- String ++ lists:duplicate(MinLen - Len, $ )
- end.
-
-%%%----------------------------------------------------------------------
-%%% Queue management
-%%%----------------------------------------------------------------------
-
-queue_new() ->
- {0, [], []}.
-
-queue_in(X, {Size, In, Out}) ->
- {Size + 1, [X | In], Out}.
-
-%% queue_out(Q) ->
-%% case Q of
-%% {Size, In, [H | Out]} -> {{value, H}, {Size - 1, In, Out}};
-%% {Size, [], []} -> {empty, {Size, [], []}};
-%% {Size, In, _} -> queue_out({Size, [], lists:reverse(In)})
-%% end.
-
-queue_to_list({_Size, [], Out}) ->
- Out;
-queue_to_list({_Size, In, Out}) ->
- Out ++ lists:reverse(In).
-
-queue_length({Size, _In, _Out}) ->
- Size.
+call(ViewerPid, Request) ->
+ gen_server:call(ViewerPid, Request, infinity).
-list_to_queue(List) when list(List) ->
- {length(List), [], List}.
diff --git a/lib/et/src/et_wx_contents_viewer.erl b/lib/et/src/et_wx_contents_viewer.erl
new file mode 100644
index 0000000000..8a8d9ef1ee
--- /dev/null
+++ b/lib/et/src/et_wx_contents_viewer.erl
@@ -0,0 +1,700 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2000-2009. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%
+%%----------------------------------------------------------------------
+%% Purpose: Displays details of a trace event
+%%----------------------------------------------------------------------
+
+-module(et_wx_contents_viewer).
+
+-behaviour(wx_object).
+
+%% External exports
+-export([start_link/1,
+ stop/1]).
+
+%% gen_server callbacks
+-export([init/1, terminate/2, code_change/3,
+ handle_call/3, handle_cast/2, handle_info/2,
+ handle_event/2]).
+
+-include("../include/et.hrl").
+-include("et_internal.hrl").
+-include_lib("wx/include/wx.hrl").
+
+-record(state, {parent_pid, % Pid of parent process
+ viewer_pid, % Pid of viewer process
+ event_order, % Field to be used as primary key
+ event, % The original event
+ filtered_event, % Event processed by active filter
+ active_filter, % Name of the active filter
+ filters, % List of possible filters
+ win, % GUI: Frame object
+ frame, % GUI: Frame object
+ panel, % GUI: Panel object
+ width, % GUI: Window width
+ height,
+ editor,
+ menu_data, % GUI: Window height
+ wx_debug, % GUI: WX debug level
+ trap_exit}). % trap_exit process flag
+
+%%%----------------------------------------------------------------------
+%%% Client side
+%%%----------------------------------------------------------------------
+
+%%----------------------------------------------------------------------
+%% start_link(Options) -> {ok, ContentsPid} | {error, Reason}
+%%
+%% Start a viewer for the event contents as window in GS
+%%
+%% Options = [option()]
+%%
+%% option() =
+%%
+%% {parent_pid, pid()} | % Pid of parent process
+%% {viewer_pid, pid()} | % Pid of viewer process
+%% {event_order, event_order()} | % Field to be used as primary key
+%% {active_filter, atom()} | % Name of the active filter
+%% {filter, atom(), fun()} % A named filter fun
+%%
+%% event_order() = 'trace_ts' | 'event_ts'
+%% ContentsPid = pid()
+%% Reason = term()
+%%----------------------------------------------------------------------
+
+start_link(Options) ->
+ case parse_opt(Options, default_state()) of
+ {ok, S} ->
+ try
+ WxRef = wx_object:start_link(?MODULE, [S], []),
+ Pid = wx_object:get_pid(WxRef),
+ if
+ S#state.parent_pid =/= self() ->
+ unlink(Pid);
+ true ->
+ ignore
+ end,
+ {ok, Pid}
+ catch
+ error:Reason ->
+ {error, {'EXIT', Reason, erlang:get_stacktrace()}}
+ end;
+ {error, Reason} ->
+ {error, Reason}
+ end.
+
+default_state() ->
+ #state{parent_pid = self(),
+ viewer_pid = undefined,
+ active_filter = ?DEFAULT_FILTER_NAME,
+ filters = [?DEFAULT_FILTER],
+ width = 600,
+ height = 300,
+ wx_debug = 0,
+ trap_exit = true}.
+
+parse_opt([], S) ->
+ Name = S#state.active_filter,
+ Filters = S#state.filters,
+ if
+ S#state.event =:= undefined ->
+ {error, {badarg, no_event}};
+ is_atom(Name) ->
+ case lists:keysearch(Name, #filter.name, Filters) of
+ {value, F} when is_record(F, filter) ->
+ {ok, S#state{active_filter = Name}};
+ false ->
+ {error, {badarg, {no_such_filter, Name, Filters}}}
+ end
+ end;
+parse_opt([H | T], S) ->
+ case H of
+ {parent_pid, ParentPid} when is_pid(ParentPid); ParentPid =:= undefined ->
+ parse_opt(T, S#state{parent_pid = ParentPid});
+ {viewer_pid, ViewerPid} when is_pid(ViewerPid) ->
+ parse_opt(T, S#state{viewer_pid = ViewerPid});
+ {wx_debug, Level} ->
+ parse_opt(T, S#state{wx_debug = Level});
+ {trap_exit, Bool} when Bool =:= true; Bool =:= false->
+ parse_opt(T, S#state{trap_exit = Bool});
+ {event_order, trace_ts} ->
+ parse_opt(T, S#state{event_order = trace_ts});
+ {event_order, event_ts} ->
+ parse_opt(T, S#state{event_order = event_ts});
+ {event, Event} when is_record(Event, event) ->
+ parse_opt(T, S#state{event = Event});
+ {active_filter, Name} when is_atom(Name) ->
+ parse_opt(T, S#state{active_filter = Name});
+ F when is_record(F, filter),
+ is_atom(F#filter.name),
+ is_function(F#filter.function) ->
+ Filters = lists:keydelete(F#filter.name, #filter.name, S#state.filters),
+ Filters2 = lists:keysort(#filter.name, [F | Filters]),
+ parse_opt(T, S#state{filters = Filters2});
+ {width, Width} when is_integer(Width), Width > 0 ->
+ parse_opt(T, S#state{width = Width});
+ {height, Height} when is_integer(Height), Height > 0 ->
+ parse_opt(T, S#state{height = Height});
+ Bad ->
+ {error, {bad_option, Bad}}
+ end;
+parse_opt(BadList, _S) ->
+ {error, {bad_option_list, BadList}}.
+
+%%----------------------------------------------------------------------
+%% stop(ContentsPid) -> ok
+%%
+%% Stops a contents viewer process
+%%
+%% ContentsPid = pid()
+%%----------------------------------------------------------------------
+
+stop(ContentsPid) when is_pid(ContentsPid) ->
+ Type = process,
+ MonitorRef = erlang:monitor(Type, ContentsPid),
+ ContentsPid ! {stop, self()},
+ receive
+ {'DOWN', MonitorRef, Type, ContentsPid, shutdown} ->
+ ok;
+ {'DOWN', MonitorRef, Type, ContentsPid, Reason} ->
+ {error, Reason}
+ end.
+
+%% call(Frame, Request) ->
+%% wx_object:call(Frame, Request, infinity).
+
+%%%----------------------------------------------------------------------
+%%% Callback functions from gen_server
+%%%----------------------------------------------------------------------
+
+%%----------------------------------------------------------------------
+%% Func: init/1
+%% Returns: {ok, State} |
+%% {ok, State, Timeout} |
+%% ignore |
+%% {stop, Reason}
+%%----------------------------------------------------------------------
+
+init([S]) when is_record(S, state) ->
+ process_flag(trap_exit, S#state.trap_exit),
+ case S#state.parent_pid of
+ undefined -> ok;
+ ParentPid -> link(ParentPid)
+ end,
+ wx:debug(S#state.wx_debug),
+ S2 = create_window(S),
+ {S2#state.frame, S2}.
+
+%%----------------------------------------------------------------------
+%% Func: handle_call/3
+%% Returns: {reply, Reply, State} |
+%% {reply, Reply, State, Timeout} |
+%% {noreply, State} |
+%% {noreply, State, Timeout} |
+%% {stop, Reason, Reply, State} | (terminate/2 is called)
+%% {stop, Reason, State} (terminate/2 is called)
+%%----------------------------------------------------------------------
+
+handle_call(Request, From, S) ->
+ ok = error_logger:format("~p(~p): handle_call(~p, ~p, ~p)~n",
+ [?MODULE, self(), Request, From, S]),
+ Reply = {error, {bad_request, Request}},
+ {reply, Reply, S}.
+
+%%----------------------------------------------------------------------
+%% Func: handle_cast/2
+%% Returns: {noreply, State} |
+%% {noreply, State, Timeout} |
+%% {stop, Reason, State} (terminate/2 is called)
+%%----------------------------------------------------------------------
+
+handle_cast(Msg, S) ->
+ ok = error_logger:format("~p(~p): handle_cast(~p, ~p)~n",
+ [?MODULE, self(), Msg, S]),
+ {noreply, S}.
+
+%%----------------------------------------------------------------------
+%% Func: handle_event/2
+%% Returns: {noreply, State} |
+%% {noreply, State, Timeout} |
+%% {stop, Reason, State} (terminate/2 is called)
+%%----------------------------------------------------------------------
+
+handle_event(#wx{id = Id,
+ event = #wxCommand{type = command_menu_selected}},
+ S) ->
+ case proplists:get_value(Id, S#state.menu_data) of
+ undefined ->
+ ignore;
+ Data when is_record(Data, filter) ->
+ F = Data,
+ ChildState= S#state{active_filter = F#filter.name},
+ case wx_object:start_link(?MODULE, [ChildState], []) of
+ {ok, Pid} when S#state.parent_pid =/= self() ->
+ unlink(Pid);
+ _ ->
+ ignore
+ end;
+ {hide, Actors} ->
+ send_viewer_event(S, {delete_actors, Actors});
+ {show, Actors} ->
+ send_viewer_event(S, {insert_actors, Actors});
+ {mode, Mode} ->
+ send_viewer_event(S, {mode, Mode});
+ Nyi ->
+ ok = error_logger:format("~p: click ~p ignored (nyi)~n",
+ [?MODULE, Nyi])
+ end,
+ case Id of
+ ?wxID_EXIT ->
+ wxFrame:destroy(S#state.frame),
+ opt_unlink(S#state.parent_pid),
+ {stop, shutdown, S};
+ ?wxID_SAVE ->
+ Event = S#state.event,
+ TimeStamp =
+ case S#state.event_order of
+ trace_ts -> Event#event.trace_ts;
+ event_ts -> Event#event.event_ts
+ end,
+ FileName = lists:flatten(["et_contents_viewer_", now_to_string(TimeStamp), ".txt"]),
+ Style = ?wxFD_SAVE bor ?wxFD_OVERWRITE_PROMPT,
+ Msg = "Select a file to the events to",
+ case select_file(S#state.frame, Msg, filename:absname(FileName), Style) of
+ {ok, FileName2} ->
+ Bin = list_to_binary(event_to_string(Event, S#state.event_order)),
+ file:write_file(FileName2, Bin);
+ cancel ->
+ ok
+ end,
+ {noreply, S};
+ ?wxID_PRINT ->
+ Html = wxHtmlEasyPrinting:new([{parentWindow, S#state.win}]),
+ Text = "<pre>" ++ wxTextCtrl:getValue(S#state.editor) ++ "</pre>",
+ wxHtmlEasyPrinting:previewText(Html, Text),
+ {noreply, S};
+ _ ->
+ {noreply, S}
+ end;
+handle_event(#wx{event = #wxKey{rawCode = KeyCode}}, S) ->
+ case KeyCode of
+ $c ->
+ wxFrame:destroy(S#state.frame),
+ opt_unlink(S#state.parent_pid),
+ {stop, normal, S};
+ $f ->
+ E = S#state.filtered_event,
+ From = E#event.from,
+ send_viewer_event(S, {delete_actors, [From]}),
+ {noreply, S};
+ $t ->
+ E = S#state.filtered_event,
+ To = E#event.to,
+ send_viewer_event(S, {delete_actors, [To]}),
+ {noreply, S};
+ $b ->
+ E = S#state.filtered_event,
+ From = E#event.from,
+ To = E#event.to,
+ send_viewer_event(S, {delete_actors, [From, To]}),
+ {noreply, S};
+
+ $F ->
+ E = S#state.filtered_event,
+ From = E#event.from,
+ send_viewer_event(S, {insert_actors, [From]}),
+ {noreply, S};
+ $T ->
+ E = S#state.filtered_event,
+ To = E#event.to,
+ send_viewer_event(S, {insert_actors, [To]}),
+ {noreply, S};
+ $B ->
+ E = S#state.filtered_event,
+ From = E#event.from,
+ To = E#event.to,
+ send_viewer_event(S, {insert_actors, [From, To]}),
+ {noreply, S};
+
+ $s ->
+ E = S#state.filtered_event,
+ From = E#event.from,
+ To = E#event.to,
+ First = et_collector:make_key(S#state.event_order, E),
+ Mode = {search_actors, forward, First, [From, To]},
+ send_viewer_event(S, {mode, Mode}),
+ {noreply, S};
+ $r ->
+ E = S#state.filtered_event,
+ From = E#event.from,
+ To = E#event.to,
+ First = et_collector:make_key(S#state.event_order, E),
+ Mode = {search_actors, reverse, First, [From, To]},
+ send_viewer_event(S, {mode, Mode}),
+ {noreply, S};
+ $a ->
+ send_viewer_event(S, {mode, all}),
+ {noreply, S};
+
+ $0 ->
+ case lists:keysearch(?DEFAULT_FILTER_NAME, #filter.name, S#state.filters) of
+ {value, F} when is_record(F, filter) ->
+ ChildState= S#state{active_filter = F#filter.name},
+ case wx_object:start_link(?MODULE, [ChildState], []) of
+ {ok, Pid} when S#state.parent_pid =/= self() ->
+ unlink(Pid);
+ _ ->
+ ignore
+ end;
+ false ->
+ ignore
+ end,
+ {noreply, S};
+ Int when is_integer(Int), Int > $0, Int =< $9 ->
+ case catch lists:nth(Int-$0, S#state.filters) of
+ F when is_record(F, filter) ->
+ ChildState= S#state{active_filter = F#filter.name},
+ case wx_object:start_link(?MODULE, [ChildState], []) of
+ {ok, Pid} when S#state.parent_pid =/= self() ->
+ unlink(Pid);
+ _ ->
+ ignore
+ end;
+ {'EXIT', _} ->
+ ignore
+ end,
+ {noreply, S};
+
+ _ ->
+ io:format("~p: ignored: ~p~n", [?MODULE, KeyCode]),
+ {noreply, S}
+ end;
+handle_event(#wx{event = #wxClose{}}, S) ->
+ opt_unlink(S#state.parent_pid),
+ {stop, shutdown, S};
+handle_event(#wx{event = #wxSize{size = {W, H}}}, S) ->
+ S2 = S#state{width = W, height = H},
+ {noreply, S2};
+handle_event(Wx = #wx{}, S) ->
+ io:format("~p got an unexpected event: ~p\n", [self(), Wx]),
+ {noreply, S}.
+
+%%----------------------------------------------------------------------
+%% Func: handle_info/2
+%% Returns: {noreply, State} |
+%% {noreply, State, Timeout} |
+%% {stop, Reason, State} (terminate/2 is called)
+%%----------------------------------------------------------------------
+
+handle_info({stop, _From}, S) ->
+ wxFrame:destroy(S#state.frame),
+ opt_unlink(S#state.parent_pid),
+ {stop, shutdown, S};
+handle_info({'EXIT', Pid, Reason}, S) ->
+ if
+ Pid =:= S#state.parent_pid ->
+ wxFrame:destroy(S#state.frame),
+ opt_unlink(S#state.parent_pid),
+ {stop, Reason, S};
+ true ->
+ {noreply, S}
+ end;
+handle_info(Info, S) ->
+ ok = error_logger:format("~p(~p): handle_info(~p, ~p)~n",
+ [?MODULE, self(), Info, S]),
+ {noreply, S}.
+
+%%----------------------------------------------------------------------
+%% Func: terminate/2
+%% Purpose: Shutdown the server
+%% Returns: any (ignored by gen_server)
+%%----------------------------------------------------------------------
+
+terminate(_Reason, _S) ->
+ ignore.
+
+%%----------------------------------------------------------------------
+%% Func: code_change/3
+%% Purpose: Convert process state when code is changed
+%% Returns: {ok, NewState}
+%%----------------------------------------------------------------------
+
+code_change(_OldVsn, S, _Extra) ->
+ {ok, S}.
+
+%%%----------------------------------------------------------------------
+%%% Handle graphics
+%%%----------------------------------------------------------------------
+
+opt_unlink(Pid) ->
+ if
+ Pid =:= undefined ->
+ ignore;
+ true ->
+ unlink(Pid)
+ end.
+
+create_window(S) ->
+ H = S#state.height,
+ W = S#state.width,
+ Name = S#state.active_filter,
+ Title = lists:concat([?MODULE, " (filter: ", Name, ")"]),
+ WinOpt = [{size, {W,H}}],
+ Frame = wxFrame:new(wx:null(), ?wxID_ANY, Title, WinOpt),
+ wxFrame:createStatusBar(Frame),
+
+ Panel = wxPanel:new(Frame, []),
+ Bar = wxMenuBar:new(),
+ wxFrame:setMenuBar(Frame,Bar),
+ create_file_menu(Bar),
+ Editor = wxTextCtrl:new(Panel, ?wxID_ANY, [{style, 0
+ bor ?wxDEFAULT
+ bor ?wxTE_MULTILINE
+ bor ?wxTE_READONLY
+ bor ?wxTE_DONTWRAP}]),
+ Font = wxFont:new(10, ?wxFONTFAMILY_TELETYPE, ?wxNORMAL, ?wxNORMAL,[]),
+ TextAttr = wxTextAttr:new(?wxBLACK, [{font, Font}]),
+ wxTextCtrl:setDefaultStyle(Editor, TextAttr),
+ Sizer = wxBoxSizer:new(?wxHORIZONTAL),
+ wxSizer:add(Sizer, Editor, [{flag, ?wxEXPAND}, {proportion, 1}]),
+ FilteredEvent = config_editor(Editor, S),
+ S2 = S#state{win = Frame, panel = Panel, filtered_event = FilteredEvent},
+ HideData = create_hide_menu(Bar, S2),
+ SearchData = create_search_menu(Bar, S2),
+ FilterData = create_filter_menu(Bar, S#state.filters),
+ wxFrame:connect(Frame, command_menu_selected, []),
+ wxFrame:connect(Frame, key_up),
+ wxFrame:connect(Frame, close_window, [{skip,true}]),
+ wxFrame:setFocus(Frame),
+ wxPanel:setSizer(Panel, Sizer),
+ wxFrame:show(Frame),
+ S2#state{menu_data = HideData++SearchData++FilterData, editor = Editor, frame = Frame}.
+
+menuitem(Menu, Id, Text, UserData) ->
+ Item = wxMenu:append(Menu, Id, Text),
+ {wxMenuItem:getId(Item), UserData}.
+
+create_file_menu(Bar) ->
+ Menu = wxMenu:new([]),
+ wxMenu:append(Menu, ?wxID_SAVE, "Save"),
+ wxMenu:append(Menu, ?wxID_PRINT,"Print"),
+ wxMenu:appendSeparator(Menu),
+ wxMenu:append(Menu, ?wxID_EXIT, "Close"),
+ wxMenuBar:append(Bar, Menu, "File").
+
+create_filter_menu(Bar, Filters) ->
+ Menu = wxMenu:new([]),
+ wxMenuItem:enable(wxMenu:append(Menu, ?wxID_ANY, "Select Filter"), [{enable, false}]),
+ wxMenu:appendSeparator(Menu),
+ Item = fun(F, {N,Acc}) when F#filter.name =:= ?DEFAULT_FILTER_NAME->
+ Label = lists:concat([pad_string(F#filter.name, 20, $\ , right), "(0)"]),
+ MenuItem = menuitem(Menu, ?wxID_ANY, Label, F),
+ {N + 1, [MenuItem|Acc]};
+ (F, {N, Acc}) ->
+ Name = F#filter.name,
+ Label = lists:concat([pad_string(Name, 20, $\ , right), "(", N, ")"]),
+ MenuItem = menuitem(Menu, ?wxID_ANY, Label, F),
+ {N + 1, [MenuItem|Acc]}
+ end,
+ Filters2 = lists:keysort(#filter.name, Filters),
+ {_,MenuData} = lists:foldl(Item, {1, []}, Filters2),
+ wxMenuBar:append(Bar, Menu, "Filters"),
+ MenuData.
+
+create_hide_menu(Bar, S) ->
+ Menu = wxMenu:new([]),
+ E = S#state.filtered_event,
+ From = E#event.from,
+ To = E#event.to,
+ MenuData =
+ if
+ S#state.viewer_pid =:= undefined ->
+ ignore;
+ From =:= To ->
+ wxMenuItem:enable(wxMenu:append(Menu, ?wxID_ANY, "Hide actor in Viewer "),
+ [{enable, false}]),
+ wxMenu:appendSeparator(Menu),
+ Hide = menuitem(Menu, ?wxID_ANY, "From=To (f|t|b)", {hide, [From]}),
+ wxMenu:appendSeparator(Menu),
+ wxMenuItem:enable(wxMenu:append(Menu, ?wxID_ANY, "Show actor in Viewer "),
+ [{enable, false}]),
+ wxMenu:appendSeparator(Menu),
+ Show = menuitem(Menu, ?wxID_ANY, "From=To (F|T|B)", {show, [From]}),
+ [Show,Hide];
+ true ->
+ wxMenuItem:enable(wxMenu:append(Menu, ?wxID_ANY, "Hide actor in Viewer "),
+ [{enable, false}]),
+ wxMenu:appendSeparator(Menu),
+ Hide = [menuitem(Menu, ?wxID_ANY, "From (f)", {hide, [From]}),
+ menuitem(Menu, ?wxID_ANY, "To (t)", {hide, [To]}),
+ menuitem(Menu, ?wxID_ANY, "Both (b)", {hide, [From, To]})],
+ wxMenu:appendSeparator(Menu),
+ wxMenuItem:enable(wxMenu:append(Menu, ?wxID_ANY, "Show actor in Viewer "),
+ [{enable, false}]),
+ wxMenu:appendSeparator(Menu),
+ Show = [menuitem(Menu, ?wxID_ANY, "From (F)", {show, [From]}),
+ menuitem(Menu, ?wxID_ANY, "To (T)", {show, [To]}),
+ menuitem(Menu, ?wxID_ANY, "Both (B)", {show, [From, To]})],
+ Show++Hide
+ end,
+ wxMenuBar:append(Bar, Menu, "Hide"),
+ MenuData.
+
+create_search_menu(Bar, S) ->
+ Menu = wxMenu:new([]),
+ E = S#state.filtered_event,
+ From = E#event.from,
+ To = E#event.to,
+ wxMenuItem:enable(wxMenu:append(Menu, ?wxID_ANY, "Search in Viewer "),
+ [{enable, false}]),
+ wxMenu:appendSeparator(Menu),
+ MenuData =
+ if
+ S#state.viewer_pid =:= undefined ->
+ [menuitem(Menu, ?wxID_ANY, "Abort search. Display all (a)", {mode, all})];
+ From =:= To ->
+ Key = et_collector:make_key(S#state.event_order, E),
+ ModeS = {search_actors, forward, Key, [From]},
+ ModeR = {search_actors, reverse, Key, [From]},
+ [menuitem(Menu, ?wxID_ANY, "Forward from this event (s)", {mode, ModeS}),
+ menuitem(Menu, ?wxID_ANY, "Reverse from this event (r)", {mode, ModeR}),
+ menuitem(Menu, ?wxID_ANY, "Abort search. Display all (a)", {mode, all})];
+ true ->
+ Key = et_collector:make_key(S#state.event_order, E),
+ ModeS = {search_actors, forward, Key, [From, To]},
+ ModeR = {search_actors, reverse, Key, [From, To]},
+ [menuitem(Menu, ?wxID_ANY, "Forward from this event (s)", {mode, ModeS}),
+ menuitem(Menu, ?wxID_ANY, "Reverse from this event (r)", {mode, ModeR}),
+ menuitem(Menu, ?wxID_ANY, "Abort search. Display all (a)", {mode, all})]
+ end,
+ wxMenuBar:append(Bar, Menu, "Search"),
+ MenuData.
+
+config_editor(Editor, S) ->
+ Event = S#state.event,
+ Name = S#state.active_filter,
+ {value, F} = lists:keysearch(Name, #filter.name, S#state.filters),
+ FilterFun = F#filter.function,
+ case catch FilterFun(Event) of
+ true ->
+ do_config_editor(Editor, Event, lightblue, S#state.event_order);
+ {true, Event2} when is_record(Event2, event) ->
+ do_config_editor(Editor, Event2, lightblue, S#state.event_order);
+ false ->
+ do_config_editor(Editor, Event, red, S#state.event_order);
+ Bad ->
+ Contents = {bad_filter, Name, Bad},
+ BadEvent = Event#event{contents = Contents},
+ do_config_editor(Editor, BadEvent, red, S#state.event_order)
+ end.
+
+do_config_editor(Editor, Event, _Colour, TsKey) ->
+ String = event_to_string(Event, TsKey),
+ wxTextCtrl:appendText(Editor, String),
+ Event.
+
+%%%----------------------------------------------------------------------
+%%% String handling
+%%%----------------------------------------------------------------------
+
+term_to_string(Term) ->
+ case catch io_lib:format("~s", [Term]) of
+ {'EXIT', _} -> io_lib:format("~p", [Term]);
+ GoodString -> GoodString
+ end.
+
+now_to_string({Mega, Sec, Micro} = Now)
+ when is_integer(Mega), is_integer(Sec), is_integer(Micro) ->
+ {{Y, Mo, D}, {H, Mi, S}} = calendar:now_to_universal_time(Now),
+ lists:concat([Y, "-",
+ pad_string(Mo, 2, $0, left), "-",
+ pad_string(D, 2, $0, left),
+ "T",
+ pad_string(H, 2, $0, left), ":",
+ pad_string(Mi, 2, $0, left), ":",
+ pad_string(S, 2, $0, left), ".",
+ Micro]);
+now_to_string(Other) ->
+ term_to_string(Other).
+
+event_to_string(Event, TsKey) ->
+ ReportedTs = Event#event.trace_ts,
+ ParsedTs = Event#event.event_ts,
+ Deep =
+ ["DETAIL LEVEL: ", term_to_string(Event#event.detail_level),
+ "\nLABEL: ", term_to_string(Event#event.label),
+ case Event#event.from =:= Event#event.to of
+ true ->
+ ["\nACTOR: ", term_to_string(Event#event.from)];
+ false ->
+ ["\nFROM: ", term_to_string(Event#event.from),
+ "\nTO: ", term_to_string(Event#event.to)]
+ end,
+ case ReportedTs =:= ParsedTs of
+ true ->
+ ["\nPARSED: ", now_to_string(ParsedTs)];
+ false ->
+ case TsKey of
+ trace_ts ->
+ ["\nTRACE_TS: ", now_to_string(ReportedTs),
+ "\nEVENT_TS: ", now_to_string(ParsedTs)];
+ event_ts ->
+ ["\nEVENT_TS: ", now_to_string(ParsedTs),
+ "\nTRACE_TS: ", now_to_string(ReportedTs)]
+ end
+ end,
+ "\nCONTENTS:\n\n", term_to_string(Event#event.contents)],
+ lists:flatten(Deep).
+
+pad_string(Int, MinLen, Char, Dir) when is_integer(Int) ->
+ pad_string(integer_to_list(Int), MinLen, Char, Dir);
+pad_string(Atom, MinLen, Char, Dir) when is_atom(Atom) ->
+ pad_string(atom_to_list(Atom), MinLen, Char, Dir);
+pad_string(String, MinLen, Char, Dir) when is_integer(MinLen), MinLen >= 0 ->
+ Len = length(String),
+ case {Len >= MinLen, Dir} of
+ {true, _} ->
+ String;
+ {false, right} ->
+ String ++ lists:duplicate(MinLen - Len, Char);
+ {false, left} ->
+ lists:duplicate(MinLen - Len, Char) ++ String
+ end.
+
+send_viewer_event(S, Event) ->
+ case S#state.viewer_pid of
+ ViewerPid when is_pid(ViewerPid) ->
+ ViewerPid ! {et, Event};
+ undefined ->
+ ignore
+ end.
+
+select_file(Frame, Message, DefaultFile, Style) ->
+ Dialog = wxFileDialog:new(Frame,
+ [{message, Message},
+ {defaultDir, filename:dirname(DefaultFile)},
+ {defaultFile, filename:basename(DefaultFile)},
+ {style, Style}]),
+ Choice =
+ case wxMessageDialog:showModal(Dialog) of
+ ?wxID_CANCEL -> cancel;
+ ?wxID_OK -> {ok, wxFileDialog:getPath(Dialog)}
+ end,
+ wxFileDialog:destroy(Dialog),
+ Choice.
diff --git a/lib/et/src/et_wx_viewer.erl b/lib/et/src/et_wx_viewer.erl
new file mode 100644
index 0000000000..5cd3563aed
--- /dev/null
+++ b/lib/et/src/et_wx_viewer.erl
@@ -0,0 +1,2122 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2000-2009. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%
+%%----------------------------------------------------------------------
+%% Purpose: Displays a sequence chart for trace events (messages/actions)
+%%----------------------------------------------------------------------
+
+-module(et_wx_viewer).
+
+-behaviour(gen_server).
+
+%% External exports
+-export([start_link/1]).
+
+%% gen_server callbacks
+-export([init/1, terminate/2, code_change/3,
+ handle_call/3, handle_cast/2, handle_info/2]).
+
+-include("../include/et.hrl").
+-include("et_internal.hrl").
+-include_lib("wx/include/wx.hrl").
+
+-define(unknown, "UNKNOWN").
+-define(initial_x, 10).
+-define(incr_x, 60).
+-define(initial_y, 15).
+-define(incr_y, 15).
+
+-record(state,
+ {parent_pid, % Pid of parent process
+ auto_shutdown, % Shutdown collector when last subscriber dies
+ collector_pid, % Pid of collector process
+ event_order, % Field to be used as primary key
+ trace_pattern, % Collector trace pattern
+ active_filter, % Name of the active filter
+ filters, % List of possible filters
+ filter_menu,
+ pending_actor, % Pending actor - move or toggle
+ first_event, % Key of first event (regardless of visibility)
+ last_event, % Key of last event (regardless of visibility)
+ events_per_page, % Maximum number of shown events
+ events, % Queue containg all event keys (regardless of visibility)
+ n_events, % Number of events available in the collector
+ max_actors, % Maximum number of shown actors
+ actors, % List of known actors
+ refresh_needed, % Refresh is needed in order to show all actors
+ detail_level, % Show only events with lesser detail level
+ hide_actions, % Hide/show events where to == from actor (bool)
+ hide_actors, % Hide/show events with unknown actor (bool)
+ display_all,
+ context, % display | print
+ title, % GUI: Window title
+ frame, % GUI: Window object
+ menubar, % GUI: Menu bar object
+ packer, % GUI: Packer object
+ width, % GUI: Window width
+ height, % GUI: Window height
+ scale, % GUI: Scaling factor on canvas
+ normal_font, % GUI: Font to be used on text labels
+ bold_font, % GUI: Font to be used on text labels
+ pen,
+ brush,
+ print_psdd,
+ print_d,
+ canvas_width, % GUI: Canvas width
+ canvas_height, % GUI: Canvas height
+ canvas, % GUI: Canvas object
+ canvas_sizer,
+ scroll_bar, % GUI: Canvas scroll bar
+ y_pos, % GUI: Current y position on canvas
+ menu_data,
+ checkbox_data,
+ hide_actions_box,
+ hide_actors_box,
+ status_bar,
+ event_file,
+ wx_debug, % GUI: WX debug level
+ trap_exit}). % trap_exit process flag
+
+
+-record(actor, {name, string, include, exclude}).
+-record(e, {pos, key, event}).
+
+%%%----------------------------------------------------------------------
+%%% Client side
+%%%----------------------------------------------------------------------
+
+start_link(Options) ->
+ case parse_opt(Options, default_state(), []) of
+ {ok, S, CollectorOpt} ->
+ case S#state.collector_pid of
+ CollectorPid when is_pid(CollectorPid) ->
+ case gen_server:start_link(?MODULE, [S], []) of
+ {ok, Pid} when S#state.parent_pid =/= self() ->
+ unlink(Pid),
+ {ok, Pid};
+ Other ->
+ Other
+ end;
+ undefined ->
+ case et_collector:start_link([{auto_shutdown, true} | CollectorOpt]) of
+ {ok, CollectorPid} ->
+ S2 = S#state{collector_pid = CollectorPid},
+ case gen_server:start_link(?MODULE, [S2], []) of
+ {ok, Pid} when S#state.parent_pid =/= self() ->
+ unlink(Pid),
+ {ok, Pid};
+ Other ->
+ Other
+ end;
+ {error, Reason} ->
+ {error, {et_collector, Reason}}
+ end
+ end;
+ {error, Reason} ->
+ {error, Reason}
+ end.
+
+default_state() ->
+ #state{parent_pid = self(),
+ collector_pid = undefined,
+ n_events = 0,
+ detail_level = ?detail_level_max,
+ active_filter = ?DEFAULT_FILTER_NAME,
+ filters = [?DEFAULT_FILTER],
+ event_order = trace_ts,
+ events_per_page = 100,
+ first_event = first,
+ last_event = first,
+ events = queue_new(),
+ max_actors = 5,
+ actors = [create_actor(?unknown)],
+ pending_actor = ?unknown,
+ hide_actions = false,
+ hide_actors = false,
+ display_all = true,
+ context = display,
+ refresh_needed = false,
+ scale = 2,
+ canvas_height = 0,
+ canvas_width = 0,
+ width = 800,
+ height = 600,
+ event_file = filename:absname("et_viewer.etrace"),
+ wx_debug = 0,
+ trap_exit = true}.
+
+parse_opt([], S, CollectorOpt) ->
+ {ok, S, [{parent_pid, S#state.parent_pid} | CollectorOpt]};
+parse_opt([H | T], S, CollectorOpt) ->
+ case H of
+ {parent_pid, Parent} when is_pid(Parent); Parent =:= undefined ->
+ parse_opt(T, S#state{parent_pid = Parent}, CollectorOpt);
+ {wx_debug, Level} ->
+ parse_opt(T, S#state{wx_debug = Level}, CollectorOpt);
+ {trap_exit, Bool} when Bool =:= true; Bool =:= false->
+ parse_opt(T, S#state{trap_exit = Bool}, CollectorOpt);
+ {title, Title} ->
+ parse_opt(T, S#state{title = name_to_string(Title)}, CollectorOpt);
+ {detail_level, Level} when is_integer(Level),
+ Level >= ?detail_level_min,
+ Level =< ?detail_level_max ->
+ parse_opt(T, S#state{detail_level = Level}, CollectorOpt);
+ {detail_level, max} ->
+ parse_opt(T, S#state{detail_level = ?detail_level_max}, CollectorOpt);
+ {detail_level, min} ->
+ parse_opt(T, S#state{detail_level = ?detail_level_min}, CollectorOpt);
+ {scale, Scale} when is_integer(Scale), Scale > 0 ->
+ parse_opt(T, S#state{scale = Scale}, CollectorOpt);
+ {width, W} when is_integer(W), W > 0 ->
+ parse_opt(T, S#state{width = W, canvas_width = W}, CollectorOpt);
+ {height, WH} when is_integer(WH), WH > 0 ->
+ parse_opt(T, S#state{height = WH, canvas_height = WH}, CollectorOpt);
+ {collector_pid, Pid} when is_pid(Pid) ->
+ parse_opt(T, S#state{collector_pid = Pid}, CollectorOpt);
+ {collector_pid, undefined} ->
+ parse_opt(T, S#state{collector_pid = undefined}, CollectorOpt);
+ {active_filter, Name} when is_atom(Name) ->
+ parse_opt(T, S#state{active_filter = Name}, CollectorOpt);
+ {event_order, trace_ts} -> %% BUGBUG: Verify event_order with collector
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S#state{event_order = trace_ts}, CollectorOpt2);
+ {event_order, event_ts} -> %% BUGBUG: Verify event_order with collector
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S#state{event_order = event_ts}, CollectorOpt2);
+ {trace_port, _Port} ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S, CollectorOpt2);
+ {trace_max_queue, _Queue} ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S, CollectorOpt2);
+ {trace_pattern, _Pattern} ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S, CollectorOpt2);
+ {trace_global, _Boolean} ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S, CollectorOpt2);
+ {trace_client, _Client} ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S, CollectorOpt2);
+ {dict_insert, {filter, Name}, Fun} ->
+ if
+ is_atom(Name), is_function(Fun) ->
+ F = #filter{name = Name, function = Fun},
+ Filters = lists:keydelete(Name, #filter.name, S#state.filters),
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S#state{filters = Filters ++ [F]}, CollectorOpt2);
+ true ->
+ {error, {bad_option, H}}
+ end;
+ {dict_insert, {subscriber, Pid}, _Val} ->
+ if
+ is_pid(Pid) ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S, CollectorOpt2);
+ true ->
+ {error, {bad_option, H}}
+ end;
+ {dict_insert, _Key, _Val} ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S, CollectorOpt2);
+ {dict_delete, {filter, Name}} ->
+ Filters = lists:keydelete(Name, #filter.name, S#state.filters),
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S#state{filters = Filters}, CollectorOpt2);
+ {dict_delete, _Key} ->
+ CollectorOpt2 = [H | CollectorOpt],
+ parse_opt(T, S, CollectorOpt2);
+ {max_events, _Max} ->
+ %% Kept for backward compatibility
+ parse_opt(T, S, CollectorOpt);
+ {max_actors, Max} when is_integer(Max), Max >= 0 ->
+ parse_opt(T, S#state{max_actors = Max}, CollectorOpt);
+ {max_actors, Max} when Max =:= infinity ->
+ parse_opt(T, S#state{max_actors = Max}, CollectorOpt);
+ {actors, ActorNames} when is_list(ActorNames) ->
+ ActorNames2 =
+ case lists:member(?unknown, ActorNames) of
+ false -> [?unknown | ActorNames];
+ true -> ActorNames
+ end,
+ Actors = [create_actor(Name) || Name <- ActorNames2],
+ parse_opt(T, S#state{actors = Actors}, CollectorOpt);
+ {include, ActorNames} when is_list(ActorNames) ->
+ Actors = [opt_create_actor(Name, include, S#state.actors) || Name <- ActorNames],
+ parse_opt(T, S#state{actors = Actors}, CollectorOpt);
+ {exclude, ActorNames} when is_list(ActorNames) ->
+ Actors = [opt_create_actor(Name, exclude, S#state.actors) || Name <- ActorNames],
+ parse_opt(T, S#state{actors = Actors}, CollectorOpt);
+ {first_event, _FirstKey} ->
+ %% NYI
+ parse_opt(T, S, CollectorOpt);
+ {hide_actors, Bool} when Bool =:= true; Bool =:= false ->
+ parse_opt(T, S#state{hide_actors = Bool}, CollectorOpt);
+ {hide_actions, Bool} when Bool =:= true; Bool =:= false ->
+ parse_opt(T, S#state{hide_actions = Bool}, CollectorOpt);
+ {hide_unknown, Bool} when Bool =:= true; Bool =:= false ->
+ %% Kept for backward compatibility
+ parse_opt(T, S, CollectorOpt);
+ {display_mode, _Mode} ->
+ %% Kept for backward compatibility
+ parse_opt(T, S, CollectorOpt);
+ Bad ->
+ {error, {bad_option, Bad}}
+ end;
+parse_opt(BadList, _S, _CollectorOpt) ->
+ {error, {bad_option_list, BadList}}.
+
+do_dict_insert({filter, Name}, Fun, S) when is_atom(Name), is_function(Fun) ->
+ F = #filter{name = Name, function = Fun},
+ Filters = lists:keydelete(Name, #filter.name, S#state.filters),
+ Filters2 = lists:keysort(#filter.name, [F | Filters]),
+ S2 = create_filter_menu(S, S#state.active_filter, Filters2),
+ S2#state{filters = Filters2};
+do_dict_insert(_Key, _Val, S) ->
+ %%ok = error_logger:format("~p(~p): handle_info({et, {dict_insert, ~p, ~p}})~n",
+ %% [?MODULE, self(), Key, Val]),
+ S.
+
+do_dict_delete({filter, Name}, S) when is_atom(Name), Name =/= S#state.active_filter ->
+ Filters = lists:keydelete(Name, #filter.name, S#state.filters),
+ S2 = create_filter_menu(S, S#state.active_filter, Filters),
+ S2#state{filters = Filters};
+do_dict_delete(_Key, S) ->
+ %% ok = error_logger:format("~p(~p): handle_info({et, {dict_delete, ~p}})~n",
+ %% [?MODULE, self(), Key]),
+ S.
+
+%%%----------------------------------------------------------------------
+%%% Callback functions from gen_server
+%%%----------------------------------------------------------------------
+
+%%----------------------------------------------------------------------
+%% Func: init/1
+%% Returns: {ok, State} |
+%% {ok, State, Timeout} |
+%% ignore |
+%% {stop, Reason}
+%%----------------------------------------------------------------------
+
+init([S]) when is_record(S, state) ->
+ process_flag(trap_exit, S#state.trap_exit),
+ case S#state.parent_pid of
+ undefined -> ok;
+ ParentPid -> link(ParentPid)
+ end,
+ wx:new(),
+ wx:debug(S#state.wx_debug),
+ et_collector:dict_insert(S#state.collector_pid,
+ {subscriber, self()},
+ ?MODULE),
+ S2 = create_main_window(S),
+ EventsPerPage = events_per_page(S2, S2#state.height),
+ S3 = revert_main_window(S2#state{events_per_page = EventsPerPage}),
+ Timeout = timeout(S3),
+ {ok, S3, Timeout}.
+
+%%----------------------------------------------------------------------
+%% Func: handle_call/3
+%% Returns: {reply, Reply, State} |
+%% {reply, Reply, State, Timeout} |
+%% {noreply, State} |
+%% {noreply, State, Timeout} |
+%% {stop, Reason, Reply, State} | (terminate/2 is called)
+%% {stop, Reason, State} (terminate/2 is called)
+%%----------------------------------------------------------------------
+
+handle_call(get_collector_pid, _From, S) ->
+ Reply = S#state.collector_pid,
+ reply(Reply, S);
+handle_call(stop, _From, S) ->
+ wxFrame:destroy(S#state.frame),
+ opt_unlink(S#state.parent_pid),
+ {stop, shutdown, ok, S};
+handle_call({open_event, N}, _From, S) when is_integer(N), N > 0->
+ Reply = do_open_event(S, N),
+ reply(Reply, S);
+handle_call(Request, From, S) ->
+ ok = error_logger:format("~p(~p): handle_call(~p, ~p, ~p)~n",
+ [?MODULE, self(), Request, From, S]),
+ Reply = {error, {bad_request, Request}},
+ reply(Reply, S).
+
+%%----------------------------------------------------------------------
+%% Func: handle_cast/2
+%% Returns: {noreply, State} |
+%% {noreply, State, Timeout} |
+%% {stop, Reason, State} (terminate/2 is called)
+%%----------------------------------------------------------------------
+
+handle_cast(Msg, S) ->
+ ok = error_logger:format("~p(~p): handle_cast(~p, ~p)~n",
+ [?MODULE, self(), Msg, S]),
+ noreply(S).
+
+
+%%----------------------------------------------------------------------
+%% Func: handle_info/2
+%% Returns: {noreply, State} |
+%% {noreply, State, Timeout} |
+%% {stop, Reason, State} (terminate/2 is called)
+%%----------------------------------------------------------------------
+
+handle_info({et, {more_events, N}}, S) ->
+ %% io:format("more events: ~p \n", [N]),
+ S4 =
+ if
+ N =:= S#state.n_events ->
+ S;
+ true ->
+ Missing = S#state.events_per_page - queue_length(S#state.events),
+ if
+ Missing =:= 0 ->
+ update_scroll_bar(S#state{n_events = N});
+ Missing > 0 ->
+ OldEvents = queue_to_list(S#state.events),
+ {S2, NewEvents} =
+ collect_more_events(S#state{n_events = N},
+ S#state.last_event,
+ Missing),
+ S3 = replace_events(S2, OldEvents ++ NewEvents),
+ refresh_main_window(S3)
+ end
+ end,
+ noreply(S4);
+handle_info({et, {insert_actors, ActorNames}}, S) when is_list(ActorNames) ->
+ Fun = fun(N, Actors) ->
+ case lists:keymember(N, #actor.name, Actors) of
+ true -> Actors;
+ false -> Actors ++ [create_actor(N)]
+ end
+ end,
+ Actors = lists:foldl(Fun, S#state.actors, ActorNames),
+ S2 = refresh_main_window(S#state{actors = Actors}),
+ noreply(S2);
+handle_info({et, {delete_actors, ActorNames}}, S) when is_list(ActorNames)->
+ Fun = fun(N, Actors) when N =:= ?unknown ->
+ Actors;
+ (N, Actors) ->
+ lists:keydelete(N, #actor.name, Actors)
+ end,
+ Actors = lists:foldl(Fun, S#state.actors, ActorNames),
+ S2 = refresh_main_window(S#state{actors = Actors}),
+ noreply(S2);
+handle_info({et, {dict_insert, Key, Val}}, S) ->
+ S2 = do_dict_insert(Key, Val, S),
+ noreply(S2);
+handle_info({et, {dict_delete, Key}}, S) ->
+ S2 = do_dict_delete(Key, S),
+ noreply(S2);
+handle_info({et, first}, S) ->
+ S2 = scroll_first(S),
+ noreply(S2);
+handle_info({et, prev}, S) ->
+ S2 = scroll_prev(S),
+ noreply(S2);
+handle_info({et, next}, S) ->
+ S2 = scroll_next(S),
+ noreply(S2);
+handle_info({et, last}, S) ->
+ S2 = scroll_last(S),
+ noreply(S2);
+handle_info({et, refresh}, S) ->
+ S2 = revert_main_window(S),
+ noreply(S2);
+handle_info({et, {display_mode, _Mode}}, S) ->
+ %% Kept for backward compatibility
+ noreply(S);
+handle_info({et, close}, S) ->
+ wxFrame:destroy(S#state.frame),
+ opt_unlink(S#state.parent_pid),
+ {stop, shutdown, S};
+handle_info(#wx{id=?wxID_HELP}, S) ->
+ HelpString =
+ "Vertical scroll:\n"
+ "\tUse mouse wheel and up/down arrows to scroll little.\n"
+ "\tUse page up/down and home/end buttons to scroll more.\n\n"
+ "Display details of an event:\n"
+ "\tLeft mouse click on the event label or the arrow.\n\n"
+ "Highlight actor (toggle):\n"
+ "\tLeft mouse click on the actor name tag.\n"
+ "\tThe actor name will be enclosed in square brackets [].\n\n"
+ "Exclude actor (toggle):\n"
+ "\tRight mouse click on the actor name tag.\n"
+ "\tThe actor name will be enclosed in round brackets ().\n\n"
+ "Move actor:\n"
+ "\tLeft mouse button drag and drop on actor name tag.\n\n"
+ "Display all (reset settings for hidden and/or highlighted actors):\n"
+ "\tPress the 'a' button.",
+ Dialog =
+ wxMessageDialog:new(S#state.frame, HelpString,
+ [{style, 0
+ bor ?wxOK
+ bor ?wxICON_INFORMATION
+ bor ?wxSTAY_ON_TOP},
+ {caption, "Help"}]),
+ wxMessageDialog:showModal(Dialog),
+ noreply(S);
+handle_info(#wx{id=Id, event = #wxCommand{type = command_menu_selected}}, S=#state{filter_menu = {_,Data}}) ->
+ CollectorPid = S#state.collector_pid,
+ case get_value(Id, 3, S#state.menu_data) of
+ close ->
+ wxFrame:destroy(S#state.frame),
+ opt_unlink(S#state.parent_pid),
+ {stop, shutdown, S};
+ up ->
+ S2 = scroll_up(S),
+ noreply(S2);
+ down ->
+ S2 = scroll_down(S),
+ noreply(S2);
+ first ->
+ S2 = scroll_first(S),
+ noreply(S2);
+ prev ->
+ S2 = scroll_prev(S),
+ noreply(S2);
+ next ->
+ S2 = scroll_next(S),
+ noreply(S2);
+ last ->
+ S2 = scroll_last(S),
+ noreply(S2);
+ refresh ->
+ S2 = revert_main_window(S),
+ noreply(S2);
+ {display_mode, _Mode} ->
+ %% Kept for backward compatibility
+ noreply(S);
+ display_all ->
+ S2 = display_all(S),
+ noreply(S2);
+ close_all ->
+ close_all(S);
+ close_all_others ->
+ close_all_others(S);
+ first_all ->
+ et_collector:multicast(CollectorPid, first),
+ noreply(S);
+ prev_all ->
+ et_collector:multicast(CollectorPid, prev),
+ noreply(S);
+ next_all ->
+ et_collector:multicast(CollectorPid, next),
+ noreply(S);
+ last_all ->
+ et_collector:multicast(CollectorPid, last),
+ noreply(S);
+ refresh_all ->
+ et_collector:multicast(CollectorPid, refresh),
+ noreply(S);
+ clear_all ->
+ et_collector:clear_table(CollectorPid),
+ et_collector:multicast(CollectorPid, refresh),
+ noreply(S);
+ load_all ->
+ Style = ?wxFD_OPEN bor ?wxFD_OVERWRITE_PROMPT,
+ Msg = "Select a file to load events from",
+ S2 =
+ case select_file(S#state.frame, Msg, S#state.event_file, Style) of
+ {ok, NewFile} ->
+ et_collector:start_trace_client(CollectorPid, event_file, NewFile),
+ S#state{event_file = NewFile};
+ cancel ->
+ S
+ end,
+ noreply(S2);
+ save_all ->
+ Style = ?wxFD_SAVE bor ?wxFD_OVERWRITE_PROMPT,
+ Msg = "Select a file to save events to",
+ S2 =
+ case select_file(S#state.frame, Msg, S#state.event_file, Style) of
+ {ok, NewFile} ->
+ et_collector:save_event_file(CollectorPid, NewFile, [existing, write, keep]),
+ S#state{event_file = NewFile};
+ cancel ->
+ S
+ end,
+ noreply(S2);
+ print_setup ->
+ S2 = print_setup(S),
+ noreply(S2);
+ print_one_page = Scope ->
+ S2 = print(S, Scope),
+ noreply(S2);
+ print_all_pages = Scope ->
+ S2 = print(S, Scope),
+ noreply(S2);
+ {open_viewer, Scale} ->
+ Actors = [A#actor.name || A <- S#state.actors],
+ open_viewer(Scale, S#state.active_filter, Actors, S),
+ noreply(S);
+
+ _ ->
+ case get_value(Id, 3, Data) of
+ {data, F=#filter{}, Scale} ->
+ open_viewer(S#state.scale+Scale, F#filter.name, [?unknown], S);
+ {data, F=#filter{}} ->
+ open_viewer(S#state.scale, F#filter.name, [?unknown], S);
+ false ->
+ ok
+ end,
+ noreply(S)
+ end;
+handle_info(#wx{event = #wxCommand{type = command_slider_updated, commandInt = Level}}, S) ->
+ if
+ Level >= ?detail_level_min,
+ Level =< ?detail_level_max ->
+ S2 = S#state{detail_level = Level},
+ S3 = revert_main_window(S2),
+ noreply(S3);
+
+ true ->
+ noreply(S)
+ end;
+handle_info(#wx{id = Id, event = #wxCommand{type = command_checkbox_clicked, commandInt = Int}}, S) ->
+ case get_value(Id, 2, S#state.checkbox_data) of
+ hide_actions ->
+ case Int of
+ 1 ->
+ S2 = S#state{hide_actions = true},
+ S3 = revert_main_window(S2),
+ noreply(S3);
+ 0 ->
+ S2 = S#state{hide_actions = false},
+ S3 = revert_main_window(S2),
+ noreply(S3)
+ end;
+ hide_actors ->
+ case Int of
+ 1 ->
+ S2 = S#state{hide_actors = true},
+ S3 = revert_main_window(S2),
+ noreply(S3);
+ 0 ->
+ S2 = S#state{hide_actors = false},
+ S3 = revert_main_window(S2),
+ noreply(S3)
+ end;
+ false ->
+ noreply(S)
+ end;
+handle_info(#wx{event = #wxMouse{type = left_down, x = X, y = Y}}, S) ->
+ S3 =
+ case y_to_n(Y, S) of
+ actor ->
+ %% Actor click
+ case S#state.actors of
+ [] ->
+ S;
+ Actors ->
+ N = x_to_n(X, S),
+ A = lists:nth(N, Actors),
+ S#state{pending_actor = A}
+ end;
+ {event, N} ->
+ %% Event click
+ do_open_event(S, N),
+ S
+ end,
+ noreply(S3);
+handle_info(#wx{event = #wxMouse{type = left_up}}, S) when S#state.pending_actor =:= undefined ->
+ noreply(S);
+handle_info(#wx{event = #wxMouse{type = left_up, x = X, y = Y}}, S) ->
+ S3 =
+ case y_to_n(Y, S) of
+ actor ->
+ %% Actor click
+ case S#state.actors of
+ [] ->
+ S;
+ Actors ->
+ N = x_to_n(X, S),
+ A = lists:nth(N, Actors),
+ Pending = S#state.pending_actor,
+ if
+ A#actor.name =:= Pending#actor.name ->
+ %% Toggle include actor
+ A2 = A#actor{include = not A#actor.include},
+ %% io:format("include ~p: ~p -> ~p\n",
+ %% [A#actor.name, A#actor.include, A2#actor.include]),
+ Actors2 = lists:keyreplace(A#actor.name, #actor.name, Actors, A2),
+ DisplayAll = not lists:keymember(true, #actor.include, Actors2),
+ S2 = S#state{actors = Actors2, display_all = DisplayAll},
+ revert_main_window(S2);
+ true ->
+ move_actor(Pending, A, Actors, S)
+ end
+ end;
+ {event, _N} ->
+ %% Event click ignored
+ S
+ end,
+ noreply(S3#state{pending_actor = undefined});
+handle_info(#wx{event = #wxMouse{type = right_up, x = X, y = Y}}, S) ->
+ S3 =
+ case y_to_n(Y, S) of
+ actor ->
+ %% Actor click
+ case S#state.actors of
+ [] ->
+ S;
+ Actors ->
+ %% Toggle exclude actor
+ N = x_to_n(X, S),
+ A = lists:nth(N, Actors),
+ A2 = A#actor{exclude = not A#actor.exclude},
+ Actors2 = lists:keyreplace(A#actor.name, #actor.name, Actors, A2),
+ S2 = S#state{actors = Actors2},
+ revert_main_window(S2)
+ end;
+ {event, _N} ->
+ %% Event click ignored
+ S
+ end,
+ noreply(S3#state{pending_actor = undefined});
+handle_info(#wx{event = #wxKey{keyCode = KeyCode, shiftDown = SD}}, S) ->
+ case KeyCode of
+ $C when SD =:= true ->
+ close_all(S);
+ $c ->
+ close_all_others(S);
+ ?WXK_HOME ->
+ S2 = scroll_first(S),
+ noreply(S2);
+ ?WXK_END ->
+ S2 = scroll_last(S),
+ noreply(S2);
+ ?WXK_UP ->
+ S2 = scroll_up(S),
+ noreply(S2);
+ ?WXK_DOWN ->
+ S2 = scroll_down(S),
+ noreply(S2);
+ ?WXK_PAGEUP ->
+ S2 = scroll_prev(S),
+ noreply(S2);
+ ?WXK_PAGEDOWN ->
+ S2 = scroll_next(S),
+ noreply(S2);
+ $F when SD =:= true ->
+ et_collector:multicast(S#state.collector_pid, first),
+ noreply(S);
+ $F ->
+ S2 = scroll_first(S),
+ noreply(S2);
+ $P when SD =:= true ->
+ et_collector:multicast(S#state.collector_pid, prev),
+ noreply(S);
+ $P ->
+ S2 = scroll_prev(S),
+ noreply(S2);
+ $N when SD =:= true ->
+ et_collector:multicast(S#state.collector_pid, next),
+ noreply(S);
+ $N ->
+ S2 = scroll_next(S),
+ noreply(S2);
+ $L when SD =:= true ->
+ et_collector:multicast(S#state.collector_pid, last),
+ noreply(S);
+ $L ->
+ S2 = scroll_last(S),
+ noreply(S2);
+ $R when SD =:= true ->
+ et_collector:multicast(S#state.collector_pid, refresh),
+ noreply(S);
+ $R ->
+ S2 = revert_main_window(S),
+ noreply(S2);
+ $A ->
+ S2 = display_all(S),
+ noreply(S2);
+ $= ->
+ Scale = S#state.scale,
+ Actors = [A#actor.name || A <- S#state.actors],
+ open_viewer(Scale, S#state.active_filter, Actors, S),
+ noreply(S);
+ Int when Int =:= $+; Int =:= ?WXK_NUMPAD_ADD ->
+ Scale = S#state.scale + 1,
+ Actors = [A#actor.name || A <- S#state.actors],
+ open_viewer(Scale, S#state.active_filter, Actors, S),
+ noreply(S);
+ Int when Int =:= $-; Int =:= ?WXK_NUMPAD_SUBTRACT ->
+ case S#state.scale of
+ 1 ->
+ ignore;
+ Scale ->
+ Actors = [A#actor.name || A <- S#state.actors],
+ open_viewer(Scale - 1, S#state.active_filter, Actors, S)
+ end,
+ noreply(S);
+ $0 ->
+ case lists:keysearch(?DEFAULT_FILTER_NAME, #filter.name, S#state.filters) of
+ {value, F} when is_record(F, filter) ->
+ open_viewer(S#state.scale, F#filter.name, [?unknown], S);
+ false ->
+ ok
+ end,
+ noreply(S);
+ Int when is_integer(Int), Int > $0, Int =< $9 ->
+ case catch lists:nth(Int-$0, S#state.filters) of
+ F when is_record(F, filter) ->
+ open_viewer(S#state.scale, F#filter.name, [?unknown], S);
+ {'EXIT', _} ->
+ ok
+ end,
+ noreply(S);
+
+ _ ->
+ noreply(S)
+ end;
+handle_info(#wx{event = #wxScroll{type = scroll_changed}} = Wx, S) ->
+ get_latest_scroll(Wx),
+ Pos = wxScrollBar:getThumbPosition(S#state.scroll_bar),
+ {_, LineTopY, LineBotY} = calc_y(S),
+ Range = LineBotY - LineTopY,
+ N = round(S#state.n_events * Pos / Range),
+ Diff =
+ case N - event_pos(S) of
+ D when D < 0 -> D - 1;
+ D -> D + 1
+ end,
+ S2 = scroll_changed(S, Diff),
+ noreply(S2);
+handle_info(timeout, S) ->
+ noreply(S);
+handle_info({'EXIT', Pid, Reason}, S) ->
+ if
+ Pid =:= S#state.collector_pid ->
+ io:format("collector died: ~p\n\n", [Reason]),
+ wxFrame:destroy(S#state.frame),
+ {stop, Reason, S};
+ Pid =:= S#state.parent_pid ->
+ wxFrame:destroy(S#state.frame),
+ {stop, Reason, S};
+ true ->
+ noreply(S)
+ end;
+handle_info(#wx{event = #wxClose{}}, S) ->
+ opt_unlink(S#state.parent_pid),
+ {stop, shutdown, S};
+handle_info(#wx{event = #wxMouse{type = mousewheel, wheelRotation = Rot}}, S) when Rot > 0 ->
+ S2 = scroll_up(S),
+ noreply(S2);
+handle_info(#wx{event = #wxMouse{type = mousewheel, wheelRotation = Rot}}, S) when Rot < 0 ->
+ S2 = scroll_down(S),
+ noreply(S2);
+handle_info(#wx{event = #wxSize{size = {OldW, OldH}}} = Wx, S) ->
+ #wx{event = #wxSize{type = size, size = {W, H}}} = get_latest_resize(Wx),
+ S2 = S#state{width = W, height = H, canvas_width = W, canvas_height = H},
+ EventsPerPage = events_per_page(S, H),
+ Diff = EventsPerPage - S#state.events_per_page,
+ S6 =
+ if
+ OldW =:= W, OldH =:= H, S2#state.events_per_page =:= EventsPerPage ->
+ S2;
+ Diff =:= 0 ->
+ refresh_main_window(S2);
+ Diff > 0 ->
+ OldEvents = queue_to_list(S2#state.events),
+ {S3, NewEvents} = collect_more_events(S2, S2#state.last_event, Diff),
+ S4 = S3#state{events_per_page = EventsPerPage},
+ S5 = replace_events(S4, OldEvents ++ NewEvents),
+ refresh_main_window(S5);
+ Diff < 0 ->
+ OldEvents = queue_to_list(S2#state.events),
+ RevEvents = delete_n(lists:reverse(OldEvents), abs(Diff)),
+ S3 = S2#state{events_per_page = EventsPerPage},
+ S4 = replace_events(S3, lists:reverse(RevEvents)),
+ refresh_main_window(S4)
+ end,
+ noreply(S6);
+handle_info(#wx{event = #wxFocus{}}, S) ->
+ wxWindow:setFocus(S#state.canvas), % Get keyboard focus
+ noreply(S);
+handle_info(#wx{event = #wxMouse{type = enter_window}}, S) ->
+ wxWindow:setFocus(S#state.canvas), % Get keyboard focus
+ noreply(S);
+handle_info(#wx{event = #wxPaint{}}, S) ->
+ S2 = refresh_main_window(S),
+ noreply(S2);
+handle_info(#wx{event = #wxMouse{type = T, x=X,y=Y}}, S) ->
+ io:format("~p ~p\n", [T, {X,Y}]),
+ noreply(S);
+handle_info(Info, S) ->
+ ok = error_logger:format("~p(~p): handle_info(~p, ~p)~n",
+ [?MODULE, self(), Info, S]),
+ noreply(S).
+
+%%----------------------------------------------------------------------
+%% Func: terminate/2
+%% Purpose: Shutdown the server
+%% Returns: any (ignored by gen_server)
+%%----------------------------------------------------------------------
+
+terminate(_Reason, _S) ->
+ ignore.
+
+%%----------------------------------------------------------------------
+%% Func: code_change/3
+%% Purpose: Convert process state when code is changed
+%% Returns: {ok, NewState}
+%%----------------------------------------------------------------------
+
+code_change(_OldVsn, S, _Extra) ->
+ {ok, S}.
+
+%%%----------------------------------------------------------------------
+%%% Handle stuff
+%%%----------------------------------------------------------------------
+
+reply(Reply, S) ->
+ Timeout = timeout(S),
+ {reply, Reply, S, Timeout}.
+
+noreply(S) ->
+ Timeout = timeout(S),
+ {noreply, S, Timeout}.
+
+timeout(_S) ->
+ infinity.
+
+scroll_first(S) ->
+ EventsPerPage = S#state.events_per_page,
+ {S2, NewEvents} =
+ collect_more_events(S, first, EventsPerPage),
+ S3 =
+ case NewEvents of
+ [] ->
+ S2;
+ [FirstE | _] ->
+ S2#state{first_event = FirstE}
+ end,
+ S4 = replace_events(S3, NewEvents),
+ refresh_main_window(S4).
+
+scroll_last(S) ->
+ case collect_more_events(S, last, -1) of
+ {_, []} ->
+ scroll_first(S);
+ {S2, NewEvents} ->
+ [FirstE | _] = NewEvents,
+ S3 = replace_events(S2#state{first_event = FirstE}, NewEvents),
+ refresh_main_window(S3)
+ end.
+
+scroll_prev(S) ->
+ scroll_up(S, S#state.events_per_page).
+
+scroll_next(S) ->
+ scroll_down(S, S#state.events_per_page).
+
+scroll_up(S) ->
+ scroll_up(S, calc_scroll(S)).
+
+scroll_up(S, Expected) ->
+ N = queue_length(S#state.events),
+ EventsPerPage = S#state.events_per_page,
+ Expected2 = adjust_expected(Expected, N, EventsPerPage),
+ OldEvents = queue_to_list(S#state.events),
+ case collect_more_events(S, S#state.first_event, -Expected2) of
+ {_, []} ->
+ S;
+ {S2, NewEvents} ->
+ NewN = length(NewEvents),
+ if
+ N + NewN > EventsPerPage ->
+ RevAllEvents = lists:reverse(OldEvents, lists:reverse(NewEvents)),
+ TooMany = N + NewN - EventsPerPage,
+ case delete_n(RevAllEvents, TooMany) of
+ [] ->
+ S;
+ [LastE | _] = RevEvents ->
+ Events = lists:reverse(RevEvents),
+ S3 = replace_events(S2#state{last_event = LastE}, Events),
+ refresh_main_window(S3)
+ end;
+ true ->
+ Events = NewEvents ++ OldEvents,
+ LastE = lists:last(Events),
+ S3 = replace_events(S2#state{last_event = LastE}, Events),
+ refresh_main_window(S3)
+ end
+ end.
+
+scroll_down(S) ->
+ scroll_down(S, calc_scroll(S)).
+
+scroll_down(S, Expected) ->
+ N = queue_length(S#state.events),
+ EventsPerPage = S#state.events_per_page,
+ Expected2 = adjust_expected(Expected, N, EventsPerPage),
+ OldEvents = queue_to_list(S#state.events),
+ case collect_more_events(S, S#state.last_event, Expected2) of
+ {_, []} ->
+ case collect_more_events(S, S#state.first_event, N - EventsPerPage) of
+ {_, []} ->
+ S;
+ {S2, NewEvents} ->
+ Events = NewEvents ++ OldEvents,
+ [FirstE | _] = Events,
+ S3 = replace_events(S2#state{first_event = FirstE}, Events),
+ refresh_main_window(S3)
+ end;
+ {S2, NewEvents} ->
+ AllEvents = OldEvents ++ NewEvents,
+ case delete_n(AllEvents, length(NewEvents)) of
+ [] ->
+ scroll_first(S);
+ Events ->
+ [FirstE | _] = Events,
+ S3 = replace_events(S2#state{first_event = FirstE}, Events),
+ refresh_main_window(S3)
+ end
+ end.
+
+scroll_changed(S, Expected) ->
+ if
+ Expected =:= 0 ->
+ refresh_main_window(S);
+ Expected < 0 ->
+ %% Up
+ OldPos = event_pos(S),
+ NewPos = lists:max([OldPos + Expected, 0]),
+ case S#state.first_event of
+ #e{key = Key, pos = OldPos} ->
+ jump_up(S, Key, OldPos, NewPos);
+ first ->
+ scroll_first(S);
+ last ->
+ scroll_last(S)
+ end;
+ true ->
+ %% Down
+ OldPos = event_pos(S),
+ NewPos = lists:min([OldPos + Expected, S#state.n_events]),
+ case S#state.first_event of
+ #e{key = Key, pos = OldPos} ->
+ jump_down(S, Key, OldPos, NewPos);
+ first = Key ->
+ jump_down(S, Key, 0, NewPos);
+ last ->
+ scroll_last(S)
+ end
+ end.
+
+jump_up(S, OldKey, OldPos, NewPos) ->
+ Try = NewPos - OldPos,
+ Order = S#state.event_order,
+ Fun = fun(Event, #e{pos = P}) when P >= NewPos ->
+ Key = et_collector:make_key(Order, Event),
+ #e{event = Event, key = Key, pos = P - 1};
+ (_, Acc) ->
+ Acc
+ end,
+ PrevE = et_collector:iterate(S#state.collector_pid,
+ OldKey,
+ Try,
+ Fun,
+ #e{key = OldKey, pos = OldPos}),
+ case collect_more_events(S, PrevE, S#state.events_per_page) of
+ {_, []} ->
+ S;
+ {S2, Events} ->
+ [FirstE | _] = Events,
+ S3 = replace_events(S2#state{first_event = FirstE}, Events),
+ refresh_main_window(S3)
+ end.
+
+jump_down(S, OldKey, OldPos, NewPos) ->
+ Try = NewPos - OldPos,
+ Order = S#state.event_order,
+ Fun = fun(Event, #e{pos = P}) when P < NewPos ->
+ Key = et_collector:make_key(Order, Event),
+ #e{event = Event, key = Key, pos = P + 1};
+ (_, Acc) ->
+ Acc
+ end,
+ PrevE = et_collector:iterate(S#state.collector_pid,
+ OldKey,
+ Try,
+ Fun,
+ #e{key = OldKey, pos = OldPos}),
+ case collect_more_events(S, PrevE, S#state.events_per_page) of
+ {_, []} ->
+ S;
+ {S2, Events} ->
+ [FirstE | _] = Events,
+ S3 = replace_events(S2#state{first_event = FirstE}, Events),
+ refresh_main_window(S3)
+ end.
+
+adjust_expected(Expected, N, EventsPerPage) ->
+ if
+ N < EventsPerPage ->
+ EventsPerPage - N;
+ Expected < EventsPerPage ->
+ Expected;
+ true ->
+ EventsPerPage
+ end.
+
+calc_scroll(S) ->
+ lists:max([S#state.events_per_page div 3, 1]).
+
+revert_main_window(S) ->
+ {S2, Events} = revert(S),
+ S3 = replace_events(S2, Events),
+ refresh_main_window(S3).
+
+revert(S) ->
+ EventsPerPage = S#state.events_per_page,
+ %% Find previous event
+ case collect_more_events(S, S#state.first_event, -1) of
+ {_, []} ->
+ collect_more_events(S, first, EventsPerPage);
+ {S2, [_PrevEvent]} ->
+ collect_more_events(S, S2#state.first_event, EventsPerPage)
+ end.
+
+delete_n(List, 0) ->
+ List;
+delete_n([], _) ->
+ [];
+delete_n([_ | Tail], N) when N > 0 ->
+ delete_n(Tail, N - 1).
+
+pick_n(Rest, 0, Acc) ->
+ {lists:reverse(Acc), Rest};
+pick_n([], _N, Acc) ->
+ {lists:reverse(Acc), []};
+pick_n([Head | Tail], N, Acc) when N > 0 ->
+ pick_n(Tail, N - 1, [Head | Acc]).
+
+close_all(S) ->
+ close_all_others(S),
+ wxFrame:destroy(S#state.frame),
+ opt_unlink(S#state.parent_pid),
+ {stop, shutdown, S}.
+
+close_all_others(S) ->
+ Fun =
+ fun({{subscriber, Pid}, _}) ->
+ if
+ Pid =:= self() ->
+ ignore;
+ true ->
+ unlink(Pid),
+ Pid ! {et, close}
+ end
+ end,
+ All = et_collector:dict_match(S#state.collector_pid,
+ {{subscriber, '_'}, '_'}),
+ lists:foreach(Fun, All),
+ noreply(S).
+
+opt_unlink(Pid) ->
+ if
+ Pid =:= undefined ->
+ ignore;
+ true ->
+ unlink(Pid)
+ end.
+
+%%%----------------------------------------------------------------------
+%%% Clone viewer
+%%%----------------------------------------------------------------------
+
+open_viewer(Scale, FilterName, Actors, S) ->
+ Filters = [{dict_insert, {filter, F#filter.name}, F#filter.function}
+ || F <- S#state.filters],
+ Options =
+ [{parent_pid, S#state.parent_pid},
+ {title, S#state.title},
+ {collector_pid, S#state.collector_pid},
+ {detail_level, S#state.detail_level},
+ {active_filter, FilterName},
+ {event_order, S#state.event_order},
+ {first_event, S#state.first_event},
+ {max_actors, S#state.max_actors},
+ {hide_actions, S#state.hide_actions},
+ {hide_actors, S#state.hide_actors},
+ {actors, Actors},
+ {scale, Scale},
+ {width, S#state.width},
+ {height, S#state.height} | Filters],
+ case start_link(Options) of
+ {ok, _ViewerPid} ->
+ %% unlink(ViewerPid),
+ ok;
+ {error, Reason} ->
+ ok = error_logger:format("~p: Failed to start a new window: ~p~n",
+ [?MODULE, Reason])
+ end.
+
+%%%----------------------------------------------------------------------
+%%% Handle graphics
+%%%----------------------------------------------------------------------
+
+create_main_window(S) ->
+ {NormalFont, BoldFont} = select_fonts(S#state.scale),
+ Name = name_to_string(S#state.active_filter),
+ Title = case S#state.title of
+ undefined -> atom_to_list(?MODULE);
+ Explicit -> name_to_string(Explicit)
+ end,
+ Frame = wxFrame:new(wx:null(),
+ ?wxID_ANY,
+ Title ++ " (filter: " ++ Name ++ ")",
+ [{size, {S#state.width, S#state.height}}]),
+ StatusBar = wxFrame:createStatusBar(Frame),
+
+ Panel = wxPanel:new(Frame, []),
+ Bar = wxMenuBar:new(),
+ wxFrame:setMenuBar(Frame,Bar),
+ MainSizer = wxBoxSizer:new(?wxVERTICAL),
+
+ MenuData = lists:flatten([create_file_menu(Bar),
+ create_viewer_menu(Bar),
+ create_collector_menu(Bar)]),
+ FilterMenu = wxMenu:new([]),
+ S2 = create_filter_menu(S#state{filter_menu = {FilterMenu,[]}},
+ S#state.active_filter,
+ S#state.filters),
+ wxMenuBar:append(Bar, FilterMenu, "Filters and scaling"),
+ create_help_menu(Bar),
+
+ OptSizer = wxBoxSizer:new(?wxHORIZONTAL),
+ CheckSizer = wxBoxSizer:new(?wxVERTICAL),
+ HideActions = wxCheckBox:new(Panel, ?wxID_ANY, "Hide From=To"),
+ wxCheckBox:setValue(HideActions, S#state.hide_actions),
+ HideActors = wxCheckBox:new(Panel, ?wxID_ANY, "Hide (excluded actors)"),
+ wxCheckBox:setValue(HideActors, S#state.hide_actors),
+ CheckBoxData = [{wxCheckBox:getId(HideActions), hide_actions},
+ {wxCheckBox:getId(HideActors), hide_actors}],
+ wxPanel:connect(Panel, command_checkbox_clicked),
+ wxSizer:add(CheckSizer, HideActions),
+ wxSizer:add(CheckSizer,HideActors),
+ wxSizer:add(OptSizer, CheckSizer, [{border, 10}, {flag, ?wxALL}]),
+ DetailLevelBox = wxStaticBoxSizer:new(?wxHORIZONTAL,
+ Panel,
+ [{label, "Detail level"}]),
+ DetailLevel = wxSlider:new(Panel, ?wxID_ANY,
+ S#state.detail_level,
+ ?detail_level_min,
+ ?detail_level_max,
+ [{style, ?wxSL_LABELS},
+ {size, {200,-1}}]),
+ wxStatusBar:setStatusText(StatusBar, where_text(S)),
+ wxFrame:connect(Frame, command_slider_updated),
+ wxSizer:add(DetailLevelBox, DetailLevel),
+ wxSizer:add(OptSizer, DetailLevelBox, [{border, 10}, {flag, ?wxALL}]),
+ wxSizer:addStretchSpacer(OptSizer),
+ wxSizer:add(MainSizer, OptSizer),
+ wxSizer:add(MainSizer,
+ wxStaticLine:new(Panel, [{style, ?wxLI_HORIZONTAL}]),
+ [{flag, ?wxEXPAND}]),
+
+ CanvasSizer = wxBoxSizer:new(?wxHORIZONTAL),
+ Canvas = wxPanel:new(Panel, []),
+ {CanvasW,CanvasH} = wxPanel:getSize(Canvas),
+ ScrollBar = wxScrollBar:new(Panel, ?wxID_ANY, [{style, ?wxSB_VERTICAL}]),
+
+ wxSizer:add(CanvasSizer, Canvas, [{flag, ?wxEXPAND}, {proportion, 1}]),
+ wxSizer:add(CanvasSizer, ScrollBar, [{flag, ?wxEXPAND}]),
+ wxSizer:add(MainSizer, CanvasSizer, [{flag, ?wxEXPAND}, {proportion, 1}]),
+ wxPanel:connect(Canvas, left_down),
+ wxPanel:connect(Canvas, left_up),
+ wxPanel:connect(Canvas, right_up),
+ wxPanel:connect(Canvas, size),
+ wxPanel:connect(Canvas, paint),
+ wxPanel:connect(Canvas, key_down),
+ wxPanel:connect(Canvas, kill_focus),
+ wxPanel:connect(Canvas, enter_window, [{skip, true}]),
+ wxFrame:connect(Frame, command_menu_selected),
+ wxFrame:connect(Frame, close_window),
+ wxFrame:connect(ScrollBar, scroll_changed),
+ wxPanel:setSize(Panel, {S#state.width, S#state.height}),
+ wxPanel:setSizer(Panel, MainSizer),
+ wxFrame:show(Frame),
+ wxPanel:setFocus(Canvas),
+ wxPanel:connect(Canvas, mousewheel),
+
+ S3 = S2#state{title = Title,
+ frame = Frame, packer = Panel,
+ normal_font = NormalFont, bold_font = BoldFont,
+ canvas_width = CanvasW, canvas_height = CanvasH,
+ canvas = Canvas,
+ canvas_sizer = CanvasSizer,
+ scroll_bar = ScrollBar,
+ y_pos = ?initial_y * S#state.scale,
+ pen = wxPen:new(),
+ brush = wxBrush:new(),
+ print_d = undefined,
+ print_psdd = undefined,
+ menu_data = MenuData,
+ checkbox_data = CheckBoxData,
+ hide_actions_box = HideActions,
+ hide_actors_box = HideActors,
+ status_bar = StatusBar},
+ DC = wxClientDC:new(Canvas),
+ S4 = draw_all_actors(S3, DC),
+ wxClientDC:destroy(DC),
+ S4.
+
+where_text(#state{n_events = N} = S) ->
+ Pos = event_pos(S),
+ lists:concat([Pos, " (", N, ")"]).
+
+event_pos(#state{first_event = E, events = Events, n_events = Last}) ->
+ case E of
+ #e{pos = Pos} ->
+ Pos;
+ first ->
+ case queue_length(Events) of
+ 0 ->
+ 0;
+ _ ->
+ 1
+ end;
+ last ->
+ Last
+ end.
+
+init_printers(#state{print_d = undefined, print_psdd = undefined} = S) ->
+ PD = wxPrintData:new(),
+ PSDD = wxPageSetupDialogData:new(PD),
+ wxPrintData:setPaperId(PD, ?wxPAPER_A4),
+ wxPageSetupDialogData:setMarginTopLeft(PSDD, {15,15}),
+ wxPageSetupDialogData:setMarginBottomRight(PSDD, {15,15}),
+ S#state{print_d = PD, print_psdd = PSDD};
+init_printers(#state{} = S) ->
+ S.
+
+select_fonts(Scale) when is_integer(Scale) ->
+ Size =
+ case Scale of
+ 1 -> 5;
+ 2 -> 10;
+ 3 -> 14;
+ 4 -> 20;
+ S -> S*6
+ end,
+ {wxFont:new(Size, ?wxFONTFAMILY_TELETYPE, ?wxNORMAL, ?wxNORMAL,[]),
+ wxFont:new(Size, ?wxFONTFAMILY_TELETYPE, ?wxNORMAL, ?wxBOLD,[])}.
+
+get_value(Key, Pos, TupleList) when is_list(TupleList)->
+ case lists:keysearch(Key, 1, TupleList) of
+ {value, Tuple} when is_tuple(Tuple)->
+ element(Pos, Tuple);
+ false ->
+ false
+ end.
+
+menuitem(Menu, Id, Text, UserData) ->
+ Item = wxMenu:append(Menu, Id, Text),
+ {wxMenuItem:getId(Item), Item, UserData}.
+
+create_file_menu(Bar) ->
+ Menu = wxMenu:new([]),
+ Data = [
+ menuitem(Menu, ?wxID_ANY, "Clear all events in the Collector", clear_all),
+ menuitem(Menu, ?wxID_ANY, "Load events to the Collector from file", load_all),
+ menuitem(Menu, ?wxID_ANY, "Save all events in the Collector to file", save_all),
+
+ menuitem(Menu, ?wxID_PRINT_SETUP, "Print setup", print_setup),
+ menuitem(Menu, ?wxID_ANY, "Print current page", print_one_page),
+ menuitem(Menu, ?wxID_PRINT, "Print all pages", print_all_pages),
+
+ menuitem(Menu, ?wxID_ANY, "Close this Viewer", close),
+ menuitem(Menu, ?wxID_ANY, "Close all other Viewers, but this (c)", close_all_others),
+ menuitem(Menu, ?wxID_ANY, "Close all Viewers and the Collector) (C) ", close_all)
+ ],
+ wxMenu:insertSeparator(Menu, 3),
+ wxMenu:insertSeparator(Menu, 7),
+ wxMenuBar:append(Bar, Menu, "File"),
+ Data.
+
+create_viewer_menu(Bar) ->
+ Menu = wxMenu:new([]),
+ wxMenuItem:enable(wxMenu:append(Menu, ?wxID_ANY, "Scroll this Viewer"),
+ [{enable, false}]),
+ wxMenu:appendSeparator(Menu),
+ D1 = [
+ menuitem(Menu, ?wxID_ANY, "First (f)", first),
+ menuitem(Menu, ?wxID_ANY, "Last (l)", last),
+ menuitem(Menu, ?wxID_ANY, "Prev (p)", prev),
+ menuitem(Menu, ?wxID_ANY, "Next (n)", next),
+ menuitem(Menu, ?wxID_ANY, "Refresh (r)", refresh)
+ ],
+ wxMenu:appendSeparator(Menu),
+ D2 = [
+ menuitem(Menu, ?wxID_ANY, "Up 5 (Up)", up),
+ menuitem(Menu, ?wxID_ANY, "Down 5 (Down)", down)
+ ],
+ wxMenu:appendSeparator(Menu),
+ wxMenuItem:enable(wxMenu:append(Menu, ?wxID_ANY, "Actor visibility in this Viewer"),
+ [{enable, false}]),
+ wxMenu:appendSeparator(Menu),
+ D3 = [menuitem(Menu, ?wxID_ANY, "Display all actors (a)", display_all)],
+ wxMenuBar:append(Bar, Menu, "Viewer"),
+ [D1,D2,D3].
+
+create_collector_menu(Bar) ->
+ Menu = wxMenu:new([]),
+ wxMenuItem:enable(wxMenu:append(Menu, ?wxID_ANY, "Scroll all Viewers"),
+ [{enable, false}]),
+ wxMenu:appendSeparator(Menu),
+ Data = [
+ menuitem(Menu, ?wxID_ANY, "First (F)", first_all),
+ menuitem(Menu, ?wxID_ANY, "Last (L)", last_all),
+ menuitem(Menu, ?wxID_ANY, "Prev (P)", prev_all),
+ menuitem(Menu, ?wxID_ANY, "Next (N)", next_all),
+ menuitem(Menu, ?wxID_ANY, "Refresh (R)", refresh_all)
+ ],
+ wxMenuBar:append(Bar, Menu, "Collector"),
+ Data.
+
+create_filter_menu(S=#state{filter_menu = {Menu,Data}}, ActiveFilterName, Filters) ->
+ wx:foreach(fun({_,I,_}) ->
+ wxMenu:delete(Menu,I);
+ (I) ->
+ try
+ wxMenu:delete(Menu,I)
+ catch
+ _:Reason ->
+ io:format("Could not delete item: ~p, because ~p.\n", [I, Reason])
+ end
+ end,
+ Data),
+ Item = fun(F, {N, Acc}) when F#filter.name =:= all ->
+ Label = lists:concat([pad_string(F#filter.name, 20), "(0)"]),
+ {N+1, [menuitem(Menu, ?wxID_ANY, Label, {data, F})|Acc]};
+ (F, {N, Acc}) ->
+ Label = lists:concat([pad_string(F#filter.name, 20), "(", N, ")"]),
+ {N+1, [menuitem(Menu, ?wxID_ANY, Label, {data, F})|Acc]}
+ end,
+ D1 = [I1 = wxMenu:append(Menu, ?wxID_ANY, "Same Filter New Scale"),
+ wxMenu:appendSeparator(Menu)],
+ wxMenuItem:enable(I1, [{enable,false}]),
+ {value, Filter} = lists:keysearch(ActiveFilterName, #filter.name, Filters),
+ Same = lists:concat([pad_string(ActiveFilterName, 20), "(=) same scale"]),
+ Larger = lists:concat([pad_string(ActiveFilterName, 20), "(+) bigger scale"]),
+ Smaller = lists:concat([pad_string(ActiveFilterName, 20), "(-) smaller scale"]),
+ D2 = [
+ menuitem(Menu, ?wxID_ANY, Same, {data, Filter, 0}),
+ menuitem(Menu, ?wxID_ANY, Smaller, {data, Filter, -1}),
+ menuitem(Menu, ?wxID_ANY, Larger, {data, Filter, 1}),
+ wxMenu:appendSeparator(Menu),
+ I2 = wxMenu:append(Menu, ?wxID_ANY, "New Filter Same Scale"),
+ wxMenu:appendSeparator(Menu)
+ ],
+ wxMenuItem:enable(I2, [{enable,false}]),
+ {_,D3} = lists:foldl(Item, {1,[]}, Filters),
+ S#state{filter_menu = {Menu, lists:flatten([D1,D2,D3])}}.
+
+create_help_menu(Bar) ->
+ Menu = wxMenu:new([]),
+ menuitem(Menu, ?wxID_HELP, "Info", help),
+ wxMenuBar:append(Bar, Menu, "Help").
+
+clear_canvas(S) ->
+ DC = wxClientDC:new(S#state.canvas),
+ wxDC:clear(DC),
+ {CanvasW, CanvasH} = wxPanel:getSize(S#state.canvas),
+ wxSizer:recalcSizes(S#state.canvas_sizer),
+ S2 = S#state{refresh_needed = false,
+ y_pos = ?initial_y * S#state.scale,
+ canvas_width = CanvasW,
+ canvas_height = CanvasH,
+ events = queue_new()},
+ S3 = draw_all_actors(S2, DC),
+ wxClientDC:destroy(DC),
+ S3.
+
+replace_events(S, []) ->
+ S#state{first_event = first,
+ last_event = first,
+ events = queue_new()};
+replace_events(S, Events) ->
+ Queue = lists:foldl(fun(E, Q) -> queue_in(E, Q) end, queue_new(), Events),
+ S#state{events = Queue}.
+
+refresh_main_window(S) ->
+ wx:batch(fun() ->
+ S2 = clear_canvas(S),
+ S3 = update_scroll_bar(S2),
+ display_events(S3, queue_to_list(S#state.events))
+ end).
+
+display_events(S, []) ->
+ S;
+display_events(S, Events) ->
+ DC = wxClientDC:new(S#state.canvas),
+ S2 = lists:foldl(fun(E, State) -> display_event(E, State, DC) end, S, Events),
+ wxClientDC:destroy(DC),
+ S2.
+
+collect_more_events(S, PrevKey = first, Try) ->
+ PrevE = #e{event = undefined, key = PrevKey, pos = 0},
+ S2 = S#state{first_event = PrevE, last_event = PrevE},
+ do_collect_more_events(S2, Try, PrevE, []);
+collect_more_events(S, PrevKey = last, Try) ->
+ PrevE = #e{event = undefined, key = PrevKey, pos = S#state.n_events},
+ S2 = S#state{first_event = PrevE, last_event = PrevE},
+ do_collect_more_events(S2, Try, PrevE, []);
+collect_more_events(S, #e{} = PrevE, Try) ->
+ do_collect_more_events(S, Try, PrevE, []).
+
+do_collect_more_events(#state{collector_pid = Collector,
+ event_order = Order,
+ active_filter = Active,
+ filters = Filters} = S,
+ Try,
+ PrevE,
+ Acc) ->
+ Incr =
+ if
+ Try < 0 -> -1;
+ true -> 1
+ end,
+ PrevKey = PrevE#e.key,
+ {value, #filter{function = FilterFun}} =
+ lists:keysearch(Active, #filter.name, Filters),
+ {_S, _Incr, _Order, _Active, _FilterFun, LastE, NewEvents} =
+ et_collector:iterate(Collector,
+ PrevKey,
+ Try,
+ fun collect_event/2,
+ {S, Incr, Order, Active, FilterFun, PrevE, []}),
+ Expected = abs(Try),
+ Actual = length(NewEvents),
+ Missing = Expected - Actual,
+ {S2, Acc2, Try2} =
+ if
+ Try < 0 ->
+ {S#state{first_event = LastE}, NewEvents ++ Acc, -Missing};
+ true ->
+ TmpEvents = lists:reverse(NewEvents),
+ {S#state{last_event = LastE}, Acc ++ TmpEvents, Missing}
+ end,
+ if
+ Missing =/= 0, PrevKey =/= LastE#e.key ->
+ do_collect_more_events(S2, Try2, LastE, Acc2);
+ true ->
+ {S2, Acc2}
+ end.
+
+collect_event(Event, {S, Incr, Order, Active, FilterFun, #e{pos = PrevPos}, Events}) ->
+ Key = et_collector:make_key(Order, Event),
+ E = #e{event = Event, key = Key, pos = PrevPos + Incr},
+ {LastE, Events2} =
+ case catch FilterFun(Event) of
+ true ->
+ case is_hidden(Event#event.from, Event#event.to, S) of
+ true ->
+ {E, Events};
+ false ->
+ {E, [E | Events]}
+ end;
+ {true, Event2} ->
+ Key2 = et_collector:make_key(Order, Event2),
+ E2 = E#e{event = Event2, key = Key2},
+ case is_hidden(Event2#event.from, Event2#event.to, S) of
+ true ->
+ {E2, Events};
+ false ->
+ {E2, [E2 | Events]}
+ end;
+ false ->
+ {E, Events};
+ Bad ->
+ Contents = {bad_filter, S#state.active_filter, Bad, Event},
+ Event2 = Event#event{contents = Contents,
+ from = bad_filter,
+ to = bad_filter},
+ E2 = E#e{event = Event2},
+ {E2, [E2 | Events]}
+ end,
+ {S, Incr, Order, Active, FilterFun, LastE, Events2}.
+
+display_event(#e{event = Event} = E, S, DC)
+ when Event#event.detail_level =< S#state.detail_level ->
+ {FromRefresh, From} = ensure_actor(Event#event.from, S, DC),
+ {FromName, FromPos, S2} = From,
+ {ToRefresh, To} = ensure_actor(Event#event.to, S2, DC),
+ {ToName, ToPos, S3} = To,
+ S4 =
+ if
+ FromRefresh =/= false, ToRefresh =/= false ->
+ S3#state{refresh_needed = true,
+ events = queue_in(E, S3#state.events)};
+ FromName =:= ToName ->
+ case S#state.hide_actions of
+ true ->
+ S3;
+ false ->
+ Label = name_to_string(Event#event.label),
+ draw_named_arrow(Label, FromName, ToName, FromPos, ToPos, E, S3, DC)
+ end;
+ true ->
+ Label = name_to_string(Event#event.label),
+ draw_named_arrow(Label, FromName, ToName, FromPos, ToPos, E, S3, DC)
+ end,
+ S4;
+display_event(#e{}, S, _DC) ->
+ S.
+
+draw_named_arrow(Label, FromName, ToName, FromPos, ToPos, E, S, DC) ->
+ case S#state.y_pos + (?incr_y * S#state.scale) of
+ _ when S#state.hide_actors =:= true, FromName =:= ?unknown ->
+ S;
+ _ when S#state.hide_actors =:= true, ToName =:= ?unknown ->
+ S;
+ Y when Y > S#state.canvas_height ->
+ S#state{refresh_needed = true,
+ events = queue_in(E, S#state.events)};
+ Y ->
+ S2 = S#state{y_pos = Y, events = queue_in(E, S#state.events)},
+ S3 = draw_arrow(FromPos, ToPos, S2, DC),
+ draw_label(Label, FromName, ToName, FromPos, ToPos, S3, DC)
+ end.
+
+draw_arrow(Pos, Pos, S, _DC) ->
+ S;
+draw_arrow(FromPos, ToPos, S, DC) ->
+ Y = S#state.y_pos,
+ wxPen:setColour(S#state.pen, ?wxBLACK),
+ wxDC:setPen(DC, S#state.pen),
+ wxDC:drawLine(DC, {FromPos , Y}, {ToPos, Y}),
+
+ %% Draw arrow head
+ Radians = calc_angle({FromPos, Y}, {ToPos, Y}),
+ Len = 5,
+ Radians2 = Radians + 3.665191429188092,
+ Radians3 = Radians + 2.617993877991494,
+ {X3, Y3} = calc_point({ToPos, Y}, Len, Radians2),
+ {X4, Y4} = calc_point({ToPos, Y}, Len, Radians3),
+ Points = [{round(ToPos), round(Y)},
+ {round(X3), round(Y3)},
+ {round(X4), round(Y4)}],
+ wxBrush:setColour(S#state.brush, ?wxBLACK),
+ wxDC:setBrush(DC, S#state.brush),
+ wxDC:drawPolygon(DC, Points, []),
+ S.
+
+ %% Calclulate angle in radians for a line between two points
+calc_angle({X1, Y1}, {X2, Y2}) ->
+ math:atan2((Y2 - Y1), (X2 - X1)).
+
+ %% Calc new point at a given distance and angle from another point
+calc_point({X, Y}, Length, Radians) ->
+ X2 = round(X + Length * math:cos(Radians)),
+ Y2 = round(Y + Length * math:sin(Radians)),
+ {X2, Y2}.
+
+draw_label(Label, FromName, ToName, FromPos, ToPos, S, DC) ->
+ Color =
+ if
+ FromName =:= ?unknown,
+ ToName =:= ?unknown -> {2, 71, 254};% blue
+ FromName =:= ?unknown -> {255,126,0}; % orange
+ ToName =:= ?unknown -> {255,126,0}; % orange
+ FromPos =:= ToPos -> {2, 71, 254};% blue
+ true -> {227,38, 54} % red
+ end,
+ Scale = S#state.scale,
+ X = lists:min([FromPos, ToPos]) + (6 * Scale),
+ Y = S#state.y_pos,
+ write_text(Label, X, Y, Color, S#state.normal_font, S, DC),
+ S.
+
+draw_all_actors(S, DC) ->
+ Scale = S#state.scale,
+ Fun = fun(A, X) ->
+ case draw_actor(A, X, S, DC) of
+ true ->
+ X + (?incr_x * Scale);
+ false ->
+ X
+ end
+ end,
+ lists:foldl(Fun, ?initial_x * Scale, S#state.actors),
+ S.
+
+%% Returns: {NeedsRefreshBool, {ActorPos, NewsS, NewActors}}
+ensure_actor(Name, S, DC) ->
+ do_ensure_actor(Name, S, S#state.actors, 0, DC).
+
+do_ensure_actor(Name, S, [H | _], N, _DC) when H#actor.name =:= Name ->
+ Pos = (?initial_x + (N * ?incr_x)) * S#state.scale,
+ {false, {Name, Pos, S}};
+do_ensure_actor(Name, S, [H | T], N, DC) ->
+ if
+ S#state.hide_actors, H#actor.exclude ->
+ do_ensure_actor(Name, S, T, N, DC);
+ true ->
+ do_ensure_actor(Name, S, T, N + 1, DC)
+ end;
+do_ensure_actor(Name, S, [], N, DC) ->
+ %% A brand new actor, let's see if it does fit
+ Pos = (?initial_x + (N * ?incr_x)) * S#state.scale,
+ MaxActors = S#state.max_actors,
+ if
+ is_integer(MaxActors), N > MaxActors ->
+ %% Failed on max_actors limit, put into unknown
+ %% Assume that unknown always is in actor list
+ ensure_actor(?unknown, S, DC);
+ Pos > (S#state.canvas_width - ((?initial_x - 15) * S#state.scale)) ->
+ %% New actor does not fit in canvas, refresh needed
+ A = create_actor(Name),
+ draw_actor(A, Pos, S, DC),
+ {true, {Name, Pos, S#state{actors = S#state.actors ++ [A]}}};
+ true ->
+ %% New actor fits in canvas. Draw the new actor.
+ A = create_actor(Name),
+ draw_actor(A, Pos, S, DC),
+ {false, {Name, Pos, S#state{actors = S#state.actors ++ [A]}}}
+ end.
+
+draw_actor(A, LineX, S, DC) ->
+ if
+ S#state.hide_actors, A#actor.exclude ->
+ false;
+ true ->
+ Scale = S#state.scale,
+ TextX = LineX - (5 * Scale),
+ {TextY, LineTopY, LineBotY} = calc_y(S),
+ Color =
+ case A#actor.name of
+ ?unknown -> {255,126,0};% orange
+ _ -> {227,38,54} % red
+ end,
+ {String, Font} =
+ if
+ S#state.context =:= display, A#actor.exclude ->
+ {"(" ++ A#actor.string ++ ")", S#state.normal_font};
+ S#state.context =:= display, A#actor.include ->
+ {"[" ++ A#actor.string ++ "]", S#state.bold_font};
+ true ->
+ {A#actor.string, S#state.normal_font}
+ end,
+ write_text(String, TextX, TextY, Color, Font, S, DC),
+ wxPen:setColour(S#state.pen, Color),
+ wxDC:setPen(DC, S#state.pen),
+ wxDC:drawLines(DC, [{LineX, LineTopY}, {LineX, LineBotY}]),
+ true
+ end.
+
+calc_y(#state{canvas_height = Height, scale = Scale}) ->
+ TextY = ?initial_y * Scale,
+ LineTopY = round(TextY + ((?incr_y / 2) * Scale)),
+ LineBotY = Height,
+ %% LineBotY = round(Height - ((?incr_y / 2) * Scale)),
+ {TextY, LineTopY, LineBotY}.
+
+display_all(S) ->
+ Actors = S#state.actors,
+ Actors2 = [A#actor{include = false, exclude = false} || A <- Actors],
+ S2 = S#state{actors = Actors2,
+ display_all = true,
+ hide_actions = false,
+ hide_actors = false},
+ wxCheckBox:setValue(S2#state.hide_actions_box, S2#state.hide_actions),
+ wxCheckBox:setValue(S2#state.hide_actors_box, S2#state.hide_actors),
+ revert_main_window(S2).
+
+is_hidden(A, S) ->
+ case S#state.display_all of
+ true ->
+ A#actor.exclude;
+ false ->
+ A#actor.exclude orelse not A#actor.include
+ end.
+
+is_hidden(From, To, S) ->
+ Actors = S#state.actors,
+ DisplayAll = S#state.display_all,
+ FromMatch = lists:keysearch(From, #actor.name, Actors),
+ ToMatch = lists:keysearch(To, #actor.name, Actors),
+ case {FromMatch, ToMatch} of
+ {false, false} ->
+ not DisplayAll;
+ {false, {value, T}} ->
+ is_hidden(T, S);
+ {{value, F}, false} ->
+ is_hidden(F, S);
+ {{value, F}, {value, T}} when DisplayAll ->
+ is_hidden(F, S) orelse is_hidden(T, S);
+ {{value, F}, {value, T}} when F#actor.include; T#actor.include ->
+ F#actor.exclude orelse T#actor.exclude;
+ {{value, _F}, {value, _T}}->
+ true
+ end.
+
+move_actor(From, To, Actors, S) ->
+ Pos = #actor.name,
+ ToName = To#actor.name,
+ FromName = From#actor.name,
+ ToIx = actor_index(ToName, Pos, Actors),
+ FromIx = actor_index(FromName, Pos, Actors),
+ if
+ FromIx =/= 0, ToIx =/= 0, ToIx > FromIx ->
+ Actors2 = lists:keydelete(FromName, Pos, Actors),
+ Actors3 = insert_actor_after(From, To, Actors2),
+ S2 = S#state{actors = Actors3},
+ refresh_main_window(S2);
+ FromIx =/= 0, ToIx =/= 0 ->
+ Actors2 = lists:keydelete(FromName, Pos, Actors),
+ Actors3 = insert_actor_before(From, To, Actors2),
+ S2 = S#state{actors = Actors3},
+ refresh_main_window(S2);
+ true ->
+ %% Ignore
+ S
+ end.
+
+insert_actor_after(From, To, [H | T]) ->
+ case To#actor.name =:= H#actor.name of
+ true -> [H, From | T];
+ false -> [H | insert_actor_after(From, To, T)]
+ end;
+insert_actor_after(_From, _To, []) ->
+ [].
+
+insert_actor_before(From, To, [H | T]) ->
+ case To#actor.name =:= H#actor.name of
+ true -> [From, H | T];
+ false -> [H | insert_actor_before(From, To, T)]
+ end;
+insert_actor_before(_From, _To, []) ->
+ [].
+
+actor_index(_Key, _Pos, []) ->
+ 0;
+actor_index(Key, Pos, [H | T]) ->
+ case Key =:= element(Pos, H) of
+ false -> actor_index(Key, Pos, T) + 1;
+ true -> 1
+ end.
+
+y_to_n(Y, S) ->
+ Y2 = ((Y / S#state.scale) - ?initial_y + (?incr_y / 2)),
+ N = round(Y2 / ?incr_y - 0.2),
+ MaxN = queue_length(S#state.events),
+ if
+ N =< 0 -> actor;
+ N > MaxN -> actor;
+ true -> {event, N}
+ end.
+
+x_to_n(X, S) ->
+ Scale = S#state.scale,
+ Len = length(S#state.actors),
+ X2 = X - (?initial_x * Scale),
+ N = X2 / (?incr_x * Scale),
+ N2 = trunc(N + 1.5),
+ if
+ N2 > Len -> Len;
+ N2 < 1 -> 1;
+ true -> N2
+ end.
+
+write_text(Text, X, Y, Color, Font, S, DC) ->
+ wxDC:setFont(DC, Font),
+ wxDC:setTextForeground(DC, Color),
+ wxDC:drawText(DC, Text, {X, round(Y - (?incr_y * S#state.scale / 2))-3}).
+
+do_open_event(S, N) ->
+ Events = queue_to_list(S#state.events),
+ S2 = S#state{events = list_to_queue(Events)},
+ case catch lists:nth(N, Events) of
+ {'EXIT', _} ->
+ {error, {no_such_event, N}};
+ #e{key = Key} ->
+ Pid = S#state.collector_pid,
+ Fun = fun create_contents_window/2,
+ Prev = et_collector:iterate(Pid, Key, -1),
+ {S2, Res} =
+ if
+ Prev =:= Key ->
+ et_collector:iterate(Pid, first, 1, Fun, {S2, []});
+ true ->
+ et_collector:iterate(Pid, Prev, 1, Fun, {S2, []})
+ end,
+ case Res of
+ [] ->
+ {error, no_contents_viewer_started};
+ [Single] ->
+ Single;
+ Multi ->
+ {error, {too_many, Multi}}
+ end
+ end.
+
+create_contents_window(Event, {S, Res}) ->
+ Options = [{viewer_pid, self()},
+ {event, Event},
+ {event_order, S#state.event_order},
+ {active_filter, S#state.active_filter},
+ {wx_debug, S#state.wx_debug}
+ | S#state.filters],
+ case catch et_wx_contents_viewer:start_link(Options) of
+ {ok, Pid} ->
+ {S, [{ok, Pid} | Res]};
+ {error, Reason} ->
+ ok = error_logger:format("~p(~p): create_contents_window(~p) ->~n ~p~n",
+ [?MODULE, self(), Options, Reason]),
+ {S, [{error, Reason} | Res]};
+ Stuff ->
+ {S, [{error, {stuff, Stuff}} | Res]}
+ end.
+
+print_setup(S) ->
+ S2 = #state{print_psdd = PSDD0, print_d = PD0} = init_printers(S),
+
+ wxPageSetupDialogData:setPrintData(PSDD0, PD0),
+ PSD = wxPageSetupDialog:new(S#state.frame, [{data,PSDD0}]),
+ wxPageSetupDialog:showModal(PSD),
+
+ PSDD1 = wxPageSetupDialog:getPageSetupData(PSD),
+ PD1 = wxPageSetupDialogData:getPrintData(PSDD1),
+
+ %% Create new objects using copy constructor
+ PD = wxPrintData:new(PD1),
+ PsDD = wxPageSetupDialogData:new(PSDD1),
+ wxPageSetupDialog:destroy(PSD),
+ wxPageSetupDialogData:destroy(PSDD0),
+ wxPrintData:destroy(PD0),
+ S2#state{print_psdd=PsDD, print_d=PD}.
+
+print(#state{print_d = undefined, print_psdd = undefined} = S, Scope) ->
+ S2 = print_setup(S),
+ print(S2, Scope);
+print(#state{print_psdd = PSDD, print_d = PD} = S, Scope) ->
+ PDD = wxPrintDialogData:new(PD),
+ wxPrintDialogData:enablePrintToFile(PDD, true),
+ wxPrintDialogData:enablePageNumbers(PDD, true),
+ wxPrintDialogData:enableSelection(PDD, true),
+ Tab = ets:new(?MODULE, [public]),
+ GetPageInfo =
+ fun(This) ->
+ {_, _, PW, PH} = wxPrintout:getPaperRectPixels(This),
+ PrinterS = S#state{context = printer,
+ canvas_width = PW,
+ canvas_height = PH},
+ EventsPerPage = events_per_page(PrinterS, PH),
+ PagedEvents = paged_events(PrinterS, Scope, EventsPerPage),
+ [ets:insert(Tab, PE) || PE <- PagedEvents],
+ ets:insert(Tab, PrinterS),
+ NumPages = length(PagedEvents),
+ {1, NumPages, 1, NumPages}
+ end,
+ HasPage =
+ fun(_This, Page) ->
+ Size = ets:info(Tab, size),
+ NumPages = Size - 1,
+ (Page >= 1) andalso (Page =< NumPages)
+ end,
+ OnPrintPage =
+ fun(This, Page) ->
+ wxPrintout:mapScreenSizeToPageMargins(This, PSDD),
+ [PrinterS] = ets:lookup(Tab, state),
+ Events = ets:lookup_element(Tab, Page, 2),
+ DC = wxPrintout:getDC(This),
+ PrinterS2 = draw_all_actors(PrinterS, DC),
+ PrinterS3 = PrinterS2#state{y_pos = ?initial_y * PrinterS2#state.scale},
+ lists:foldl(fun(E, State) -> display_event(E, State, DC) end,
+ PrinterS3,
+ Events),
+ true
+ end,
+ Printout1 = wxPrintout:new("Print", OnPrintPage,
+ [{getPageInfo, GetPageInfo}, {hasPage, HasPage}]),
+ Printout2 = wxPrintout:new("Print", OnPrintPage,
+ [{getPageInfo, GetPageInfo}, {hasPage, HasPage}]),
+ Preview = wxPrintPreview:new(Printout1, [{printoutForPrinting, Printout2}, {data,PDD}]),
+ case wxPrintPreview:isOk(Preview) of
+ true ->
+ PF = wxPreviewFrame:new(Preview, S#state.frame, []),
+ wxPreviewFrame:centre(PF, [{dir, ?wxBOTH}]),
+ wxPreviewFrame:initialize(PF),
+ wxPreviewFrame:centre(PF),
+ wxPreviewFrame:show(PF),
+ OnClose = fun(_Wx, EventRef) -> ets:delete(Tab), wxEvent:skip(EventRef) end,
+ wxPreviewFrame:connect(PF, close_window, [{callback, OnClose}]);
+ false ->
+ io:format("Could not create preview window.\n"
+ "Perhaps your current printer is not set correctly?~n", []),
+ wxPrintPreview:destroy(Preview),
+ ets:delete(Tab)
+ end,
+ S.
+
+paged_events(S, Scope, EventsPerPage) ->
+ {_, Events} =
+ case Scope of
+ print_one_page ->
+ revert(S#state{events_per_page = EventsPerPage});
+ print_all_pages ->
+ collect_more_events(S, first, S#state.n_events)
+ end,
+ split_list(Events, EventsPerPage).
+
+split_list(List, N) when is_integer(N), N > 0 ->
+ do_split_list(List, N, 1, []).
+
+do_split_list([], _N, _Page, Acc) ->
+ lists:reverse(Acc);
+do_split_list(List, N, Page, Acc) ->
+ {Items, Rest} = pick_n(List, N, []),
+ do_split_list(Rest, N, Page + 1, [{Page, Items} | Acc]).
+
+get_latest_resize(#wx{obj = ObjRef, event = #wxSize{}} = Wx) ->
+ receive
+ #wx{obj = ObjRef, event = #wxSize{}} = Wx2 ->
+ get_latest_resize(Wx2)
+ after 100 ->
+ Wx
+ end.
+
+get_latest_scroll(#wx{obj = ObjRef, event = #wxScroll{type = scroll_changed}} = Wx) ->
+ receive
+ #wx{obj = ObjRef, event = #wxScroll{type = scroll_changed}} = Wx2 ->
+ get_latest_scroll(Wx2)
+ after 100 ->
+ Wx
+ end.
+
+update_scroll_bar(#state{scroll_bar = ScrollBar,
+ status_bar = StatusBar,
+ events_per_page = EventsPerPage,
+ n_events = N} = S) ->
+ Opts = [{refresh, true}],
+ {_, LineTopY, LineBotY} = calc_y(S),
+ Range = LineBotY - LineTopY,
+ EventPos =
+ case event_pos(S) of
+ 1 -> 0;
+ P -> P
+ end,
+ if
+ N =/= 0,
+ EventsPerPage =/= 0 ->
+ PixelsPerEvent = Range / EventsPerPage,
+ Share = EventsPerPage / N,
+ wxScrollBar:setScrollbar(ScrollBar,
+ trunc(EventPos * Share * PixelsPerEvent),
+ round(Share * Range),
+ Range,
+ round(Share * Range),
+ Opts);
+ true ->
+ wxScrollBar:setScrollbar(ScrollBar,
+ 0,
+ Range,
+ Range,
+ Range,
+ Opts)
+ end,
+ wxStatusBar:setStatusText(StatusBar, where_text(S)),
+ S.
+
+events_per_page(S, PageHeight) ->
+ EventsPerPage = ((PageHeight - (?initial_y * S#state.scale)) div (?incr_y * S#state.scale)),
+ lists:max([1, EventsPerPage]).
+
+select_file(Frame, Message, DefaultFile, Style) ->
+ Dialog = wxFileDialog:new(Frame,
+ [{message, Message},
+ {defaultDir, filename:dirname(DefaultFile)},
+ {defaultFile, filename:basename(DefaultFile)},
+ {style, Style}]),
+ Choice =
+ case wxMessageDialog:showModal(Dialog) of
+ ?wxID_CANCEL -> cancel;
+ ?wxID_OK -> {ok, wxFileDialog:getPath(Dialog)}
+ end,
+ wxFileDialog:destroy(Dialog),
+ Choice.
+
+%%%----------------------------------------------------------------------
+%%% String padding of actors
+%%%----------------------------------------------------------------------
+
+opt_create_actor(Name, Tag, S) ->
+ Actors = S#state.actors,
+ New =
+ case lists:keysearch(Name, #actor.name, Actors) of
+ {value, Old} -> Old;
+ false -> create_actor(Name)
+ end,
+ case Tag of
+ include -> New#actor{include = true};
+ exclude -> New#actor{exclude = true}
+ end.
+
+create_actor(Name) ->
+ String = name_to_string(Name),
+ %% PaddedString = pad_string(String, 8),
+ #actor{name = Name, string = String, include = false, exclude = false}.
+
+name_to_string(Name) ->
+ case catch io_lib:format("~s", [Name]) of
+ {'EXIT', _} -> lists:flatten(io_lib:format("~w", [Name]));
+ GoodString -> lists:flatten(GoodString)
+ end.
+
+pad_string(Atom, MinLen) when is_atom(Atom) ->
+ pad_string(atom_to_list(Atom), MinLen);
+pad_string(String, MinLen) when is_integer(MinLen), MinLen >= 0 ->
+ Len = length(String),
+ case Len >= MinLen of
+ true ->
+ String;
+ false ->
+ String ++ lists:duplicate(MinLen - Len, $ )
+ end.
+
+%%%----------------------------------------------------------------------
+%%% Queue management
+%%%----------------------------------------------------------------------
+
+queue_new() ->
+ {0, [], []}.
+
+queue_in(X, {Size, In, Out}) ->
+ {Size + 1, [X | In], Out}.
+
+%% queue_out(Q) ->
+%% case Q of
+%% {Size, In, [H | Out]} -> {{value, H}, {Size - 1, In, Out}};
+%% {Size, [], []} -> {empty, {Size, [], []}};
+%% {Size, In, _} -> queue_out({Size, [], lists:reverse(In)})
+%% end.
+
+queue_to_list({_Size, [], Out}) ->
+ Out;
+queue_to_list({_Size, In, Out}) ->
+ Out ++ lists:reverse(In).
+
+queue_length({Size, _In, _Out}) ->
+ Size.
+
+list_to_queue(List) when is_list(List) ->
+ {length(List), [], List}.
diff --git a/lib/et/src/modules.mk b/lib/et/src/modules.mk
index 8e9dd1a386..8d6c0902fb 100644
--- a/lib/et/src/modules.mk
+++ b/lib/et/src/modules.mk
@@ -1,27 +1,30 @@
#-*-makefile-*- ; force emacs to enter makefile-mode
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 2001-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 2001-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
MODULES = \
et \
et_collector \
- et_contents_viewer \
+ et_gs_contents_viewer \
+ et_gs_viewer \
et_selector \
- et_viewer
+ et_viewer \
+ et_wx_contents_viewer \
+ et_wx_viewer
HRL_FILES = \
../include/et.hrl
diff --git a/lib/et/doc/src/make.dep b/lib/et/test/Makefile
index fae2cd02b3..9aedf96ce9 100644
--- a/lib/et/doc/src/make.dep
+++ b/lib/et/test/Makefile
@@ -1,53 +1,81 @@
-#-*-makefile-*- ; force emacs to enter makefile-mode
+#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 2002-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 2009-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
+
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp.mk
+
# ----------------------------------------------------
-# >>>> Do not edit this file <<<<
-# This file was automaticly generated by
-# /home/otp/bin/docdepend
+# Target Specs
# ----------------------------------------------------
+MODULES= \
+ ett \
+ et_wx_SUITE \
+ et_test_lib
+
+
+ERL_FILES= $(MODULES:%=%.erl)
+
+HRL_FILES= et_test_lib.hrl
+
+TARGET_FILES= \
+ $(MODULES:%=$(EBIN)/%.$(EMULATOR))
+
+INSTALL_PROGS= $(TARGET_FILES)
# ----------------------------------------------------
-# TeX files that the DVI file depend on
+# Release directory specification
# ----------------------------------------------------
+RELSYSDIR = $(RELEASE_PATH)/et_test
-book.dvi: book.tex et.tex et_architecture.tex et_collector.tex \
- et_examples.tex et_intro.tex et_selector.tex \
- et_viewer.tex part.tex ref_man.tex
+# ----------------------------------------------------
+# FLAGS
+# ----------------------------------------------------
+#ERL_COMPILE_FLAGS +=
+
+EBIN = .
# ----------------------------------------------------
-# Source inlined when transforming from source to LaTeX
+# Targets
# ----------------------------------------------------
-book.tex: ref_man.xml
+tests debug opt: $(TARGET_FILES)
-et_architecture.tex: ../../examples/et_demo.erl
+clean:
+ rm -f $(TARGET_FILES)
+ rm -f core
-et_examples.tex: ../../examples/et_demo.erl
+docs:
# ----------------------------------------------------
-# Pictures that the DVI file depend on
-# ----------------------------------------------------
+# Release Target
+# ----------------------------------------------------
+include $(ERL_TOP)/make/otp_release_targets.mk
+
+release_spec: opt
+
+release_tests_spec: opt
+ $(INSTALL_DIR) $(RELSYSDIR)
+ $(INSTALL_DATA) et.spec $(ERL_FILES) $(HRL_FILES) $(RELSYSDIR)
+ $(INSTALL_PROGRAM) ett $(INSTALL_PROGS) $(RELSYSDIR)
+# chmod -f -R u+w $(RELSYSDIR)
+# @tar cf - *_SUITE_data | (cd $(RELSYSDIR); tar xf -)
-book.dvi: sim_trans.ps sim_trans_contents_viewer_collector.ps \
- sim_trans_contents_viewer_mgr_actors.ps sim_trans_mgr_actors.ps \
- sim_trans_move_actor.ps sim_trans_write_lock.ps
+release_docs_spec:
-book.dvi: live_trans.ps megaco_collector.ps megaco_filter.ps \
- megaco_tracer.ps sim_trans.ps
diff --git a/lib/et/test/README b/lib/et/test/README
new file mode 100644
index 0000000000..4269186c93
--- /dev/null
+++ b/lib/et/test/README
@@ -0,0 +1,30 @@
+
+Testing and running et tests.
+
+Testing gui api/applications can be hard, but we can at least
+test that wxerlang behaves as we expected, i.e. that the api
+is consistent and that it don't crash.
+
+The tests are structured as they are because we want you to
+be able to run them in three different ways.
+ - direct via an erlang shell
+ - via common_test application
+ - via erlang/OTP inhouse ts tool.
+
+To run all the tests compile them and on unix
+run ./ett to create an erlang terminal.
+
+Invoke ett:t(). in the erlang shell to run all regression tests.
+If you want to specific tests invoke ett:t(Module)
+or ett:t(Module, TestCase).
+
+To run all tests including the ones that require manual intervention run.
+ett:t(all, [{user,true}]).
+
+To see every test_case window use
+ett:t(all, [{user,step}]).
+This requires that you manually close each window to step to the
+next test_case.
+
+If you want to run specific test_cases use:
+ett:t({Module,TestCase}, [{user,step}]).
diff --git a/lib/et/test/et.spec b/lib/et/test/et.spec
new file mode 100644
index 0000000000..69cd8d7582
--- /dev/null
+++ b/lib/et/test/et.spec
@@ -0,0 +1,2 @@
+{topcase, {dir, "../et_test"}}.
+
diff --git a/lib/et/test/et_test_lib.erl b/lib/et/test/et_test_lib.erl
new file mode 100644
index 0000000000..b91b63786c
--- /dev/null
+++ b/lib/et/test/et_test_lib.erl
@@ -0,0 +1,329 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+
+-module(et_test_lib).
+-compile(export_all).
+
+-include("et_test_lib.hrl").
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+init_per_suite(Config) when is_list(Config)->
+ incr_timetrap(Config, 5).
+
+end_per_suite(Config) when is_list(Config)->
+ ok.
+
+incr_timetrap(Config, Times) ->
+ Key = tc_timeout,
+ KeyPos = 1,
+ NewTime =
+ case lists:keysearch(Key, KeyPos, Config) of
+ {value, {Key, OldTime}} ->
+ (timer:minutes(1) + OldTime) * Times;
+ false ->
+ timer:minutes(1) * Times
+ end,
+ lists:keystore(Key, KeyPos, Config, {Key, NewTime}).
+
+set_kill_timer(Config) ->
+ case init:get_argument(et_test_timeout) of
+ {ok, _} ->
+ Config;
+ _ ->
+ Time =
+ case lookup_config(tc_timeout, Config) of
+ [] ->
+ timer:minutes(5);
+ ConfigTime when is_integer(ConfigTime) ->
+ ConfigTime
+ end,
+ WatchDog = test_server:timetrap(Time),
+ [{kill_timer, WatchDog} | Config]
+ end.
+
+reset_kill_timer(Config) ->
+ DogKiller =
+ case get(et_test_server) of
+ true ->
+ fun(P) when is_pid(P) -> P ! stop;
+ (_) -> ok
+ end;
+ _ ->
+ fun(Ref) -> test_server:timetrap_cancel(Ref) end
+ end,
+ case lists:keysearch(kill_timer, 1, Config) of
+ {value, {kill_timer, WatchDog}} ->
+ DogKiller(WatchDog),
+ lists:keydelete(kill_timer, 1, Config);
+ _ ->
+ Config
+ end.
+
+lookup_config(Key,Config) ->
+ case lists:keysearch(Key, 1, Config) of
+ {value,{Key,Val}} ->
+ Val;
+ _ ->
+ []
+ end.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+wx_init_per_suite(Config) ->
+ {_Pid, Ref} =
+ spawn_monitor(fun() ->
+ %% Avoid test case crash if wx master process dies
+ process_flag(trap_exit, true),
+ try
+ case os:type() of
+ {unix,darwin} ->
+ exit({skipped, "Can not test on MacOSX"});
+ {unix, _} ->
+ io:format("DISPLAY ~s~n", [os:getenv("DISPLAY")]),
+ case proplists:get_value(xserver, Config, none) of
+ none -> ignore;
+ Server -> os:putenv("DISPLAY", Server)
+ end;
+ _ ->
+ ignore
+ end,
+ wx:new(),
+ wx:destroy()
+ catch
+ error:undef ->
+ exit({skipped, "No wx compiled for this platform"});
+ _:Reason ->
+ exit({skipped, lists:flatten(io_lib:format("Start wx failed: ~p", [Reason]))})
+ end,
+ exit(normal)
+ end),
+ receive
+ {'DOWN', Ref, _, _, normal} ->
+ init_per_suite(Config);
+ {'DOWN', Ref, _, _, {skipped, _} = Skipped} ->
+ Skipped;
+ {'DOWN', Ref, _, _, Reason} ->
+ exit({wx_init_per_suite, Reason})
+ after timer:minutes(1) ->
+ exit({wx_init_per_suite, timeout})
+ end.
+
+wx_end_per_suite(Config) ->
+ end_per_suite(Config).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+init_per_testcase(_Func, Config) when is_list(Config) ->
+ set_kill_timer(Config),
+ global:register_name(et_global_logger, group_leader()),
+ Config.
+
+end_per_testcase(_Func, Config) when is_list(Config) ->
+ global:unregister_name(et_global_logger),
+ reset_kill_timer(Config),
+ Config.
+
+%% Backwards compatible with test_server
+tc_info(suite) -> [];
+tc_info(doc) -> "".
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Use ?log(Format, Args) as wrapper
+log(Format, Args, LongFile, Line) ->
+ File = filename:basename(LongFile),
+ Format2 = lists:concat([File, "(", Line, ")", ": ", Format]),
+ log(Format2, Args).
+
+log(Format, Args) ->
+ case global:whereis_name(et_global_logger) of
+ undefined ->
+ io:format(user, Format, Args);
+ Pid ->
+ io:format(Pid, Format, Args)
+ end.
+
+verbose(Format, Args, File, Line) ->
+ Arg = et_test_verbose,
+ case get(Arg) of
+ false ->
+ ok;
+ true ->
+ log(Format, Args, File, Line);
+ undefined ->
+ case init:get_argument(Arg) of
+ {ok, List} when is_list(List) ->
+ case lists:last(List) of
+ ["true"] ->
+ put(Arg, true),
+ log(Format, Args, File, Line);
+ _ ->
+ put(Arg, false),
+ ok
+ end;
+ _ ->
+ put(Arg, false),
+ ok
+ end
+ end.
+
+error(Format, Args, File, Line) ->
+ global:send(et_global_logger, {failed, File, Line}),
+ Fail = {filename:basename(File),Line,Args},
+ case global:whereis_name(et_test_case_sup) of
+ undefined -> ignore;
+ Pid -> Pid ! Fail
+ %% global:send(et_test_case_sup, Fail),
+ end,
+ log("<ERROR>~n" ++ Format, Args, File, Line).
+
+
+pick_msg() ->
+ receive
+ Message -> Message
+ after 4000 -> timeout
+ end.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Utility functions
+
+user_available(Config) ->
+ false /= proplists:get_value(user, Config, false).
+
+
+wx_destroy(Frame, Config) ->
+ case proplists:get_value(user, Config, false) of
+ false ->
+ timer:sleep(100),
+ ?m(ok, wxFrame:destroy(Frame)),
+ ?m(ok, wx:destroy());
+ true ->
+ timer:sleep(500),
+ ?m(ok, wxFrame:destroy(Frame)),
+ ?m(ok, wx:destroy());
+ step -> %% Wait for user to close window
+ ?m(ok, wxEvtHandler:connect(Frame, close_window, [{skip,true}])),
+ wait_for_close()
+ end.
+
+wait_for_close() ->
+ receive
+ #wx{event=#wxClose{}} ->
+ ?log("Got close~n",[]),
+ ?m(ok, wx:destroy());
+ #wx{obj=Obj, event=Event} ->
+ try
+ Name = wxTopLevelWindow:getTitle(Obj),
+ ?log("~p Event: ~p~n", [Name, Event])
+ catch _:_ ->
+ ?log("Event: ~p~n", [Event])
+ end,
+ wait_for_close();
+ Other ->
+ ?log("Unexpected: ~p~n", [Other]),
+ wait_for_close()
+ end.
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% A small test server, which can be run standalone in a shell
+
+run_test(Test = {_,_},Config) ->
+ run_test([Test],Config);
+run_test([{Module, TC} | Rest], Config) ->
+ log("\n\n=== Eval test suite: ~w ===~n", [Module]),
+ case catch Module:init_per_suite(Config) of
+ {skipped, Reason} ->
+ log("Test suite skipped: ~s~n", [Reason]),
+ [{skipped, Reason}];
+ NewConfig when is_list(NewConfig) ->
+ Res =
+ if
+ TC =:= all ->
+ [do_run_test(Module, Test, NewConfig) || Test <- Module:all()];
+ is_list(TC) ->
+ [do_run_test(Module, Test, NewConfig) || Test <- TC];
+ true ->
+ [do_run_test(Module, TC, NewConfig)]
+ end,
+ Module:end_per_suite(NewConfig),
+ Res ++ run_test(Rest, NewConfig);
+ Error ->
+ ?error("Test suite skipped: ~w~n", [Error]),
+ [{skipped, Error}]
+ end;
+run_test([], _Config) ->
+ [].
+
+do_run_test(Module, all, Config) ->
+ All = [{Module, Test} || Test <- Module:all()],
+ run_test(All, Config);
+do_run_test(Module, TestCase, Config) ->
+ log("Eval test case: ~w~n", [{Module, TestCase}]),
+ Sec = timer:seconds(1) * 1000,
+ {T, Res} =
+ timer:tc(?MODULE, eval_test_case, [Module, TestCase, Config]),
+ log("Tested ~w in ~w sec~n", [TestCase, T div Sec]),
+ {T div Sec, Res}.
+
+eval_test_case(Mod, Fun, Config) ->
+ flush(),
+ global:register_name(et_test_case_sup, self()),
+ Flag = process_flag(trap_exit, true),
+ Pid = spawn_link(?MODULE, test_case_evaluator, [Mod, Fun, [Config]]),
+ R = wait_for_evaluator(Pid, Mod, Fun, Config),
+ global:unregister_name(et_test_case_sup),
+ process_flag(trap_exit, Flag),
+ R.
+
+test_case_evaluator(Mod, Fun, [Config]) ->
+ NewConfig = Mod:init_per_testcase(Fun, Config),
+ R = apply(Mod, Fun, [NewConfig]),
+ Mod:fin_per_testcase(Fun, NewConfig),
+ exit({test_case_ok, R}).
+
+wait_for_evaluator(Pid, Mod, Fun, Config) ->
+ receive
+ {'EXIT', Pid, {test_case_ok, _PidRes}} ->
+ Errors = flush(),
+ Res =
+ case Errors of
+ [] -> ok;
+ Errors -> failed
+ end,
+ {Res, {Mod, Fun}, Errors};
+ {'EXIT', Pid, {skipped, Reason}} ->
+ log("<WARNING> Test case ~w skipped, because ~p~n",
+ [{Mod, Fun}, Reason]),
+ Mod:fin_per_testcase(Fun, Config),
+ {skip, {Mod, Fun}, Reason};
+ {'EXIT', Pid, Reason} ->
+ log("<ERROR> Eval process ~w exited, because\n\t~p~n",
+ [{Mod, Fun}, Reason]),
+ Mod:fin_per_testcase(Fun, Config),
+ {crash, {Mod, Fun}, Reason}
+ end.
+
+flush() ->
+ receive Msg -> [Msg | flush()]
+ after 0 -> []
+ end.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/lib/et/test/et_test_lib.hrl b/lib/et/test/et_test_lib.hrl
new file mode 100644
index 0000000000..0d75318d99
--- /dev/null
+++ b/lib/et/test/et_test_lib.hrl
@@ -0,0 +1,90 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+
+-include_lib("wx/include/wx.hrl").
+
+-define(log(Format,Args), et_test_lib:log(Format,Args,?FILE,?LINE)).
+-define(warning(Format,Args), ?log("<WARNING>\n " ++ Format,Args)).
+-define(error(Format,Args), et_test_lib:error(Format,Args,?FILE,?LINE)).
+-define(verbose(Format,Args), et_test_lib:verbose(Format,Args,?FILE,?LINE)).
+
+-define(fatal(Format,Args),
+ ?error(Format, Args),
+ exit({test_case_fatal, Format, Args, ?FILE, ?LINE})).
+
+-define(skip(Format,Args),
+ ?warning(Format, Args),
+ exit({skipped, ?flat_format(Format, Args)})).
+
+-define(ignore(Expr),
+ fun() ->
+ AcTuAlReS = (catch (Expr)),
+ ?verbose("ok: ~p\n",[AcTuAlReS])
+ end()).
+
+-define(msym(ExpectedRes, Expr),
+ fun() ->
+ AcTuAlReS = (catch (Expr)),
+ case AcTuAlReS of
+ ExpectedRes ->
+ ?verbose("ok: ~p\n",[AcTuAlReS]),
+ AcTuAlReS;
+ _ ->
+ et_test_lib:error("Not matching actual result was:\n ~p \nExpected ~s\n",
+ [AcTuAlReS, ??ExpectedRes],
+ ?FILE, ?LINE),
+ AcTuAlReS
+ end
+ end()).
+
+-define(m(ExpectedRes, Expr),
+ fun() ->
+ AcTuAlReS = (catch (Expr)),
+ case AcTuAlReS of
+ ExpectedRes ->
+ ?verbose("ok: ~p\n",[AcTuAlReS]),
+ AcTuAlReS;
+ _ ->
+ et_test_lib:error("Not matching actual result was:\n\t~p \nExpected:\n\t~p\n",
+ [AcTuAlReS, ExpectedRes],
+ ?FILE, ?LINE),
+ AcTuAlReS
+ end
+ end()).
+
+-define(m_receive(ExpectedMsg),
+ ?m(ExpectedMsg,et_test_lib:pick_msg())).
+
+-define(m_multi_receive(ExpectedMsgs),
+ fun() ->
+ TmPeXpCtEdMsGs = lists:sort(ExpectedMsgs),
+ AcTuAlReS =
+ lists:sort(lists:map(fun(_) ->
+ et_test_lib:pick_msg()
+ end, TmPeXpCtEdMsGs)),
+ case AcTuAlReS of
+ TmPeXpCtEdMsGs ->
+ ?verbose("ok: ~p\n",[AcTuAlReS]),
+ AcTuAlReS;
+ _ ->
+ et_test_lib:error("Not matching actual result was:\n ~p \nExpected ~p\n",
+ [AcTuAlReS, ExpectedMsgs],
+ ?FILE, ?LINE),
+ AcTuAlReS
+ end
+ end()).
diff --git a/lib/et/test/et_wx_SUITE.erl b/lib/et/test/et_wx_SUITE.erl
new file mode 100644
index 0000000000..1a16ca69a3
--- /dev/null
+++ b/lib/et/test/et_wx_SUITE.erl
@@ -0,0 +1,100 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+
+-module(et_wx_SUITE).
+
+-export([all/0, init_per_suite/1, end_per_suite/1,
+ init_per_testcase/2, fin_per_testcase/2, end_per_testcase/2]).
+
+-compile(export_all).
+
+-include("et_test_lib.hrl").
+
+%% Initialization functions.
+init_per_suite(Config) ->
+ et_test_lib:wx_init_per_suite(Config).
+
+end_per_suite(Config) ->
+ et_test_lib:wx_end_per_suite(Config).
+
+init_per_testcase(Func,Config) ->
+ et_test_lib:init_per_testcase(Func,Config).
+end_per_testcase(Func,Config) ->
+ et_test_lib:end_per_testcase(Func,Config).
+fin_per_testcase(Func,Config) -> %% For test_server
+ et_test_lib:end_per_testcase(Func,Config).
+
+%% SUITE specification
+all() ->
+ all(suite).
+all(suite) ->
+ [
+ start_all_windows
+ ].
+
+%% The test cases
+
+%% Display all windows and see if something crashes
+start_all_windows(TestInfo) when is_atom(TestInfo) ->
+ et_test_lib:tc_info(TestInfo);
+start_all_windows(_Config) ->
+ process_flag(trap_exit, true),
+ {ok, ViewerPid} = ?msym({ok, _}, et_viewer:start_link([])),
+ CollectorPid = et_viewer:get_collector_pid(ViewerPid),
+ ?msym({ok, _}, et_collector:report_event(CollectorPid,
+ 60,
+ some_from_actor,
+ some_to_actor,
+ some_label,
+ "Some details")),
+ timer:sleep(timer:seconds(1)),
+
+ {ok, EventPid1} = ?msym({ok, _}, et_viewer:open_event(ViewerPid, 1)),
+ {ok, EventPid2} = ?msym({ok, _}, et_viewer:open_event(ViewerPid, 1)),
+ timer:sleep(timer:seconds(10)),
+
+ ?msym(alive, process_state(ViewerPid)),
+ ?msym(alive, process_state(CollectorPid)),
+ ?msym(alive, process_state(EventPid1)),
+ ?msym(alive, process_state(EventPid2)),
+
+ ?m(ok, et_wx_contents_viewer:stop(EventPid1)),
+ timer:sleep(timer:seconds(1)),
+
+ ?msym(alive, process_state(ViewerPid)),
+ ?msym(alive, process_state(CollectorPid)),
+ ?msym(dead, process_state(EventPid1)),
+ ?msym(alive, process_state(EventPid2)),
+
+ ?m(ok, et_viewer:stop(ViewerPid)),
+ timer:sleep(timer:seconds(1)),
+
+ ?msym(dead, process_state(ViewerPid)),
+ ?msym(dead, process_state(CollectorPid)),
+ ?msym(dead, process_state(EventPid1)),
+ ?msym(dead, process_state(EventPid2)),
+
+ ?m([], et_test_lib:flush()),
+
+ ok.
+
+process_state(Pid) ->
+ case process_info(Pid, group_leader) of
+ {group_leader, _} -> alive;
+ undefined -> dead
+ end.
diff --git a/lib/et/test/ett b/lib/et/test/ett
new file mode 100755
index 0000000000..da2443df61
--- /dev/null
+++ b/lib/et/test/ett
@@ -0,0 +1,55 @@
+#! /bin/sh -f
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2009-2010. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+
+# Usage: ett [-cerl] <args to erlang startup script>
+
+emu=erl
+while [ $# -gt 0 ]; do
+ case "$1" in
+ "-cerl")
+ shift
+ emu=cerl
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+log=test_log_$$
+latest=test_log_latest
+args=${1+"$@"}
+
+erlcmd="$emu -sname test_server -smp -pa ../../et/ebin $p $args -et_test_verbose true -et_test_timeout"
+
+echo "Give the following command in order to see the outcome:"
+echo ""
+echo " less $log"
+
+rm "$latest" 2>/dev/null
+ln -s "$log" "$latest"
+touch "$log"
+
+ostype=`uname -s`
+if [ "$ostype" = "SunOS" ] ; then
+ /usr/openwin/bin/xterm -T "Testing et" -l -lf "$log" -e $erlcmd &
+else
+ xterm -T "Testing et" -e script -f -c "$erlcmd" "$log" &
+fi
+
+tail -f "$log" | egrep 'Eval|<ERROR>|NYI'
diff --git a/lib/et/test/ett.erl b/lib/et/test/ett.erl
new file mode 100644
index 0000000000..1896e65842
--- /dev/null
+++ b/lib/et/test/ett.erl
@@ -0,0 +1,154 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+
+-module(ett).
+-compile(export_all).
+
+%% Modules or suites can be shortcuts, for example wx expands to et_wx_SUITE.
+%%
+%% t(Tests) run et testcases.
+%% Tests can be module, {module, test_case} or [module|{module,test_case}]
+
+t() ->
+ t(read_test_case()).
+t(Test) ->
+ t(Test, []).
+
+t(Mod, TC) when is_atom(Mod), is_atom(TC) ->
+ t({Mod,TC}, []);
+t(all, Config) when is_list(Config) ->
+ Fs = filelib:wildcard("et_*_SUITE.erl"),
+ t([list_to_atom(filename:rootname(File)) || File <- Fs], Config);
+t(Test,Config) when is_list(Config) ->
+ Tests = resolve(Test),
+ write_test_case(Test),
+ Res = et_test_lib:run_test(Tests, Config),
+ append_test_case_info(Test, Res).
+
+user() ->
+ user(read_test_case()).
+user(Mod) ->
+ t(Mod, [{user,step}]).
+user(Mod,Tc) when is_atom(Tc) ->
+ t({Mod,Tc}, [{user,step}]).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Resolves the name of test suites and test cases
+%% according to the alias definitions. Single atoms
+%% are assumed to be the name of a test suite.
+
+resolve(Suite0) when is_atom(Suite0) ->
+ case alias(Suite0) of
+ Suite when is_atom(Suite) ->
+ {Suite, all};
+ {Suite, Case} ->
+ {Suite, Case}
+ end;
+resolve({Suite0, Case}) when is_atom(Suite0), is_atom(Case) ->
+ case alias(Suite0) of
+ Suite when is_atom(Suite) ->
+ {Suite, Case};
+ {Suite, Case2} ->
+ {Suite, Case2}
+ end;
+resolve(List) when is_list(List) ->
+ [resolve(Case) || Case <- List].
+
+alias(Suite) when is_atom(Suite) ->
+ Str = atom_to_list(Suite),
+ case {Str, lists:reverse(Str)} of
+ {"et" ++ _, "ETIUS" ++ _} ->
+ Suite;
+ _ ->
+ list_to_atom("et_" ++ Str ++ "_SUITE")
+ end.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+config_fname() ->
+ "et_test_case_config".
+
+%% Read default config file
+read_config() ->
+ Fname = config_fname(),
+ et_test_lib:log("Consulting file ~s...~n", [Fname]),
+ case file:consult(Fname) of
+ {ok, Config} ->
+ et_test_lib:log("Read config ~w~n", [Config]),
+ Config;
+ _Error ->
+ Config = et_test_lib:default_config(),
+ et_test_lib:log("<>WARNING<> Using default config: ~w~n", [Config]),
+ Config
+ end.
+
+%% Write new default config file
+write_config(Config) when is_list(Config) ->
+ Fname = config_fname(),
+ {ok, Fd} = file:open(Fname, write),
+ write_list(Fd, Config),
+ file:close(Fd).
+
+write_list(Fd, [H | T]) ->
+ ok = io:format(Fd, "~p.~n",[H]),
+ write_list(Fd, T);
+write_list(_, []) ->
+ ok.
+
+test_case_fname() ->
+ "et_test_case_info".
+
+%% Read name of test case
+read_test_case() ->
+ Fname = test_case_fname(),
+ case file:open(Fname, [read]) of
+ {ok, Fd} ->
+ Res = io:read(Fd, []),
+ file:close(Fd),
+ case Res of
+ {ok, TestCase} ->
+ et_test_lib:log("Using test case ~w from file ~s~n",
+ [TestCase, Fname]),
+ TestCase;
+ {error, _} ->
+ default_test_case(Fname)
+ end;
+ {error, _} ->
+ default_test_case(Fname)
+ end.
+
+default_test_case(Fname) ->
+ TestCase = all,
+ et_test_lib:log("<>WARNING<> Cannot read file ~s, "
+ "using default test case: ~w~n",
+ [Fname, TestCase]),
+ TestCase.
+
+write_test_case(TestCase) ->
+ Fname = test_case_fname(),
+ {ok, Fd} = file:open(Fname, write),
+ ok = io:format(Fd, "~p.~n",[TestCase]),
+ file:close(Fd).
+
+append_test_case_info(TestCase, TestCaseInfo) ->
+ Fname = test_case_fname(),
+ {ok, Fd} = file:open(Fname, [read, write]),
+ ok = io:format(Fd, "~p.~n",[TestCase]),
+ ok = io:format(Fd, "~p.~n",[TestCaseInfo]),
+ file:close(Fd),
+ TestCaseInfo.
diff --git a/lib/et/vsn.mk b/lib/et/vsn.mk
index c6d58e2055..b7d65b12a2 100644
--- a/lib/et/vsn.mk
+++ b/lib/et/vsn.mk
@@ -1,23 +1,24 @@
# This is an -*-makefile-*- file.
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 2002-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 2002-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
-ET_VSN = 1.3.3
+ET_VSN = 1.4
+TICKETS = OTP-8058
-TICKETS = OTP-8201
+TICKETS_1_3_3 = OTP-8201
TICKETS_1_3_2 = OTP-8078
TICKETS_1_3_1 = OTP-7830
diff --git a/lib/hipe/rtl/Makefile b/lib/hipe/rtl/Makefile
index beab8da547..55d20af8af 100644
--- a/lib/hipe/rtl/Makefile
+++ b/lib/hipe/rtl/Makefile
@@ -1,19 +1,19 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 2001-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 2001-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
#
@@ -113,8 +113,11 @@ HIPE_MKLITERALS=$(ERL_TOP)/bin/$(TARGET)/hipe_mkliterals
hipe_literals.hrl: $(HIPE_MKLITERALS)
$(HIPE_MKLITERALS) -e > hipe_literals.hrl
+# Need to generate hipe.hrl from one and only one target in one and only
+# one makefile; otherwise, clearmake will force rebuilds of hipe over and
+# over again.
../main/hipe.hrl: ../vsn.mk ../main/hipe.hrl.src
- sed -e "s;%VSN%;$(HIPE_VSN);" ../main/hipe.hrl.src > ../main/hipe.hrl
+ (cd ../main && $(MAKE) hipe.hrl)
$(EBIN)/hipe_rtl.beam: hipe_rtl.hrl ../main/hipe.hrl
$(EBIN)/hipe_rtl_arch.beam: hipe_rtl.hrl hipe_literals.hrl
diff --git a/lib/kernel/test/code_SUITE.erl b/lib/kernel/test/code_SUITE.erl
index 38aadac202..8e1e3d5390 100644
--- a/lib/kernel/test/code_SUITE.erl
+++ b/lib/kernel/test/code_SUITE.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
-module(code_SUITE).
@@ -547,7 +547,7 @@ add_del_path(Config) ->
ext_mod_dep(suite) ->
[];
-ext_mod_dep(doce) ->
+ext_mod_dep(doc) ->
["Every module that the code_server uses should be preloaded, "
"this test case verifies that"];
ext_mod_dep(Config) when is_list(Config) ->
diff --git a/lib/megaco/configure.in b/lib/megaco/configure.in
index 297d618369..8f94a4efcf 100644
--- a/lib/megaco/configure.in
+++ b/lib/megaco/configure.in
@@ -1,20 +1,20 @@
dnl Process this file with autoconf to produce a configure script. -*-m4-*-
dnl
dnl %CopyrightBegin%
-dnl
-dnl Copyright Ericsson AB 2001-2009. All Rights Reserved.
-dnl
+dnl
+dnl Copyright Ericsson AB 2001-2010. All Rights Reserved.
+dnl
dnl The contents of this file are subject to the Erlang Public License,
dnl Version 1.1, (the "License"); you may not use this file except in
dnl compliance with the License. You should have received a copy of the
dnl Erlang Public License along with this software. If not, it can be
dnl retrieved online at http://www.erlang.org/.
-dnl
+dnl
dnl Software distributed under the License is distributed on an "AS IS"
dnl basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
dnl the License for the specific language governing rights and limitations
dnl under the License.
-dnl
+dnl
dnl %CopyrightEnd%
dnl
@@ -145,12 +145,14 @@ AC_ARG_ENABLE(megaco_flex_scanner_lineno,
AC_SUBST(ENABLE_MEGACO_FLEX_SCANNER_LINENO)
+dnl This is the os flavour, should be unix, vxworks or win32
+if test "X$host" = "Xwin32"; then
+ ERLANG_OSTYPE=win32
+else
+ ERLANG_OSTYPE=unix
+fi
-dnl
-dnl C compiler (related) defs
-dnl
-
-AC_PROG_CC
+AC_SUBST(ERLANG_OSTYPE)
dnl Magic test for clearcase.
if test -d ../../system; then
@@ -158,33 +160,55 @@ if test -d ../../system; then
else
OTP_EXTRA_FLAGS=
fi
+AC_SUBST(OTP_EXTRA_FLAGS)
+
+dnl
+dnl If ${ERL_TOP}/make/otp_ded.mk.in exists and contains DED_MK_VSN > 0,
+dnl every thing releted to compiling Dynamic Erlang Drivers can be found
+dnl in $(ERL_TOP)/make/$(TARGET)/ded.mk at compile time. If not, try to
+dnl figure these things out.
+dnl
+
+AC_MSG_CHECKING([for usable Dynamic Erlang Driver configuration])
+[
+ ded_mk_in="${ERL_TOP}/make/otp_ded.mk.in"
+ ded_mk_vsn=
+ test -r "$ded_mk_in" &&
+ ded_mk_vsn=`sed -n "s/^DED_MK_VSN[ ]*=[ ]*\(.*\)/\1/p" < "$ded_mk_in"`
+ test "$ded_mk_vsn" != "" || ded_mk_vsn=0
+]
+
+if test $ded_mk_vsn -gt 0; then
+
+HAVE_USABLE_OTP_DED_MK=yes
+AC_MSG_RESULT([yes])
+CC=false
+AC_SUBST(CC)
+DED_LD=false
+AC_SUBST(DED_LD)
+
+else dnl --- begin no usable otp_ded.mk.in ---
+
+HAVE_USABLE_OTP_DED_MK=no
+AC_MSG_RESULT([no])
dnl
-dnl The ErlDrvEntry struct changed in R13 (another field)
+dnl C compiler (related) defs
dnl
-AC_CHECK_MEMBERS([struct ErlDrvEntry.stop_select],
- [
- CFLAGS="$CFLAGS -DMEGACO_DRV_ENTRY_HAS_STOP_SELECT"
- ],
- [],
- [
- #include "erl_driver.h"
- ])
+AC_PROG_CC
dnl
dnl Flags to the C compiler
dnl
-dnl make sure we find config.h
-CFLAGS="$CFLAGS -I${ERL_TOP}/erts/$host -I${ERL_TOP}/erts/include/$host $OTP_EXTRA_FLAGS"
if test "X$host" = "Xwin32"; then
DED_CFLAGS="$CFLAGS"
else
case $host_os in
darwin*)
- CFLAGS="$CFLAGS -no-cpp-precomp"
+ CFLAGS="$CFLAGS -no-cpp-precomp -fno-common"
;;
esac
@@ -196,22 +220,10 @@ else
fi
dnl emulator includes needed
-DED_INCLUDE="-I${ERL_TOP}/erts/emulator/beam -I${ERL_TOP}/erts/include -I${ERL_TOP}/erts/include/$host"
-
-DED_CFLAGS="$DED_INCLUDE $DED_CFLAGS"
-
-
+DED_INCLUDES="-I${ERL_TOP}/erts/emulator/beam -I${ERL_TOP}/erts/include -I${ERL_TOP}/erts/include/$host -I${ERL_TOP}/erts/include/internal -I${ERL_TOP}/erts/include/internal/$host -I${ERL_TOP}/erts/emulator/sys/$ERLANG_OSTYPE"
-AC_SUBST(DED_CFLAGS)
-
-
-AC_CHECK_PROGS(DED_LD, [ld.sh ld], no_ld)
-if test "$DED_LD" = no_ld; then
- AC_MSG_ERROR([ld is required to build the flex scanner!])
-fi
+DED_THR_DEFS="-D_THREAD_SAFE -D_REENTRANT"
-
-AC_MSG_CHECKING(for linker flags for loadable drivers)
case $host_os in
win32)
DED_LDFLAGS="-dll"
@@ -230,33 +242,36 @@ case $host_os in
# Mach-O linker, a shared lib and a loadable
# object file is not the same thing.
DED_LDFLAGS="-bundle -flat_namespace -undefined suppress"
- DED_CFLAGS="$DED_CFLAGS -fno-common"
+ DED_LD="$CC"
;;
*)
# assume GNU linker and ELF
DED_LDFLAGS="-shared"
;;
esac
+
+AC_CHECK_PROGS(DED_LD, [$LD ld.sh])
+AC_CHECK_TOOL(DED_LD, ld, no_ld)
+if test "$DED_LD" = no_ld; then
+ AC_MSG_ERROR([ld is required to build the flex scanner!])
+fi
+
+AC_MSG_CHECKING(for linker flags for loadable drivers)
DED_LDFLAGS="$LDFLAGS $DED_LDFLAGS"
AC_MSG_RESULT([$DED_LDFLAGS])
-AC_SUBST(DED_LDFLAGS)
+fi dnl --- end no usable otp_ded.mk.in ---
+
+AC_SUBST(HAVE_USABLE_OTP_DED_MK)
+AC_SUBST(DED_CFLAGS)
+AC_SUBST(DED_INCLUDES)
+AC_SUBST(DED_THR_DEFS)
+AC_SUBST(DED_LDFLAGS)
AC_CHECK_PROG(PERL, perl, perl, no_perl)
if test "$PERL" = no_perl; then
AC_MSG_ERROR([Perl is required to build the flex scanner!])
fi
-
-dnl This is the os flavour, should be unix, vxworks or win32
-if test "X$host" = "Xwin32"; then
- ERLANG_OSTYPE=win32
-else
- ERLANG_OSTYPE=unix
-fi
-
-AC_SUBST(ERLANG_OSTYPE)
-
-
AC_OUTPUT(src/flex/$host/Makefile:src/flex/Makefile.in)
diff --git a/lib/megaco/doc/src/Makefile b/lib/megaco/doc/src/Makefile
index 2c55e92914..2355a1b8b9 100644
--- a/lib/megaco/doc/src/Makefile
+++ b/lib/megaco/doc/src/Makefile
@@ -1,19 +1,19 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 2000-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 2000-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
include $(ERL_TOP)/make/target.mk
@@ -49,6 +49,9 @@ include files.mk
# ----------------------------------------------------
+XML_FILES = $(BOOK_FILES) $(XML_APPLICATION_FILES) $(XML_REF3_FILES) \
+ $(XML_PART_FILES) $(XML_CHAPTER_FILES)
+
INTERNAL_HTML_FILES = $(TECHNICAL_DESCR_FILES:%.xml=$(HTMLDIR)/%.html)
HTML_APP_FILES = $(XML_APPLICATION_FILES:%.xml=$(HTMLDIR)/%.html)
@@ -104,8 +107,10 @@ INDEX_SRC = $(INDEX_FILE).src
INDEX_TARGET = $(DOCDIR)/$(INDEX_FILE)
STANDARD_DIR = ../standard
-STANDARDS = $(STANDARD_DIR)/rfc3015.txt \
- $(STANDARD_DIR)/implementors_guide_v6.pdf
+STANDARDS = $(STANDARD_DIR)/rfc3525.txt \
+ $(STANDARD_DIR)/rfc4234.txt \
+ $(STANDARD_DIR)/rfc4566.txt \
+ $(STANDARD_DIR)/implementors_guide_v10-13.pdf
# ----------------------------------------------------
# FLAGS
diff --git a/lib/megaco/doc/src/megaco_codec_transform.xml b/lib/megaco/doc/src/megaco_codec_transform.xml
index 71f7fc689f..89ed3fd654 100644
--- a/lib/megaco/doc/src/megaco_codec_transform.xml
+++ b/lib/megaco/doc/src/megaco_codec_transform.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2002</year><year>2009</year>
+ <year>2002</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>megaco_codec_transform</title>
@@ -36,8 +36,8 @@
<description>
<p>This module implements a simple megaco message transformation utility.</p>
- <p><em>Note</em> that this module is <em>not</em> included in the runtime part of
- the application.</p>
+ <p><em>Note</em> that this module is <em>not</em> included in the
+ runtime part of the application.</p>
<marker id="export_messages"></marker>
</description>
@@ -51,15 +51,16 @@
<v>MessagePackage = atom()</v>
</type>
<desc>
- <p>Export the messages in the <c>MessagePackage</c> (default is <c>time_test</c>). </p>
- <p>The out produced by this function is a directory structure with the
- following structure: </p>
+ <p>Export the messages in the <c>MessagePackage</c> (default
+ is <c>time_test</c>). </p>
+ <p>The output produced by this function is a directory structure
+ with the following structure: </p>
<code type="none"><![CDATA[
-\011 <message package>/pretty/<message-files>
-\011 compact/<message-files>
-\011 per/<message-files>
-\011 ber/<message-files>
-\011 erlang/<message-files>
+<message package>/pretty/<message-files>
+ compact/<message-files>
+ per/<message-files>
+ ber/<message-files>
+ erlang/<message-files>
]]></code>
</desc>
</func>
diff --git a/lib/megaco/doc/src/megaco_debug.xml b/lib/megaco/doc/src/megaco_debug.xml
index 1b99985341..2523a3be86 100644
--- a/lib/megaco/doc/src/megaco_debug.xml
+++ b/lib/megaco/doc/src/megaco_debug.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2000</year><year>2009</year>
+ <year>2000</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>Testing and tools</title>
@@ -159,12 +159,12 @@
<p>When run as above (this will take some time), the measurement
process is done as follows:</p>
<pre>
-\011 For each codec:
-\011 For each message:
-\011 Read the message from the file
-\011 Detect message version
-\011 Measure decode
- Measure encode
+For each codec:
+ For each message:
+ Read the message from the file
+ Detect message version
+ Measure decode
+ Measure encode
Write results, encode, decode and total, to file
</pre>
</item>
@@ -218,11 +218,11 @@ message() = binary()
with the following structure:
</p>
<code type="none"><![CDATA[
-\011 <message package>/pretty/<message-files>
-\011 compact/
-\011 per/
-\011 ber/<message-files>
-\011 erlang/
+<message package>/pretty/<message-files>
+ compact/
+ per/
+ ber/<message-files>
+ erlang/
]]></code>
<p>The file includes both version 1, 2 and version 3 messages.</p>
</section>
diff --git a/lib/megaco/doc/src/megaco_performance.xml b/lib/megaco/doc/src/megaco_performance.xml
index b34ee4f389..72b5c156ba 100644
--- a/lib/megaco/doc/src/megaco_performance.xml
+++ b/lib/megaco/doc/src/megaco_performance.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2002</year><year>2009</year>
+ <year>2002</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>Performance comparison</title>
@@ -257,12 +257,12 @@ MEGACO/1 [124.124.124.222]
Transaction = 9998 {
Context = - {
ServiceChange = ROOT {
- \011Services {
- \011 Method = Restart,
- \011 ServiceChangeAddress = 55555,
- \011 Profile = ResGW/1,
- \011 Reason = "901 MG Cold Boot"
- \011}
+ Services {
+ Method = Restart,
+ ServiceChangeAddress = 55555,
+ Profile = ResGW/1,
+ Reason = "901 MG Cold Boot"
+ }
}
}
} </pre>
diff --git a/lib/megaco/doc/src/notes.xml b/lib/megaco/doc/src/notes.xml
index bacb7275d7..59b1e59ce9 100644
--- a/lib/megaco/doc/src/notes.xml
+++ b/lib/megaco/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2000</year><year>2009</year>
+ <year>2000</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>Megaco Release Notes</title>
@@ -36,27 +36,33 @@
section is the version number of Megaco.</p>
<section>
- <title>Megaco 3.13.0.1</title>
+ <title>Megaco 3.13.1</title>
- <p>Version 3.13.0.1 supports code replacement in runtime from/to
+ <p>Version 3.13.1 supports code replacement in runtime from/to
version 3.13, 3.12 and 3.11.3.</p>
<section>
<title>Improvements and new features</title>
+<!--
<p>-</p>
+-->
-<!--
<list type="bulleted">
<item>
- <p>The documentation is now built with open source tools
- (<em>xsltproc</em> and <em>fop</em>) that exists on most
- platforms. One visible change is that the frames are removed.</p>
- <p>Own Id: OTP-8249</p>
+ <p>Various changes to configure and makefile(s) to facilitate cross
+ compilation. </p>
+ <p>Own Id: OTP-8323</p>
+ </item>
+
+ <item>
+ <p>Added a help target in the test Makefile to explain
+ the most useful make targets, used when testing the
+ application using the test-server provided with megaco.</p>
+ <p>Own Id: OTP-8362</p>
</item>
</list>
--->
</section>
@@ -75,25 +81,7 @@
</section>
- <section>
- <title>Incompatibilities</title>
- <p>-</p>
-
-<!--
- <list type="bulleted">
- <item>
- <p>For those implementing their own codec's, the new megaco_encoder
- behaviour will require three more functions. See above for more
- info. </p>
- <p>Own Id: OTP-7168</p>
- <p>Aux Id: Seq 10867</p>
- </item>
-
- </list>
--->
-
- </section>
- </section> <!-- 3.13.0.1 -->
+ </section> <!-- 3.13.1 -->
<section>
diff --git a/lib/megaco/doc/standard/H.248.1-Corr1-200403.doc b/lib/megaco/doc/standard/H.248.1-Corr1-200403.doc
deleted file mode 100644
index 39ef6e4efa..0000000000
--- a/lib/megaco/doc/standard/H.248.1-Corr1-200403.doc
+++ /dev/null
Binary files differ
diff --git a/lib/megaco/doc/standard/rfc2327.txt b/lib/megaco/doc/standard/rfc2327.txt
deleted file mode 100644
index ce77de6128..0000000000
--- a/lib/megaco/doc/standard/rfc2327.txt
+++ /dev/null
@@ -1,2355 +0,0 @@
-
-
-
-
-
-
-Network Working Group M. Handley
-Request for Comments: 2327 V. Jacobson
-Category: Standards Track ISI/LBNL
- April 1998
-
-
- SDP: Session Description Protocol
-
-Status of this Memo
-
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (1998). All Rights Reserved.
-
-Abstract
-
- This document defines the Session Description Protocol, SDP. SDP is
- intended for describing multimedia sessions for the purposes of
- session announcement, session invitation, and other forms of
- multimedia session initiation.
-
- This document is a product of the Multiparty Multimedia Session
- Control (MMUSIC) working group of the Internet Engineering Task
- Force. Comments are solicited and should be addressed to the working
- group's mailing list at [email protected] and/or the authors.
-
-1. Introduction
-
- On the Internet multicast backbone (Mbone), a session directory tool
- is used to advertise multimedia conferences and communicate the
- conference addresses and conference tool-specific information
- necessary for participation. This document defines a session
- description protocol for this purpose, and for general real-time
- multimedia session description purposes. This memo does not describe
- multicast address allocation or the distribution of SDP messages in
- detail. These are described in accompanying memos. SDP is not
- intended for negotiation of media encodings.
-
-
-
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 1]
-
-RFC 2327 SDP April 1998
-
-
-2. Background
-
- The Mbone is the part of the internet that supports IP multicast, and
- thus permits efficient many-to-many communication. It is used
- extensively for multimedia conferencing. Such conferences usually
- have the property that tight coordination of conference membership is
- not necessary; to receive a conference, a user at an Mbone site only
- has to know the conference's multicast group address and the UDP
- ports for the conference data streams.
-
- Session directories assist the advertisement of conference sessions
- and communicate the relevant conference setup information to
- prospective participants. SDP is designed to convey such information
- to recipients. SDP is purely a format for session description - it
- does not incorporate a transport protocol, and is intended to use
- different transport protocols as appropriate including the Session
- Announcement Protocol [4], Session Initiation Protocol [11], Real-
- Time Streaming Protocol [12], electronic mail using the MIME
- extensions, and the Hypertext Transport Protocol.
-
- SDP is intended to be general purpose so that it can be used for a
- wider range of network environments and applications than just
- multicast session directories. However, it is not intended to
- support negotiation of session content or media encodings - this is
- viewed as outside the scope of session description.
-
-3. Glossary of Terms
-
- The following terms are used in this document, and have specific
- meaning within the context of this document.
-
- Conference
- A multimedia conference is a set of two or more communicating users
- along with the software they are using to communicate.
-
- Session
- A multimedia session is a set of multimedia senders and receivers
- and the data streams flowing from senders to receivers. A
- multimedia conference is an example of a multimedia session.
-
- Session Advertisement
- See session announcement.
-
- Session Announcement
- A session announcement is a mechanism by which a session
- description is conveyed to users in a proactive fashion, i.e., the
- session description was not explicitly requested by the user.
-
-
-
-
-Handley & Jacobson Standards Track [Page 2]
-
-RFC 2327 SDP April 1998
-
-
- Session Description
- A well defined format for conveying sufficient information to
- discover and participate in a multimedia session.
-
-3.1. Terminology
-
- The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
- "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
- document are to be interpreted as described in RFC 2119.
-
-4. SDP Usage
-
-4.1. Multicast Announcements
-
- SDP is a session description protocol for multimedia sessions. A
- common mode of usage is for a client to announce a conference session
- by periodically multicasting an announcement packet to a well known
- multicast address and port using the Session Announcement Protocol
- (SAP).
-
- SAP packets are UDP packets with the following format:
-
- |--------------------|
- | SAP header |
- |--------------------|
- | text payload |
- |//////////
-
-
- The header is the Session Announcement Protocol header. SAP is
- described in more detail in a companion memo [4]
-
- The text payload is an SDP session description, as described in this
- memo. The text payload should be no greater than 1 Kbyte in length.
- If announced by SAP, only one session announcement is permitted in a
- single packet.
-
-4.2. Email and WWW Announcements
-
- Alternative means of conveying session descriptions include
- electronic mail and the World Wide Web. For both email and WWW
- distribution, the use of the MIME content type "application/sdp"
- should be used. This enables the automatic launching of applications
- for participation in the session from the WWW client or mail reader
- in a standard manner.
-
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 3]
-
-RFC 2327 SDP April 1998
-
-
- Note that announcements of multicast sessions made only via email or
- the World Wide Web (WWW) do not have the property that the receiver
- of a session announcement can necessarily receive the session because
- the multicast sessions may be restricted in scope, and access to the
- WWW server or reception of email is possible outside this scope. SAP
- announcements do not suffer from this mismatch.
-
-5. Requirements and Recommendations
-
- The purpose of SDP is to convey information about media streams in
- multimedia sessions to allow the recipients of a session description
- to participate in the session. SDP is primarily intended for use in
- an internetwork, although it is sufficiently general that it can
- describe conferences in other network environments.
-
- A multimedia session, for these purposes, is defined as a set of
- media streams that exist for some duration of time. Media streams
- can be many-to-many. The times during which the session is active
- need not be continuous.
-
- Thus far, multicast based sessions on the Internet have differed from
- many other forms of conferencing in that anyone receiving the traffic
- can join the session (unless the session traffic is encrypted). In
- such an environment, SDP serves two primary purposes. It is a means
- to communicate the existence of a session, and is a means to convey
- sufficient information to enable joining and participating in the
- session. In a unicast environment, only the latter purpose is likely
- to be relevant.
-
- Thus SDP includes:
-
- o Session name and purpose
-
- o Time(s) the session is active
-
- o The media comprising the session
-
- o Information to receive those media (addresses, ports, formats and
- so on)
-
- As resources necessary to participate in a session may be limited,
- some additional information may also be desirable:
-
- o Information about the bandwidth to be used by the conference
-
- o Contact information for the person responsible for the session
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 4]
-
-RFC 2327 SDP April 1998
-
-
- In general, SDP must convey sufficient information to be able to join
- a session (with the possible exception of encryption keys) and to
- announce the resources to be used to non-participants that may need
- to know.
-
-5.1. Media Information
-
- SDP includes:
-
- o The type of media (video, audio, etc)
-
- o The transport protocol (RTP/UDP/IP, H.320, etc)
-
- o The format of the media (H.261 video, MPEG video, etc)
-
- For an IP multicast session, the following are also conveyed:
-
- o Multicast address for media
-
- o Transport Port for media
-
- This address and port are the destination address and destination
- port of the multicast stream, whether being sent, received, or both.
-
- For an IP unicast session, the following are conveyed:
-
- o Remote address for media
-
- o Transport port for contact address
-
- The semantics of this address and port depend on the media and
- transport protocol defined. By default, this is the remote address
- and remote port to which data is sent, and the remote address and
- local port on which to receive data. However, some media may define
- to use these to establish a control channel for the actual media
- flow.
-
-5.2. Timing Information
-
- Sessions may either be bounded or unbounded in time. Whether or not
- they are bounded, they may be only active at specific times.
-
- SDP can convey:
-
- o An arbitrary list of start and stop times bounding the session
-
- o For each bound, repeat times such as "every Wednesday at 10am for
- one hour"
-
-
-
-Handley & Jacobson Standards Track [Page 5]
-
-RFC 2327 SDP April 1998
-
-
- This timing information is globally consistent, irrespective of local
- time zone or daylight saving time.
-
-5.3. Private Sessions
-
- It is possible to create both public sessions and private sessions.
- Private sessions will typically be conveyed by encrypting the session
- description to distribute it. The details of how encryption is
- performed are dependent on the mechanism used to convey SDP - see [4]
- for how this is done for session announcements.
-
- If a session announcement is private it is possible to use that
- private announcement to convey encryption keys necessary to decode
- each of the media in a conference, including enough information to
- know which encryption scheme is used for each media.
-
-5.4. Obtaining Further Information about a Session
-
- A session description should convey enough information to decide
- whether or not to participate in a session. SDP may include
- additional pointers in the form of Universal Resources Identifiers
- (URIs) for more information about the session.
-
-5.5. Categorisation
-
- When many session descriptions are being distributed by SAP or any
- other advertisement mechanism, it may be desirable to filter
- announcements that are of interest from those that are not. SDP
- supports a categorisation mechanism for sessions that is capable of
- being automated.
-
-5.6. Internationalization
-
- The SDP specification recommends the use of the ISO 10646 character
- sets in the UTF-8 encoding (RFC 2044) to allow many different
- languages to be represented. However, to assist in compact
- representations, SDP also allows other character sets such as ISO
- 8859-1 to be used when desired. Internationalization only applies to
- free-text fields (session name and background information), and not
- to SDP as a whole.
-
-6. SDP Specification
-
- SDP session descriptions are entirely textual using the ISO 10646
- character set in UTF-8 encoding. SDP field names and attributes names
- use only the US-ASCII subset of UTF-8, but textual fields and
- attribute values may use the full ISO 10646 character set. The
- textual form, as opposed to a binary encoding such as ASN/1 or XDR,
-
-
-
-Handley & Jacobson Standards Track [Page 6]
-
-RFC 2327 SDP April 1998
-
-
- was chosen to enhance portability, to enable a variety of transports
- to be used (e.g, session description in a MIME email message) and to
- allow flexible, text-based toolkits (e.g., Tcl/Tk ) to be used to
- generate and to process session descriptions. However, since the
- total bandwidth allocated to all SAP announcements is strictly
- limited, the encoding is deliberately compact. Also, since
- announcements may be transported via very unreliable means (e.g.,
- email) or damaged by an intermediate caching server, the encoding was
- designed with strict order and formatting rules so that most errors
- would result in malformed announcements which could be detected
- easily and discarded. This also allows rapid discarding of encrypted
- announcements for which a receiver does not have the correct key.
-
- An SDP session description consists of a number of lines of text of
- the form <type>=<value> <type> is always exactly one character and is
- case-significant. <value> is a structured text string whose format
- depends on <type>. It also will be case-significant unless a
- specific field defines otherwise. Whitespace is not permitted either
- side of the `=' sign. In general <value> is either a number of fields
- delimited by a single space character or a free format string.
-
- A session description consists of a session-level description
- (details that apply to the whole session and all media streams) and
- optionally several media-level descriptions (details that apply onto
- to a single media stream).
-
- An announcement consists of a session-level section followed by zero
- or more media-level sections. The session-level part starts with a
- `v=' line and continues to the first media-level section. The media
- description starts with an `m=' line and continues to the next media
- description or end of the whole session description. In general,
- session-level values are the default for all media unless overridden
- by an equivalent media-level value.
-
- When SDP is conveyed by SAP, only one session description is allowed
- per packet. When SDP is conveyed by other means, many SDP session
- descriptions may be concatenated together (the `v=' line indicating
- the start of a session description terminates the previous
- description). Some lines in each description are required and some
- are optional but all must appear in exactly the order given here (the
- fixed order greatly enhances error detection and allows for a simple
- parser). Optional items are marked with a `*'.
-
-Session description
- v= (protocol version)
- o= (owner/creator and session identifier).
- s= (session name)
- i=* (session information)
-
-
-
-Handley & Jacobson Standards Track [Page 7]
-
-RFC 2327 SDP April 1998
-
-
- u=* (URI of description)
- e=* (email address)
- p=* (phone number)
- c=* (connection information - not required if included in all media)
- b=* (bandwidth information)
- One or more time descriptions (see below)
- z=* (time zone adjustments)
- k=* (encryption key)
- a=* (zero or more session attribute lines)
- Zero or more media descriptions (see below)
-
-Time description
- t= (time the session is active)
- r=* (zero or more repeat times)
-
-Media description
- m= (media name and transport address)
- i=* (media title)
- c=* (connection information - optional if included at session-level)
- b=* (bandwidth information)
- k=* (encryption key)
- a=* (zero or more media attribute lines)
-
- The set of `type' letters is deliberately small and not intended to
- be extensible -- SDP parsers must completely ignore any announcement
- that contains a `type' letter that it does not understand. The
- `attribute' mechanism ("a=" described below) is the primary means for
- extending SDP and tailoring it to particular applications or media.
- Some attributes (the ones listed in this document) have a defined
- meaning but others may be added on an application-, media- or
- session-specific basis. A session directory must ignore any
- attribute it doesn't understand.
-
- The connection (`c=') and attribute (`a=') information in the
- session-level section applies to all the media of that session unless
- overridden by connection information or an attribute of the same name
- in the media description. For instance, in the example below, each
- media behaves as if it were given a `recvonly' attribute.
-
- An example SDP description is:
-
- v=0
- o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4
- s=SDP Seminar
- i=A Seminar on the session description protocol
- u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps
- [email protected] (Mark Handley)
- c=IN IP4 224.2.17.12/127
-
-
-
-Handley & Jacobson Standards Track [Page 8]
-
-RFC 2327 SDP April 1998
-
-
- t=2873397496 2873404696
- a=recvonly
- m=audio 49170 RTP/AVP 0
- m=video 51372 RTP/AVP 31
- m=application 32416 udp wb
- a=orient:portrait
-
- Text records such as the session name and information are bytes
- strings which may contain any byte with the exceptions of 0x00 (Nul),
- 0x0a (ASCII newline) and 0x0d (ASCII carriage return). The sequence
- CRLF (0x0d0a) is used to end a record, although parsers should be
- tolerant and also accept records terminated with a single newline
- character. By default these byte strings contain ISO-10646
- characters in UTF-8 encoding, but this default may be changed using
- the `charset' attribute.
-
- Protocol Version
-
- v=0
-
- The "v=" field gives the version of the Session Description Protocol.
- There is no minor version number.
-
- Origin
-
- o=<username> <session id> <version> <network type> <address type>
- <address>
-
- The "o=" field gives the originator of the session (their username
- and the address of the user's host) plus a session id and session
- version number.
-
- <username> is the user's login on the originating host, or it is "-"
- if the originating host does not support the concept of user ids.
- <username> must not contain spaces. <session id> is a numeric string
- such that the tuple of <username>, <session id>, <network type>,
- <address type> and <address> form a globally unique identifier for
- the session.
-
- The method of <session id> allocation is up to the creating tool, but
- it has been suggested that a Network Time Protocol (NTP) timestamp be
- used to ensure uniqueness [1].
-
- <version> is a version number for this announcement. It is needed
- for proxy announcements to detect which of several announcements for
- the same session is the most recent. Again its usage is up to the
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 9]
-
-RFC 2327 SDP April 1998
-
-
- creating tool, so long as <version> is increased when a modification
- is made to the session data. Again, it is recommended (but not
- mandatory) that an NTP timestamp is used.
-
- <network type> is a text string giving the type of network.
- Initially "IN" is defined to have the meaning "Internet". <address
- type> is a text string giving the type of the address that follows.
- Initially "IP4" and "IP6" are defined. <address> is the globally
- unique address of the machine from which the session was created.
- For an address type of IP4, this is either the fully-qualified domain
- name of the machine, or the dotted-decimal representation of the IP
- version 4 address of the machine. For an address type of IP6, this
- is either the fully-qualified domain name of the machine, or the
- compressed textual representation of the IP version 6 address of the
- machine. For both IP4 and IP6, the fully-qualified domain name is
- the form that SHOULD be given unless this is unavailable, in which
- case the globally unique address may be substituted. A local IP
- address MUST NOT be used in any context where the SDP description
- might leave the scope in which the address is meaningful.
-
- In general, the "o=" field serves as a globally unique identifier for
- this version of this session description, and the subfields excepting
- the version taken together identify the session irrespective of any
- modifications.
-
- Session Name
-
- s=<session name>
-
- The "s=" field is the session name. There must be one and only one
- "s=" field per session description, and it must contain ISO 10646
- characters (but see also the `charset' attribute below).
-
- Session and Media Information
-
- i=<session description>
-
- The "i=" field is information about the session. There may be at
- most one session-level "i=" field per session description, and at
- most one "i=" field per media. Although it may be omitted, this is
- discouraged for session announcements, and user interfaces for
- composing sessions should require text to be entered. If it is
- present it must contain ISO 10646 characters (but see also the
- `charset' attribute below).
-
- A single "i=" field can also be used for each media definition. In
- media definitions, "i=" fields are primarily intended for labeling
- media streams. As such, they are most likely to be useful when a
-
-
-
-Handley & Jacobson Standards Track [Page 10]
-
-RFC 2327 SDP April 1998
-
-
- single session has more than one distinct media stream of the same
- media type. An example would be two different whiteboards, one for
- slides and one for feedback and questions.
-
- URI
-
- u=<URI>
-
- o A URI is a Universal Resource Identifier as used by WWW clients
-
- o The URI should be a pointer to additional information about the
- conference
-
- o This field is optional, but if it is present it should be specified
- before the first media field
-
- o No more than one URI field is allowed per session description
-
-
- Email Address and Phone Number
-
- e=<email address>
- p=<phone number>
-
- o These specify contact information for the person responsible for
- the conference. This is not necessarily the same person that
- created the conference announcement.
-
- o Either an email field or a phone field must be specified.
- Additional email and phone fields are allowed.
-
- o If these are present, they should be specified before the first
- media field.
-
- o More than one email or phone field can be given for a session
- description.
-
- o Phone numbers should be given in the conventional international
-
- format - preceded by a "+ and the international country code.
- There must be a space or a hyphen ("-") between the country code
- and the rest of the phone number. Spaces and hyphens may be used
- to split up a phone field to aid readability if desired. For
- example:
-
- p=+44-171-380-7777 or p=+1 617 253 6011
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 11]
-
-RFC 2327 SDP April 1998
-
-
- o Both email addresses and phone numbers can have an optional free
- text string associated with them, normally giving the name of the
- person who may be contacted. This should be enclosed in
- parenthesis if it is present. For example:
-
- [email protected] (Mark Handley)
-
- The alternative RFC822 name quoting convention is also allowed for
- both email addresses and phone numbers. For example,
-
- e=Mark Handley <[email protected]>
-
- The free text string should be in the ISO-10646 character set with
- UTF-8 encoding, or alternatively in ISO-8859-1 or other encodings
- if the appropriate charset session-level attribute is set.
-
- Connection Data
-
- c=<network type> <address type> <connection address>
-
- The "c=" field contains connection data.
-
- A session announcement must contain one "c=" field in each media
- description (see below) or a "c=" field at the session-level. It may
- contain a session-level "c=" field and one additional "c=" field per
- media description, in which case the per-media values override the
- session-level settings for the relevant media.
-
- The first sub-field is the network type, which is a text string
- giving the type of network. Initially "IN" is defined to have the
- meaning "Internet".
-
- The second sub-field is the address type. This allows SDP to be used
- for sessions that are not IP based. Currently only IP4 is defined.
-
- The third sub-field is the connection address. Optional extra
- subfields may be added after the connection address depending on the
- value of the <address type> field.
-
- For IP4 addresses, the connection address is defined as follows:
-
- o Typically the connection address will be a class-D IP multicast
-
- group address. If the session is not multicast, then the
- connection address contains the fully-qualified domain name or the
- unicast IP address of the expected data source or data relay or
- data sink as determined by additional attribute fields. It is not
- expected that fully-qualified domain names or unicast addresses
-
-
-
-Handley & Jacobson Standards Track [Page 12]
-
-RFC 2327 SDP April 1998
-
-
- will be given in a session description that is communicated by a
- multicast announcement, though this is not prohibited. If a
- unicast data stream is to pass through a network address
- translator, the use of a fully-qualified domain name rather than an
- unicast IP address is RECOMMENDED. In other cases, the use of an
- IP address to specify a particular interface on a multi-homed host
- might be required. Thus this specification leaves the decision as
- to which to use up to the individual application, but all
- applications MUST be able to cope with receiving both formats.
-
- o Conferences using an IP multicast connection address must also have
- a time to live (TTL) value present in addition to the multicast
- address. The TTL and the address together define the scope with
- which multicast packets sent in this conference will be sent. TTL
- values must be in the range 0-255.
-
- The TTL for the session is appended to the address using a slash as
- a separator. An example is:
-
- c=IN IP4 224.2.1.1/127
-
- Hierarchical or layered encoding schemes are data streams where the
- encoding from a single media source is split into a number of
- layers. The receiver can choose the desired quality (and hence
- bandwidth) by only subscribing to a subset of these layers. Such
- layered encodings are normally transmitted in multiple multicast
- groups to allow multicast pruning. This technique keeps unwanted
- traffic from sites only requiring certain levels of the hierarchy.
- For applications requiring multiple multicast groups, we allow the
- following notation to be used for the connection address:
-
- <base multicast address>/<ttl>/<number of addresses>
-
- If the number of addresses is not given it is assumed to be one.
- Multicast addresses so assigned are contiguously allocated above
- the base address, so that, for example:
-
- c=IN IP4 224.2.1.1/127/3
-
- would state that addresses 224.2.1.1, 224.2.1.2 and 224.2.1.3 are
- to be used at a ttl of 127. This is semantically identical to
- including multiple "c=" lines in a media description:
-
- c=IN IP4 224.2.1.1/127
- c=IN IP4 224.2.1.2/127
- c=IN IP4 224.2.1.3/127
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 13]
-
-RFC 2327 SDP April 1998
-
-
- Multiple addresses or "c=" lines can only be specified on a per-
- media basis, and not for a session-level "c=" field.
-
- It is illegal for the slash notation described above to be used for
- IP unicast addresses.
-
- Bandwidth
-
- b=<modifier>:<bandwidth-value>
-
- o This specifies the proposed bandwidth to be used by the session or
- media, and is optional.
-
- o <bandwidth-value> is in kilobits per second
-
- o <modifier> is a single alphanumeric word giving the meaning of the
- bandwidth figure.
-
- o Two modifiers are initially defined:
-
- CT Conference Total: An implicit maximum bandwidth is associated with
- each TTL on the Mbone or within a particular multicast
- administrative scope region (the Mbone bandwidth vs. TTL limits are
- given in the MBone FAQ). If the bandwidth of a session or media in
- a session is different from the bandwidth implicit from the scope,
- a `b=CT:...' line should be supplied for the session giving the
- proposed upper limit to the bandwidth used. The primary purpose of
- this is to give an approximate idea as to whether two or more
- conferences can co-exist simultaneously.
-
- AS Application-Specific Maximum: The bandwidth is interpreted to be
- application-specific, i.e., will be the application's concept of
- maximum bandwidth. Normally this will coincide with what is set on
- the application's "maximum bandwidth" control if applicable.
-
- Note that CT gives a total bandwidth figure for all the media at
- all sites. AS gives a bandwidth figure for a single media at a
- single site, although there may be many sites sending
- simultaneously.
-
- o Extension Mechanism: Tool writers can define experimental bandwidth
- modifiers by prefixing their modifier with "X-". For example:
-
- b=X-YZ:128
-
- SDP parsers should ignore bandwidth fields with unknown modifiers.
- Modifiers should be alpha-numeric and, although no length limit is
- given, they are recommended to be short.
-
-
-
-Handley & Jacobson Standards Track [Page 14]
-
-RFC 2327 SDP April 1998
-
-
- Times, Repeat Times and Time Zones
-
- t=<start time> <stop time>
-
- o "t=" fields specify the start and stop times for a conference
- session. Multiple "t=" fields may be used if a session is active
- at multiple irregularly spaced times; each additional "t=" field
- specifies an additional period of time for which the session will
- be active. If the session is active at regular times, an "r="
- field (see below) should be used in addition to and following a
- "t=" field - in which case the "t=" field specifies the start and
- stop times of the repeat sequence.
-
- o The first and second sub-fields give the start and stop times for
- the conference respectively. These values are the decimal
- representation of Network Time Protocol (NTP) time values in
- seconds [1]. To convert these values to UNIX time, subtract
- decimal 2208988800.
-
- o If the stop-time is set to zero, then the session is not bounded,
- though it will not become active until after the start-time. If
- the start-time is also zero, the session is regarded as permanent.
-
- User interfaces should strongly discourage the creation of
- unbounded and permanent sessions as they give no information about
- when the session is actually going to terminate, and so make
- scheduling difficult.
-
- The general assumption may be made, when displaying unbounded
- sessions that have not timed out to the user, that an unbounded
- session will only be active until half an hour from the current
- time or the session start time, whichever is the later. If
- behaviour other than this is required, an end-time should be given
- and modified as appropriate when new information becomes available
- about when the session should really end.
-
- Permanent sessions may be shown to the user as never being active
- unless there are associated repeat times which state precisely when
- the session will be active. In general, permanent sessions should
- not be created for any session expected to have a duration of less
- than 2 months, and should be discouraged for sessions expected to
- have a duration of less than 6 months.
-
- r=<repeat interval> <active duration> <list of offsets from start-
- time>
-
- o "r=" fields specify repeat times for a session. For example, if
- a session is active at 10am on Monday and 11am on Tuesday for one
-
-
-
-Handley & Jacobson Standards Track [Page 15]
-
-RFC 2327 SDP April 1998
-
-
- hour each week for three months, then the <start time> in the
- corresponding "t=" field would be the NTP representation of 10am on
- the first Monday, the <repeat interval> would be 1 week, the
- <active duration> would be 1 hour, and the offsets would be zero
- and 25 hours. The corresponding "t=" field stop time would be the
- NTP representation of the end of the last session three months
- later. By default all fields are in seconds, so the "r=" and "t="
- fields might be:
-
- t=3034423619 3042462419
- r=604800 3600 0 90000
-
- To make announcements more compact, times may also be given in units
- of days, hours or minutes. The syntax for these is a number
- immediately followed by a single case-sensitive character.
- Fractional units are not allowed - a smaller unit should be used
- instead. The following unit specification characters are allowed:
-
- d - days (86400 seconds)
- h - minutes (3600 seconds)
- m - minutes (60 seconds)
- s - seconds (allowed for completeness but not recommended)
-
- Thus, the above announcement could also have been written:
-
- r=7d 1h 0 25h
-
- Monthly and yearly repeats cannot currently be directly specified
- with a single SDP repeat time - instead separate "t" fields should
- be used to explicitly list the session times.
-
- z=<adjustment time> <offset> <adjustment time> <offset> ....
-
- o To schedule a repeated session which spans a change from daylight-
- saving time to standard time or vice-versa, it is necessary to
- specify offsets from the base repeat times. This is required
- because different time zones change time at different times of day,
- different countries change to or from daylight time on different
- dates, and some countries do not have daylight saving time at all.
-
- Thus in order to schedule a session that is at the same time winter
- and summer, it must be possible to specify unambiguously by whose
- time zone a session is scheduled. To simplify this task for
- receivers, we allow the sender to specify the NTP time that a time
- zone adjustment happens and the offset from the time when the
- session was first scheduled. The "z" field allows the sender to
- specify a list of these adjustment times and offsets from the base
- time.
-
-
-
-Handley & Jacobson Standards Track [Page 16]
-
-RFC 2327 SDP April 1998
-
-
- An example might be:
-
- z=2882844526 -1h 2898848070 0
-
- This specifies that at time 2882844526 the time base by which the
- session's repeat times are calculated is shifted back by 1 hour,
- and that at time 2898848070 the session's original time base is
- restored. Adjustments are always relative to the specified start
- time - they are not cumulative.
-
- o If a session is likely to last several years, it is expected
- that
- the session announcement will be modified periodically rather than
- transmit several years worth of adjustments in one announcement.
-
- Encryption Keys
-
- k=<method>
- k=<method>:<encryption key>
-
- o The session description protocol may be used to convey encryption
- keys. A key field is permitted before the first media entry (in
- which case it applies to all media in the session), or for each
- media entry as required.
-
- o The format of keys and their usage is outside the scope of this
- document, but see [3].
-
- o The method indicates the mechanism to be used to obtain a usable
- key by external means, or from the encoded encryption key given.
-
- The following methods are defined:
-
- k=clear:<encryption key>
- The encryption key (as described in [3] for RTP media streams
- under the AV profile) is included untransformed in this key
- field.
-
- k=base64:<encoded encryption key>
- The encryption key (as described in [3] for RTP media streams
- under the AV profile) is included in this key field but has been
- base64 encoded because it includes characters that are
- prohibited in SDP.
-
- k=uri:<URI to obtain key>
- A Universal Resource Identifier as used by WWW clients is
- included in this key field. The URI refers to the data
- containing the key, and may require additional authentication
-
-
-
-Handley & Jacobson Standards Track [Page 17]
-
-RFC 2327 SDP April 1998
-
-
- before the key can be returned. When a request is made to the
- given URI, the MIME content-type of the reply specifies the
- encoding for the key in the reply. The key should not be
- obtained until the user wishes to join the session to reduce
- synchronisation of requests to the WWW server(s).
-
- k=prompt
- No key is included in this SDP description, but the session or
- media stream referred to by this key field is encrypted. The
- user should be prompted for the key when attempting to join the
- session, and this user-supplied key should then be used to
- decrypt the media streams.
-
- Attributes
-
- a=<attribute>
- a=<attribute>:<value>
-
- Attributes are the primary means for extending SDP. Attributes may
- be defined to be used as "session-level" attributes, "media-level"
- attributes, or both.
-
- A media description may have any number of attributes ("a=" fields)
- which are media specific. These are referred to as "media-level"
- attributes and add information about the media stream. Attribute
- fields can also be added before the first media field; these
- "session-level" attributes convey additional information that applies
- to the conference as a whole rather than to individual media; an
- example might be the conference's floor control policy.
-
- Attribute fields may be of two forms:
-
- o property attributes. A property attribute is simply of the form
- "a=<flag>". These are binary attributes, and the presence of the
- attribute conveys that the attribute is a property of the session.
- An example might be "a=recvonly".
-
- o value attributes. A value attribute is of the form
- "a=<attribute>:<value>". An example might be that a whiteboard
- could have the value attribute "a=orient:landscape"
-
- Attribute interpretation depends on the media tool being invoked.
- Thus receivers of session descriptions should be configurable in
- their interpretation of announcements in general and of attributes in
- particular.
-
- Attribute names must be in the US-ASCII subset of ISO-10646/UTF-8.
-
-
-
-
-Handley & Jacobson Standards Track [Page 18]
-
-RFC 2327 SDP April 1998
-
-
- Attribute values are byte strings, and MAY use any byte value except
- 0x00 (Nul), 0x0A (LF), and 0x0D (CR). By default, attribute values
- are to be interpreted as in ISO-10646 character set with UTF-8
- encoding. Unlike other text fields, attribute values are NOT
- normally affected by the `charset' attribute as this would make
- comparisons against known values problematic. However, when an
- attribute is defined, it can be defined to be charset-dependent, in
- which case it's value should be interpreted in the session charset
- rather than in ISO-10646.
-
- Attributes that will be commonly used can be registered with IANA
- (see Appendix B). Unregistered attributes should begin with "X-" to
- prevent inadvertent collision with registered attributes. In either
- case, if an attribute is received that is not understood, it should
- simply be ignored by the receiver.
-
- Media Announcements
-
- m=<media> <port> <transport> <fmt list>
-
- A session description may contain a number of media descriptions.
- Each media description starts with an "m=" field, and is terminated
- by either the next "m=" field or by the end of the session
- description. A media field also has several sub-fields:
-
- o The first sub-field is the media type. Currently defined media are
- "audio", "video", "application", "data" and "control", though this
- list may be extended as new communication modalities emerge (e.g.,
- telepresense). The difference between "application" and "data" is
- that the former is a media flow such as whiteboard information, and
- the latter is bulk-data transfer such as multicasting of program
- executables which will not typically be displayed to the user.
- "control" is used to specify an additional conference control
- channel for the session.
-
- o The second sub-field is the transport port to which the media
- stream will be sent. The meaning of the transport port depends on
- the network being used as specified in the relevant "c" field and
- on the transport protocol defined in the third sub-field. Other
- ports used by the media application (such as the RTCP port, see
- [2]) should be derived algorithmically from the base media port.
-
- Note: For transports based on UDP, the value should be in the range
- 1024 to 65535 inclusive. For RTP compliance it should be an even
- number.
-
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 19]
-
-RFC 2327 SDP April 1998
-
-
- For applications where hierarchically encoded streams are being
- sent to a unicast address, it may be necessary to specify multiple
- transport ports. This is done using a similar notation to that
- used for IP multicast addresses in the "c=" field:
-
- m=<media> <port>/<number of ports> <transport> <fmt list>
-
- In such a case, the ports used depend on the transport protocol.
- For RTP, only the even ports are used for data and the
- corresponding one-higher odd port is used for RTCP. For example:
-
- m=video 49170/2 RTP/AVP 31
-
- would specify that ports 49170 and 49171 form one RTP/RTCP pair and
- 49172 and 49173 form the second RTP/RTCP pair. RTP/AVP is the
- transport protocol and 31 is the format (see below).
-
- It is illegal for both multiple addresses to be specified in the
- "c=" field and for multiple ports to be specified in the "m=" field
- in the same session description.
-
- o The third sub-field is the transport protocol. The transport
- protocol values are dependent on the address-type field in the "c="
- fields. Thus a "c=" field of IP4 defines that the transport
- protocol runs over IP4. For IP4, it is normally expected that most
- media traffic will be carried as RTP over UDP. The following
- transport protocols are preliminarily defined, but may be extended
- through registration of new protocols with IANA:
-
- - RTP/AVP - the IETF's Realtime Transport Protocol using the
- Audio/Video profile carried over UDP.
-
- - udp - User Datagram Protocol
-
- If an application uses a single combined proprietary media format
- and transport protocol over UDP, then simply specifying the
- transport protocol as udp and using the format field to distinguish
- the combined protocol is recommended. If a transport protocol is
- used over UDP to carry several distinct media types that need to be
- distinguished by a session directory, then specifying the transport
- protocol and media format separately is necessary. RTP is an
- example of a transport-protocol that carries multiple payload
- formats that must be distinguished by the session directory for it
- to know how to start appropriate tools, relays, mixers or
- recorders.
-
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 20]
-
-RFC 2327 SDP April 1998
-
-
- The main reason to specify the transport-protocol in addition to
- the media format is that the same standard media formats may be
- carried over different transport protocols even when the network
- protocol is the same - a historical example is vat PCM audio and
- RTP PCM audio. In addition, relays and monitoring tools that are
- transport-protocol-specific but format-independent are possible.
-
- For RTP media streams operating under the RTP Audio/Video Profile
- [3], the protocol field is "RTP/AVP". Should other RTP profiles be
- defined in the future, their profiles will be specified in the same
- way. For example, the protocol field "RTP/XYZ" would specify RTP
- operating under a profile whose short name is "XYZ".
-
- o The fourth and subsequent sub-fields are media formats. For audio
- and video, these will normally be a media payload type as defined
- in the RTP Audio/Video Profile.
-
- When a list of payload formats is given, this implies that all of
- these formats may be used in the session, but the first of these
- formats is the default format for the session.
-
- For media whose transport protocol is not RTP or UDP the format
- field is protocol specific. Such formats should be defined in an
- additional specification document.
-
- For media whose transport protocol is RTP, SDP can be used to
- provide a dynamic binding of media encoding to RTP payload type.
- The encoding names in the RTP AV Profile do not specify unique
- audio encodings (in terms of clock rate and number of audio
- channels), and so they are not used directly in SDP format fields.
- Instead, the payload type number should be used to specify the
- format for static payload types and the payload type number along
- with additional encoding information should be used for dynamically
- allocated payload types.
-
- An example of a static payload type is u-law PCM coded single
- channel audio sampled at 8KHz. This is completely defined in the
- RTP Audio/Video profile as payload type 0, so the media field for
- such a stream sent to UDP port 49232 is:
-
- m=video 49232 RTP/AVP 0
-
- An example of a dynamic payload type is 16 bit linear encoded
- stereo audio sampled at 16KHz. If we wish to use dynamic RTP/AVP
- payload type 98 for such a stream, additional information is
- required to decode it:
-
- m=video 49232 RTP/AVP 98
-
-
-
-Handley & Jacobson Standards Track [Page 21]
-
-RFC 2327 SDP April 1998
-
-
- a=rtpmap:98 L16/16000/2
-
- The general form of an rtpmap attribute is:
-
- a=rtpmap:<payload type> <encoding name>/<clock rate>[/<encoding
- parameters>]
-
- For audio streams, <encoding parameters> may specify the number of
- audio channels. This parameter may be omitted if the number of
- channels is one provided no additional parameters are needed. For
- video streams, no encoding parameters are currently specified.
-
- Additional parameters may be defined in the future, but
- codecspecific parameters should not be added. Parameters added to
- an rtpmap attribute should only be those required for a session
- directory to make the choice of appropriate media too to
- participate in a session. Codec-specific parameters should be
- added in other attributes.
-
- Up to one rtpmap attribute can be defined for each media format
- specified. Thus we might have:
-
- m=audio 49230 RTP/AVP 96 97 98
- a=rtpmap:96 L8/8000
- a=rtpmap:97 L16/8000
- a=rtpmap:98 L16/11025/2
-
- RTP profiles that specify the use of dynamic payload types must
- define the set of valid encoding names and/or a means to register
- encoding names if that profile is to be used with SDP.
-
- Experimental encoding formats can also be specified using rtpmap.
- RTP formats that are not registered as standard format names must
- be preceded by "X-". Thus a new experimental redundant audio
- stream called GSMLPC using dynamic payload type 99 could be
- specified as:
-
- m=video 49232 RTP/AVP 99
- a=rtpmap:99 X-GSMLPC/8000
-
- Such an experimental encoding requires that any site wishing to
- receive the media stream has relevant configured state in its
- session directory to know which tools are appropriate.
-
- Note that RTP audio formats typically do not include information
- about the number of samples per packet. If a non-default (as
- defined in the RTP Audio/Video Profile) packetisation is required,
- the "ptime" attribute is used as given below.
-
-
-
-Handley & Jacobson Standards Track [Page 22]
-
-RFC 2327 SDP April 1998
-
-
- For more details on RTP audio and video formats, see [3].
-
- o Formats for non-RTP media should be registered as MIME content
- types as described in Appendix B. For example, the LBL whiteboard
- application might be registered as MIME content-type application/wb
- with encoding considerations specifying that it operates over UDP,
- with no appropriate file format. In SDP this would then be
- expressed using a combination of the "media" field and the "fmt"
- field, as follows:
-
- m=application 32416 udp wb
-
- Suggested Attributes
-
- The following attributes are suggested. Since application writers
- may add new attributes as they are required, this list is not
- exhaustive.
-
- a=cat:<category>
- This attribute gives the dot-separated hierarchical category of
- the session. This is to enable a receiver to filter unwanted
- sessions by category. It would probably have been a compulsory
- separate field, except for its experimental nature at this time.
- It is a session-level attribute, and is not dependent on charset.
-
- a=keywds:<keywords>
- Like the cat attribute, this is to assist identifying wanted
- sessions at the receiver. This allows a receiver to select
- interesting session based on keywords describing the purpose of
- the session. It is a session-level attribute. It is a charset
- dependent attribute, meaning that its value should be interpreted
- in the charset specified for the session description if one is
- specified, or by default in ISO 10646/UTF-8.
-
- a=tool:<name and version of tool>
- This gives the name and version number of the tool used to create
- the session description. It is a session-level attribute, and is
- not dependent on charset.
-
- a=ptime:<packet time>
- This gives the length of time in milliseconds represented by the
- media in a packet. This is probably only meaningful for audio
- data. It should not be necessary to know ptime to decode RTP or
- vat audio, and it is intended as a recommendation for the
- encoding/packetisation of audio. It is a media attribute, and is
- not dependent on charset.
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 23]
-
-RFC 2327 SDP April 1998
-
-
- a=recvonly
- This specifies that the tools should be started in receive-only
- mode where applicable. It can be either a session or media
- attribute, and is not dependent on charset.
-
- a=sendrecv
- This specifies that the tools should be started in send and
- receive mode. This is necessary for interactive conferences with
- tools such as wb which defaults to receive only mode. It can be
- either a session or media attribute, and is not dependent on
- charset.
-
- a=sendonly
- This specifies that the tools should be started in send-only
- mode. An example may be where a different unicast address is to
- be used for a traffic destination than for a traffic source. In
- such a case, two media descriptions may be use, one sendonly and
- one recvonly. It can be either a session or media attribute, but
- would normally only be used as a media attribute, and is not
- dependent on charset.
-
- a=orient:<whiteboard orientation>
- Normally this is only used in a whiteboard media specification.
- It specifies the orientation of a the whiteboard on the screen.
- It is a media attribute. Permitted values are `portrait',
- `landscape' and `seascape' (upside down landscape). It is not
- dependent on charset
-
- a=type:<conference type>
- This specifies the type of the conference. Suggested values are
- `broadcast', `meeting', `moderated', `test' and `H332'.
- `recvonly' should be the default for `type:broadcast' sessions,
- `type:meeting' should imply `sendrecv' and `type:moderated'
- should indicate the use of a floor control tool and that the
- media tools are started so as to "mute" new sites joining the
- conference.
-
- Specifying the attribute type:H332 indicates that this loosely
- coupled session is part of a H.332 session as defined in the ITU
- H.332 specification [10]. Media tools should be started
- `recvonly'.
-
- Specifying the attribute type:test is suggested as a hint that,
- unless explicitly requested otherwise, receivers can safely avoid
- displaying this session description to users.
-
- The type attribute is a session-level attribute, and is not
- dependent on charset.
-
-
-
-Handley & Jacobson Standards Track [Page 24]
-
-RFC 2327 SDP April 1998
-
-
- a=charset:<character set>
- This specifies the character set to be used to display the
- session name and information data. By default, the ISO-10646
- character set in UTF-8 encoding is used. If a more compact
- representation is required, other character sets may be used such
- as ISO-8859-1 for Northern European languages. In particular,
- the ISO 8859-1 is specified with the following SDP attribute:
-
- a=charset:ISO-8859-1
-
- This is a session-level attribute; if this attribute is present,
- it must be before the first media field. The charset specified
- MUST be one of those registered with IANA, such as ISO-8859-1.
- The character set identifier is a US-ASCII string and MUST be
- compared against the IANA identifiers using a case-insensitive
- comparison. If the identifier is not recognised or not
- supported, all strings that are affected by it SHOULD be regarded
- as byte strings.
-
- Note that a character set specified MUST still prohibit the use
- of bytes 0x00 (Nul), 0x0A (LF) and 0x0d (CR). Character sets
- requiring the use of these characters MUST define a quoting
- mechanism that prevents these bytes appearing within text fields.
-
- a=sdplang:<language tag>
- This can be a session level attribute or a media level attribute.
- As a session level attribute, it specifies the language for the
- session description. As a media level attribute, it specifies
- the language for any media-level SDP information field associated
- with that media. Multiple sdplang attributes can be provided
- either at session or media level if multiple languages in the
- session description or media use multiple languages, in which
- case the order of the attributes indicates the order of
- importance of the various languages in the session or media from
- most important to least important.
-
- In general, sending session descriptions consisting of multiple
- languages should be discouraged. Instead, multiple descriptions
- should be sent describing the session, one in each language.
- However this is not possible with all transport mechanisms, and
- so multiple sdplang attributes are allowed although not
- recommended.
-
- The sdplang attribute value must be a single RFC 1766 language
- tag in US-ASCII. It is not dependent on the charset attribute.
- An sdplang attribute SHOULD be specified when a session is of
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 25]
-
-RFC 2327 SDP April 1998
-
-
- sufficient scope to cross geographic boundaries where the
- language of recipients cannot be assumed, or where the session is
- in a different language from the locally assumed norm.
-
- a=lang:<language tag>
- This can be a session level attribute or a media level attribute.
- As a session level attribute, it specifies the default language
- for the session being described. As a media level attribute, it
- specifies the language for that media, overriding any session-
- level language specified. Multiple lang attributes can be
- provided either at session or media level if multiple languages
- if the session description or media use multiple languages, in
- which case the order of the attributes indicates the order of
- importance of the various languages in the session or media from
- most important to least important.
-
- The lang attribute value must be a single RFC 1766 language tag
- in US-ASCII. It is not dependent on the charset attribute. A
- lang attribute SHOULD be specified when a session is of
- sufficient scope to cross geographic boundaries where the
- language of recipients cannot be assumed, or where the session is
- in a different language from the locally assumed norm.
-
- a=framerate:<frame rate>
- This gives the maximum video frame rate in frames/sec. It is
- intended as a recommendation for the encoding of video data.
- Decimal representations of fractional values using the notation
- "<integer>.<fraction>" are allowed. It is a media attribute, is
- only defined for video media, and is not dependent on charset.
-
- a=quality:<quality>
- This gives a suggestion for the quality of the encoding as an
- integer value.
-
- The intention of the quality attribute for video is to specify a
- non-default trade-off between frame-rate and still-image quality.
- For video, the value in the range 0 to 10, with the following
- suggested meaning:
-
- 10 - the best still-image quality the compression scheme can
- give.
-
- 5 - the default behaviour given no quality suggestion.
-
- 0 - the worst still-image quality the codec designer thinks is
- still usable.
-
- It is a media attribute, and is not dependent on charset.
-
-
-
-Handley & Jacobson Standards Track [Page 26]
-
-RFC 2327 SDP April 1998
-
-
- a=fmtp:<format> <format specific parameters>
- This attribute allows parameters that are specific to a
- particular format to be conveyed in a way that SDP doesn't have
- to understand them. The format must be one of the formats
- specified for the media. Format-specific parameters may be any
- set of parameters required to be conveyed by SDP and given
- unchanged to the media tool that will use this format.
-
- It is a media attribute, and is not dependent on charset.
-
-6.1. Communicating Conference Control Policy
-
- There is some debate over the way conference control policy should be
- communicated. In general, the authors believe that an implicit
- declarative style of specifying conference control is desirable where
- possible.
-
- A simple declarative style uses a single conference attribute field
- before the first media field, possibly supplemented by properties
- such as `recvonly' for some of the media tools. This conference
- attribute conveys the conference control policy. An example might be:
-
- a=type:moderated
-
- In some cases, however, it is possible that this may be insufficient
- to communicate the details of an unusual conference control policy.
- If this is the case, then a conference attribute specifying external
- control might be set, and then one or more "media" fields might be
- used to specify the conference control tools and configuration data
- for those tools. An example is an ITU H.332 session:
-
- c=IN IP4 224.5.6.7
- a=type:H332
- m=audio 49230 RTP/AVP 0
- m=video 49232 RTP/AVP 31
- m=application 12349 udp wb
- m=control 49234 H323 mc
- c=IN IP4 134.134.157.81
-
- In this example, a general conference attribute (type:H332) is
- specified stating that conference control will be provided by an
- external H.332 tool, and a contact addresses for the H.323 session
- multipoint controller is given.
-
- In this document, only the declarative style of conference control
- declaration is specified. Other forms of conference control should
- specify an appropriate type attribute, and should define the
- implications this has for control media.
-
-
-
-Handley & Jacobson Standards Track [Page 27]
-
-RFC 2327 SDP April 1998
-
-
-7. Security Considerations
-
- SDP is a session description format that describes multimedia
- sessions. A session description should not be trusted unless it has
- been obtained by an authenticated transport protocol from a trusted
- source. Many different transport protocols may be used to distribute
- session description, and the nature of the authentication will differ
- from transport to transport.
-
- One transport that will frequently be used to distribute session
- descriptions is the Session Announcement Protocol (SAP). SAP
- provides both encryption and authentication mechanisms but due to the
- nature of session announcements it is likely that there are many
- occasions where the originator of a session announcement cannot be
- authenticated because they are previously unknown to the receiver of
- the announcement and because no common public key infrastructure is
- available.
-
- On receiving a session description over an unauthenticated transport
- mechanism or from an untrusted party, software parsing the session
- should take a few precautions. Session description contain
- information required to start software on the receivers system.
- Software that parses a session description MUST not be able to start
- other software except that which is specifically configured as
- appropriate software to participate in multimedia sessions. It is
- normally considered INAPPROPRIATE for software parsing a session
- description to start, on a user's system, software that is
- appropriate to participate in multimedia sessions, without the user
- first being informed that such software will be started and giving
- their consent. Thus a session description arriving by session
- announcement, email, session invitation, or WWW page SHOULD not
- deliver the user into an {it interactive} multimedia session without
- the user being aware that this will happen. As it is not always
- simple to tell whether a session is interactive or not, applications
- that are unsure should assume sessions are interactive.
-
- In this specification, there are no attributes which would allow the
- recipient of a session description to be informed to start multimedia
- tools in a mode where they default to transmitting. Under some
- circumstances it might be appropriate to define such attributes. If
- this is done an application parsing a session description containing
- such attributes SHOULD either ignore them, or inform the user that
- joining this session will result in the automatic transmission of
- multimedia data. The default behaviour for an unknown attribute is
- to ignore it.
-
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 28]
-
-RFC 2327 SDP April 1998
-
-
- Session descriptions may be parsed at intermediate systems such as
- firewalls for the purposes of opening a hole in the firewall to allow
- the participation in multimedia sessions. It is considered
- INAPPROPRIATE for a firewall to open such holes for unicast data
- streams unless the session description comes in a request from inside
- the firewall.
-
- For multicast sessions, it is likely that local administrators will
- apply their own policies, but the exclusive use of "local" or "site-
- local" administrative scope within the firewall and the refusal of
- the firewall to open a hole for such scopes will provide separation
- of global multicast sessions from local ones.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 29]
-
-RFC 2327 SDP April 1998
-
-
-Appendix A: SDP Grammar
-
- This appendix provides an Augmented BNF grammar for SDP. ABNF is
- defined in RFC 2234.
-
-
- announcement = proto-version
- origin-field
- session-name-field
- information-field
- uri-field
- email-fields
- phone-fields
- connection-field
- bandwidth-fields
- time-fields
- key-field
- attribute-fields
- media-descriptions
-
- proto-version = "v=" 1*DIGIT CRLF
- ;this memo describes version 0
-
- origin-field = "o=" username space
- sess-id space sess-version space
- nettype space addrtype space
- addr CRLF
-
- session-name-field = "s=" text CRLF
-
- information-field = ["i=" text CRLF]
-
- uri-field = ["u=" uri CRLF]
-
- email-fields = *("e=" email-address CRLF)
-
- phone-fields = *("p=" phone-number CRLF)
-
-
- connection-field = ["c=" nettype space addrtype space
- connection-address CRLF]
- ;a connection field must be present
- ;in every media description or at the
- ;session-level
-
-
- bandwidth-fields = *("b=" bwtype ":" bandwidth CRLF)
-
-
-
-
-Handley & Jacobson Standards Track [Page 30]
-
-RFC 2327 SDP April 1998
-
-
- time-fields = 1*( "t=" start-time space stop-time
- *(CRLF repeat-fields) CRLF)
- [zone-adjustments CRLF]
-
-
- repeat-fields = "r=" repeat-interval space typed-time
- 1*(space typed-time)
-
-
- zone-adjustments = time space ["-"] typed-time
- *(space time space ["-"] typed-time)
-
-
- key-field = ["k=" key-type CRLF]
-
-
- key-type = "prompt" |
- "clear:" key-data |
- "base64:" key-data |
- "uri:" uri
-
-
- key-data = email-safe | "~" | "
-
-
- attribute-fields = *("a=" attribute CRLF)
-
-
- media-descriptions = *( media-field
- information-field
- *(connection-field)
- bandwidth-fields
- key-field
- attribute-fields )
-
-
- media-field = "m=" media space port ["/" integer]
- space proto 1*(space fmt) CRLF
-
-
- media = 1*(alpha-numeric)
- ;typically "audio", "video", "application"
- ;or "data"
-
- fmt = 1*(alpha-numeric)
- ;typically an RTP payload type for audio
- ;and video media
-
-
-
-
-Handley & Jacobson Standards Track [Page 31]
-
-RFC 2327 SDP April 1998
-
-
- proto = 1*(alpha-numeric)
- ;typically "RTP/AVP" or "udp" for IP4
-
-
- port = 1*(DIGIT)
- ;should in the range "1024" to "65535" inclusive
- ;for UDP based media
-
-
- attribute = (att-field ":" att-value) | att-field
-
-
- att-field = 1*(alpha-numeric)
-
-
- att-value = byte-string
-
-
- sess-id = 1*(DIGIT)
- ;should be unique for this originating username/host
-
-
- sess-version = 1*(DIGIT)
- ;0 is a new session
-
-
- connection-address = multicast-address
- | addr
-
-
- multicast-address = 3*(decimal-uchar ".") decimal-uchar "/" ttl
- [ "/" integer ]
- ;multicast addresses may be in the range
- ;224.0.0.0 to 239.255.255.255
-
- ttl = decimal-uchar
-
- start-time = time | "0"
-
- stop-time = time | "0"
-
- time = POS-DIGIT 9*(DIGIT)
- ;sufficient for 2 more centuries
-
-
- repeat-interval = typed-time
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 32]
-
-RFC 2327 SDP April 1998
-
-
- typed-time = 1*(DIGIT) [fixed-len-time-unit]
-
-
- fixed-len-time-unit = "d" | "h" | "m" | "s"
-
-
- bwtype = 1*(alpha-numeric)
-
- bandwidth = 1*(DIGIT)
-
-
- username = safe
- ;pretty wide definition, but doesn't include space
-
-
- email-address = email | email "(" email-safe ")" |
- email-safe "<" email ">"
-
-
- email = ;defined in RFC822
-
-
- uri= ;defined in RFC1630
-
-
- phone-number = phone | phone "(" email-safe ")" |
- email-safe "<" phone ">"
-
-
- phone = "+" POS-DIGIT 1*(space | "-" | DIGIT)
- ;there must be a space or hyphen between the
- ;international code and the rest of the number.
-
-
- nettype = "IN"
- ;list to be extended
-
-
- addrtype = "IP4" | "IP6"
- ;list to be extended
-
-
- addr = FQDN | unicast-address
-
-
- FQDN = 4*(alpha-numeric|"-"|".")
- ;fully qualified domain name as specified in RFC1035
-
-
-
-
-Handley & Jacobson Standards Track [Page 33]
-
-RFC 2327 SDP April 1998
-
-
- unicast-address = IP4-address | IP6-address
-
-
- IP4-address = b1 "." decimal-uchar "." decimal-uchar "." b4
- b1 = decimal-uchar
- ;less than "224"; not "0" or "127"
- b4 = decimal-uchar
- ;not "0"
-
- IP6-address = ;to be defined
-
-
- text = byte-string
- ;default is to interpret this as IS0-10646 UTF8
- ;ISO 8859-1 requires a "a=charset:ISO-8859-1"
- ;session-level attribute to be used
-
-
- byte-string = 1*(0x01..0x09|0x0b|0x0c|0x0e..0xff)
- ;any byte except NUL, CR or LF
-
-
- decimal-uchar = DIGIT
- | POS-DIGIT DIGIT
- | ("1" 2*(DIGIT))
- | ("2" ("0"|"1"|"2"|"3"|"4") DIGIT)
- | ("2" "5" ("0"|"1"|"2"|"3"|"4"|"5"))
-
-
- integer = POS-DIGIT *(DIGIT)
-
-
- alpha-numeric = ALPHA | DIGIT
-
-
- DIGIT = "0" | POS-DIGIT
-
-
- POS-DIGIT = "1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
-
-
- ALPHA = "a"|"b"|"c"|"d"|"e"|"f"|"g"|"h"|"i"|"j"|"k"|
- "l"|"m"|"n"|"o "|"p"|"q"|"r"|"s"|"t"|"u"|"v"|
- "w"|"x"|"y"|"z"|"A"|"B"|"C "|"D"|"E"|"F"|"G"|
- "H"|"I"|"J"|"K"|"L"|"M"|"N"|"O"|"P"|" Q"|"R"|
- "S"|"T"|"U"|"V"|"W"|"X"|"Y"|"Z"
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 34]
-
-RFC 2327 SDP April 1998
-
-
- email-safe = safe | space | tab
-
-
- safe = alpha-numeric |
- "'" | "'" | "-" | "." | "/" | ":" | "?" | """ |
- "#" | "$" | "&" | "*" | ";" | "=" | "@" | "[" |
- "]" | "^" | "_" | "`" | "{" | "|" | "}" | "+" |
- "~" | "
-
-
- space = %d32
- tab = %d9
- CRLF = %d13.10
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 35]
-
-RFC 2327 SDP April 1998
-
-
-Appendix B: Guidelines for registering SDP names with IANA
-
- There are seven field names that may be registered with IANA. Using
- the terminology in the SDP specification BNF, they are "media",
- "proto", "fmt", "att-field", "bwtype", "nettype" and "addrtype".
-
- "media" (eg, audio, video, application, data).
-
- Packetized media types, such as those used by RTP, share the
- namespace used by media types registry [RFC 2048] (i.e. "MIME
- types"). The list of valid media names is the set of top-level
- MIME content types. The set of media is intended to be small and
- not to be extended except under rare circumstances. (The MIME
- subtype corresponds to the "fmt" parameter below).
-
- "proto"
-
- In general this should be an IETF standards-track transport
- protocol identifier such as RTP/AVP (rfc 1889 under the rfc 1890
- profile).
-
- However, people will want to invent their own proprietary
- transport protocols. Some of these should be registered as a
- "fmt" using "udp" as the protocol and some of which probably
- can't be.
-
- Where the protocol and the application are intimately linked,
- such as with the LBL whiteboard wb which used a proprietary and
- special purpose protocol over UDP, the protocol name should be
- "udp" and the format name that should be registered is "wb". The
- rules for formats (see below) apply to such registrations.
-
- Where the proprietary transport protocol really carries many
- different data formats, it is possible to register a new protocol
- name with IANA. In such a case, an RFC MUST be produced
- describing the protocol and referenced in the registration. Such
- an RFC MAY be informational, although it is preferable if it is
- standards-track.
-
- "fmt"
-
- The format namespace is dependent on the context of the "proto"
- field, so a format cannot be registered without specifying one or
- more transport protocols that it applies to.
-
- Formats cover all the possible encodings that might want to be
- transported in a multimedia session.
-
-
-
-
-Handley & Jacobson Standards Track [Page 36]
-
-RFC 2327 SDP April 1998
-
-
- For RTP formats that have been assigned static payload types, the
- payload type number is used. For RTP formats using a dynamic
- payload type number, the dynamic payload type number is given as
- the format and an additional "rtpmap" attribute specifies the
- format and parameters.
-
- For non-RTP formats, any unregistered format name may be
- registered through the MIME-type registration process [RFC 2048].
- The type given here is the MIME subtype only (the top-level MIME
- content type is specified by the media parameter). The MIME type
- registration SHOULD reference a standards-track RFC which
- describes the transport protocol for this media type. If there
- is an existing MIME type for this format, the MIME registration
- should be augmented to reference the transport specification for
- this media type. If there is not an existing MIME type for this
- format, and there exists no appropriate file format, this should
- be noted in the encoding considerations as "no appropriate file
- format".
-
- "att-field" (Attribute names)
-
- Attribute field names MAY be registered with IANA, although this
- is not compulsory, and unknown attributes are simply ignored.
-
- When an attribute is registered, it must be accompanied by a
- brief specification stating the following:
-
- o contact name, email address and telephone number
-
- o attribute-name (as it will appear in SDP)
-
- o long-form attribute name in English
-
- o type of attribute (session level, media level, or both)
-
- o whether the attribute value is subject to the charset
- attribute.
-
- o a one paragraph explanation of the purpose of the attribute.
-
- o a specification of appropriate attribute values for this
- attribute.
-
- IANA will not sanity check such attribute registrations except to
- ensure that they do not clash with existing registrations.
-
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 37]
-
-RFC 2327 SDP April 1998
-
-
- Although the above is the minimum that IANA will accept, if the
- attribute is expected to see widespread use and interoperability
- is an issue, authors are encouraged to produce a standards-track
- RFC that specifies the attribute more precisely.
-
- Submitters of registrations should ensure that the specification
- is in the spirit of SDP attributes, most notably that the
- attribute is platform independent in the sense that it makes no
- implicit assumptions about operating systems and does not name
- specific pieces of software in a manner that might inhibit
- interoperability.
-
- "bwtype" (bandwidth specifiers)
-
- A proliferation of bandwidth specifiers is strongly discouraged.
-
- New bandwidth specifiers may be registered with IANA. The
- submission MUST reference a standards-track RFC specifying the
- semantics of the bandwidth specifier precisely, and indicating
- when it should be used, and why the existing registered bandwidth
- specifiers do not suffice.
-
- "nettype" (Network Type)
-
- New network types may be registered with IANA if SDP needs to be
- used in the context of non-internet environments. Whilst these
- are not normally the preserve of IANA, there may be circumstances
- when an Internet application needs to interoperate with a non-
- internet application, such as when gatewaying an internet
- telephony call into the PSTN. The number of network types should
- be small and should be rarely extended. A new network type
- cannot be registered without registering at least one address
- type to be used with that network type. A new network type
- registration MUST reference an RFC which gives details of the
- network type and address type and specifies how and when they
- would be used. Such an RFC MAY be Informational.
-
- "addrtype" (Address Type)
-
- New address types may be registered with IANA. An address type
- is only meaningful in the context of a network type, and any
- registration of an address type MUST specify a registered network
- type, or be submitted along with a network type registration. A
- new address type registration MUST reference an RFC giving
- details of the syntax of the address type. Such an RFC MAY be
- Informational. Address types are not expected to be registered
- frequently.
-
-
-
-
-Handley & Jacobson Standards Track [Page 38]
-
-RFC 2327 SDP April 1998
-
-
- Registration Procedure
-
- To register a name the above guidelines should be followed regarding
- the required level of documentation that is required. The
- registration itself should be sent to IANA. Attribute registrations
- should include the information given above. Other registrations
- should include the following additional information:
-
- o contact name, email address and telephone number
-
- o name being registered (as it will appear in SDP)
-
- o long-form name in English
-
- o type of name ("media", "proto", "fmt", "bwtype", "nettype", or
- "addrtype")
-
- o a one paragraph explanation of the purpose of the registered name.
-
- o a reference to the specification (eg RFC number) of the registered
- name.
-
- IANA may refer any registration to the IESG or to any appropriate
- IETF working group for review, and may request revisions to be made
- before a registration will be made.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 39]
-
-RFC 2327 SDP April 1998
-
-
-Appendix C: Authors' Addresses
-
- Mark Handley
- Information Sciences Institute
- c/o MIT Laboratory for Computer Science
- 545 Technology Square
- Cambridge, MA 02139
- United States
- electronic mail: [email protected]
-
- Van Jacobson
- MS 46a-1121
- Lawrence Berkeley Laboratory
- Berkeley, CA 94720
- United States
- electronic mail: [email protected]
-
-Acknowledgments
-
- Many people in the IETF MMUSIC working group have made comments and
- suggestions contributing to this document. In particular, we would
- like to thank Eve Schooler, Steve Casner, Bill Fenner, Allison
- Mankin, Ross Finlayson, Peter Parnes, Joerg Ott, Carsten Bormann, Rob
- Lanphier and Steve Hanna.
-
-References
-
- [1] Mills, D., "Network Time Protocol (version 3) specification and
- implementation", RFC 1305, March 1992.
-
- [2] Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson, "RTP:
- A Transport Protocol for Real-Time Applications", RFC 1889, January
- 1996.
-
- [3] Schulzrinne, H., "RTP Profile for Audio and Video Conferences
- with Minimal Control", RFC 1890, January 1996
-
- [4] Handley, M., "SAP - Session Announcement Protocol", Work in
- Progress.
-
- [5] V. Jacobson, S. McCanne, "vat - X11-based audio teleconferencing
- tool" vat manual page, Lawrence Berkeley Laboratory, 1994.
-
- [6] The Unicode Consortium, "The Unicode Standard -- Version 2.0",
- Addison-Wesley, 1996.
-
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 40]
-
-RFC 2327 SDP April 1998
-
-
- [7] ISO/IEC 10646-1:1993. International Standard -- Information
- technol- ogy -- Universal Multiple-Octet Coded Character Set (UCS) --
- Part 1: Architecture and Basic Multilingual Plane. Five amendments
- and a techn- ical corrigendum have been published up to now. UTF-8
- is described in Annex R, published as Amendment 2.
-
- [8] Goldsmith, D., and M. Davis, "Using Unicode with MIME", RFC 1641,
- July 1994.
-
- [9] Yergeau, F., "UTF-8, a transformation format of Unicode and ISO
- 10646", RFC 2044, October 1996.
-
- [10] ITU-T Recommendation H.332 (1998): "Multimedia Terminal for
- Receiving Internet-based H.323 Conferences", ITU, Geneva.
-
- [11] Handley, M., Schooler, E., and H. Schulzrinne, "Session
- Initiation Protocol (SIP)", Work in Progress.
-
- [12] Schulzrinne, H., Rao, A., and R. Lanphier, "Real Time Streaming
- Protocol (RTSP)", RFC 2326, April 1998.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 41]
-
-RFC 2327 SDP April 1998
-
-
-Full Copyright Statement
-
- Copyright (C) The Internet Society (1998). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Handley & Jacobson Standards Track [Page 42]
-
diff --git a/lib/megaco/doc/standard/rfc3266.txt b/lib/megaco/doc/standard/rfc3266.txt
deleted file mode 100644
index f047f12a1f..0000000000
--- a/lib/megaco/doc/standard/rfc3266.txt
+++ /dev/null
@@ -1,283 +0,0 @@
-
-
-
-
-
-
-Network Working Group S. Olson
-Request for Comments: 3266 Microsoft
-Updates: 2327 G. Camarillo
-Category: Standards Track Ericsson
- A. B. Roach
- dynamicsoft
- June 2002
-
-
- Support for IPv6 in Session Description Protocol (SDP)
-
-Status of this Memo
-
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
-
-Copyright Notice
-
- Copyright (C) The Internet Society (2002). All Rights Reserved.
-
-Abstract
-
- This document describes the use of Internet Protocol Version 6 (IPv6)
- addresses in conjunction with the Session Description Protocol (SDP).
- Specifically, this document clarifies existing text in SDP with
- regards to the syntax of IPv6 addresses.
-
-1. Introduction
-
- SDP is intended for describing multimedia sessions for the purposes
- of session announcement, session invitation, and other forms of
- multimedia session initiation. It is a text format description that
- provides many details of a multimedia session including: the
- originator of the session, a URL related to the session, the
- connection address for the session media(s), and optional attributes
- for the session media(s). Each of these pieces of information may
- involve one or more IPv6 addresses. The ABNF for IP addresses in SDP
- currently leaves the syntax for IPv6 addresses undefined. This
- document attempts to complete the ABNF to include IPv6 addresses.
-
- Accordingly, the address type "IP6" indicating an IPv6 address,
- should be allowed in the connection field, "c=", of the SDP. The
- ABNF already reflects this, though the "Connection Data" text under
- section 6 of RFC 2328 currently only defines the "IP4" address type.
-
-
-
-
-Olson, et. al. Standards Track [Page 1]
-
-RFC 3266 Support for IPv6 in Session Description Protocol June 2002
-
-
-2. Terminology
-
- The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
- "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
- document are to be interpreted as described in RFC 2119 [5].
-
-3. Syntax
-
- RFC 2373 [1] gives an ABNF for the text representation of IPv6
- addresses in Appendix B. RFC 2732 [3] covers the text representation
- of IPv6 addresses when used within a URL. Using the ABNF described
- in these documents, the following updated ABNF for SDP is proposed.
-
- uri = ; defined in RFC1630 and RFC2732
-
- multicast-address = IP4-multicast / IP6-multicast
-
- IP4-multicast = m1 3*( "." decimal-uchar )
- "/" ttl [ "/" integer ]
- ; IPv4 multicast addresses may be in the
- ; range 224.0.0.0 to 239.255.255.255
-
- m1 = ("22" ("4"/"5"/"6"/"7"/"8"/"9")) /
- ("23" DIGIT ))
-
- IP6-multicast = hexpart
- ; IPv6 address starting with FF
-
- addr = FQDN / unicast-address
-
- FQDN = 4*(alpha-numeric/"-"/".")
- ; fully qualified domain name as specified
- ; in RFC1035
- unicast-address = IP4-address / IP6-address
-
- IP4-address = b1 3*("." decimal-uchar) / "0.0.0.0"
-
- b1 = decimal-uchar
- ; less than "224"; not "0" or "127"
-
- ; The following is from RFC2373 Appendix B. It is a direct copy.
- IP6-address = hexpart [ ":" IP4-address ]
-
- hexpart = hexseq / hexseq "::" [ hexseq ] /
- "::" [ hexseq ]
-
-
-
-
-
-
-Olson, et. al. Standards Track [Page 2]
-
-RFC 3266 Support for IPv6 in Session Description Protocol June 2002
-
-
- hexseq = hex4 *( ":" hex4)
-
- hex4 = 1*4HEXDIG
-
-4. Example SDP description with IPv6 addresses
-
- The following is an example SDP description using the above ABNF for
- IPv6 addresses. In particular, the origin and connection fields
- contain IPv6 addresses.
-
- v=0
- o=nasa1 971731711378798081 0 IN IP6 2201:056D::112E:144A:1E24
- s=(Almost) live video feed from Mars-II satellite
- p=+1 713 555 1234
- c=IN IP6 FF1E:03AD::7F2E:172A:1E24
- t=3338481189 3370017201
- m=audio 6000 RTP/AVP 2
- a=rtpmap:2 G726-32/8000
- m=video 6024 RTP/AVP 107
- a=rtpmap:107 H263-1998/90000
-
-5. Note for implementors
-
- An implementation may receive an SDP session description with an IPv6
- address whose format [1] is internally that of an IPv4 mapped
- address. Note that such an address is actually the address of an
- IPv4-only node, and implementors are warned to interpret IPv4 mapped
- addresses as equivalent to IP4.
-
-6. IANA Considerations
-
- This document updates the definition of the IP6 addrtype parameter
- found in RFC 2327.
-
-7. Security Considerations
-
- No additional considerations above what is stated in section 7 of RFC
- 2327.
-
-8. References
-
- [1] Hinden, R. and S. Deering, "IP Version 6 Addressing
- Architecture", RFC 2373, July 1998.
-
- [2] Handley, M. and V. Jacobson, "SDP: Session Description
- Protocol", RFC 2327, April 1998.
-
-
-
-
-
-Olson, et. al. Standards Track [Page 3]
-
-RFC 3266 Support for IPv6 in Session Description Protocol June 2002
-
-
- [3] Hinden, R., Carpenter, B. and L. Masinter, "Format for Literal
- IPv6 Addresses in URL's", RFC 2732, December 1999.
-
- [4] Crocker, D. and P. Overell, "Augmented BNF for Syntax
- Specifications: ABNF", RFC 2234, November 1997.
-
- [5] Bradner, S., "Key words for Use in RFCs to Indicate Requirement
- Levels", BCP 14, RFC 2119, March 1997.
-
-9. Authors' Addresses
-
- Sean Olson
- Microsoft
- One Microsoft Way
- Redmond, WA 98052
- USA
-
-
-
- Gonzalo Camarillo
- Ericsson
- Advanced Signalling Research Lab.
- FIN-02420 Jorvas
- Finland
-
- Phone: +358 9 299 3371
- Fax: +358 9 299 3118
-
-
- Adam Roach
- dynamicsoft
- 5100 Tennyson Parkway
- Suite 1200
- Plano, TX 75024
- USA
-
- Voice: <sip:[email protected]>
-
-
-
-
-
-
-
-
-
-
-
-Olson, et. al. Standards Track [Page 4]
-
-RFC 3266 Support for IPv6 in Session Description Protocol June 2002
-
-
-10. Full Copyright Statement
-
- Copyright (C) The Internet Society (2002). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-Acknowledgement
-
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Olson, et. al. Standards Track [Page 5]
-
diff --git a/lib/megaco/examples/meas/meas.sh.skel b/lib/megaco/examples/meas/meas.sh.skel
index 4bbc6a5f7e..76745ed8f4 100644
--- a/lib/megaco/examples/meas/meas.sh.skel
+++ b/lib/megaco/examples/meas/meas.sh.skel
@@ -1,20 +1,20 @@
#!/bin/sh
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 2007-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 2007-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
#
@@ -27,7 +27,7 @@ MEAS_HOME=$MEGACO_HOME/examples/meas
PATH=$ERL_HOME/bin:$PATH
# MEAS_TIME_TEST="-s megaco_codec_meas start time_test"
-MEAS_DEFAULT="-s megaco_codec_meas t"
+MEAS_DEFAULT="-s megaco_codec_meas start"
STOP="-s init stop"
ERL="erl \
diff --git a/lib/megaco/include/megaco.hrl b/lib/megaco/include/megaco.hrl
index 4045fa9461..87e830323f 100644
--- a/lib/megaco/include/megaco.hrl
+++ b/lib/megaco/include/megaco.hrl
@@ -1,19 +1,20 @@
-%% ``The contents of this file are subject to the Erlang Public License,
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 1999-2010. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
-%% retrieved via the world wide web at http://www.erlang.org/.
-%%
+%% retrieved online at http://www.erlang.org/.
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
-%% The Initial Developer of the Original Code is Ericsson Utvecklings AB.
-%% Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings
-%% AB. All Rights Reserved.''
-%%
-%% $Id$
+%%
+%% %CopyrightEnd%
%%
%%----------------------------------------------------------------------
%% Purpose: Define common data structures and error codes
diff --git a/lib/megaco/src/app/megaco.appup.src b/lib/megaco/src/app/megaco.appup.src
index 2d5ee2ddbd..3cf0e165b7 100644
--- a/lib/megaco/src/app/megaco.appup.src
+++ b/lib/megaco/src/app/megaco.appup.src
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2001-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2001-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -122,29 +122,38 @@
%% 3.13
%% |
%% v
-%% 3.13.0.1
+%% 3.13.1
%%
%%
{"%VSN%",
[
{"3.13",
[
+ {load_module, megaco_filter, soft_purge, soft_purge, []},
+ {update, megaco_flex_scanner_handler, {advanced, downgrade_to_pre_3_13_1},
+ soft_purge, soft_purge, []}
]
},
{"3.12",
[
+ {load_module, megaco_filter, soft_purge, soft_purge, []},
{load_module, megaco_udp, soft_purge, soft_purge, []},
{load_module, megaco_messenger, soft_purge, soft_purge, [megaco_monitor]},
- {update, megaco_monitor, soft, soft_purge, soft_purge, []}
+ {update, megaco_monitor, soft, soft_purge, soft_purge, []},
+ {update, megaco_flex_scanner_handler, {advanced, downgrade_to_pre_3_13_1},
+ soft_purge, soft_purge, []}
]
},
{"3.11.3",
[
+ {load_module, megaco_filter, soft_purge, soft_purge, []},
{load_module, megaco_udp, soft_purge, soft_purge, []},
{load_module, megaco_messenger, soft_purge, soft_purge,
[megaco_config, megaco_monitor]},
{update, megaco_monitor, soft, soft_purge, soft_purge, []},
{update, megaco_config, {advanced, upgrade_from_pre_3_12},
+ soft_purge, soft_purge, []},
+ {update, megaco_flex_scanner_handler, {advanced, downgrade_to_pre_3_13_1},
soft_purge, soft_purge, []}
]
}
@@ -152,22 +161,31 @@
[
{"3.13",
[
+ {load_module, megaco_filter, soft_purge, soft_purge, []},
+ {update, megaco_flex_scanner_handler, {advanced, upgrade_from_pre_3_13_1},
+ soft_purge, soft_purge, []}
]
},
{"3.12",
[
+ {load_module, megaco_filter, soft_purge, soft_purge, []},
{load_module, megaco_udp, soft_purge, soft_purge, []},
{load_module, megaco_messenger, soft_purge, soft_purge, [megaco_monitor]},
- {update, megaco_monitor, soft, soft_purge, soft_purge, []}
+ {update, megaco_monitor, soft, soft_purge, soft_purge, []},
+ {update, megaco_flex_scanner_handler, {advanced, upgrade_from_pre_3_13_1},
+ soft_purge, soft_purge, []}
]
},
{"3.11.3",
[
+ {load_module, megaco_filter, soft_purge, soft_purge, []},
{load_module, megaco_udp, soft_purge, soft_purge, []},
{load_module, megaco_messenger, soft_purge, soft_purge,
[megaco_config, megaco_monitor]},
{update, megaco_monitor, soft, soft_purge, soft_purge, []},
{update, megaco_config, {advanced, downgrade_to_pre_3_12},
+ soft_purge, soft_purge, []},
+ {update, megaco_flex_scanner_handler, {advanced, upgrade_from_pre_3_13_1},
soft_purge, soft_purge, []}
]
}
diff --git a/lib/megaco/src/engine/megaco_config.erl b/lib/megaco/src/engine/megaco_config.erl
index 2058c53973..1c7a141be7 100644
--- a/lib/megaco/src/engine/megaco_config.erl
+++ b/lib/megaco/src/engine/megaco_config.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2000-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2000-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -1432,7 +1432,7 @@ verify_val(Item, Val) ->
segment_send_timer -> verify_timer(Val);
max_pdu_size -> verify_int(Val) andalso (Val > 0);
request_keep_alive_timeout ->
- (verify_int(Val) andalso (Val >= 0)) orelse (Val =:= plain);
+ (verify_uint(Val) orelse (Val =:= plain));
_ -> false
end.
diff --git a/lib/megaco/src/engine/megaco_filter.erl b/lib/megaco/src/engine/megaco_filter.erl
index 23a91b1f1d..9df752789c 100644
--- a/lib/megaco/src/engine/megaco_filter.erl
+++ b/lib/megaco/src/engine/megaco_filter.erl
@@ -1,37 +1,83 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2000-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2000-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
%%
%%----------------------------------------------------------------------
-%% Purpose : megaco/H.248 customization of generic event tracer
+%% Purpose : Megaco/H.248 customization of the Event Tracer tool
%%----------------------------------------------------------------------
-module(megaco_filter).
--export([start/0, start/1, filter/1,
+-export([start/0, start/1, filter/1, raw_filter/1,
pretty_error/1, string_to_term/1]).
+
-include_lib("megaco/include/megaco.hrl").
-include_lib("megaco/include/megaco_message_v1.hrl").
-include_lib("megaco/src/app/megaco_internal.hrl").
-include_lib("et/include/et.hrl").
+%%----------------------------------------------------------------------
+%% BUGBUG: There are some opportunities for improvements:
+%%
+%% * This version of the module does only handle version 1 of the messages.
+%%
+%% * The record definition of megaco_transaction_reply is copied from
+%% megaco_message_internal.hrl as that header file contains some
+%% records that already are defined in megaco_message_{v1,v2,v3}.hrl.
+%% * The records megaco_udp and megaco_tcp are copied from the files
+%% megaco_udp.hrl and megaco_tcp.hrl respectively, as we cannot include
+%% both header files. They both defines the macros HEAP_SIZE and GC_MSG_LIMIT.
+
+%%-include("megaco_message_internal.hrl").
+-record('megaco_transaction_reply',
+ {
+ transactionId,
+ immAckRequired = asn1_NOVALUE,
+ transactionResult,
+ segmentNumber = asn1_NOVALUE,
+ segmentationComplete = asn1_NOVALUE
+ }).
+
+%% -include_lib("megaco/src/udp/megaco_udp.hrl").
+-record(megaco_udp,
+ {port,
+ options = [],
+ socket,
+ receive_handle,
+ module = megaco,
+ serialize = false % false: Spawn a new process for each message
+ }).
+
+%% -include_lib("megaco/src/tcp/megaco_tcp.hrl").
+-record(megaco_tcp,
+ {host,
+ port,
+ options = [],
+ socket,
+ proxy_pid,
+ receive_handle,
+ module = megaco,
+ serialize = false % false: Spawn a new process for each message
+ }).
+%%----------------------------------------------------------------------
+
start() ->
start([]).
@@ -47,11 +93,20 @@ start(ExtraOptions) ->
{title, "Megaco tracer - Erlang/OTP"} | ExtraOptions],
et_viewer:start(Options).
-filter(E) when is_record(E, event) ->
+filter(E) ->
+ case catch raw_filter(E) of
+ {'EXIT', Reason} = Error->
+ io:format("~p: ~p\n", [?MODULE, Error]),
+ exit(Reason);
+ E2 ->
+ E2
+ end.
+
+raw_filter(E) when is_record(E, event) ->
From = filter_actor(E#event.from),
To = filter_actor(E#event.to),
E2 = E#event{from = From, to = To},
- E3 = filter_contents(E#event.contents, E2, []),
+ E3 = filter_contents(E#event.contents, E2),
{true, E3}.
filter_actors(From, To, E)
@@ -101,6 +156,9 @@ filter_user_actor(Actor) ->
do_filter_actor(CH) when is_record(CH, megaco_conn_handle) ->
Mid = CH#megaco_conn_handle.local_mid,
do_filter_actor(Mid);
+do_filter_actor(RH) when is_record(RH, megaco_receive_handle) ->
+ Mid = RH#megaco_receive_handle.local_mid,
+ do_filter_actor(Mid);
do_filter_actor(Actor) ->
case Actor of
{ip4Address, {'IP4Address', [A1,A2,A3,A4], asn1_NOVALUE}} ->
@@ -130,86 +188,108 @@ do_filter_actor(Actor) ->
"UNKNOWN"
end.
-filter_contents([], E, Contents) ->
- E#event{contents = lists:flatten(lists:reverse(Contents))};
-filter_contents([H | T], E, Contents) ->
+
+filter_contents(Contents, E) ->
+ do_filter_contents(Contents, E, missing_conn_data, []).
+
+do_filter_contents([H | T], E, ConnData, Contents) ->
case H of
- {line, _Mod, _Line} ->
- filter_contents(T, E, Contents);
+ Udp when is_record(Udp, megaco_udp) ->
+ RH = Udp#megaco_udp.receive_handle,
+ Actor = filter_actor(RH),
+ E2 = E#event{from = Actor, to = Actor},
+ Pretty =
+ ["Port: ", integer_to_list(Udp#megaco_udp.port), "\n",
+ "Encoder: ", atom_to_list(RH#megaco_receive_handle.encoding_mod)],
+ do_filter_contents(T, E2, ConnData, [[Pretty, "\n"], Contents]);
+ Tcp when is_record(Tcp, megaco_tcp) ->
+ RH = Tcp#megaco_tcp.receive_handle,
+ Actor = filter_actor(RH),
+ E2 = E#event{from = Actor, to = Actor},
+ Pretty =
+ ["Port: ", integer_to_list(Tcp#megaco_tcp.port), "\n",
+ "Encoder: ", atom_to_list(RH#megaco_receive_handle.encoding_mod)],
+ do_filter_contents(T, E2, ConnData, [[Pretty, "\n"], Contents]);
CD when is_record(CD, conn_data) ->
CH = CD#conn_data.conn_handle,
From = CH#megaco_conn_handle.local_mid,
- To = CH#megaco_conn_handle.remote_mid,
+ To = CH#megaco_conn_handle.remote_mid,
E2 = filter_actors(From, To, E),
Serial = CD#conn_data.serial,
E3 = append_serial(Serial, E2),
- filter_contents(T, E3, Contents);
+ do_filter_contents(T, E3, CD, Contents);
CH when is_record(CH, megaco_conn_handle) ->
From = CH#megaco_conn_handle.local_mid,
- To = CH#megaco_conn_handle.remote_mid,
+ To = CH#megaco_conn_handle.remote_mid,
E2 = filter_actors(From, To, E),
- filter_contents(T, E2, Contents);
- {orig_conn_handle, _CH} ->
- filter_contents(T, E, Contents);
+ do_filter_contents(T, E2, ConnData, Contents);
RH when is_record(RH, megaco_receive_handle) ->
Actor = RH#megaco_receive_handle.local_mid,
E2 = filter_actors(Actor, Actor, E),
- filter_contents(T, E2, Contents);
- {pid, Pid} when is_pid(Pid) ->
- filter_contents(T, E, Contents);
- pending ->
- filter_contents(T, E, Contents);
- reply ->
- filter_contents(T, E, Contents);
+ do_filter_contents(T, E2, ConnData, Contents);
{error, Reason} ->
Pretty = pretty_error({error, Reason}),
E2 = prepend_error(E),
- filter_contents(T, E2, [[Pretty, "\n"], Contents]);
+ do_filter_contents(T, E2, ConnData, [[Pretty, "\n"], Contents]);
{'EXIT', Reason} ->
Pretty = pretty_error({'EXIT', Reason}),
E2 = prepend_error(E),
- filter_contents(T, E2, [[Pretty, "\n"], Contents]);
+ do_filter_contents(T, E2, ConnData, [[Pretty, "\n"], Contents]);
ED when is_record(ED, 'ErrorDescriptor') ->
Pretty = pretty_error(ED),
E2 = prepend_error(E),
- filter_contents(T, E2, [[Pretty, "\n"], Contents]);
+ do_filter_contents(T, E2, ConnData, [[Pretty, "\n"], Contents]);
Trans when is_record(Trans, 'TransactionRequest') ->
- Pretty = pretty({trans, {transactionRequest, Trans}}),
- filter_contents([], E, [[Pretty, "\n"], Contents]);
+ Pretty = pretty(ConnData, {trans, {transactionRequest, Trans}}),
+ do_filter_contents([], E, ConnData, [[Pretty, "\n"], Contents]);
+ {transactionRequest, Trans} when is_record(Trans, 'TransactionRequest') ->
+ Pretty = pretty(ConnData, {trans, {transactionRequest, Trans}}),
+ do_filter_contents([], E, ConnData, [[Pretty, "\n"], Contents]);
Trans when is_record(Trans, 'TransactionReply') ->
- Pretty = pretty({trans, {transactionReply, Trans}}),
- filter_contents([], E, [[Pretty, "\n"], Contents]);
+ Pretty = pretty(ConnData, {trans, {transactionReply, Trans}}),
+ do_filter_contents([], E, ConnData, [[Pretty, "\n"], Contents]);
+ Trans when is_record(Trans, megaco_transaction_reply) ->
+ %% BUGBUG: Version 1 special
+ TransV1 =
+ #'TransactionReply'{transactionId = Trans#megaco_transaction_reply.transactionId,
+ immAckRequired = Trans#megaco_transaction_reply.immAckRequired,
+ transactionResult = Trans#megaco_transaction_reply.transactionResult},
+ Pretty = pretty(ConnData, {trans, {transactionReply, TransV1}}),
+ do_filter_contents([], E, ConnData, [[Pretty, "\n"], Contents]);
Trans when is_record(Trans, 'TransactionPending') ->
- Pretty = pretty({trans, {transactionPending, Trans}}),
- filter_contents([], E, [[Pretty, "\n"], Contents]);
+ Pretty = pretty(ConnData, {trans, {transactionPending, Trans}}),
+ do_filter_contents([], E, ConnData, [[Pretty, "\n"], Contents]);
Trans when is_record(Trans, 'TransactionAck') ->
- Pretty = pretty({trans, {transactionResponseAck, [Trans]}}),
+ Pretty = pretty(ConnData, {trans, {transactionResponseAck, [Trans]}}),
case Trans#'TransactionAck'.lastAck of
asn1_NOVALUE ->
- filter_contents([], E, [[Pretty, "\n"], Contents]);
+ do_filter_contents([], E, ConnData, [[Pretty, "\n"], Contents]);
Last ->
Label = term_to_string(E#event.label),
E2 = E#event{label = Label ++ ".." ++ integer_to_list(Last)},
- filter_contents([], E2, [[Pretty, "\n"], Contents])
+ do_filter_contents([], E2, ConnData, [[Pretty, "\n"], Contents])
end;
{context_id, _ContextId} ->
- Pretty = pretty(H),
- filter_contents(T, E, [[Pretty, "\n"], Contents]);
+ Pretty = pretty(ConnData, H),
+ do_filter_contents(T, E, ConnData, [[Pretty, "\n"], Contents]);
{command_request, CmdReq} ->
- Pretty = pretty(CmdReq),
- filter_contents(T, E, [[Pretty, "\n"], Contents]);
+ Pretty = pretty(ConnData, CmdReq),
+ do_filter_contents(T, E, ConnData, [[Pretty, "\n"], Contents]);
{user_reply, {ok, ARS}} ->
- Pretty = [[pretty(AR), "\n"] || AR <- ARS],
- filter_contents(T, E, [["REPLY: \n", Pretty, "\n"], Contents]);
+ Pretty = [[pretty(ConnData, AR), "\n"] || AR <- ARS],
+ do_filter_contents(T, E, ConnData, [["USER REPLY OK: \n", Pretty, "\n"], Contents]);
{user_reply, Error} ->
Pretty = pretty_error(Error),
- filter_contents(T, E, [["REPLY: \n", Pretty, "\n"], Contents]);
+ do_filter_contents(T, E, ConnData, [["USER REPLY ERROR: \n", Pretty, "\n"], Contents]);
{actionReplies, ARS} ->
- Pretty = [[pretty(AR), "\n"] || AR <- ARS],
- filter_contents(T, E, [["REPLY: \n", Pretty, "\n"], Contents]);
+ Pretty = [[pretty(ConnData, AR), "\n"] || AR <- ARS],
+ do_filter_contents(T, E, ConnData, [["ACTION REPLIES: \n", Pretty, "\n"], Contents]);
MegaMsg when is_record(MegaMsg, 'MegacoMessage') ->
- Pretty = pretty(MegaMsg),
- filter_contents(T, E, [["MESSAGE: \n", Pretty, "\n"], Contents]);
+ Pretty = pretty(ConnData, MegaMsg),
+ do_filter_contents(T, E, ConnData, [Pretty, "\n", Contents]);
+ {message, MegaMsg} when is_record(MegaMsg, 'MegacoMessage') ->
+ Pretty = pretty(ConnData, MegaMsg),
+ do_filter_contents(T, E, ConnData, [Pretty, "\n", Contents]);
{bytes, Bin} when is_binary(Bin) ->
E2 =
case E#event.label of
@@ -223,15 +303,37 @@ filter_contents([H | T], E, Contents) ->
E
end,
CharList = erlang:binary_to_list(Bin),
- filter_contents(T, E2, [[CharList , "\n"], Contents]);
- [] ->
- filter_contents(T, E, Contents);
+ do_filter_contents(T, E2, ConnData, [[CharList , "\n"], Contents]);
+ List when is_list(List) ->
+ %% BUGBUG: Workaround as megaco_messenger puts nested lists in its traces
+ do_filter_contents(List ++ T, E, ConnData, Contents);
+ Int when is_integer(Int) ->
+ %% BUGBUG: Workaround as megaco_messenger puts nested lists in its traces
+ do_filter_contents(T, E, ConnData, Contents);
+ {line, _Mod, _Line} ->
+ do_filter_contents(T, E, ConnData, Contents);
+ {orig_conn_handle, _CH} ->
+ do_filter_contents(T, E, ConnData, Contents);
+ {pid, Pid} when is_pid(Pid) ->
+ do_filter_contents(T, E, ConnData, Contents);
+ pending ->
+ do_filter_contents(T, E, ConnData, Contents);
+ reply ->
+ do_filter_contents(T, E, ConnData, Contents);
{test_lib, _Mod, _Fun} ->
- filter_contents(T, E, Contents);
+ do_filter_contents(T, E, ConnData, Contents);
+ {trans_id, _TransId} ->
+ do_filter_contents(T, E, ConnData, Contents);
+ {send_func, _FunName} ->
+ do_filter_contents(T, E, ConnData, Contents);
+ Pid when is_pid(Pid) ->
+ do_filter_contents(T, E, ConnData, Contents);
Other ->
- Pretty = pretty(Other),
- filter_contents(T, E, [[Pretty, "\n"], Contents])
- end.
+ Pretty = pretty(ConnData, Other),
+ do_filter_contents(T, E, ConnData, [[Pretty, "\n"], Contents])
+ end;
+do_filter_contents([], E, _ConnData, Contents) ->
+ E#event{contents = lists:flatten(lists:reverse(Contents))}.
append_serial(Serial, E) when is_integer(Serial) ->
Label = term_to_string(E#event.label),
@@ -243,7 +345,7 @@ prepend_error(E) ->
Label = term_to_string(E#event.label),
E#event{label = "<ERROR> " ++ Label}.
-pretty({context_id, ContextId}) ->
+pretty(_ConnData, {context_id, ContextId}) ->
if
ContextId =:= ?megaco_null_context_id ->
["CONTEXT ID: -\n"];
@@ -254,61 +356,33 @@ pretty({context_id, ContextId}) ->
is_integer(ContextId) ->
["CONTEXT ID: ",integer_to_list(ContextId), "\n"]
end;
-pretty(MegaMsg) when is_record(MegaMsg, 'MegacoMessage') ->
- case catch megaco_pretty_text_encoder:encode_message([], MegaMsg) of
- {ok, Bin} ->
- term_to_string(Bin);
- _Bad ->
- term_to_string(MegaMsg)
- end;
-pretty(CmdReq) when is_record(CmdReq, 'CommandRequest') ->
- case catch megaco_pretty_text_encoder:encode_command_request(CmdReq) of
- {ok, IoList} ->
- IoList2 = lists:flatten(IoList),
- term_to_string(IoList2);
- _Bad ->
- term_to_string(CmdReq)
- end;
-pretty({complete_success, ContextId, RepList} = Res) ->
+pretty(_ConnData, MegaMsg) when is_record(MegaMsg, 'MegacoMessage') ->
+ {ok, Bin} = megaco_pretty_text_encoder:encode_message([], MegaMsg),
+ term_to_string(Bin);
+pretty(_ConnData, CmdReq) when is_record(CmdReq, 'CommandRequest') ->
+ {ok, IoList} = megaco_pretty_text_encoder:encode_command_request(CmdReq),
+ term_to_string(lists:flatten(IoList));
+pretty(_ConnData, {complete_success, ContextId, RepList}) ->
ActRep = #'ActionReply'{contextId = ContextId,
commandReply = RepList},
- case catch megaco_pretty_text_encoder:encode_action_reply(ActRep) of
- {ok, IoList} ->
- IoList2 = lists:flatten(IoList),
- term_to_string(IoList2);
- _Bad ->
- term_to_string(Res)
- end;
-pretty(AR) when is_record(AR, 'ActionReply') ->
- case catch megaco_pretty_text_encoder:encode_action_reply(AR) of
- {ok, IoList} ->
- IoList2 = lists:flatten(IoList),
- term_to_string(IoList2);
- _Bad ->
- term_to_string(AR)
- end;
-pretty({partial_failure, ContextId, RepList} = Res) ->
+ {ok, IoList} = megaco_pretty_text_encoder:encode_action_reply(ActRep),
+ term_to_string(lists:flatten(IoList));
+pretty(_ConnData, AR) when is_record(AR, 'ActionReply') ->
+ {ok, IoList} = megaco_pretty_text_encoder:encode_action_reply(AR),
+ term_to_string(lists:flatten(IoList));
+pretty(_ConnData, {partial_failure, ContextId, RepList}) ->
ActRep = #'ActionReply'{contextId = ContextId,
commandReply = RepList},
- case catch megaco_pretty_text_encoder:encode_action_reply(ActRep) of
- {ok, IoList} ->
- IoList2 = lists:flatten(IoList),
- term_to_string(IoList2);
- _Bad ->
- term_to_string(Res)
- end;
-pretty({trans, Trans}) ->
- case catch megaco_pretty_text_encoder:encode_transaction(Trans) of
+ {ok, IoList} = megaco_pretty_text_encoder:encode_action_reply(ActRep),
+ term_to_string(lists:flatten(IoList));
+pretty(_ConnData, {trans, Trans}) ->
+ case megaco_pretty_text_encoder:encode_transaction(Trans) of
{ok, Bin} when is_binary(Bin) ->
- IoList2 = lists:flatten(binary_to_list(Bin)),
- term_to_string(IoList2);
+ term_to_string(binary_to_list(Bin));
{ok, IoList} ->
- IoList2 = lists:flatten(IoList),
- term_to_string(IoList2);
- _Bad ->
- term_to_string(Trans)
+ term_to_string(lists:flatten(IoList))
end;
-pretty(Other) ->
+pretty(__ConnData, Other) ->
term_to_string(Other).
pretty_error({error, Reason}) ->
diff --git a/lib/megaco/src/flex/Makefile.in b/lib/megaco/src/flex/Makefile.in
index 782d6a4807..6ce9b34617 100644
--- a/lib/megaco/src/flex/Makefile.in
+++ b/lib/megaco/src/flex/Makefile.in
@@ -1,19 +1,19 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 2001-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 2001-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
include $(ERL_TOP)/make/target.mk
@@ -23,13 +23,30 @@ MEGACO_INCLUDEDIR = ../../include
include $(ERL_TOP)/make/$(TARGET)/otp.mk
-
# ----------------------------------------------------
# Application version
# ----------------------------------------------------
include ../../vsn.mk
VSN=$(MEGACO_VSN)
+# ----------------------------------------------------
+# Dynamic Erlang Driver
+# ----------------------------------------------------
+HAVE_USABLE_OTP_DED_MK = @HAVE_USABLE_OTP_DED_MK@
+
+ifeq ($(HAVE_USABLE_OTP_DED_MK),yes)
+# otp_ded.mk will be used on R13B04 and later
+include $(ERL_TOP)/make/$(TARGET)/otp_ded.mk
+else
+# megacos configure provide the info instead
+DED_CC = @CC@
+DED__NOWARN_NOTHR_CFLAGS = @DED_CFLAGS@
+DED_THR_DEFS = @DED_THR_DEFS@
+DED_LD = @DED_LD@
+DED_LDFLAGS = @DED_LDFLAGS@
+DED_INCLUDES = @DED_INCLUDES@
+DED_EXT = so
+endif
# ----------------------------------------------------
# The following variables differ on different systems, we set
@@ -39,16 +56,16 @@ VSN=$(MEGACO_VSN)
FLEX_VSN = $(shell flex --version)
-TMP_CFLAGS = @DED_CFLAGS@
+TMP_CFLAGS = $(DED__NOWARN_NOTHR_CFLAGS) @OTP_EXTRA_FLAGS@
ifeq ($(TYPE),valgrind)
CFLAGS = $(subst -O2, , $(TMP_CFLAGS)) -DVALGRIND
else
CFLAGS = $(TMP_CFLAGS)
endif
-CC = @CC@
-CFLAGS_MT = $(CFLAGS) -D_THREAD_SAFE -D_REENTRANT
-LD = @DED_LD@
-LDFLAGS = @DED_LDFLAGS@
+CC = $(DED_CC)
+CFLAGS_MT = $(CFLAGS) $(DED_THR_DEFS)
+LD = $(DED_LD)
+LDFLAGS = $(DED_LDFLAGS)
LEX = @LEX@
LEXLIB = @LEXLIB@
PERL = @PERL@
@@ -87,18 +104,13 @@ ENABLE_MEGACO_FLEX_SCANNER_LINENO = @ENABLE_MEGACO_FLEX_SCANNER_LINENO@
endif
endif
-
-SYSINCLUDE = -I$(ERL_TOP)/erts/emulator/beam \
- -I$(ERL_TOP)/erts/emulator/sys/$(ERLANG_OSTYPE)
ifeq ($(findstring vxworks,$(TARGET)),vxworks)
- SYSINCLUDE += -I$(ERL_TOP)/erts/etc/vxworks
+ DED_INCLUDES += -I$(ERL_TOP)/erts/etc/vxworks
endif
-DRIVER_INCLUDES = $(SYSINCLUDE)
-
PRIVDIR = ../../priv
LIBDIR = $(PRIVDIR)/lib/$(TARGET)
-
+OBJDIR = $(PRIVDIR)/obj/$(TARGET)
# ----------------------------------------------------
# Release directory specification
@@ -138,8 +150,8 @@ ifeq ($(findstring vxworks,$(TARGET)),vxworks)
FLEX_SCANNER_SO =
SOLIBS = $(FLEX_SCANNER_SO)
else
-FLEX_SCANNER_SO = $(LIBDIR)/$(STD_DRV).so
-FLEX_SCANNER_MT_SO = $(LIBDIR)/$(MT_DRV).so
+FLEX_SCANNER_SO = $(LIBDIR)/$(STD_DRV).$(DED_EXT)
+FLEX_SCANNER_MT_SO = $(LIBDIR)/$(MT_DRV).$(DED_EXT)
SOLIBS = $(FLEX_SCANNER_SO) $(FLEX_SCANNER_MT_SO)
endif
endif
@@ -175,7 +187,7 @@ else
CFLAGS += -DMFS_FLEX_DEBUG=0
endif
-CFLAGS += $(DRIVER_INCLUDES) $(DRV_FLAGS) -funroll-loops -Wall
+CFLAGS += $(DED_INCLUDES) -I$(ERL_TOP)/erts/$(TARGET) $(DRV_FLAGS) -funroll-loops -Wall
#ifneq ($(FLEX_VSN),)
#CFLAGS += -DFLEX_VERSION="$(FLEX_VSN)"
@@ -379,18 +391,30 @@ $(STD_DRV).c: $(STD_DRV).flex
$(MT_DRV).c: $(MT_DRV).flex
$(LEX) $(MT_LEX_FLAGS) -P$* -o$@ $<
-solibs: $(LIBDIR) $(SOLIBS)
+solibs: $(LIBDIR) $(OBJDIR) $(SOLIBS)
+
+$(OBJDIR)/$(STD_DRV).o: $(STD_DRV).c
+ @echo "compiling std driver:"
+ $(CC) -c $(STD_DRV_NAME) $(CFLAGS) -o $@ $<
+
+$(OBJDIR)/$(MT_DRV).o: $(MT_DRV).c
+ @echo "compiling multi-threaded driver:"
+ $(CC) -c $(MT_DRV_NAME) $(CFLAGS_MT) -o $@ $<
+
# No need to link with -lfl as we have also defined %option noyywrap -
# and having -lfl doesn't work under Darwin for some reason. - Sean
-$(LIBDIR)/$(STD_DRV).so: $(STD_DRV).c
- @echo "std driver:"
- $(CC) $(STD_DRV_NAME) $(CFLAGS) $(LDFLAGS) -o $(LIBDIR)/$(STD_DRV).so $<
+$(LIBDIR)/$(STD_DRV).$(DED_EXT): $(OBJDIR)/$(STD_DRV).o
+ @echo "linking std driver:"
+ $(LD) $(LDFLAGS) -o $@ $<
-$(LIBDIR)/$(MT_DRV).so: $(MT_DRV).c
- @echo "multi-threaded driver:"
- $(CC) $(MT_DRV_NAME) $(CFLAGS_MT) $(LDFLAGS) -o $(LIBDIR)/$(MT_DRV).so $<
+$(LIBDIR)/$(MT_DRV).$(DED_EXT): $(OBJDIR)/$(MT_DRV).o
+ @echo "linking multi-threaded driver:"
+ $(LD) $(LDFLAGS) -o $@ $<
$(LIBDIR):
-mkdir -p $(LIBDIR)
+$(OBJDIR):
+ -mkdir -p $(OBJDIR)
+
diff --git a/lib/megaco/src/flex/megaco_flex_scanner_drv.flex.src b/lib/megaco/src/flex/megaco_flex_scanner_drv.flex.src
index b96a69415d..9b4f717201 100644
--- a/lib/megaco/src/flex/megaco_flex_scanner_drv.flex.src
+++ b/lib/megaco/src/flex/megaco_flex_scanner_drv.flex.src
@@ -1,19 +1,19 @@
/*
* %CopyrightBegin%
- *
- * Copyright Ericsson AB 2001-2009. All Rights Reserved.
- *
+ *
+ * Copyright Ericsson AB 2001-2010. All Rights Reserved.
+ *
* The contents of this file are subject to the Erlang Public License,
* Version 1.1, (the "License"); you may not use this file except in
* compliance with the License. You should have received a copy of the
* Erlang Public License along with this software. If not, it can be
* retrieved online at http://www.erlang.org/.
- *
+ *
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
- *
+ *
* %CopyrightEnd%
*
* ----------------------------------------------------------------------
@@ -354,9 +354,6 @@ static ErlDrvEntry mfs_entry = {
MEGACO_DRIVER_FLAGS, /* driver_flags, used for port lock indication */
NULL, /* handle2, emulator internal use */
NULL /* process_exit, Called when a process monitor fires */
-#if defined(MEGACO_DRV_ENTRY_HAS_STOP_SELECT)
- ,NULL /* stop_select, Called to close an event object */
-#endif
};
diff --git a/lib/megaco/src/flex/megaco_flex_scanner_handler.erl b/lib/megaco/src/flex/megaco_flex_scanner_handler.erl
index d09e0c6fff..420202134e 100644
--- a/lib/megaco/src/flex/megaco_flex_scanner_handler.erl
+++ b/lib/megaco/src/flex/megaco_flex_scanner_handler.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2001-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2001-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -180,27 +180,28 @@ terminate(_Reason, _S) ->
%% Purpose: Called to change the internal state
%% Returns: {ok, NewState}
%%----------------------------------------------------------------------
-%% code_change({down, _Vsn}, #state{conf = Conf} = State, downgrade_to_pre_3_8) ->
-%% Port = downgrade_flex_scanner(Conf),
-%% {ok, State#state{conf = {flex, Port}}};
+
+code_change({down, _Vsn}, #state{conf = Conf} = State, downgrade_to_pre_3_13_1) ->
+ NewPorts = bump_flex_scanner(Conf),
+ {ok, State#state{conf = {flex, NewPorts}}};
+
+code_change(_Vsn, #state{conf = Conf} = State, upgrade_from_pre_3_13_1) ->
+ NewPorts = bump_flex_scanner(Conf),
+ {ok, State#state{conf = {flex, NewPorts}}};
code_change(_Vsn, State, _Extra) ->
{ok, State}.
-%% downgrade_flex_scanner({flex, Port}) when is_port(Port) ->
-%% Port;
-%% downgrade_flex_scanner({flex, [Port]}) when is_port(Port) ->
-%% Port;
-%% downgrade_flex_scanner({flex, Ports}) when is_list(Ports) ->
-%% megaco_flex_scanner:stop(Ports),
-%% case megaco_flex_scanner:start() of
-%% {ok, Port} ->
-%% Port;
-%% Error ->
-%% exit(Error)
-%% end;
-%% downgrade_flex_scanner(BadConfig) ->
-%% exit({invalid_config, BadConfig}).
+bump_flex_scanner({flex, Ports}) ->
+ megaco_flex_scanner:stop(Ports),
+ case start_flex_scanners() of
+ {ok, NewPorts} ->
+ NewPorts;
+ Error ->
+ exit(Error)
+ end;
+bump_flex_scanner(BadConfig) ->
+ exit({invalid_config, BadConfig}).
%%%----------------------------------------------------------------------
diff --git a/lib/megaco/test/Makefile b/lib/megaco/test/Makefile
index a6f50f87c4..85c97359d7 100644
--- a/lib/megaco/test/Makefile
+++ b/lib/megaco/test/Makefile
@@ -1,19 +1,19 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 1999-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 1999-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
include $(ERL_TOP)/make/target.mk
@@ -52,10 +52,14 @@ endif
include modules.mk
+EBIN = .
+
HRL_FILES = megaco_test_lib.hrl
ERL_FILES = $(MODULES:%=%.erl)
+SOURCE = $(HRL_FILES) $(ERL_FILES)
+
TARGET_FILES = $(MODULES:%=%.$(EMULATOR))
COVER_SPEC_FILE = megaco.cover
@@ -71,6 +75,18 @@ OP_CASES = mess mib mreq pending trans actions load
ALL_CASES = $(APP_CASES) $(CODEC_CASES) $(MISC_CASES) $(OP_CASES)
+EMAKEFILE = Emakefile
+MAKE_EMAKE = $(wildcard $(ERL_TOP)/make/make_emakefile)
+
+ifeq ($(MAKE_EMAKE),)
+BUILDTARGET = $(TARGET_FILES)
+RELTEST_FILES = $(MEGACO_SPECS) $(COVER_SPEC_FILE) $(SOURCE)
+else
+BUILDTARGET = emakebuild
+RELTEST_FILES = $(EMAKEFILE) $(MEGACO_SPECS) $(COVER_SPEC_FILE) $(SOURCE)
+endif
+
+
# ----------------------------------------------------
# FLAGS
# ----------------------------------------------------
@@ -128,19 +144,153 @@ endif
# Targets
# ----------------------------------------------------
-tests debug opt: $(TARGET_FILES)
+tests debug opt: $(BUILDTARGET)
+
+targets: $(TARGET_FILES)
+
+.PHONY: emakebuild
+
+emakebuild: $(EMAKEFILE)
+
+$(EMAKEFILE):
+ $(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) '*_SUITE_make' | grep -v Warning > $(EMAKEFILE)
+ $(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) $(MODULES) | grep -v Warning >> $(EMAKEFILE)
clean:
+ rm -f $(EMAKEFILE)
rm -f $(TARGET_FILES)
rm -f errs core *~
docs:
info:
+ @echo "MAKE_EMAKE = $(MAKE_EMAKE)"
+ @echo "EMAKEFILE = $(EMAKEFILE)"
+ @echo "BUILDTARGET = $(BUILDTARGET)"
+ @echo ""
@echo "ERL_COMPILE_FLAGS = $(ERL_COMPILE_FLAGS)"
@echo "ERL = $(ERL)"
@echo "MERL = $(MERL)"
@echo ""
+ @echo "ARGS = $(ARGS)"
+ @echo ""
+ @echo "HRL_FILES = $(HRL_FILES)"
+ @echo "ERL_FILES = $(ERL_FILES)"
+ @echo "TARGET_FILES = $(TARGET_FILES)"
+ @echo ""
+
+help:
+ @echo ""
+ @echo "This Makefile controls the test of the $(APPLICATION) application. "
+ @echo ""
+ @echo "There are two separate ways to perform the test of $(APPLICATION)."
+ @echo ""
+ @echo " a) Run the official OTP test-server (which we do not describe here)"
+ @echo ""
+ @echo " b) Run the test-server provided with this application. "
+ @echo " There are a number of targets to run the entire or parts"
+ @echo " of this applications ($(APPLICATION)) test-suite"
+ @echo ""
+ @echo "Targets:"
+ @echo ""
+ @echo " help"
+ @echo " Print this info"
+ @echo ""
+ @echo " info"
+ @echo " Prints various environment variables. "
+ @echo " May be useful when debugging the Makefile. "
+ @echo ""
+ @echo " tests | debug | opt "
+ @echo " Compile all test-code. "
+ @echo ""
+ @echo " clean "
+ @echo " Remove all targets. "
+ @echo ""
+ @echo " test"
+ @echo " Run the entire $(APPLICATION) test-suite. "
+ @echo ""
+ @echo " app"
+ @echo " Run the $(APPLICATION) application sub-test-suite. "
+ @echo ""
+ @echo " appup"
+ @echo " Run the $(APPLICATION) application upgrade (appup) sub-test-suite. "
+ @echo ""
+ @echo " conf"
+ @echo " Run the $(APPLICATION) config sub-test-suite. "
+ @echo " Checks various aspects of the megaco configuration. "
+ @echo ""
+ @echo " codec"
+ @echo " Run the $(APPLICATION) codec sub-test-suite(s). "
+ @echo ""
+ @echo " flex"
+ @echo " Run the $(APPLICATION) flex-scanner sub-test-suite. "
+ @echo " This sub-test-suite does not test the function of the scanner itself"
+ @echo " (that is done by the codec sub-test-suite(s)), instead, this"
+ @echo " sub-test-suite tests the *handling* of the flex-scanner linked-in driver."
+ @echo ""
+ @echo " dm"
+ @echo " Run the $(APPLICATION) digit-map sub-test-suite. "
+ @echo ""
+ @echo " tid"
+ @echo " Run the $(APPLICATION) binary term-id sub-test-suite. "
+ @echo ""
+ @echo " sdp"
+ @echo " Run the $(APPLICATION) SDP sub-test-suite. "
+ @echo ""
+ @echo " action"
+ @echo " Run the $(APPLICATION) actions sub-test-suite. "
+ @echo " Actions are building blocks of a $(APPLICATION) message. "
+ @echo " This sub-test-suite attempts to perform tests related to this, "
+ @echo " using all the supported codecs. "
+ @echo ""
+ @echo " mess"
+ @echo " Run the $(APPLICATION) message sub-test-suite"
+ @echo " This is basic message processing test-cases"
+ @echo ""
+ @echo " trans"
+ @echo " Run the $(APPLICATION) transaction sender sub-test-suite"
+ @echo " This is basic message processing for a megaco application "
+ @echo " configured to be using the transaction sender. "
+ @echo ""
+ @echo " mib"
+ @echo " Run the $(APPLICATION) $(APPLICATION)-mib sub-test-suite"
+ @echo " Tests related to the basic support for the $(APPLICATION) mib"
+ @echo " primarily counters"
+ @echo ""
+ @echo " mreq"
+ @echo " Run the $(APPLICATION) mreq sub-test-suite"
+ @echo " This is yet another sub-test-suite with message processing "
+ @echo " test-cases. "
+ @echo ""
+ @echo " pending"
+ @echo " Run the $(APPLICATION) pending-limit sub-test-suite"
+ @echo ""
+ @echo " udp"
+ @echo " Run the $(APPLICATION) UDP transport component sub-test-suite"
+ @echo ""
+ @echo " tcp"
+ @echo " Run the $(APPLICATION) TCP transport component sub-test-suite"
+ @echo ""
+ @echo " load"
+ @echo " Run the $(APPLICATION) load sub-test-suite"
+ @echo " This sub-test-suite performs load test test-cases using "
+ @echo " \"high\" message traffic. "
+ @echo ""
+ @echo " segment"
+ @echo " Run the $(APPLICATION) message segmentation sub-test-suite"
+ @echo " If using the UDP transport protocol, it is possible to send "
+ @echo " and receive segmented megaco replies (in version 3 of the protocol) "
+ @echo " This sub-test-suite tests this feature. "
+ @echo ""
+ @echo " timer"
+ @echo " Run the $(APPLICATION) timer sub-test-suite"
+ @echo " Basic test-suite for the megaco-timers"
+ @echo ""
+ @echo " ex"
+ @echo " Run the $(APPLICATION) example sub-test-suite"
+ @echo " The $(APPLICATION) application contains one example,"
+ @echo " this is a sub-test-suite based on the code,"
+ @echo ""
# ----------------------------------------------------
@@ -195,8 +345,6 @@ all: make
make: targets
-targets: $(TARGET_FILES)
-
test: make
$(MERL) $(ARGS) -sname megaco_test $(ERL_PATH) \
-s megaco_test_lib t $(SUITE) \
@@ -603,9 +751,10 @@ release_docs_spec:
release_tests_spec: tests
$(INSTALL_DIR) $(RELSYSDIR)
- $(INSTALL_DATA) $(TEST_SPEC_FILE) $(COVER_SPEC_FILE) \
- $(HRL_FILES) $(ERL_FILES) \
- $(RELSYSDIR)
- $(INSTALL_DATA) $(TARGET_FILES) $(RELSYSDIR)
+ $(INSTALL_DATA) $(RELTEST_FILES) $(RELSYSDIR)
+# $(INSTALL_DATA) $(TEST_SPEC_FILE) $(COVER_SPEC_FILE) \
+# $(HRL_FILES) $(ERL_FILES) \
+# $(RELSYSDIR)
+#
chmod -f -R u+w $(RELSYSDIR)
diff --git a/lib/megaco/vsn.mk b/lib/megaco/vsn.mk
index 1c637fe8aa..b0574bbeef 100644
--- a/lib/megaco/vsn.mk
+++ b/lib/megaco/vsn.mk
@@ -1,27 +1,30 @@
#-*-makefile-*- ; force emacs to enter makefile-mode
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 2001-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 2001-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
-MEGACO_VSN = 3.13.0.1
-PRE_VSN =
-APP_VSN = "megaco-$(MEGACO_VSN)$(PRE_VSN)"
+APPLICATION = megaco
+MEGACO_VSN = 3.13.1
+PRE_VSN =-p03
+APP_VSN = "$(APPLICATION)-$(MEGACO_VSN)$(PRE_VSN)"
-TICKETS = OTP-8205 OTP-8239 OTP-8249
+TICKETS = OTP-8317 OTP-8323 OTP-8362 OTP-8403
+
+TICKETS_3_13 = OTP-8205 OTP-8239 OTP-8249
TICKETS_3_12 = OTP-8183 OTP-8212
diff --git a/lib/mnesia/doc/src/mnesia.xml b/lib/mnesia/doc/src/mnesia.xml
index 3484cd104a..07f9fce8c7 100644
--- a/lib/mnesia/doc/src/mnesia.xml
+++ b/lib/mnesia/doc/src/mnesia.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>mnesia</title>
@@ -3045,6 +3045,17 @@ raise(Name, Amount) ->
</p>
</item>
<item>
+ <p><c>-mnesia send_compressed Level</c> specifies the level of
+ compression to be used when copying a table from the local node to
+ another one. The default level is 0.
+ </p>
+ <p><c>Level</c> must be an integer in the interval [0, 9], with 0
+ representing no compression and 9 representing maximum compression.
+ Before setting it to a non-zero value, make sure the remote nodes
+ understand this configuration.
+ </p>
+ </item>
+ <item>
<p><c>-mnesia schema_location Loc</c> controls where
Mnesia will look for its schema. The parameter
<c>Loc</c> may be one of the following atoms: </p>
diff --git a/lib/mnesia/src/mnesia.erl b/lib/mnesia/src/mnesia.erl
index 9a630f18eb..fb29007780 100644
--- a/lib/mnesia/src/mnesia.erl
+++ b/lib/mnesia/src/mnesia.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -2200,6 +2200,7 @@ system_info2(transaction_log_writes) -> mnesia_dumper:get_log_writes();
system_info2(core_dir) -> mnesia_monitor:get_env(core_dir);
system_info2(no_table_loaders) -> mnesia_monitor:get_env(no_table_loaders);
system_info2(dc_dump_limit) -> mnesia_monitor:get_env(dc_dump_limit);
+system_info2(send_compressed) -> mnesia_monitor:get_env(send_compressed);
system_info2(Item) -> exit({badarg, Item}).
@@ -2244,6 +2245,7 @@ system_info_items(yes) ->
core_dir,
no_table_loaders,
dc_dump_limit,
+ send_compressed,
version
];
system_info_items(no) ->
diff --git a/lib/mnesia/src/mnesia_loader.erl b/lib/mnesia/src/mnesia_loader.erl
index 77c317abc5..3de329503e 100644
--- a/lib/mnesia/src/mnesia_loader.erl
+++ b/lib/mnesia/src/mnesia_loader.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 1998-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 1998-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -438,6 +438,9 @@ make_table_fun(Pid, TabRec) ->
get_data(Pid, TabRec) ->
receive
+ {Pid, {more_z, CompressedRecs}} when is_binary(CompressedRecs) ->
+ Pid ! {TabRec, more},
+ {zlib_uncompress(CompressedRecs), make_table_fun(Pid,TabRec)};
{Pid, {more, Recs}} ->
Pid ! {TabRec, more},
{Recs, make_table_fun(Pid,TabRec)};
@@ -769,6 +772,27 @@ dets_bchunk(Tab, Chunk) -> %% Arrg
Else -> Else
end.
+zlib_compress(Data, Level) ->
+ BinData = term_to_binary(Data),
+ Z = zlib:open(),
+ zlib:deflateInit(Z, Level),
+ Bs = zlib:deflate(Z, BinData, finish),
+ zlib:deflateEnd(Z),
+ zlib:close(Z),
+ list_to_binary(Bs).
+
+zlib_uncompress(Data) when is_binary(Data) ->
+ binary_to_term(zlib:uncompress(Data)).
+
+compression_level() ->
+ NoCompression = 0,
+ case ?catch_val(send_compressed) of
+ {'EXIT', _} ->
+ mnesia_lib:set(send_compressed, NoCompression),
+ NoCompression;
+ Val -> Val
+ end.
+
send_packet(N, Pid, _Chunk, '$end_of_table', OldNode) ->
case OldNode of
true -> ignore; %% Old nodes can't handle the new no_more
@@ -779,8 +803,15 @@ send_packet(N, Pid, Chunk, {[], Cont}, OldNode) ->
send_packet(N, Pid, Chunk, Chunk(Cont), OldNode);
send_packet(N, Pid, Chunk, {Recs, Cont}, OldNode) when N < ?MAX_NOPACKETS ->
case OldNode of
- true -> Pid ! {self(), {more, [Recs]}}; %% Old need's wrapping list
- false -> Pid ! {self(), {more, Recs}}
+ true ->
+ Pid ! {self(), {more, [Recs]}}; %% Old need's wrapping list
+ false ->
+ case compression_level() of
+ 0 ->
+ Pid ! {self(), {more, Recs}};
+ Level ->
+ Pid ! {self(), {more_z, zlib_compress(Recs, Level)}}
+ end
end,
send_packet(N+1, Pid, Chunk, Chunk(Cont), OldNode);
send_packet(_N, _Pid, _Chunk, DataState, _OldNode) ->
diff --git a/lib/mnesia/src/mnesia_monitor.erl b/lib/mnesia/src/mnesia_monitor.erl
index 05ae943e3b..5df5df4969 100644
--- a/lib/mnesia/src/mnesia_monitor.erl
+++ b/lib/mnesia/src/mnesia_monitor.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -497,7 +497,7 @@ handle_cast({mnesia_down, mnesia_locker, Node}, State) ->
process_q(State3);
false ->
%% No pending remote monitors
- {noreply, State2}
+ process_q(State2)
end;
handle_cast({disconnect, Node}, State) ->
@@ -674,7 +674,8 @@ env() ->
core_dir,
pid_sort_order,
no_table_loaders,
- dc_dump_limit
+ dc_dump_limit,
+ send_compressed
].
default_env(access_module) ->
@@ -717,7 +718,9 @@ default_env(pid_sort_order) ->
default_env(no_table_loaders) ->
2;
default_env(dc_dump_limit) ->
- 4.
+ 4;
+default_env(send_compressed) ->
+ 0.
check_type(Env, Val) ->
case catch do_check_type(Env, Val) of
@@ -763,7 +766,8 @@ do_check_type(pid_sort_order, standard) -> standard;
do_check_type(pid_sort_order, "standard") -> standard;
do_check_type(pid_sort_order, _) -> false;
do_check_type(no_table_loaders, N) when is_integer(N), N > 0 -> N;
-do_check_type(dc_dump_limit,N) when is_number(N), N > 0 -> N.
+do_check_type(dc_dump_limit,N) when is_number(N), N > 0 -> N;
+do_check_type(send_compressed, L) when is_integer(L), L >= 0, L =< 9 -> L.
bool(true) -> true;
bool(false) -> false.
diff --git a/lib/mnesia/src/mnesia_tm.erl b/lib/mnesia/src/mnesia_tm.erl
index 3f3a10a9c1..d42109c3da 100644
--- a/lib/mnesia/src/mnesia_tm.erl
+++ b/lib/mnesia/src/mnesia_tm.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -1389,6 +1389,7 @@ multi_commit(sync_sym_trans, Tid, CR, Store) ->
{Outcome, []} = rec_all(WaitFor, Tid, do_commit, []),
?eval_debug_fun({?MODULE, multi_commit_sym_sync},
[{tid, Tid}, {outcome, Outcome}]),
+ [?ets_insert(Store, {waiting_for_commit_ack, Node}) || Node <- WaitFor],
rpc:abcast(DiscNs -- [node()], ?MODULE, {Tid, Outcome}),
rpc:abcast(RamNs -- [node()], ?MODULE, {Tid, Outcome}),
case Outcome of
diff --git a/lib/odbc/aclocal.m4 b/lib/odbc/aclocal.m4
new file mode 120000
index 0000000000..151fd5ea5a
--- /dev/null
+++ b/lib/odbc/aclocal.m4
@@ -0,0 +1 @@
+../../erts/aclocal.m4 \ No newline at end of file
diff --git a/lib/odbc/c_src/Makefile.in b/lib/odbc/c_src/Makefile.in
index 6a9a174417..ed3eeb1d42 100644
--- a/lib/odbc/c_src/Makefile.in
+++ b/lib/odbc/c_src/Makefile.in
@@ -1,19 +1,19 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 1999-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 1999-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
#
@@ -78,11 +78,11 @@ ODBC_INCLUDE = @ODBC_INCLUDE@
# FLAGS
# ----------------------------------------------------
CC = @CC@
-CFLAGS = $(TYPEFLAGS) @CFLAGS@
+CFLAGS = $(TYPEFLAGS) @CFLAGS@ @THR_DEFS@ @DEFS@
EI_LDFLAGS = -L$(EI_ROOT)/obj$(TYPEMARKER)/$(TARGET)
-LD = @DED_LD@
+LD = @LD@
LDFLAGS = $(ODBC_LIB) $(EI_LDFLAGS)
-LIBS = @LIBS@ $(EI_LIB)
+LIBS = @LIBS@ @THR_LIBS@ $(EI_LIB)
INCLUDES = -I. $(ODBC_INCLUDE) $(EI_INCLUDE)
TARGET_FLAGS = @TARGET_FLAGS@
@@ -106,17 +106,17 @@ docs:
# ----------------------------------------------------
ifdef UNIX_TARGET
-$(UNIX_TARGET): $(BIN_DIR) $(OBJ_DIR)/odbcserver.o
+$(UNIX_TARGET): $(OBJ_DIR)/odbcserver.o
$(CC) $(CFLAGS) -o $@ $(OBJ_DIR)/odbcserver.o $(LDFLAGS) $(LIBS)
endif
ifdef WIN32_TARGET
-$(WIN32_TARGET): $(BIN_DIR) $(OBJ_DIR)/odbcserver.o
+$(WIN32_TARGET): $(OBJ_DIR)/odbcserver.o
$(LD) $(LDFLAGS) -o $@ $(OBJ_DIR)/odbcserver.o $(ENTRY_OBJ) \
$(LIBS) $(ENTRY_LDFLAGS)
endif
-$(OBJ_DIR)/odbcserver.o: $(OBJ_DIR) odbcserver.c
+$(OBJ_DIR)/odbcserver.o: odbcserver.c
$(CC) $(CFLAGS) $(INCLUDES) $(TARGET_FLAGS) -o $@ -c odbcserver.c
create_dirs:
diff --git a/lib/odbc/configure.in b/lib/odbc/configure.in
index 77b576ee88..24e286c290 100644
--- a/lib/odbc/configure.in
+++ b/lib/odbc/configure.in
@@ -25,6 +25,15 @@ else
host_os=win32
fi
+if test "$with_odbc" = "no"; then
+
+ rm -f "$ERL_TOP/lib/odbc/SKIP"
+ echo "odbc disabled by user." > "$ERL_TOP/lib/odbc/SKIP"
+
+else dnl "$with_odbc" != "no"
+
+ERL_XCOMP_SYSROOT_INIT
+
dnl Checks for programs.
AC_PROG_CC
@@ -48,8 +57,11 @@ fi
AC_SUBST(MIXED_CYGWIN_VC)
AC_PROG_MAKE_SET
-AC_CHECK_PROGS(DED_LD, [ld.sh ld], '$(CC)')
-AC_SUBST(DED_LD)
+
+AC_CHECK_PROG(LD, ld.sh)
+AC_CHECK_TOOL(LD, ld, '$(CC)')
+
+AC_SUBST(LD)
# Sockets
#--------------------------------------------------------------------
@@ -83,50 +95,6 @@ AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, main, [LIBS="$LIBS -lnsl"]))
dnl Checks for header files.
AC_HEADER_STDC
-case $have_pthread_lib-$host_os in
- yes-linux*)
- dnl NPTL test stolen from $ERL_TOP/erts/aclocal.m4
- AC_MSG_CHECKING(for Native POSIX Thread Library)
- case `getconf GNU_LIBPTHREAD_VERSION 2>/dev/null` in
- nptl*) nptl=yes;;
- NPTL*) nptl=yes;;
- *) nptl=no;;
- esac
- AC_MSG_RESULT($nptl)
- if test $nptl = yes; then
- need_nptl_incldir=no
- AC_CHECK_HEADER(nptl/pthread.h, need_nptl_incldir=yes)
- if test $need_nptl_incldir = yes; then
- # Ahh...
- nptl_path="$C_INCLUDE_PATH:$CPATH:/usr/local/include:/usr/include"
- nptl_ws_path=
- save_ifs="$IFS"; IFS=":"
- for dir in $nptl_path; do
- if test "x$dir" != "x"; then
- nptl_ws_path="$nptl_ws_path $dir"
- fi
- done
- IFS=$save_ifs
- nptl_incldir=
- for dir in $nptl_ws_path; do
- AC_CHECK_HEADER($dir/nptl/pthread.h,
- nptl_incldir=$dir/nptl)
- if test "x$nptl_incldir" != "x"; then
- CFLAGS="$CFLAGS -isystem $nptl_incldir"
- dnl CPPFLAGS is for configure internal use
- CPPFLAGS="$CPPFLAGS -isystem $nptl_incldir"
- break
- fi
- done
- if test "x$nptl_incldir" = "x"; then
- AC_MSG_ERROR(Failed to locate nptl system include directory)
- fi
- fi
- fi
- ;;
- *)
- ;;
-esac
AC_CHECK_HEADERS([fcntl.h netdb.h stdlib.h string.h sys/socket.h])
dnl Checks for typedefs, structures, and compiler characteristics.
@@ -137,20 +105,18 @@ dnl Checks for library functions.
AC_CHECK_FUNCS([memset socket])
# ODBC
-/bin/rm -f $ERL_TOP/lib/odbc/SKIP
+/bin/rm -f "$ERL_TOP/lib/odbc/SKIP"
-have_pthread_lib=no
-have_odbc_lib=no
-
+LM_CHECK_THR_LIB
+AC_SUBST(THR_DEFS)
+AC_SUBST(THR_LIBS)
+
+odbc_lib_link_success=no
AC_SUBST(TARGET_FLAGS)
case $host_os in
darwin*)
TARGET_FLAGS="-DUNIX"
- AC_CHECK_LIB(pthread, pthread_create,
- [AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define if you have the pthread library (-lpthread).])
- LIBS="$LIBS -lpthread"
- have_pthread_lib=yes])
- if test ! -d "$with_odbc"; then
+ if test ! -d "$with_odbc" || test "$with_odbc" = "yes" ; then
ODBC_LIB= -L"/usr/lib"
ODBC_INCLUDE="-I/usr/lib/include"
else
@@ -158,7 +124,7 @@ AC_SUBST(TARGET_FLAGS)
ODBC_INCLUDE="-I$with_odbc/include"
fi
- AC_CHECK_LIB(iodbc, SQLAllocHandle,[ODBC_LIB="$ODBC_LIB -liodbc" odbc_lib_link_sucess=yes])
+ AC_CHECK_LIB(iodbc, SQLAllocHandle,[ODBC_LIB="$ODBC_LIB -liodbc"; odbc_lib_link_success=yes])
;;
win32|cygwin)
TARGET_FLAGS="-DWIN32"
@@ -170,48 +136,64 @@ AC_SUBST(TARGET_FLAGS)
ODBC_LIB=-L"$with_odbc/lib"
ODBC_INCLUDE="-I$with_odbc/include"
fi
- AC_CHECK_LIB(odbc32, main, [ODBC_LIB="$ODBC_LIB -lodbc32" odbc_lib_link_sucess=yes])
+ AC_CHECK_LIB(odbc32, main, [ODBC_LIB="$ODBC_LIB -lodbc32"; odbc_lib_link_success=yes])
;;
*)
- TARGET_FLAGS="-DUNIX"
- AC_CHECK_LIB(pthread, pthread_create,
- [AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define if you have the pthread library (-lpthread).])
- LIBS="$LIBS -lpthread"
- have_pthread_lib=yes])
- if test ! -d "$with_odbc"; then
- AC_MSG_CHECKING([for odbc in standard locations])
- for dir in /usr/local/odbc /usr/local /usr/odbc \
- /usr /opt/local/pgm/odbc /usr/local/pgm/odbc
- do
- if test -f "$dir/include/sql.h"; then
- is_odbc_std_location=yes
- ODBC_LIB=-L"$dir/lib"
- ODBC_INCLUDE="-I$dir/include"
- break
- fi
- done
- if test "x$is_odbc_std_location" != "xyes"; then
- AC_MSG_RESULT(no)
- AC_MSG_WARN([No odbc library found skipping odbc])
- echo "No odbc library found" > $ERL_TOP/lib/odbc/SKIP
- else
- AC_MSG_RESULT($ODBC_LIB)
- AC_CHECK_LIB(odbc, SQLAllocHandle,[ODBC_LIB="$ODBC_LIB -lodbc" odbc_lib_link_sucess=yes])
- fi
- else
- ODBC_LIB=-L"$with_odbc/lib"
- ODBC_INCLUDE="-I$with_odbc/include"
- AC_CHECK_LIB(odbc, SQLAllocHandle,[ODBC_LIB="$ODBC_LIB -lodbc" odbc_lib_link_sucess=yes])
- fi
+ TARGET_FLAGS="-DUNIX"
+ case "$erl_xcomp_without_sysroot-$with_odbc" in
+ yes-yes | yes- )
+ msg="Dont know where to search for odbc (setting erl_xcomp_sysroot will help)"
+ AC_MSG_WARN([$msg])
+ echo "$msg" > "$ERL_TOP/lib/odbc/SKIP"
+ odbc_lib_link_success=wont_try
+ ;;
+ no- )
+ AC_CHECK_SIZEOF(void *)
+ AC_MSG_CHECKING([for odbc in standard locations])
+ for rdir in /usr/local/odbc /usr/local /usr/odbc \
+ /usr /opt/local/pgm/odbc /usr/local/pgm/odbc; do
+ test -f "$erl_xcomp_isysroot$rdir/include/sql.h" || continue
+ is_odbc_std_location=yes
+ libdir="$erl_xcomp_sysroot$rdir/lib"
+ if test "$ac_cv_sizeof_void_p" = "8"; then
+ dnl "/." in test is important (dir symlinks)
+ if test -d "${libdir}64/."; then
+ libdir="${libdir}64"
+ elif test -d "${libdir}/64/."; then
+ libdir="${libdir}/64"
+ fi
+ fi
+ ODBC_LIB="-L$libdir"
+ ODBC_INCLUDE="-I$erl_xcomp_isysroot$rdir/include"
+ break
+ done
+ if test "x$is_odbc_std_location" != "xyes"; then
+ AC_MSG_RESULT(no)
+ AC_MSG_WARN([No odbc library found skipping odbc])
+ echo "No odbc library found" > "$ERL_TOP/lib/odbc/SKIP"
+ else
+ AC_MSG_RESULT($ODBC_LIB)
+ AC_CHECK_LIB(odbc, SQLAllocHandle,[ODBC_LIB="$ODBC_LIB -lodbc"; odbc_lib_link_success=yes])
+ fi
+ ;;
+
+ no-*)
+ ODBC_LIB=-L"$with_odbc/lib"
+ ODBC_INCLUDE="-I$with_odbc/include"
+ AC_CHECK_LIB(odbc, SQLAllocHandle,[ODBC_LIB="$ODBC_LIB -lodbc"; odbc_lib_link_success=yes])
+ ;;
+ esac
;;
esac
-if test "x$odbc_lib_link_sucess" != "xyes"; then
+if test $odbc_lib_link_success = no; then
AC_MSG_WARN(["ODBC library - link check failed"])
echo "ODBC library - link check failed" > $ERL_TOP/lib/odbc/SKIP
fi
-
+
AC_SUBST(ODBC_LIB)
AC_SUBST(ODBC_INCLUDE)
+fi dnl "$with_odbc" != "no"
+
AC_OUTPUT(c_src/$host/Makefile:c_src/Makefile.in)
diff --git a/lib/orber/doc/src/CosNaming.xml b/lib/orber/doc/src/CosNaming.xml
index db087aedb1..e8c639b59a 100644
--- a/lib/orber/doc/src/CosNaming.xml
+++ b/lib/orber/doc/src/CosNaming.xml
@@ -4,23 +4,21 @@
<erlref>
<header>
<copyright>
- <year>1997</year>
- <year>2007</year>
- <holder>Ericsson AB, All Rights Reserved</holder>
+ <year>1997</year><year>2010</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
- The contents of this file are subject to the Erlang Public License,
- Version 1.1, (the "License"); you may not use this file except in
- compliance with the License. You should have received a copy of the
- Erlang Public License along with this software. If not, it can be
- retrieved online at http://www.erlang.org/.
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and limitations
- under the License.
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
- The Initial Developer of the Original Code is Ericsson AB.
</legalnotice>
<title>CosNaming</title>
@@ -66,8 +64,6 @@ typedef sequence <Binding> BindingList;
<item>NamingContext</item>
<item>BindingIterator</item>
</list>
- <p>IDL specification for CosNaming:</p>
- <codeinclude file="../../COSS/CosNaming/cos_naming.idl" tag="" type="c"></codeinclude>
</description>
</erlref>
diff --git a/lib/orber/doc/src/Makefile b/lib/orber/doc/src/Makefile
index c82db49c9b..b8e26d5ba3 100644
--- a/lib/orber/doc/src/Makefile
+++ b/lib/orber/doc/src/Makefile
@@ -1,19 +1,19 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 1997-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 1997-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
#
#
@@ -74,7 +74,6 @@ XML_CHAPTER_FILES = \
ch_ifr.xml \
ch_install.xml \
ch_idl_to_erlang_mapping.xml \
- ch_example.xml \
ch_naming_service.xml \
ch_stubs.xml \
ch_security.xml \
diff --git a/lib/orber/doc/src/ch_example.xml b/lib/orber/doc/src/ch_example.xml
deleted file mode 100644
index f2ccfcc7e1..0000000000
--- a/lib/orber/doc/src/ch_example.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="latin1" ?>
-<!DOCTYPE chapter SYSTEM "chapter.dtd">
-
-<chapter>
- <header>
- <copyright>
- <year>1997</year><year>2009</year>
- <holder>Ericsson AB. All Rights Reserved.</holder>
- </copyright>
- <legalnotice>
- The contents of this file are subject to the Erlang Public License,
- Version 1.1, (the "License"); you may not use this file except in
- compliance with the License. You should have received a copy of the
- Erlang Public License along with this software. If not, it can be
- retrieved online at http://www.erlang.org/.
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and limitations
- under the License.
-
- </legalnotice>
-
- <title>Orber Examples</title>
- <prepared></prepared>
- <docno></docno>
- <date>1997-05-20</date>
- <rev>A</rev>
- <file>ch_example.xml</file>
- </header>
-
- <section>
- <title>A Tutorial on How to Create a Simple Service</title>
-
- <section>
- <title>Interface Design</title>
- <p>This example uses a very simple stack server. The specification
- contains two interfaces: the first is the Stack itself and the
- other is the StackFactory which is used to create new stacks.
- The specification is in the file <c>stack.idl</c>.</p>
- <codeinclude file="../../examples/Stack/stack.idl" tag="" type="c"></codeinclude>
- </section>
-
- <section>
- <title>Generating Erlang Code</title>
- <p>Run the IDL compiler on this file by calling the <c>ic:gen/1</c> function </p>
- <code type="erl">
- 1> ic:gen("stack").
- </code>
- <p>This will produce the client stub and server skeleton. Among other files a stack API module named <c>StackModule_Stack.erl</c>
- will be produced.
- This will produce among other files a stack API module called
- <c>StackModule_Stack.erl</c> which contains the client stub and
- the server skeleton. </p>
- </section>
-
- <section>
- <title>Implementation of Interface</title>
- <p>After generating the API stubs and the server skeletons it is time to
- implement the servers and if no special options are sent
- to the IDL compiler the file name should be
- <c><![CDATA[<global interface name>_impl.erl]]></c>, in our case
- <c>StackModule_Stack_impl.erl</c>.</p>
- <codeinclude file="../../examples/Stack/StackModule_Stack_impl.erl" tag="" type="erl"></codeinclude>
- <p>We also have the factory interface which is used to create new stacks
- and that implementation is in the file
- <c>StackModule_StackFactory_impl.erl</c>.</p>
- <codeinclude file="../../examples/Stack/StackModule_StackFactory_impl.erl" tag="" type="erl"></codeinclude>
- <p>To start the factory server one executes the function
- <c>StackModule_StackFactory:oe_create/0</c> which in this
- example is done in the module <c>stack_factory.erl</c> where
- the started service is also registered in the name service.</p>
- <codeinclude file="../../examples/Stack/stack_factory.erl" tag="" type="erl"></codeinclude>
- </section>
-
- <section>
- <title>Writing a Client in Erlang</title>
- <p>At last we will write a client to access our service.</p>
- <codeinclude file="../../examples/Stack/stack_client.erl" tag="" type="erl"></codeinclude>
- </section>
-
- <section>
- <title>Writing a Client in Java</title>
- <p>To write a Java client for Orber you must have another
- ORB that uses IIOP for client-server communication and supports a
- Java language mapping. It must also have support for
- <c>IDL:CosNaming/NamingContext</c> or <c>IDL:CosNaming/NamingContextExt</c>.
- If the client ORB support Interoperable Naming Service the Java Client
- can look like:</p>
- <codeinclude file="../../examples/Stack/StackClient.java" tag="" type="c"></codeinclude>
- <note>
- <p>If an ORB does not support CosNaming at all the <c>cos_naming.idl</c>
- file must be compiled and imported.</p>
- </note>
- </section>
-
- <section>
- <title>Building the Example</title>
- <p>To build the example for access from a Java client you need a Java
- enabled ORB (e.g. JavaIDL). The example below is based on JDK-1.4.</p>
- <code type="none">
-fingolfin 127> erl
-Erlang (BEAM) emulator version 5.5.4.3 [async-threads:0] [hipe] [kernel-poll:false]
-
-Eshell V5.5.4.3 (abort with ^G)
-1> ic:gen(stack).
-Erlang IDL compiler version 4.2.12
-ok
-2> make:all().
-Recompile: StackModule_EmptyStack
-Recompile: StackModule_Stack
-Recompile: StackModule_StackFactory
-Recompile: StackModule_StackFactory_impl
-Recompile: StackModule_Stack_impl
-Recompile: oe_stack
-Recompile: stack_client
-Recompile: stack_factory
-up_to_date
-3>
-BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
- (v)ersion (k)ill (D)b-tables (d)istribution
-a
-fingolfin 128> idlj stack.idl
-fingolfin 129> javac StackModule/*.java
-fingolfin 130> javac *.java
-fingolfin 131> cp StackClient.class StackModule/
- </code>
- </section>
-
- <section>
- <title>How to Run Everything</title>
- <p>Below is a short transcript on how to run Orber.</p>
- <code type="none">
-
-fingolfin 143> erl
-Erlang (BEAM) emulator version 5.5.4.3 [async-threads:0] [hipe] [kernel-poll:false]
-
-Eshell V5.5.4.3 (abort with ^G)
-1> orber:jump_start([{interceptors, {native, [orber_iiop_tracer_silent]}}]).
-ok
-2> oe_stack:oe_register().
-ok
-3> stack_factory:start().
-ok
-4> stack_client:run().
-1
-1
-7
-4
-ok
-5>
- </code>
- <p>Before testing the Java part of this example generate and compile Java classes for
- <c>orber/examples/stack.idl</c> as seen in the build example.
- To run the Java client use the following command:</p>
- <code type="none">
-
-fingolfin 38> java StackModule.StackClient "corbaname::localhost:4001#StackFactory"
-1
-1
-7
-4
-Empty stack
-fingolfin 39>
- </code>
- </section>
- </section>
-
-</chapter>
-
diff --git a/lib/orber/doc/src/example_part.xml b/lib/orber/doc/src/example_part.xml
index 2f549df888..9adb8fa7cf 100644
--- a/lib/orber/doc/src/example_part.xml
+++ b/lib/orber/doc/src/example_part.xml
@@ -4,23 +4,21 @@
<part>
<header>
<copyright>
- <year>2002</year>
- <year>2007</year>
- <holder>Ericsson AB, All Rights Reserved</holder>
+ <year>2002</year><year>2010</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
- The contents of this file are subject to the Erlang Public License,
- Version 1.1, (the "License"); you may not use this file except in
- compliance with the License. You should have received a copy of the
- Erlang Public License along with this software. If not, it can be
- retrieved online at http://www.erlang.org/.
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and limitations
- under the License.
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
- The Initial Developer of the Original Code is Ericsson AB.
</legalnotice>
<title>Service Implementation</title>
@@ -32,7 +30,6 @@
<description>
<p>This chapter describe how to implement Orber based CORBA services.</p>
</description>
- <include file="ch_example"></include>
<include file="ch_stubs"></include>
</part>
diff --git a/lib/orber/doc/src/make.dep b/lib/orber/doc/src/make.dep
index f19cc18c90..cf5aad747d 100644
--- a/lib/orber/doc/src/make.dep
+++ b/lib/orber/doc/src/make.dep
@@ -12,7 +12,7 @@
book.dvi: CosNaming.tex CosNaming_BindingIterator.tex \
CosNaming_NamingContext.tex CosNaming_NamingContextExt.tex \
Module_Interface.tex any.tex book.tex ch_contents.tex \
- ch_debugging.tex ch_example.tex ch_exceptions.tex \
+ ch_debugging.tex ch_exceptions.tex \
ch_idl_to_erlang_mapping.tex ch_ifr.tex ch_install.tex \
ch_interceptors.tex ch_introduction.tex ch_naming_service.tex \
ch_orber_kernel.tex ch_orberweb.tex ch_security.tex \
@@ -26,15 +26,8 @@ book.dvi: CosNaming.tex CosNaming_BindingIterator.tex \
# Source inlined when transforming from source to LaTeX
# ----------------------------------------------------
-CosNaming.tex: ../../COSS/CosNaming/cos_naming.idl
-
book.tex: ref_man.xml
-ch_example.tex: ../../examples/Stack/StackClient.java ../../examples/Stack/StackModule_StackFactory_impl.erl \
- ../../examples/Stack/StackModule_Stack_impl.erl \
- ../../examples/Stack/stack.idl ../../examples/Stack/stack_client.erl \
- ../../examples/Stack/stack_factory.erl
-
ch_contents.tex: ../../../../system/doc/definitions/term.defs
ch_idl_to_erlang_mapping.tex: ../../../../system/doc/definitions/term.defs
diff --git a/lib/orber/doc/src/notes.xml b/lib/orber/doc/src/notes.xml
index 816ec77d61..c7a2dab617 100644
--- a/lib/orber/doc/src/notes.xml
+++ b/lib/orber/doc/src/notes.xml
@@ -44,6 +44,12 @@
<p>
Own Id: OTP-8374 Aux Id:</p>
</item>
+ <item>
+ <p>
+ Removed the usage of the codeinclude tag in the documentation.</p>
+ <p>
+ Own Id: OTP-8409 Aux Id:</p>
+ </item>
</list>
</section>
diff --git a/lib/orber/doc/src/part.xml b/lib/orber/doc/src/part.xml
index c23456deef..a131db0bad 100644
--- a/lib/orber/doc/src/part.xml
+++ b/lib/orber/doc/src/part.xml
@@ -4,7 +4,7 @@
<part xmlns:xi="http://www.w3.org/2001/XInclude">
<header>
<copyright>
- <year>1997</year><year>2009</year>
+ <year>1997</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>Orber User's Guide</title>
@@ -39,7 +39,6 @@
<xi:include href="ch_idl_to_erlang_mapping.xml"/>
<xi:include href="ch_naming_service.xml"/>
<xi:include href="ch_security.xml"/>
- <xi:include href="ch_example.xml"/>
<xi:include href="ch_stubs.xml"/>
<xi:include href="ch_exceptions.xml"/>
<xi:include href="ch_interceptors.xml"/>
diff --git a/lib/orber/vsn.mk b/lib/orber/vsn.mk
index 8bfa13eb03..b56172d7cf 100644
--- a/lib/orber/vsn.mk
+++ b/lib/orber/vsn.mk
@@ -3,7 +3,8 @@ ORBER_VSN = 3.6.15
TICKETS = OTP-8353 \
OTP-8354 \
- OTP-8374
+ OTP-8374 \
+ OTP-8409
TICKETS_3.6.14 = OTP-8201
diff --git a/lib/parsetools/test/yecc_SUITE.erl b/lib/parsetools/test/yecc_SUITE.erl
index 212557194c..b5da414f7b 100644
--- a/lib/parsetools/test/yecc_SUITE.erl
+++ b/lib/parsetools/test/yecc_SUITE.erl
@@ -312,7 +312,7 @@ syntax(Config) when is_list(Config) ->
?line {ok, _, []} = yecc:file(Filename, ParserFile3 ++ Ret),
%% Note: checking the line numbers. Changes when yeccpre.hrl changes.
fun() ->
- ?line {error,[{_,[{5,_,{undefined,'F'}}]},
+ ?line {error,[{_,[{5,_,{undefined,'F',1}}]},
{_,[{L1,_,{undefined_function,{yeccpars2_2_,1}}},
{L2,_,{bad_inline,{yeccpars2_2_,1}}}]}],
[]} = compile:file(Parserfile1, [basic_validation,return]),
diff --git a/lib/runtime_tools/c_src/Makefile.in b/lib/runtime_tools/c_src/Makefile.in
index 05b5598e51..840de39f07 100644
--- a/lib/runtime_tools/c_src/Makefile.in
+++ b/lib/runtime_tools/c_src/Makefile.in
@@ -1,23 +1,24 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 1999-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 1999-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
#
include $(ERL_TOP)/make/target.mk
include $(ERL_TOP)/make/$(TARGET)/otp.mk
+include $(ERL_TOP)/make/$(TARGET)/otp_ded.mk
# ----------------------------------------------------
# Application version
@@ -30,20 +31,14 @@ VSN=$(RUNTIME_TOOLS_VSN)
# reasonable defaults, if something different is needed it should
# be set for that system only.
# ----------------------------------------------------
-CC = @CC@
-CFLAGS = @DED_CFLAGS@
-LD = @DED_LD@
+CC = $(DED_CC)
+CFLAGS = $(DED_CFLAGS)
+LD = $(DED_LD)
SHELL = /bin/sh
-LIBS = @LIBS@
-LDFLAGS += @DED_LDFLAGS@
-ERLANG_OSTYPE = @ERLANG_OSTYPE@
-
-SYSINCLUDE = -I$(ERL_TOP)/erts/emulator/beam \
- -I$(ERL_TOP)/erts/emulator/sys/$(ERLANG_OSTYPE) \
- -I$(ERL_TOP)/erts/include/internal \
- -I$(ERL_TOP)/erts/include/internal/$(ERLANG_OSTYPE) \
- -I$(ERL_TOP)/erts/include \
- -I$(ERL_TOP)/erts/include/$(ERLANG_OSTYPE)
+LIBS = $(DED_LIBS)
+LDFLAGS += $(DED_LDFLAGS)
+
+SYSINCLUDE = $(DED_SYS_INCLUDE)
ifeq ($(findstring vxworks,$(TARGET)),vxworks)
SYSINCLUDE += -I$(ERL_TOP)/erts/etc/vxworks
endif
diff --git a/lib/snmp/doc/src/notes.xml b/lib/snmp/doc/src/notes.xml
index 96a444227d..7984f2a536 100644
--- a/lib/snmp/doc/src/notes.xml
+++ b/lib/snmp/doc/src/notes.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>SNMP Release Notes</title>
@@ -33,6 +33,59 @@
</header>
<section>
+ <title>SNMP Development Toolkit 4.16</title>
+ <p>Version 4.16 supports code replacement in runtime from/to
+ version 4.15, 4.14 and 4.13.5.</p>
+
+ <section>
+ <title>Improvements and new features</title>
+ <!--
+ <p>-</p>
+ -->
+ <list type="bulleted">
+ <item>
+ <p>[agent|manager] Entries in the audit trail log can now be
+ augmented by a sequence number. </p>
+ <p>This is enabled by the <c>seqno</c> option, which is part of the
+ <seealso marker="snmp_config#audit_trail_log">Audit Trail Log</seealso>
+ config option. </p>
+ <p>See the
+ <seealso marker="snmp_app#configuration_params">reference manual</seealso>
+ or the
+ <seealso marker="snmp_config#configuration_params">Configuring the application</seealso>
+ chapter of the User's Guide for further info. </p>
+
+ <p>Own Id: OTP-8395</p>
+ </item>
+
+ </list>
+
+ </section>
+
+ <section>
+ <title>Reported Fixed Bugs and Malfunctions</title>
+ <p>-</p>
+
+ <!--
+ <list type="bulleted">
+ <item>
+ <p>TBD. </p>
+ <p>Own Id: OTP-8384</p>
+ </item>
+
+ </list>
+ -->
+
+ </section>
+
+ <section>
+ <title>Incompatibilities</title>
+ <p>-</p>
+ </section>
+ </section> <!-- 4.16 -->
+
+
+ <section>
<title>SNMP Development Toolkit 4.15</title>
<p>Version 4.15 supports code replacement in runtime from/to
diff --git a/lib/snmp/doc/src/snmp_app.xml b/lib/snmp/doc/src/snmp_app.xml
index 460f0b8018..e5a725d720 100644
--- a/lib/snmp/doc/src/snmp_app.xml
+++ b/lib/snmp/doc/src/snmp_app.xml
@@ -4,7 +4,7 @@
<appref>
<header>
<copyright>
- <year>1997</year><year>2009</year>
+ <year>1997</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>snmp</title>
@@ -78,11 +78,11 @@
].
</pre>
+ <!-- The info below is also found in the snmp_config.xml file -->
+
<p>Each snmp component has it's own set of configuration parameters,
even though some of the types are common to both components. </p>
- <!-- Also in snmp_config.xml -->
-
<pre>
snmp_components_config() -> [snmp_component_config()]
snmp_component_config() -> {agent, agent_options()} | {manager, manager_options()}
@@ -642,10 +642,13 @@
process performs a GC to remove the expired note's. Time in
milli-seconds.</p>
<p>Default is <c>30000</c>.</p>
+
+ <marker id="audit_trail_log"></marker>
</item>
+
<tag><c><![CDATA[audit_trail_log() = [audit_trail_log_opt()] <optional>]]></c></tag>
<item>
- <p><c>audit_trail_log_opt() = {type, atl_type()} | {dir, atl_dir()} | {size, atl_size()} | {repair, atl_repair()}</c></p>
+ <p><c>audit_trail_log_opt() = {type, atl_type()} | {dir, atl_dir()} | {size, atl_size()} | {repair, atl_repair()} | {seqno, atl_seqno()}</c></p>
<p>If present, this option specifies the options for the
audit trail logging. The <c>disk_log</c> module is used
to maintain a wrap log. If present, the <c>dir</c> and
@@ -696,6 +699,13 @@
analysis.</p>
<p>Default is <c>true</c>.</p>
</item>
+ <tag><c><![CDATA[atl_seqno() = true | false <optional>]]></c></tag>
+ <item>
+ <p>Specifies if the audit trail log entries will be (sequence)
+ numbered or not. The range of the sequence numbers are according
+ to RFC 5424, i.e. 1 through 2147483647. </p>
+ <p>Default is <c>false</c>.</p>
+ </item>
</taglist>
</section>
diff --git a/lib/snmp/doc/src/snmp_config.xml b/lib/snmp/doc/src/snmp_config.xml
index 073cdde308..6fc9cc49f2 100644
--- a/lib/snmp/doc/src/snmp_config.xml
+++ b/lib/snmp/doc/src/snmp_config.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>1997</year><year>2009</year>
+ <year>1997</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>Running the application</title>
@@ -73,13 +73,13 @@
</item>
</list>
+ <!-- The info below is also found in the snmp_app.xml file -->
+
<p>The agent and manager uses (application) configuration parameters to
find out where these directories are located. The parameters should be
defined in an Erlang system configuration file. The following
configuration parameters are defined for the SNMP application:</p>
- <!-- Also in snmp_app.xml -->
-
<pre>
agent_options() = [agent_option()]
agent_option() = {restart_type, restart_type()} |
@@ -649,11 +649,13 @@
process performs a GC to remove the expired note's. Time in
milli-seconds.</p>
<p>Default is <c>30000</c>.</p>
+
+ <marker id="audit_trail_log"></marker>
</item>
<tag><c><![CDATA[audit_trail_log() [audit_trail_log_opt()] <optional>]]></c></tag>
<item>
- <p><c>audit_trail_log_opt() = {type, atl_type()} | {dir, atl_dir()} | {size, atl_size()} | {repair, atl_repair()}</c></p>
+ <p><c>audit_trail_log_opt() = {type, atl_type()} | {dir, atl_dir()} | {size, atl_size()} | {repair, atl_repair()} | {seqno, atl_seqno()}</c></p>
<p>If present, this option specifies the options for the
<em>audit trail logging</em>. The <c>disk_log</c> module is used
to maintain a wrap log. If present, the <c>dir</c> and
@@ -708,6 +710,13 @@
analysis.</p>
<p>Default is <c>true</c>.</p>
</item>
+ <tag><c><![CDATA[atl_seqno() = true | false <optional>]]></c></tag>
+ <item>
+ <p>Specifies if the audit trail log entries will be (sequence)
+ numbered or not. The range of the sequence numbers are according
+ to RFC 5424, i.e. 1 through 2147483647. </p>
+ <p>Default is <c>false</c>.</p>
+ </item>
</taglist>
</section>
diff --git a/lib/snmp/doc/src/snmpa_conf.xml b/lib/snmp/doc/src/snmpa_conf.xml
index f383394b7a..d873574c6e 100644
--- a/lib/snmp/doc/src/snmpa_conf.xml
+++ b/lib/snmp/doc/src/snmpa_conf.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2006</year><year>2009</year>
+ <year>2006</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>snmpa_conf</title>
diff --git a/lib/snmp/src/agent/snmpa.erl b/lib/snmp/src/agent/snmpa.erl
index 79493bd892..a113bba3a7 100644
--- a/lib/snmp/src/agent/snmpa.erl
+++ b/lib/snmp/src/agent/snmpa.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2004-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2004-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
-module(snmpa).
@@ -83,6 +83,7 @@
%% Audit Trail Log functions
-export([log_to_txt/2, log_to_txt/3, log_to_txt/4,
log_to_txt/5, log_to_txt/6, log_to_txt/7,
+ log_info/0,
change_log_size/1,
get_log_type/0, get_log_type/1,
change_log_type/1, change_log_type/2,
@@ -535,6 +536,7 @@ get_agent_caps() ->
%%%-----------------------------------------------------------------
%%% Audit Trail Log functions
%%%-----------------------------------------------------------------
+
log_to_txt(LogDir, Mibs) ->
OutFile = "snmpa_log.txt",
LogName = ?audit_trail_log_name,
@@ -555,6 +557,11 @@ log_to_txt(LogDir, Mibs, OutFile, LogName, LogFile, Start, Stop) ->
snmp:log_to_txt(LogDir, Mibs, OutFile, LogName, LogFile, Start, Stop).
+log_info() ->
+ LogName = ?audit_trail_log_name,
+ snmp_log:info(LogName).
+
+
change_log_size(NewSize) ->
LogName = ?audit_trail_log_name, % The old (agent) default
snmp:change_log_size(LogName, NewSize).
diff --git a/lib/snmp/src/agent/snmpa_agent.erl b/lib/snmp/src/agent/snmpa_agent.erl
index 508a1da514..fb04fca632 100644
--- a/lib/snmp/src/agent/snmpa_agent.erl
+++ b/lib/snmp/src/agent/snmpa_agent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
-module(snmpa_agent).
@@ -58,6 +58,7 @@
-export([get_log_type/1, set_log_type/2]).
-export([get_request_limit/1, set_request_limit/2]).
-export([invalidate_ca_cache/0]).
+-export([increment_counter/3]).
-export([restart_worker/1, restart_set_worker/1]).
%% Internal exports
@@ -259,6 +260,29 @@ update_mibs_cache_age(Agent, Age) ->
call(Agent, {mibs_cache_request, {update_age, Age}}).
+increment_counter(Counter, Initial, Max) ->
+ %% This is to make sure no one else increments our counter
+ Key = {Counter, self()},
+
+ %% Counter data
+ Position = 2,
+ Increment = 1,
+ Threshold = Max,
+ SetValue = Initial,
+ UpdateOp = {Position, Increment, Threshold, SetValue},
+
+ %% And now for the actual increment
+ Tab = snmp_agent_table,
+ case (catch ets:update_counter(Tab, Key, UpdateOp)) of
+ {'EXIT', {badarg, _}} ->
+ %% Oups, first time
+ ets:insert(Tab, {Key, Initial}),
+ Initial;
+ Next when is_integer(Next) ->
+ Next
+ end.
+
+
init([Prio, Parent, Ref, Options]) ->
?d("init -> entry with"
"~n Prio: ~p"
@@ -1223,79 +1247,23 @@ handle_mibs_cache_request(MibServer, Req) ->
%% Downgrade
%%
-code_change({down, _Vsn}, S, downgrade_to_pre_4_13) ->
- S1 = workers_restart(S),
- case S1#state.disco of
- undefined ->
- ok;
- #disco{from = From,
- sender = Sender,
- stage = Stage} ->
- gen_server:reply(From, {error, {upgrade, Stage, Sender}}),
- exit(Sender, kill)
- end,
- S2 = {state,
- S1#state.type,
- S1#state.parent,
- S1#state.worker,
- S1#state.worker_state,
- S1#state.set_worker,
- S1#state.multi_threaded,
- S1#state.ref,
- S1#state.vsns,
- S1#state.nfilters,
- S1#state.note_store,
- S1#state.mib_server,
- S1#state.net_if,
- S1#state.net_if_mod,
- S1#state.backup,
- S1#state.disco},
- {ok, S2};
+%% code_change({down, _Vsn}, S, downgrade_to_pre_4_13) ->
+%% {ok, S2};
%% Upgrade
%%
-code_change(_Vsn, S, upgrade_from_pre_4_13) ->
- {state,
- Type,
- Parent,
- Worker,
- WorkerState,
- SetWorker,
- MultiThreaded,
- Ref,
- Vsns,
- NFilters = [],
- NoteStore,
- MibServer, %% Currently unused
- NetIf, %% Currently unused
- NetIfMod,
- Backup} = S,
- S1 = #state{type = Type,
- parent = Parent,
- worker = Worker,
- worker_state = WorkerState,
- set_worker = SetWorker,
- multi_threaded = MultiThreaded,
- ref = Ref,
- vsns = Vsns,
- nfilters = NFilters,
- note_store = NoteStore,
- mib_server = MibServer,
- net_if = NetIf,
- net_if_mod = NetIfMod,
- backup = Backup},
- S2 = workers_restart(S1),
- {ok, S2};
+%% code_change(_Vsn, S, upgrade_from_pre_4_13) ->
+%% {ok, S2};
code_change(_Vsn, S, _Extra) ->
{ok, S}.
-workers_restart(#state{worker = W, set_worker = SW} = S) ->
- Worker = worker_restart(W),
- SetWorker = set_worker_restart(SW),
- S#state{worker = Worker,
- set_worker = SetWorker}.
+%% workers_restart(#state{worker = W, set_worker = SW} = S) ->
+%% Worker = worker_restart(W),
+%% SetWorker = set_worker_restart(SW),
+%% S#state{worker = Worker,
+%% set_worker = SetWorker}.
%%-----------------------------------------------------------------
@@ -1321,8 +1289,8 @@ set_worker_start() ->
worker_start(Dict) ->
proc_lib:spawn_link(?MODULE, worker, [self(), Dict]).
-worker_stop(Pid) ->
- worker_stop(Pid, infinity).
+%% worker_stop(Pid) ->
+%% worker_stop(Pid, infinity).
worker_stop(Pid, Timeout) when is_pid(Pid) ->
Pid ! terminate,
@@ -1336,17 +1304,17 @@ worker_stop(Pid, Timeout) when is_pid(Pid) ->
worker_stop(_, _) ->
ok.
-set_worker_restart(Pid) ->
- worker_restart(Pid, [{master, self()} | get()]).
+%% set_worker_restart(Pid) ->
+%% worker_restart(Pid, [{master, self()} | get()]).
-worker_restart(Pid) ->
- worker_restart(Pid, get()).
+%% worker_restart(Pid) ->
+%% worker_restart(Pid, get()).
-worker_restart(Pid, Dict) when is_pid(Pid) ->
- worker_stop(Pid),
- worker_start(Dict);
-worker_restart(Any, _Dict) ->
- Any.
+%% worker_restart(Pid, Dict) when is_pid(Pid) ->
+%% worker_stop(Pid),
+%% worker_start(Dict);
+%% worker_restart(Any, _Dict) ->
+%% Any.
%%-----------------------------------------------------------------
diff --git a/lib/snmp/src/agent/snmpa_net_if.erl b/lib/snmp/src/agent/snmpa_net_if.erl
index d703e5ac55..bc0777a7dd 100644
--- a/lib/snmp/src/agent/snmpa_net_if.erl
+++ b/lib/snmp/src/agent/snmpa_net_if.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2004-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2004-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
-module(snmpa_net_if).
@@ -55,6 +55,9 @@
-define(DEFAULT_FILTER_MODULE, snmpa_net_if_filter).
-define(DEFAULT_FILTER_OPTS, [{module, ?DEFAULT_FILTER_MODULE}]).
+-define(ATL_SEQNO_INITIAL, 1).
+-define(ATL_SEQNO_MAX, 2147483647).
+
%%%-----------------------------------------------------------------
%%% This module implements the default Network Interface part
@@ -194,24 +197,43 @@ do_init(Prio, NoteStore, MasterAgent, Parent, Opts) ->
{error, {udp_open, UDPPort, Reason}}
end.
+
create_log() ->
case ets:lookup(snmp_agent_table, audit_trail_log) of
[] ->
{undefined, []};
[{audit_trail_log, AtlOpts}] ->
- ?vtrace("AtlOpts: ~p",[AtlOpts]),
+ ?vtrace("AtlOpts: ~p", [AtlOpts]),
Type = get_atl_type(AtlOpts),
Dir = get_atl_dir(AtlOpts),
Size = get_atl_size(AtlOpts),
Repair = get_atl_repair(AtlOpts),
Name = ?audit_trail_log_name,
File = filename:absname(?audit_trail_log_file, Dir),
- case snmp_log:create(Name, File, Size, Repair, true) of
- {ok, Log} ->
- ?vdebug("log created: ~w",[Log]),
- {Log, Type};
- {error, Reason} ->
- throw({error, {create_log, Reason}})
+ case get_atl_seqno(AtlOpts) of
+ true ->
+ Initial = ?ATL_SEQNO_INITIAL,
+ Max = ?ATL_SEQNO_MAX,
+ Module = snmpa_agent,
+ Function = increment_counter,
+ Args = [atl_seqno, Initial, Max],
+ SeqNoGen = {Module, Function, Args},
+ case snmp_log:create(Name, File,
+ SeqNoGen, Size, Repair, true) of
+ {ok, Log} ->
+ ?vdebug("log created: ~w", [Log]),
+ {Log, Type};
+ {error, Reason} ->
+ throw({error, {create_log, Reason}})
+ end;
+ _ ->
+ case snmp_log:create(Name, File, Size, Repair, true) of
+ {ok, Log} ->
+ ?vdebug("log created: ~w", [Log]),
+ {Log, Type};
+ {error, Reason} ->
+ throw({error, {create_log, Reason}})
+ end
end
end.
@@ -918,60 +940,23 @@ system_continue(_Parent, _Dbg, S) ->
loop(S).
system_terminate(Reason, _Parent, _Dbg, #state{log = Log}) ->
+ ?vlog("system-terminate -> entry with"
+ "~n Reason: ~p", [Reason]),
do_close_log(Log),
exit(Reason).
-system_code_change(OldState, _Module, _OldVsn, upgrade_from_pre_4_10) ->
- {state,
- parent = Parent,
- note_store = NS,
- master_agent = MA,
- usock = Sock,
- usock_opts = SockOpts,
- mpd_state = MpdState,
- log = Log,
- reqs = Reqs,
- debug = Dbg,
- limit = Limit,
- rcnt = RCNT} = OldState,
- NewState = #state{parent = Parent,
- note_store = NS,
- master_agent = MA,
- usock = Sock,
- usock_opts = SockOpts,
- mpd_state = MpdState,
- log = Log,
- reqs = Reqs,
- debug = Dbg,
- limit = Limit,
- rcnt = RCNT,
- filter = create_filter(?DEFAULT_FILTER_OPTS)},
+system_code_change(OldState, _Module, _OldVsn, upgrade_from_pre_4_16) ->
+ Initial = ?ATL_SEQNO_INITIAL,
+ Max = ?ATL_SEQNO_MAX,
+ Module = snmpa_agent,
+ Function = increment_counter,
+ Args = [atl_seqno, Initial, Max],
+ SeqNoGen = {Module, Function, Args},
+ NewLog = snmp_log:upgrade(OldState#state.log, SeqNoGen),
+ NewState = OldState#state{log = NewLog},
{ok, NewState};
-system_code_change(OldState, _Module, _OldVsn, downgrade_to_pre_4_10) ->
- #state{parent = Parent,
- note_store = NS,
- master_agent = MA,
- usock = Sock,
- usock_opts = SockOpts,
- mpd_state = MpdState,
- log = Log,
- reqs = Reqs,
- debug = Dbg,
- limit = Limit,
- rcnt = RCNT} = OldState,
- NewState =
- {state,
- parent = Parent,
- note_store = NS,
- master_agent = MA,
- usock = Sock,
- usock_opts = SockOpts,
- mpd_state = MpdState,
- log = Log,
- reqs = Reqs,
- debug = Dbg,
- limit = Limit,
- rcnt = RCNT},
+system_code_change(OldState, _Module, _OldVsn, downgrade_to_pre_4_16) ->
+ NewState = OldState#state{log = snmp_log:downgrade(OldState#state.log)},
{ok, NewState};
system_code_change(S, _Module, _OldVsn, _Extra) ->
{ok, S}.
@@ -1111,6 +1096,9 @@ get_atl_size(Opts) ->
get_atl_repair(Opts) ->
snmp_misc:get_option(repair, Opts, true).
+get_atl_seqno(Opts) ->
+ snmp_misc:get_option(seqno, Opts, false).
+
get_verbosity(Opts) ->
snmp_misc:get_option(verbosity, Opts, ?default_verbosity).
diff --git a/lib/snmp/src/agent/snmpa_usm.erl b/lib/snmp/src/agent/snmpa_usm.erl
index a8c395534f..12a6b996ff 100644
--- a/lib/snmp/src/agent/snmpa_usm.erl
+++ b/lib/snmp/src/agent/snmpa_usm.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 1999-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 1999-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
-module(snmpa_usm).
@@ -396,7 +396,9 @@ try_decrypt(?usmDESPrivProtocol,
case (catch des_decrypt(PrivKey, UsmSecParams, EncryptedPDU)) of
{ok, DecryptedData} ->
DecryptedData;
- _ ->
+ Error ->
+ ?vlog("try_decrypt -> failed DES decrypt"
+ "~n Error: ~p", [Error]),
error(usmStatsDecryptionErrors,
?usmStatsDecryptionErrors_instance, % OTP-5464
SecName)
@@ -406,7 +408,9 @@ try_decrypt(?usmAesCfb128Protocol,
case (catch aes_decrypt(PrivKey, UsmSecParams, EncryptedPDU)) of
{ok, DecryptedData} ->
DecryptedData;
- _ ->
+ Error ->
+ ?vlog("try_decrypt -> failed AES decrypt"
+ "~n Error: ~p", [Error]),
error(usmStatsDecryptionErrors,
?usmStatsDecryptionErrors_instance, % OTP-5464
SecName)
diff --git a/lib/snmp/src/app/snmp.appup.src b/lib/snmp/src/app/snmp.appup.src
index 0b8f0bbddd..74747b2e59 100644
--- a/lib/snmp/src/app/snmp.appup.src
+++ b/lib/snmp/src/app/snmp.appup.src
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 1999-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 1999-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -24,10 +24,21 @@
[
{"4.15",
[
+ {load_module, snmpa, soft_purge, soft_purge, [snmp_log]},
+ {load_module, snmp_log, soft_purge, soft_purge, []},
+ {update, snmpa_net_if, {advanced, upgrade_from_pre_4_16},
+ soft_purge, soft_purge, [snmpa_agent, snmp_log]},
+ {update, snmpa_agent, soft, soft_purge, soft_purge, []}
]
},
{"4.14",
[
+ {load_module, snmpa, soft_purge, soft_purge, [snmp_log]},
+ {load_module, snmp_log, soft_purge, soft_purge, []},
+ {update, snmpa_net_if, {advanced, upgrade_from_pre_4_16},
+ soft_purge, soft_purge, [snmpa_agent, snmp_log]},
+ {update, snmpa_agent, soft, soft_purge, soft_purge, []},
+
{load_module, snmpm_user, soft_purge, soft_purge, []},
{load_module, snmpm_user_default, soft_purge, soft_purge, [snmpm_user]},
{update, snmpm_server, soft, soft_purge, soft_purge,
@@ -36,11 +47,15 @@
},
{"4.13.5",
[
- {load_module, snmpm_user, soft_purge, soft_purge, []},
- {load_module, snmpm_user_default, soft_purge, soft_purge, [snmpm_user]},
{load_module, snmpa_mib_data, soft_purge, soft_purge, []},
+ {load_module, snmpa, soft_purge, soft_purge, [snmp_log]},
+ {load_module, snmp_log, soft_purge, soft_purge, []},
+ {update, snmpa_net_if, {advanced, upgrade_from_pre_4_16},
+ soft_purge, soft_purge, [snmpa_agent, snmp_log]},
{update, snmpa_agent, soft, soft_purge, soft_purge, []},
- {update, snmpa_net_if, soft, soft_purge, soft_purge, []},
+
+ {load_module, snmpm_user, soft_purge, soft_purge, []},
+ {load_module, snmpm_user_default, soft_purge, soft_purge, [snmpm_user]},
{update, snmpm_config, soft, soft_purge, soft_purge, []},
{update, snmpm_server, soft, soft_purge, soft_purge, [snmpm_user_default]},
{add_module, snmpm_net_if_filter},
@@ -54,10 +69,21 @@
[
{"4.15",
[
+ {load_module, snmpa, soft_purge, soft_purge, [snmp_log]},
+ {load_module, snmp_log, soft_purge, soft_purge, []},
+ {update, snmpa_net_if, {advanced, downgrade_to_pre_4_16},
+ soft_purge, soft_purge, [snmpa_agent, snmp_log]},
+ {update, snmpa_agent, soft, soft_purge, soft_purge, []}
]
},
{"4.14",
[
+ {load_module, snmpa, soft_purge, soft_purge, [snmp_log]},
+ {load_module, snmp_log, soft_purge, soft_purge, []},
+ {update, snmpa_net_if, {advanced, downgrade_to_pre_4_16},
+ soft_purge, soft_purge, [snmpa_agent, snmp_log]},
+ {update, snmpa_agent, soft, soft_purge, soft_purge, []},
+
{load_module, snmpm_user, soft_purge, soft_purge, []},
{load_module, snmpm_user_default, soft_purge, soft_purge, [snmpm_user]},
{update, snmpm_server, soft, soft_purge, soft_purge, [snmpm_user_default]}
@@ -65,11 +91,15 @@
},
{"4.13.5",
[
- {load_module, snmpm_user, soft_purge, soft_purge, []},
- {load_module, snmpm_user_default, soft_purge, soft_purge, [snmpm_user]},
{load_module, snmpa_mib_data, soft_purge, soft_purge, []},
+ {load_module, snmpa, soft_purge, soft_purge, [snmp_log]},
+ {load_module, snmp_log, soft_purge, soft_purge, []},
+ {update, snmpa_net_if, {advanced, downgrade_to_pre_4_16},
+ soft_purge, soft_purge, [snmpa_agent, snmp_log]},
{update, snmpa_agent, soft, soft_purge, soft_purge, []},
- {update, snmpa_net_if, soft, soft_purge, soft_purge, []},
+
+ {load_module, snmpm_user, soft_purge, soft_purge, []},
+ {load_module, snmpm_user_default, soft_purge, soft_purge, [snmpm_user]},
{update, snmpm_config, soft, soft_purge, soft_purge, []},
{update, snmpm_server, soft, soft_purge, soft_purge, [snmpm_user_default]},
{remove, {snmpm_net_if_filter, soft_purge, brutal_purge}},
diff --git a/lib/snmp/src/manager/snmpm_config.erl b/lib/snmp/src/manager/snmpm_config.erl
index 1a5400bf8e..e4069485ad 100644
--- a/lib/snmp/src/manager/snmpm_config.erl
+++ b/lib/snmp/src/manager/snmpm_config.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2004-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2004-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
%% -------------------------------------------------------------------------
@@ -63,6 +63,7 @@
cre_counter/2,
incr_counter/2,
+ increment_counter/3, increment_counter/4,
cre_stats_counter/2,
maybe_cre_stats_counter/2,
@@ -792,6 +793,34 @@ incr_counter(Counter, Incr, Wrap) ->
end.
+%% <ATL Sequence Number>
+increment_counter(Counter, Initial, Max) ->
+ Increment = 1,
+ increment_counter(Counter, Initial, Increment, Max).
+
+increment_counter(Counter, Initial, Increment, Max) ->
+ %% This is to make sure no one else increments our counter
+ Key = {Counter, self()},
+
+ %% Counter data
+ Position = 2,
+ Threshold = Max,
+ SetValue = Initial,
+ UpdateOp = {Position, Increment, Threshold, SetValue},
+
+ %% And now for the actual increment
+ Tab = snmpm_counter_table,
+ case (catch ets:update_counter(Tab, Key, UpdateOp)) of
+ {'EXIT', {badarg, _}} ->
+ %% Oups, first time
+ ets:insert(Tab, {Key, Initial}),
+ Initial;
+ Next when is_integer(Next) ->
+ Next
+ end.
+%% </ATL Sequence Number>
+
+
maybe_cre_stats_counter(Counter, Initial) ->
case ets:lookup(snmpm_stats_table, Counter) of
[_] ->
@@ -1013,14 +1042,16 @@ do_init(Opts) ->
AuditTrailLogOpts ->
?vtrace("ATL options: ~p", [AuditTrailLogOpts]),
ets:insert(snmpm_config_table, {audit_trail_log, true}),
- LogDir = get_atl_dir(AuditTrailLogOpts),
- LogType = get_atl_type(AuditTrailLogOpts),
- LogSize = get_atl_size(AuditTrailLogOpts),
- LogRep = get_atl_repair(AuditTrailLogOpts),
+ LogDir = get_atl_dir(AuditTrailLogOpts),
+ LogType = get_atl_type(AuditTrailLogOpts),
+ LogSize = get_atl_size(AuditTrailLogOpts),
+ LogRep = get_atl_repair(AuditTrailLogOpts),
+ LogSeqNo = get_atl_seqno(AuditTrailLogOpts),
ets:insert(snmpm_config_table, {audit_trail_log_dir, LogDir}),
ets:insert(snmpm_config_table, {audit_trail_log_type, LogType}),
ets:insert(snmpm_config_table, {audit_trail_log_size, LogSize}),
- ets:insert(snmpm_config_table, {audit_trail_log_repair, LogRep})
+ ets:insert(snmpm_config_table, {audit_trail_log_repair, LogRep}),
+ ets:insert(snmpm_config_table, {audit_trail_log_seqno, LogSeqNo})
end,
%% -- System default agent config --
@@ -1398,6 +1429,9 @@ verify_audit_trail_log_opts([{size, Size}|Opts]) ->
verify_audit_trail_log_opts([{repair, Repair}|Opts]) ->
verify_log_repair(Repair),
verify_audit_trail_log_opts(Opts);
+verify_audit_trail_log_opts([{seqno, SeqNo}|Opts]) ->
+ verify_log_seqno(SeqNo),
+ verify_audit_trail_log_opts(Opts);
verify_audit_trail_log_opts([Opt|_Opts]) ->
error({invalid_audit_trail_log_option, Opt}).
@@ -1440,6 +1474,11 @@ verify_log_repair(truncate) -> ok;
verify_log_repair(Repair) ->
error({invalid_audit_trail_log_repair, Repair}).
+verify_log_seqno(true) -> ok;
+verify_log_seqno(false) -> ok;
+verify_log_seqno(SeqNo) ->
+ error({invalid_audit_trail_log_seqno, SeqNo}).
+
verify_module(_, Mod) when is_atom(Mod) ->
ok;
@@ -3040,6 +3079,9 @@ get_atl_size(Opts) ->
get_atl_repair(Opts) ->
get_opt(repair, Opts, truncate).
+get_atl_seqno(Opts) ->
+ get_opt(seqno, Opts, false).
+
%%----------------------------------------------------------------------
diff --git a/lib/snmp/src/manager/snmpm_net_if.erl b/lib/snmp/src/manager/snmpm_net_if.erl
index 14d39933dc..4ec24af7f3 100644
--- a/lib/snmp/src/manager/snmpm_net_if.erl
+++ b/lib/snmp/src/manager/snmpm_net_if.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2004-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2004-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -81,6 +81,9 @@
-define(IRGC_TIMEOUT, timer:minutes(5)).
+-define(ATL_SEQNO_INITIAL, 1).
+-define(ATL_SEQNO_MAX, 2147483647).
+
%%%-------------------------------------------------------------------
%%% API
@@ -297,11 +300,29 @@ do_init_log(true) ->
{ok, Repair} = snmpm_config:system_info(audit_trail_log_repair),
Name = ?audit_trail_log_name,
File = filename:absname(?audit_trail_log_file, Dir),
- case snmp_log:create(Name, File, Size, Repair, true) of
- {ok, Log} ->
- {Log, Type};
- {error, Reason} ->
- throw({error, {failed_create_audit_log, Reason}})
+ case snmpm_config:system_info(audit_trail_log_seqno) of
+ {ok, true} ->
+ Initial = ?ATL_SEQNO_INITIAL,
+ Max = ?ATL_SEQNO_MAX,
+ Module = snmpm_config,
+ Function = increment_counter,
+ Args = [atl_seqno, Initial, Max],
+ SeqNoGen = {Module, Function, Args},
+ case snmp_log:create(Name, File,
+ SeqNoGen, Size, Repair, true) of
+ {ok, Log} ->
+ ?vdebug("log created: ~w", [Log]),
+ {Log, Type};
+ {error, Reason} ->
+ throw({error, {failed_create_audit_log, Reason}})
+ end;
+ _ ->
+ case snmp_log:create(Name, File, Size, Repair, true) of
+ {ok, Log} ->
+ {Log, Type};
+ {error, Reason} ->
+ throw({error, {failed_create_audit_log, Reason}})
+ end
end.
@@ -441,32 +462,15 @@ do_close_log(_) ->
%% Returns: {ok, NewState}
%%----------------------------------------------------------------------
-code_change({down, _Vsn}, OldState, downgrade_to_pre45) ->
+code_change({down, _Vsn}, OldState, downgrade_to_pre_4_16) ->
?d("code_change(down) -> entry", []),
- #state{server = Server,
- note_store = NoteStore,
- sock = Sock,
- mpd_state = MpdState,
- log = Log,
- irgc = IrGcRef} = OldState,
- irgc_stop(IrGcRef),
- (catch ets:delete(snmpm_inform_request_table)),
- State = {state, Server, NoteStore, Sock, MpdState, Log},
+ State = OldState#state{log = snmp_log:downgrade(OldState#state.log)},
{ok, State};
% upgrade
-code_change(_Vsn, OldState, upgrade_from_pre45) ->
+code_change(_Vsn, OldState, upgrade_from_pre_4_16) ->
?d("code_change(up) -> entry", []),
- {state, Server, NoteStore, Sock, MpdState, Log} = OldState,
- State = #state{server = Server,
- note_store = NoteStore,
- sock = Sock,
- mpd_state = MpdState,
- log = Log,
- irb = auto,
- irgc = undefined},
- ets:new(snmpm_inform_request_table,
- [set, protected, named_table, {keypos, 1}]),
+ State = OldState#state{log = snmp_log:upgrade(OldState#state.log)},
{ok, State};
code_change(_Vsn, State, _Extra) ->
diff --git a/lib/snmp/src/misc/snmp_config.erl b/lib/snmp/src/misc/snmp_config.erl
index ad41eaf160..0ee373a4d4 100644
--- a/lib/snmp/src/misc/snmp_config.erl
+++ b/lib/snmp/src/misc/snmp_config.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -327,10 +327,15 @@ config_agent_sys() ->
ATLRepair = ask("23f. Audit trail log repair "
"(true/false/truncate/snmp_repair)?", "true",
fun verify_atl_repair/1),
+ ATLSeqNo = ask("23g. Audit trail log "
+ "sequence-numbering (true/false)?",
+ "false",
+ fun verify_atl_seqno/1),
[{audit_trail_log, [{type, ATLType},
{dir, ATLDir},
{size, ATLSize},
- {repair, ATLRepair}]}];
+ {repair, ATLRepair},
+ {seqno, ATLSeqNo}]}];
no ->
[]
end,
@@ -400,8 +405,39 @@ config_agent_sys() ->
NetIf = [{module, NetIfMod},
{verbosity, NetIfVerb},
{options, NetIfOpts}],
+ TermDiscoEnable = ask("26a. Allow terminating discovery "
+ "(true/false)?", "true",
+ fun verify_bool/1),
+ TermDiscoConf =
+ case TermDiscoEnable of
+ true ->
+ TermDiscoStage2 =
+ ask("26b. Second stage behaviour "
+ "(discovery/plain)?", "discovery",
+ fun verify_term_disco_behaviour/1),
+ TermDiscoTrigger =
+ ask("26c. Trigger username "
+ "(default/a string)?", "default",
+ fun verify_term_disco_trigger_username/1),
+ [{enable, TermDiscoEnable},
+ {stage2, TermDiscoStage2},
+ {trigger_username, TermDiscoTrigger}];
+ false ->
+ [{enable, TermDiscoEnable},
+ {stage2, discovery},
+ {trigger_username, ""}]
+ end,
+ OrigDiscoEnable = ask("27a. Allow originating discovery "
+ "(true/false)?", "true",
+ fun verify_bool/1),
+ OrigDiscoConf =
+ [{enable, OrigDiscoEnable}],
+ DiscoveryConfig =
+ [{terminating, TermDiscoConf},
+ {originating, OrigDiscoConf}],
[{agent_type, master},
{agent_verbosity, MasterAgentVerb},
+ {discovery, DiscoveryConfig},
{config, [{dir, ConfigDir},
{force_load, ForceLoad},
{verbosity, ConfigVerb}]},
@@ -644,23 +680,31 @@ config_manager_sys() ->
"(y/n)?",
"n", fun verify_yes_or_no/1) of
yes ->
- ATLDir = ask("19b. Where to store the "
+ ATLType = ask("19b. Audit trail log type "
+ "(write/read_write)?",
+ "read_write", fun verify_atl_type/1),
+ ATLDir = ask("19c. Where to store the "
"audit trail log?",
DefDir, fun verify_dir/1),
- ATLMaxFiles = ask("19c. Max number of files?",
+ ATLMaxFiles = ask("19d. Max number of files?",
"10",
fun verify_pos_integer/1),
- ATLMaxBytes = ask("19d. Max size (in bytes) "
+ ATLMaxBytes = ask("19e. Max size (in bytes) "
"of each file?",
"10240",
fun verify_pos_integer/1),
ATLSize = {ATLMaxBytes, ATLMaxFiles},
- ATLRepair = ask("19e. Audit trail log repair "
+ ATLRepair = ask("19f. Audit trail log repair "
"(true/false/truncate/snmp_repair)?", "true",
fun verify_atl_repair/1),
- [{audit_trail_log, [{dir, ATLDir},
+ ATLSeqNo = ask("19g. Audit trail log sequence-numbering "
+ "(true/false)?", "false",
+ fun verify_atl_seqno/1),
+ [{audit_trail_log, [{type, ATLType},
+ {dir, ATLDir},
{size, ATLSize},
- {repair, ATLRepair}]}];
+ {repair, ATLRepair},
+ {seqno, ATLSeqNo}]}];
no ->
[]
end,
@@ -1180,6 +1224,13 @@ verify_atl_repair("snmp_repair") ->
verify_atl_repair(R) ->
{error, "invalid audit trail log repair: " ++ R}.
+verify_atl_seqno("true") ->
+ {ok, true};
+verify_atl_seqno("false") ->
+ {ok, false};
+verify_atl_seqno(SN) ->
+ {error, "invalid audit trail log seqno: " ++ SN}.
+
verify_pos_integer(I0) ->
case (catch list_to_integer(I0)) of
@@ -1237,6 +1288,18 @@ verify_irb_user(TO) ->
end.
+verify_term_disco_behaviour("discovery") ->
+ {ok, discovery};
+verify_term_disco_behaviour("plain") ->
+ {ok, plain};
+verify_term_disco_behaviour(B) ->
+ {error, "invalid terminating discovery behaviour: " ++ B}.
+
+verify_term_disco_trigger_username("default") ->
+ {ok, ""};
+verify_term_disco_trigger_username(Trigger) ->
+ {ok, Trigger}.
+
verify_user_id(UserId) when is_list(UserId) ->
case (catch list_to_atom(UserId)) of
@@ -2096,6 +2159,10 @@ write_sys_config_file_agent_opt(Fid, {audit_trail_log, Opts}) ->
ok = io:format(Fid, " {audit_trail_log, [", []),
write_sys_config_file_agent_atl_opts(Fid, Opts),
ok = io:format(Fid, "}", []);
+write_sys_config_file_agent_opt(Fid, {discovery, Opts}) ->
+ ok = io:format(Fid, " {discovery, [", []),
+ write_sys_config_file_agent_disco_opts(Fid, Opts),
+ ok = io:format(Fid, "}", []);
write_sys_config_file_agent_opt(Fid, {net_if, Opts}) ->
ok = io:format(Fid, " {net_if, ~w}", [Opts]);
write_sys_config_file_agent_opt(Fid, {mib_server, Opts}) ->
@@ -2139,7 +2206,58 @@ write_sys_config_file_agent_atl_opt(Fid, {type, Type}) ->
write_sys_config_file_agent_atl_opt(Fid, {size, Size}) ->
ok = io:format(Fid, "{size, ~w}", [Size]);
write_sys_config_file_agent_atl_opt(Fid, {repair, Rep}) ->
- ok = io:format(Fid, "{repair, ~w}", [Rep]).
+ ok = io:format(Fid, "{repair, ~w}", [Rep]);
+write_sys_config_file_agent_atl_opt(Fid, {seqno, SeqNo}) ->
+ ok = io:format(Fid, "{seqno, ~w}", [SeqNo]).
+
+
+%% These options are allways there
+write_sys_config_file_agent_disco_opts(Fid, [Opt]) ->
+ write_sys_config_file_agent_disco_opt(Fid, Opt),
+ ok = io:format(Fid, "]", []),
+ ok;
+write_sys_config_file_agent_disco_opts(Fid, [Opt|Opts]) ->
+ write_sys_config_file_agent_disco_opt(Fid, Opt),
+ ok = io:format(Fid, ", ", []),
+ write_sys_config_file_agent_disco_opts(Fid, Opts).
+
+write_sys_config_file_agent_disco_opt(Fid, {terminating, Opts}) ->
+ ok = io:format(Fid, "{terminating, [", []),
+ write_sys_config_file_agent_term_disco_opts(Fid, Opts),
+ ok = io:format(Fid, "}", []);
+write_sys_config_file_agent_disco_opt(Fid, {originating, Opts}) ->
+ ok = io:format(Fid, "{originating, [", []),
+ write_sys_config_file_agent_orig_disco_opts(Fid, Opts),
+ ok = io:format(Fid, "}", []).
+
+write_sys_config_file_agent_term_disco_opts(Fid, [Opt]) ->
+ write_sys_config_file_agent_term_disco_opt(Fid, Opt),
+ ok = io:format(Fid, "]", []),
+ ok;
+write_sys_config_file_agent_term_disco_opts(Fid, [Opt|Opts]) ->
+ write_sys_config_file_agent_term_disco_opt(Fid, Opt),
+ ok = io:format(Fid, ", ", []),
+ write_sys_config_file_agent_term_disco_opts(Fid, Opts).
+
+write_sys_config_file_agent_term_disco_opt(Fid, {enable, Enable}) ->
+ ok = io:format(Fid, "{enable, ~w}", [Enable]);
+write_sys_config_file_agent_term_disco_opt(Fid, {stage2, Stage2}) ->
+ ok = io:format(Fid, "{stage2, ~w}", [Stage2]);
+write_sys_config_file_agent_term_disco_opt(Fid, {trigger_username, Trigger}) ->
+ ok = io:format(Fid, "{trigger_username, \"~s\"}", [Trigger]).
+
+write_sys_config_file_agent_orig_disco_opts(Fid, [Opt]) ->
+ write_sys_config_file_agent_orig_disco_opt(Fid, Opt),
+ ok = io:format(Fid, "]", []),
+ ok;
+write_sys_config_file_agent_orig_disco_opts(Fid, [Opt|Opts]) ->
+ write_sys_config_file_agent_orig_disco_opt(Fid, Opt),
+ ok = io:format(Fid, ", ", []),
+ write_sys_config_file_agent_orig_disco_opts(Fid, Opts).
+
+write_sys_config_file_agent_orig_disco_opt(Fid, {enable, Enable}) ->
+ ok = io:format(Fid, "{enable, ~w}", [Enable]).
+
write_sys_config_file_manager_opts(Fid, [Opt]) ->
diff --git a/lib/snmp/src/misc/snmp_log.erl b/lib/snmp/src/misc/snmp_log.erl
index c3932ccc08..9f4fdf97ca 100644
--- a/lib/snmp/src/misc/snmp_log.erl
+++ b/lib/snmp/src/misc/snmp_log.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 1997-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 1997-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -21,12 +21,19 @@
-export([
- create/4, create/5,
+ create/4, create/5, create/6,
change_size/2, close/1, sync/1, info/1,
log/4,
log_to_txt/5, log_to_txt/6, log_to_txt/7,
log_to_io/4, log_to_io/5, log_to_io/6
]).
+-export([
+ upgrade/1, upgrade/2,
+ downgrade/1
+ ]).
+-export([
+ validate/1, validate/2
+ ]).
-define(SNMP_USE_V3, true).
@@ -38,30 +45,74 @@
-define(LOG_FORMAT, internal).
-define(LOG_TYPE, wrap).
+-record(snmp_log, {id, seqno}).
+
%% --------------------------------------------------------------------
%% Exported functions
%% --------------------------------------------------------------------
+upgrade(Log) when is_record(Log, snmp_log) ->
+ Log;
+upgrade(Log) ->
+ upgrade(Log, disabled).
+
+upgrade(Log, _SeqNoGen) when is_record(Log, snmp_log) ->
+ Log;
+upgrade(Log, {M, F, A} = SeqNoGen)
+ when (is_atom(M) andalso is_atom(F) andalso is_list(A)) ->
+ #snmp_log{id = Log, seqno = SeqNoGen};
+upgrade(Log, SeqNoGen)
+ when is_function(SeqNoGen, 0) ->
+ #snmp_log{id = Log, seqno = SeqNoGen};
+upgrade(Log, disabled = SeqNoGen) ->
+ #snmp_log{id = Log, seqno = SeqNoGen}.
+
+downgrade(#snmp_log{id = Log}) ->
+ Log;
+downgrade(Log) ->
+ Log.
+
%% -- create ---
create(Name, File, Size, Repair) ->
- create(Name, File, Size, Repair, false).
-
-create(Name, File, Size, Repair, Notify) ->
+ create(Name, File, disabled, Size, Repair, false).
+
+create(Name, File, Size, Repair, Notify)
+ when (((Repair =:= true) orelse
+ (Repair =:= false) orelse
+ (Repair =:= truncate) orelse
+ (Repair =:= snmp_repair)) andalso
+ ((Notify =:= true) orelse
+ (Notify =:= false))) ->
+ create(Name, File, disabled, Size, Repair, Notify);
+create(Name, File, SeqNoGen, Size, Repair) ->
+ create(Name, File, SeqNoGen, Size, Repair, false).
+
+create(Name, File, SeqNoGen, Size, Repair, Notify)
+ when (((Repair =:= true) orelse
+ (Repair =:= false) orelse
+ (Repair =:= truncate) orelse
+ (Repair =:= snmp_repair)) andalso
+ ((Notify =:= true) orelse
+ (Notify =:= false))) ->
?vtrace("create -> entry with"
- "~n Name: ~p"
- "~n File: ~p"
- "~n Size: ~p"
- "~n Repair: ~p"
- "~n Notify: ~p", [Name, File, Size, Repair, Notify]),
- log_open(Name, File, Size, Repair, Notify).
+ "~n Name: ~p"
+ "~n File: ~p"
+ "~n SeqNoGen: ~p"
+ "~n Size: ~p"
+ "~n Repair: ~p"
+ "~n Notify: ~p", [Name, File, SeqNoGen, Size, Repair, Notify]),
+ log_open(Name, File, SeqNoGen, Size, Repair, Notify);
+create(Name, File, SeqNoGen, Size, Repair, Notify) ->
+ {error, {bad_args, Name, File, SeqNoGen, Size, Repair, Notify}}.
+
%% -- close ---
-close(Log) ->
+close(#snmp_log{id = Log}) ->
?vtrace("close -> entry with"
"~n Log: ~p", [Log]),
disk_log:close(Log).
@@ -69,14 +120,25 @@ close(Log) ->
%% -- close ---
+sync(#snmp_log{id = Log}) ->
+ do_sync(Log);
sync(Log) ->
+ do_sync(Log).
+
+do_sync(Log) ->
?vtrace("sync -> entry with"
"~n Log: ~p", [Log]),
disk_log:sync(Log).
+
%% -- info ---
+info(#snmp_log{id = Log}) ->
+ do_info(Log);
info(Log) ->
+ do_info(Log).
+
+do_info(Log) ->
case disk_log:info(Log) of
Info when is_list(Info) ->
Items = [no_current_bytes, no_current_items,
@@ -97,6 +159,138 @@ info_filter([Item|Items], Info, Acc) ->
end.
+%% -- validate --
+
+%% This function is used to "validate" a log.
+%% At present this means making sure all entries
+%% are in the proper order, and if sequence numbering
+%% is used that no entries are missing.
+%% It is intended to be used for testing.
+
+validate(Log) ->
+ validate(Log, false).
+
+validate(#snmp_log{id = Log}, SeqNoReq) ->
+ validate(Log, SeqNoReq);
+validate(Log, SeqNoReq)
+ when ((SeqNoReq =:= true) orelse (SeqNoReq =:= false)) ->
+ Validator =
+ fun({Timestamp, SeqNo, _Packet, _Addr, _Port}, {PrevTS, PrevSN}) ->
+ ?vtrace("validating log entry when"
+ "~n Timestamp: ~p"
+ "~n SeqNo: ~p"
+ "~n PrevTS: ~p"
+ "~n PrevSN: ~p",
+ [Timestamp, SeqNo, PrevTS, PrevSN]),
+ validate_timestamp(PrevTS, Timestamp),
+ validate_seqno(PrevSN, SeqNo),
+ {Timestamp, SeqNo};
+
+ ({Timestamp, _Packet, _Addr, _Port}, {PrevTS, _PrevSN}) when SeqNoReq =:= true ->
+ ?vtrace("validating log entry when"
+ "~n Timestamp: ~p"
+ "~n PrevTS: ~p",
+ [Timestamp, PrevTS]),
+ throw({error, {missing_seqno, Timestamp}});
+
+ ({Timestamp, _Packet, _Addr, _Port}, {PrevTS, PrevSN}) ->
+ ?vtrace("validating log entry when"
+ "~n Timestamp: ~p"
+ "~n PrevTS: ~p",
+ [Timestamp, PrevTS]),
+ validate_timestamp(PrevTS, Timestamp),
+ {Timestamp, PrevSN};
+
+ (E, Acc) ->
+ ?vtrace("validating bad log entry when"
+ "~n E: ~p"
+ "~n Acc: ~p",
+ [E, Acc]),
+ throw({error, {bad_entry, E, Acc}})
+ end,
+ try
+ begin
+ validate_loop(disk_log:chunk(Log, start),
+ Log, Validator, first, first)
+ end
+ catch
+ throw:Error ->
+ Error
+ end.
+
+%% We shall check that TS2 >= TS1
+validate_timestamp(first, _TS2) ->
+ ok;
+validate_timestamp({LT1, UT1} = TS1, {LT2, UT2} = TS2) ->
+ LT1_Secs = calendar:datetime_to_gregorian_seconds(LT1),
+ UT1_Secs = calendar:datetime_to_gregorian_seconds(UT1),
+ LT2_Secs = calendar:datetime_to_gregorian_seconds(LT2),
+ UT2_Secs = calendar:datetime_to_gregorian_seconds(UT2),
+ case ((LT2_Secs >= LT1_Secs) andalso (UT2_Secs >= UT1_Secs)) of
+ true ->
+ ok;
+ false ->
+ throw({error, {invalid_timestamp, TS1, TS2}})
+ end;
+validate_timestamp(TS1, TS2) ->
+ throw({error, {bad_timestamp, TS1, TS2}}).
+
+
+%% The usual case when SN2 = SN1 + 1
+validate_seqno(first, SN2)
+ when is_integer(SN2) >= 1 ->
+ ok;
+
+%% The usual case when SN2 = SN1 + 1
+validate_seqno(SN1, SN2)
+ when is_integer(SN1) andalso is_integer(SN2) andalso
+ (SN2 =:= (SN1 + 1)) andalso (SN1 >= 1) ->
+ ok;
+
+%% The case when we have a wrap
+validate_seqno(SN1, SN2)
+ when is_integer(SN1) andalso is_integer(SN2) andalso
+ (SN2 < SN1) andalso (SN2 >= 1) ->
+ ok;
+
+%% And everything else must be an error...
+validate_seqno(SN1, SN2) ->
+ throw({error, {bad_seqno, SN1, SN2}}).
+
+validate_loop(eof, _Log, _Validatior, _PrevTS, _PrevSN) ->
+ ok;
+validate_loop({error, _} = Error, _Log, _Validator, _PrevTS, _PrevSN) ->
+ Error;
+validate_loop({corrupt_log_file, _} = Reason,
+ _Log, _Validator, _PrevTS, _PrevSN) ->
+ {error, Reason};
+validate_loop({Cont, Terms}, Log, Validator, PrevTS, PrevSN) ->
+ ?vtrace("validate_loop -> entry with"
+ "~n Terms: ~p"
+ "~n PrevTS: ~p"
+ "~n PrevSN: ~p", [Terms, PrevTS, PrevSN]),
+ {NextTS, NextSN} = lists:foldl(Validator, {PrevTS, PrevSN}, Terms),
+ ?vtrace("validate_loop -> "
+ "~n NextTS: ~p"
+ "~n NextSN: ~p", [NextTS, NextSN]),
+ validate_loop(disk_log:chunk(Log, Cont), Log, Validator, NextTS, NextSN);
+validate_loop({Cont, Terms, BadBytes}, Log, Validator, PrevTS, PrevSN) ->
+ ?vtrace("validate_loop -> entry with"
+ "~n Terms: ~p"
+ "~n BadBytes: ~p"
+ "~n PrevTS: ~p"
+ "~n PrevSN: ~p", [Terms, BadBytes, PrevTS, PrevSN]),
+ error_logger:error_msg("Skipping ~w bytes while validating ~p~n~n",
+ [BadBytes, Log]),
+ {NextTS, NextSN} = lists:foldl(Validator, {PrevTS, PrevSN}, Terms),
+ ?vtrace("validate_loop -> "
+ "~n NextTS: ~p"
+ "~n NextSN: ~p", [NextTS, NextSN]),
+ validate_loop(disk_log:chunk(Log, Cont), Log, Validator, NextTS, NextSN);
+validate_loop(Error, _Log, _Write, _PrevTS, _PrevSN) ->
+ Error.
+
+
%% -- log ---
%%-----------------------------------------------------------------
@@ -109,19 +303,48 @@ info_filter([Item|Items], Info, Acc) ->
%%-----------------------------------------------------------------
-log(Log, Packet, Addr, Port) ->
+log(#snmp_log{id = Log, seqno = SeqNo}, Packet, Addr, Port) ->
?vtrace("log -> entry with"
"~n Log: ~p"
"~n Addr: ~p"
"~n Port: ~p", [Log, Addr, Port]),
- Entry = {timestamp(), Packet, Addr, Port},
- disk_log:alog(Log, Entry).
+ Entry = make_entry(SeqNo, Packet, Addr, Port),
+%% io:format("log -> "
+%% "~n Entry: ~p"
+%% "~n Info: ~p"
+%% "~n", [Entry, disk_log:info(Log)]),
+ Res = disk_log:alog(Log, Entry),
+%% io:format("log -> "
+%% "~n Res: ~p"
+%% "~n Info: ~p"
+%% "~n", [Res, disk_log:info(Log)]),
+ %% disk_log:sync(Log),
+ Res.
+
+
+
+make_entry(SeqNoGen, Packet, Addr, Port) ->
+ try next_seqno(SeqNoGen) of
+ disabled ->
+ {timestamp(), Packet, Addr, Port};
+ {ok, NextSeqNo} ->
+ {timestamp(), NextSeqNo, Packet, Addr, Port}
+ catch
+ _:_ ->
+ {timestamp(), Packet, Addr, Port}
+ end.
+next_seqno({M, F, A}) ->
+ {ok, apply(M, F, A)};
+next_seqno(F) when is_function(F) ->
+ {ok, F()};
+next_seqno(_) ->
+ disabled.
%% -- change_size ---
-change_size(Log, NewSize) ->
+change_size(#snmp_log{id = Log}, NewSize) ->
?vtrace("change_size -> entry with"
"~n Log: ~p"
"~n NewSize: ~p", [Log, NewSize]),
@@ -171,6 +394,23 @@ log_to_io(Log, FileName, Dir, Mibs, Start, Stop)
log_convert(Log, File, Converter).
+%% -- log_to_plain ---
+
+%% log_to_plain(Log, FileName, Dir) ->
+%% log_to_plain(Log, FileName, Dir, null, null).
+
+%% log_to_plain(Log, FileName, Dir, Start) ->
+%% log_to_plain(Log, FileName, Dir, Start, null).
+
+%% log_to_plain(Log, FileName, Dir, Start, Stop)
+%% when is_list(Mibs) ->
+%% File = filename:join(Dir, FileName),
+%% Converter = fun(L) ->
+%% do_log_to_plain(L, Start, Stop)
+%% end,
+%% log_convert(Log, File, Converter).
+
+
%% --------------------------------------------------------------------
%% Internal functions
%% --------------------------------------------------------------------
@@ -178,7 +418,12 @@ log_to_io(Log, FileName, Dir, Mibs, Start, Stop)
%% -- log_convert ---
+log_convert(#snmp_log{id = Log}, File, Converter) ->
+ do_log_convert(Log, File, Converter);
log_convert(Log, File, Converter) ->
+ do_log_convert(Log, File, Converter).
+
+do_log_convert(Log, File, Converter) ->
%% First check if the caller process has already opened the
%% log, because if we close an already open log we will cause
%% a runtime error.
@@ -274,86 +519,151 @@ loop({Cont, Terms, BadBytes}, Log, Write) ->
loop(Error, _Log, _Write) ->
Error.
-format_msg({TimeStamp, {V3Hdr, ScopedPdu}, {Addr, Port}},
- Mib, Start, Stop) ->
- format_msg({TimeStamp, {V3Hdr, ScopedPdu}, Addr, Port},
- Mib, Start, Stop);
-format_msg({TimeStamp, {V3Hdr, ScopedPdu}, Addr, Port},
- Mib, Start, Stop) ->
-% io:format("format_msg -> entry with"
-% "~n TimeStamp: ~p"
-% "~n Start: ~p"
-% "~n Stop: ~p", [TimeStamp, Start, Stop]),
- case timestamp_filter(TimeStamp, Start, Stop) of
- true ->
- case (catch snmp_pdus:dec_scoped_pdu(ScopedPdu)) of
- ScopedPDU when is_record(ScopedPDU, scopedPdu) ->
- Msg = #message{version = 'version-3',
- vsn_hdr = V3Hdr,
- data = ScopedPDU},
- f(ts2str(TimeStamp), Msg, Addr, Port, Mib);
- {'EXIT', Reason} ->
- format_tab("** error in log file at ~s from ~p:~w ~p\n\n",
- [ts2str(TimeStamp), ip(Addr), Port, Reason])
- end;
- false ->
- ignore
- end;
-format_msg({TimeStamp, Packet, {Addr, Port}}, Mib, Start, Stop) ->
- format_msg({TimeStamp, Packet, Addr, Port}, Mib, Start, Stop);
-format_msg({TimeStamp, Packet, Addr, Port}, Mib, Start, Stop) ->
+
+format_msg(Entry, Mib, Start, Stop) ->
+ TimeStamp = element(1, Entry),
case timestamp_filter(TimeStamp, Start, Stop) of
true ->
- case (catch snmp_pdus:dec_message(binary_to_list(Packet))) of
- Msg when is_record(Msg, message) ->
- f(ts2str(TimeStamp), Msg, Addr, Port, Mib);
- {'EXIT', Reason} ->
- format_tab("** error in log file ~p\n\n", [Reason])
- end;
- false ->
- ignore
- end;
-format_msg(_, _Mib, _Start, _Stop) ->
+ do_format_msg(Entry, Mib);
+ false ->
+ ignore
+ end.
+
+%% This is an old-style entry, that never had the sequence-number
+do_format_msg({Timestamp, Packet, {Addr, Port}}, Mib) ->
+ do_format_msg(Timestamp, Packet, Addr, Port, Mib);
+
+%% This is the format without sequence-number
+do_format_msg({Timestamp, Packet, Addr, Port}, Mib) ->
+ do_format_msg(Timestamp, Packet, Addr, Port, Mib);
+
+%% This is the format with sequence-number
+do_format_msg({Timestamp, SeqNo, Packet, Addr, Port}, Mib) ->
+ do_format_msg(Timestamp, SeqNo, Packet, Addr, Port, Mib);
+
+%% This is crap...
+do_format_msg(_, _) ->
format_tab("** unknown entry in log file\n\n", []).
-f(TimeStamp, #message{version = Vsn, vsn_hdr = VsnHdr, data = Data},
+do_format_msg(TimeStamp, {V3Hdr, ScopedPdu}, Addr, Port, Mib) ->
+ case (catch snmp_pdus:dec_scoped_pdu(ScopedPdu)) of
+ ScopedPDU when is_record(ScopedPDU, scopedPdu) ->
+ Msg = #message{version = 'version-3',
+ vsn_hdr = V3Hdr,
+ data = ScopedPDU},
+ f(ts2str(TimeStamp), "", Msg, Addr, Port, Mib);
+ {'EXIT', Reason} ->
+ format_tab("** error in log file at ~s from ~p:~w ~p\n\n",
+ [ts2str(TimeStamp), ip(Addr), Port, Reason])
+ end;
+do_format_msg(TimeStamp, Packet, Addr, Port, Mib) ->
+ case (catch snmp_pdus:dec_message(binary_to_list(Packet))) of
+ Msg when is_record(Msg, message) ->
+ f(ts2str(TimeStamp), "", Msg, Addr, Port, Mib);
+ {'EXIT', Reason} ->
+ format_tab("** error in log file ~p\n\n", [Reason])
+ end.
+
+do_format_msg(TimeStamp, SeqNo, {V3Hdr, ScopedPdu}, Addr, Port, Mib) ->
+ case (catch snmp_pdus:dec_scoped_pdu(ScopedPdu)) of
+ ScopedPDU when is_record(ScopedPDU, scopedPdu) ->
+ Msg = #message{version = 'version-3',
+ vsn_hdr = V3Hdr,
+ data = ScopedPDU},
+ f(ts2str(TimeStamp), sn2str(SeqNo), Msg, Addr, Port, Mib);
+ {'EXIT', Reason} ->
+ format_tab("** error in log file at ~s from ~p:~w ~p\n\n",
+ [ts2str(TimeStamp), sn2str(SeqNo),
+ ip(Addr), Port, Reason])
+ end;
+do_format_msg(TimeStamp, SeqNo, Packet, Addr, Port, Mib) ->
+ case (catch snmp_pdus:dec_message(binary_to_list(Packet))) of
+ Msg when is_record(Msg, message) ->
+ f(ts2str(TimeStamp), sn2str(SeqNo), Msg, Addr, Port, Mib);
+ {'EXIT', Reason} ->
+ format_tab("** error in log file ~s from ~p:~w ~p\n\n",
+ [ts2str(TimeStamp), sn2str(SeqNo),
+ ip(Addr), Port, Reason])
+ end.
+
+
+%% format_msg({TimeStamp, {V3Hdr, ScopedPdu}, {Addr, Port}},
+%% Mib, Start, Stop) ->
+%% format_msg({TimeStamp, {V3Hdr, ScopedPdu}, Addr, Port},
+%% Mib, Start, Stop);
+%% format_msg({TimeStamp, {V3Hdr, ScopedPdu}, Addr, Port},
+%% Mib, Start, Stop) ->
+%% case timestamp_filter(TimeStamp, Start, Stop) of
+%% true ->
+%% case (catch snmp_pdus:dec_scoped_pdu(ScopedPdu)) of
+%% ScopedPDU when record(ScopedPDU, scopedPdu) ->
+%% Msg = #message{version = 'version-3',
+%% vsn_hdr = V3Hdr,
+%% data = ScopedPDU},
+%% f(ts2str(TimeStamp), Msg, Addr, Port, Mib);
+%% {'EXIT', Reason} ->
+%% format_tab("** error in log file at ~s from ~p:~w ~p\n\n",
+%% [ts2str(TimeStamp), ip(Addr), Port, Reason])
+%% end;
+%% false ->
+%% ignore
+%% end;
+%% format_msg({TimeStamp, Packet, {Addr, Port}}, Mib, Start, Stop) ->
+%% format_msg({TimeStamp, Packet, Addr, Port}, Mib, Start, Stop);
+%% format_msg({TimeStamp, Packet, Addr, Port}, Mib, Start, Stop) ->
+%% case timestamp_filter(TimeStamp, Start, Stop) of
+%% true ->
+%% case (catch snmp_pdus:dec_message(binary_to_list(Packet))) of
+%% Msg when record(Msg, message) ->
+%% f(ts2str(TimeStamp), Msg, Addr, Port, Mib);
+%% {'EXIT', Reason} ->
+%% format_tab("** error in log file ~p\n\n", [Reason])
+%% end;
+%% false ->
+%% ignore
+%% end;
+%% format_msg(_, _Mib, _Start, _Stop) ->
+%% format_tab("** unknown entry in log file\n\n", []).
+
+f(TimeStamp, SeqNo,
+ #message{version = Vsn, vsn_hdr = VsnHdr, data = Data},
Addr, Port, Mib) ->
Str = format_pdu(Data, Mib),
HdrStr = format_header(Vsn, VsnHdr),
case get_type(Data) of
trappdu ->
- f_trap(TimeStamp, Vsn, HdrStr, Str, Addr, Port);
+ f_trap(TimeStamp, SeqNo, Vsn, HdrStr, Str, Addr, Port);
'snmpv2-trap' ->
- f_trap(TimeStamp, Vsn, HdrStr, Str, Addr, Port);
+ f_trap(TimeStamp, SeqNo, Vsn, HdrStr, Str, Addr, Port);
'inform-request' ->
- f_inform(TimeStamp, Vsn, HdrStr, Str, Addr, Port);
+ f_inform(TimeStamp, SeqNo, Vsn, HdrStr, Str, Addr, Port);
'get-response' ->
- f_response(TimeStamp, Vsn, HdrStr, Str, Addr, Port);
+ f_response(TimeStamp, SeqNo, Vsn, HdrStr, Str, Addr, Port);
report ->
- f_report(TimeStamp, Vsn, HdrStr, Str, Addr, Port);
+ f_report(TimeStamp, SeqNo, Vsn, HdrStr, Str, Addr, Port);
_ ->
- f_request(TimeStamp, Vsn, HdrStr, Str, Addr, Port)
+ f_request(TimeStamp, SeqNo, Vsn, HdrStr, Str, Addr, Port)
end.
-f_request(TimeStamp, Vsn, HdrStr, Str, Addr, Port) ->
- format_tab("request ~s:~w - ~s [~s] ~w\n~s",
- [ip(Addr), Port, HdrStr, TimeStamp, Vsn, Str]).
+f_request(TimeStamp, SeqNo, Vsn, HdrStr, Str, Addr, Port) ->
+ format_tab("request ~s:~w - ~s [~s]~s ~w\n~s",
+ [ip(Addr), Port, HdrStr, TimeStamp, SeqNo, Vsn, Str]).
-f_response(TimeStamp, Vsn, HdrStr, Str, Addr, Port) ->
- format_tab("response ~s:~w - ~s [~s] ~w\n~s",
- [ip(Addr), Port, HdrStr, TimeStamp, Vsn, Str]).
+f_response(TimeStamp, SeqNo, Vsn, HdrStr, Str, Addr, Port) ->
+ format_tab("response ~s:~w - ~s [~s]~s ~w\n~s",
+ [ip(Addr), Port, HdrStr, TimeStamp, SeqNo, Vsn, Str]).
-f_report(TimeStamp, Vsn, HdrStr, Str, Addr, Port) ->
- format_tab("report ~s:~w - ~s [~s] ~w\n~s",
- [ip(Addr), Port, HdrStr, TimeStamp, Vsn, Str]).
+f_report(TimeStamp, SeqNo, Vsn, HdrStr, Str, Addr, Port) ->
+ format_tab("report ~s:~w - ~s [~s]~s ~w\n~s",
+ [ip(Addr), Port, HdrStr, TimeStamp, SeqNo, Vsn, Str]).
-f_trap(TimeStamp, Vsn, HdrStr, Str, Addr, Port) ->
- format_tab("trap ~s:~w - ~s [~s] ~w\n~s",
- [ip(Addr), Port, HdrStr, TimeStamp, Vsn, Str]).
+f_trap(TimeStamp, SeqNo, Vsn, HdrStr, Str, Addr, Port) ->
+ format_tab("trap ~s:~w - ~s [~s]~s ~w\n~s",
+ [ip(Addr), Port, HdrStr, TimeStamp, SeqNo, Vsn, Str]).
-f_inform(TimeStamp, Vsn, HdrStr, Str, Addr, Port) ->
- format_tab("inform ~s:~w - ~s [~s] ~w\n~s",
- [ip(Addr), Port, HdrStr, TimeStamp, Vsn, Str]).
+f_inform(TimeStamp, SeqNo, Vsn, HdrStr, Str, Addr, Port) ->
+ format_tab("inform ~s:~w - ~s [~s]~s ~w\n~s",
+ [ip(Addr), Port, HdrStr, TimeStamp, SeqNo, Vsn, Str]).
%% Convert a timestamp 2-tupple to a printable string
@@ -363,6 +673,13 @@ ts2str({Local,Universal}) ->
ts2str(_) ->
"".
+%% Convert a sequence number integer to a printable string
+%%
+sn2str(SeqNo) when is_integer(SeqNo) ->
+ " [" ++ integer_to_list(SeqNo) ++ "]";
+sn2str(_) ->
+ "".
+
%% Convert a datetime 2-tupple to a printable string
%%
dat2str({{Y,M,D},{H,Min,S}}) ->
@@ -457,19 +774,31 @@ ip({A,B,C,D}) ->
%% Various utility functions
%% -------------------------------------------------------------------
-log_open(Name, File, Size, Repair, Notify) ->
+log_open(Name, File, {M, F, A} = SeqNoGen, Size, Repair, Notify)
+ when (is_atom(M) andalso is_atom(F) andalso is_list(A)) ->
+ log_open2(Name, File, SeqNoGen, Size, Repair, Notify);
+log_open(Name, File, SeqNoGen, Size, Repair, Notify)
+ when is_function(SeqNoGen, 0) ->
+ log_open2(Name, File, SeqNoGen, Size, Repair, Notify);
+log_open(Name, File, disabled = SeqNoGen, Size, Repair, Notify) ->
+ log_open2(Name, File, SeqNoGen, Size, Repair, Notify);
+log_open(_, _File, BadSeqNoGen, _Size, _Repair, _Notify) ->
+ {error, {bad_seqno, BadSeqNoGen}}.
+
+log_open2(Name, File, SeqNoGen, Size, Repair, Notify) ->
case do_log_open(Name, File, Size, Repair, Notify) of
{ok, Log} ->
- {ok, Log};
+ {ok, #snmp_log{id = Log, seqno = SeqNoGen}};
{repaired, Log, Rec, Bad} ->
?vlog("log_open -> repaired: "
"~n Rec: ~p"
"~n Bad: ~p", [Rec, Bad]),
- {ok, Log};
+ {ok, #snmp_log{id = Log, seqno = SeqNoGen}};
Error ->
Error
end.
+
%% We need to make sure we do not end up in an infinit loop
%% Take the number of files of the wrap log and add 2 (for
%% the index and size files).
diff --git a/lib/snmp/src/misc/snmp_usm.erl b/lib/snmp/src/misc/snmp_usm.erl
index 6d216e65d6..19be564a8e 100644
--- a/lib/snmp/src/misc/snmp_usm.erl
+++ b/lib/snmp/src/misc/snmp_usm.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2004-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2004-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -206,6 +206,10 @@ des_encrypt(PrivKey, Data, SaltFun) ->
des_decrypt(PrivKey, MsgPrivParams, EncData)
when length(MsgPrivParams) =:= 8 ->
+ ?vtrace("des_decrypt -> entry with"
+ "~n PrivKey: ~p"
+ "~n MsgPrivParams: ~p"
+ "~n EncData: ~p", [PrivKey, MsgPrivParams, EncData]),
[A,B,C,D,E,F,G,H | PreIV] = PrivKey,
DesKey = [A,B,C,D,E,F,G,H],
Salt = MsgPrivParams,
@@ -213,7 +217,15 @@ des_decrypt(PrivKey, MsgPrivParams, EncData)
%% Whatabout errors here??? E.g. not a mulitple of 8!
Data = binary_to_list(crypto:des_cbc_decrypt(DesKey, IV, EncData)),
Data2 = snmp_pdus:strip_encrypted_scoped_pdu_data(Data),
- {ok, Data2}.
+ {ok, Data2};
+des_decrypt(PrivKey, BadMsgPrivParams, EncData) ->
+ ?vtrace("des_decrypt -> entry with when bad MsgPrivParams"
+ "~n PrivKey: ~p"
+ "~n BadMsgPrivParams: ~p"
+ "~n EncData: ~p",
+ [PrivKey, BadMsgPrivParams, EncData]),
+ throw({error, {bad_msgPrivParams, PrivKey, BadMsgPrivParams, EncData}}).
+
aes_encrypt(PrivKey, Data, SaltFun) ->
AesKey = PrivKey,
@@ -225,7 +237,7 @@ aes_encrypt(PrivKey, Data, SaltFun) ->
{ok, binary_to_list(EncData), Salt}.
aes_decrypt(PrivKey, MsgPrivParams, EncData, EngineBoots, EngineTime)
- when length(MsgPrivParams) == 8 ->
+ when length(MsgPrivParams) =:= 8 ->
AesKey = PrivKey,
Salt = MsgPrivParams,
IV = [?i32(EngineBoots), ?i32(EngineTime) | Salt],
diff --git a/lib/snmp/test/snmp_agent_test.erl b/lib/snmp/test/snmp_agent_test.erl
index 53b35058e1..af0581150a 100644
--- a/lib/snmp/test/snmp_agent_test.erl
+++ b/lib/snmp/test/snmp_agent_test.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2003-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2003-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -32,6 +32,8 @@
-include("snmp_test_lib.hrl").
-define(SNMP_USE_V3, true).
-include_lib("snmp/include/snmp_types.hrl").
+-include_lib("snmp/src/agent/snmpa_atl.hrl").
+
%% -include_lib("snmp/include/SNMP-COMMUNITY-MIB.hrl").
%% -include_lib("snmp/include/SNMP-VIEW-BASED-ACM-MIB.hrl").
%% -include_lib("snmp/include/SNMP-USER-BASED-SM-MIB.hrl").
@@ -84,16 +86,18 @@
all(suite) ->
- {req,
- [
- mnesia,
- distribution,
- {local_slave_nodes, 2},
- {time, 360}
- ],
- [{conf, init_all, cases(), finish_all}]}.
+ Reqs = [mnesia, distribution, {local_slave_nodes, 2}, {time, 360}],
+ Conf1 = [{conf, init_all, cases(), finish_all}],
+ Conf2 = [tickets2],
+ {req, Reqs, Conf1 ++ Conf2}.
+init_per_testcase(otp8395 = Case, Config) when is_list(Config) ->
+ ?DBG("init_per_testcase -> entry with"
+ "~n Case: ~p"
+ "~n Config: ~p", [Case, Config]),
+ Config2 = init_per_testcase2(Case, init_suite(Config)),
+ otp8395({init, Config2});
init_per_testcase(otp_7157_test = _Case, Config) when is_list(Config) ->
?DBG("init_per_testcase -> entry with"
"~n Case: ~p"
@@ -119,6 +123,8 @@ init_per_testcase(_Case, Config) when is_list(Config) ->
Dog = ?WD_START(?MINS(6)),
[{watchdog, Dog}|Config].
+fin_per_testcase(otp8395, Config) when is_list(Config) ->
+ otp8395({fin, Config});
fin_per_testcase(_Case, Config) when is_list(Config) ->
?DBG("fin_per_testcase -> entry with"
"~n Case: ~p"
@@ -127,6 +133,97 @@ fin_per_testcase(_Case, Config) when is_list(Config) ->
?WD_STOP(Dog),
Config.
+
+init_suite(Config) ->
+ ?DBG("init_suite -> entry with"
+ "~n Config: ~p", [Config]),
+
+ %% Suite root dir for test suite
+ PrivDir = ?config(priv_dir, Config),
+
+ %% Create top-directory for this sub-suite
+ SuiteTopDir = filename:join([PrivDir, ?MODULE]),
+ case file:make_dir(SuiteTopDir) of
+ ok ->
+ ok;
+ {error, eexist} ->
+ %% This can happen since this is not really a
+ %% suite-init function.
+ ok;
+ {error, Reason} ->
+ ?FAIL({failed_creating_suite_top_dir, SuiteTopDir, Reason})
+ end,
+
+
+ %% --
+ %% Fix config (data-dir is not correct):
+ %%
+
+ Config1 = fix_data_dir(Config),
+ %% Config1 = Config,
+
+ %% Mib-dirs
+ MibDir = ?config(data_dir, Config1),
+ StdMibDir = filename:join([code:priv_dir(snmp), "mibs"]),
+
+ Config2 = [{suite_top_dir, SuiteTopDir},
+ {mib_dir, MibDir},
+ {std_mib_dir, StdMibDir} | Config1],
+
+ ?DBG("init_suite -> done when"
+ "~n Config2: ~p", [Config2]),
+ Config2.
+
+%% end_per_suite(Config) ->
+end_suite(Config) ->
+ Config.
+
+fix_data_dir(Config) ->
+ DataDir0 = ?config(data_dir, Config),
+ DataDir1 = filename:split(filename:absname(DataDir0)),
+ [_|DataDir2] = lists:reverse(DataDir1),
+ DataDir = filename:join(lists:reverse(DataDir2) ++ [?snmp_test_data]),
+ Config1 = lists:keydelete(data_dir, 1, Config),
+ [{data_dir, DataDir} | Config1].
+
+
+init_per_testcase2(Case, Config) ->
+ SuiteToDir = ?config(suite_top_dir, Config),
+
+ %% Create top-directory for this test-case
+ CaseTopDir = filename:join([SuiteToDir, Case]),
+ ok = file:make_dir(CaseTopDir),
+
+ %% Create agent top-dir(s)
+ AgentTopDir = filename:join([CaseTopDir, agent]),
+ ok = file:make_dir(AgentTopDir),
+ AgentConfDir = filename:join([AgentTopDir, config]),
+ ok = file:make_dir(AgentConfDir),
+ AgentDbDir = filename:join([AgentTopDir, db]),
+ ok = file:make_dir(AgentDbDir),
+ AgentLogDir = filename:join([AgentTopDir, log]),
+ ok = file:make_dir(AgentLogDir),
+
+ %% Create sub-agent top-dir(s)
+ SubAgentTopDir = filename:join([CaseTopDir, sub_agent]),
+ ok = file:make_dir(SubAgentTopDir),
+
+ %% Create manager top-dir(s)
+ ManagerTopDir = filename:join([CaseTopDir, manager]),
+ ok = file:make_dir(ManagerTopDir),
+
+ [{case_top_dir, CaseTopDir},
+ {agent_top_dir, AgentTopDir},
+ {agent_conf_dir, AgentConfDir},
+ {agent_db_dir, AgentDbDir},
+ {agent_log_dir, AgentLogDir},
+ {sub_agent_top_dir, SubAgentTopDir},
+ {manager_top_dir, ManagerTopDir} | Config].
+
+fin_per_testcase2(_Case, Config) ->
+ Config.
+
+
cases() ->
case ?OSTYPE() of
vxworks ->
@@ -138,7 +235,7 @@ cases() ->
test_v1_v2,
test_multi_threaded,
mib_storage,
- tickets
+ tickets1
];
_Else ->
[
@@ -149,7 +246,7 @@ cases() ->
test_v3,
test_multi_threaded,
mib_storage,
- tickets
+ tickets1
]
end.
@@ -5071,12 +5168,20 @@ reported_bugs_3(suite) ->
%% These are (ticket) test cases where the initiation has to be done
%% individually.
-tickets(suite) ->
+tickets1(suite) ->
[
otp_4394,
otp_7157
].
+
+tickets2(suite) ->
+ [
+ otp8395
+ ].
+
+
+
%%-----------------------------------------------------------------
%% Ticket: OTP-1128
%% Slogan: Bug in handling of createAndWait set-requests.
@@ -5624,10 +5729,9 @@ otp_4394_test1() ->
otp_7157(suite) ->
- {req, [], {conf,
- init_otp_7157,
- [otp_7157_test],
- finish_otp_7157}}.
+ Reqs = [],
+ Conf = [{conf, init_otp_7157, [otp_7157_test], finish_otp_7157}],
+ {req, Reqs, Conf}.
init_otp_7157(Config) when is_list(Config) ->
%% <CONDITIONAL-SKIP>
@@ -5691,6 +5795,337 @@ otp_7157_test1(MA) ->
%%-----------------------------------------------------------------
+%% Extra test cases
+%% These cases are started in the new way
+%%-----------------------------------------------------------------
+
+otp8395({init, Config}) when is_list(Config) ->
+ ?DBG("otp8395(init) -> entry with"
+ "~n Config: ~p", [Config]),
+
+ %% --
+ %% Start nodes
+ %%
+
+ {ok, AgentNode} = start_node(agent),
+ %% {ok, SubAgentNode} = start_node(sub_agent),
+ {ok, ManagerNode} = start_node(manager),
+
+ %% --
+ %% Mnesia init
+ %%
+
+ AgentDbDir = ?config(agent_db_dir, Config),
+ AgentMnesiaDir = filename:join([AgentDbDir, "mnesia"]),
+ mnesia_init(AgentNode, AgentMnesiaDir),
+
+%% SubAgentDir = ?config(sub_agent_dir, Config),
+%% SubAgentMnesiaDir = filename:join([SubAgentDir, "mnesia"]),
+%% mnesia_init(SubAgentNode, SubAgentMnesiaDir),
+
+ %% ok = mnesia_create_schema(AgentNode, [AgentNode, SubAgentNode]),
+ %% ok = mnesia:create_schema([AgentNode, SubAgentNode]),
+ mnesia_create_schema(AgentNode, [AgentNode]),
+
+ mnesia_start(AgentNode),
+ %% mnesia_start(SubAgentNode),
+
+ %% --
+ %% Host & IP
+ %%
+
+ AgentHost = ?HOSTNAME(AgentNode),
+ %% SubAgentHost = ?HPSTNAME(SubAgentNode),
+ ManagerHost = ?HOSTNAME(ManagerNode),
+
+ Host = snmp_test_lib:hostname(),
+ Ip = ?LOCALHOST(),
+ {ok, AgentIP0} = snmp_misc:ip(AgentHost),
+ AgentIP = tuple_to_list(AgentIP0),
+ %% {ok, SubAgentIP0} = snmp_misc:ip(SubAgentHost),
+ %% SubAgentIP = tuple_to_list(SubAgentIP0),
+ {ok, ManagerIP0} = snmp_misc:ip(ManagerHost),
+ ManagerIP = tuple_to_list(ManagerIP0),
+
+
+ %% --
+ %% Write agent config
+ %%
+
+ Vsns = [v1],
+ AgentConfDir = ?config(agent_conf_dir, Config),
+ ManagerConfDir = ?config(manager_top_dir, Config),
+ snmp_agent_test_lib:config(Vsns,
+ ManagerConfDir, AgentConfDir,
+ ManagerIP, AgentIP),
+
+
+ %% --
+ %% Start the agent
+ %%
+
+ Config2 = start_agent([{host, Host},
+ {ip, Ip},
+ {agent_node, AgentNode},
+ {agent_host, AgentHost},
+ {agent_ip, AgentIP},
+ %% {sub_agent_node, SubAgentNode},
+ %% {sub_agent_host, SubAgentHost},
+ %% {sub_agent_ip, SubAgentIP},
+ {manager_node, ManagerNode},
+ {manager_host, ManagerHost},
+ {manager_ip, ManagerIP}|Config]),
+
+ %% --
+ %% Create watchdog
+ %%
+
+ Dog = ?WD_START(?MINS(1)),
+
+ [{watchdog, Dog} | Config2];
+
+otp8395({fin, Config}) when is_list(Config) ->
+ ?DBG("otp8395(fin) -> entry with"
+ "~n Config: ~p", [Config]),
+
+ AgentNode = ?config(agent_node, Config),
+ ManagerNode = ?config(manager_node, Config),
+
+ %% -
+ %% Stop agent (this is the nice way to do it,
+ %% so logs and files can be closed in the proper way).
+ %%
+
+ AgentSup = ?config(agent_sup, Config),
+ ?DBG("otp8395(fin) -> stop (stand-alone) agent: ~p", [AgentSup]),
+ stop_stdalone_agent(AgentSup),
+
+ %% -
+ %% Stop mnesia
+ %%
+ ?DBG("otp8395(fin) -> stop mnesia", []),
+ mnesia_stop(AgentNode),
+
+
+ %% -
+ %% Stop the agent node
+ %%
+
+ ?DBG("otp8395(fin) -> stop agent node", []),
+ stop_node(AgentNode),
+
+
+%% SubAgentNode = ?config(sub_agent_node, Config),
+%% stop_node(SubAgentNode),
+
+
+ %% -
+ %% Stop the manager node
+ %%
+
+ ?DBG("otp8395(fin) -> stop manager node", []),
+ stop_node(ManagerNode),
+
+ Dog = ?config(watchdog, Config),
+ ?WD_STOP(Dog),
+ lists:keydelete(watchdog, 1, Config);
+
+otp8395(doc) ->
+ "OTP-8395 - ATL with sequence numbering. ";
+
+otp8395(Config) when is_list(Config) ->
+ ?DBG("otp8395 -> entry with"
+ "~n Config: ~p", [Config]),
+
+ ?SLEEP(1000),
+
+ %% This is just to dirty trick for the ***old*** test-code
+ put(mgr_node, ?config(manager_node, Config)),
+ put(mgr_dir, ?config(manager_top_dir, Config)),
+ put(mib_dir, ?config(mib_dir, Config)),
+ put(vsn, v1),
+ put(master_host, ?config(agent_host, Config)),
+ try_test(simple_standard_test),
+
+ ?SLEEP(1000),
+ AgentNode = ?config(agent_node, Config),
+ AgentLogDir = ?config(agent_log_dir, Config),
+ OutFile = filename:join([AgentLogDir, "otp8395.txt"]),
+ {ok, LogInfo} = rpc:call(AgentNode, snmpa, log_info, []),
+ ?DBG("otp8395 -> LogInfo: ~p", [LogInfo]),
+
+%% SyncRes = rpc:call(AgentNode, snmp, log_sync, [?audit_trail_log_name]),
+%% ?DBG("otp8395 -> SyncRes: ~p", [SyncRes]),
+
+ ok = agent_log_validation(AgentNode),
+ LTTRes =
+ rpc:call(AgentNode, snmpa, log_to_txt, [AgentLogDir, [], OutFile]),
+ ?DBG("otp8395 -> LTTRes: ~p", [LTTRes]),
+
+ ?SLEEP(1000),
+ ?DBG("otp8395 -> done", []),
+ ok.
+
+
+agent_log_validation(Node) ->
+ rpc:call(Node, ?MODULE, agent_log_validation, []).
+
+agent_log_validation() ->
+ put(sname, otp8308),
+ put(verbosity, trace),
+ snmp_log:validate(?audit_trail_log_name, true).
+
+mnesia_init(Node, Dir) ->
+ rpc:call(Node, ?MODULE, mnesia_init, [Dir]).
+
+mnesia_init(Dir) ->
+ ok = application:load(mnesia),
+ application_controller:set_env(mnesia, dir, Dir).
+
+mnesia_create_schema(Node, Nodes) ->
+ rpc:call(Node, mnesia, create_schema, [Nodes]).
+
+mnesia_start(Node) ->
+ rpc:call(Node, application, start, [mnesia]).
+
+mnesia_start() ->
+ application:start(mnesia).
+
+mnesia_stop(Node) ->
+ rpc:call(Node, application, stop, [mnesia]).
+
+mnesia_stop() ->
+ application:start(mnesia).
+
+
+start_agent(Config) ->
+ start_agent(Config, []).
+
+start_agent(Config, Opts) ->
+
+ %% Directories
+ ConfDir = ?config(agent_conf_dir, Config),
+ DbDir = ?config(agent_db_dir, Config),
+ LogDir = ?config(agent_log_dir, Config),
+
+ Vsns = [v1],
+
+ AgentConfig = process_agent_options(ConfDir, DbDir, LogDir, Vsns, Opts),
+
+ %% Nodes
+ AgentNode = ?config(agent_node, Config),
+ %% ManagerNode = ?config(manager_node, Config),
+
+ process_flag(trap_exit,true),
+
+ AgentTopSup = start_stdalone_agent(AgentNode, AgentConfig),
+
+ [{agent_sup, AgentTopSup} | Config].
+
+
+process_agent_options(ConfDir, DbDir, LogDir, Vsns, Opts) ->
+ Defaults =
+ [{agent_type, master},
+ {agent_verbosity, trace},
+ {priority, normal},
+ {versions, Vsns},
+ {db_dir, DbDir},
+ {mib_storage, ets},
+ {local_db, [{repair, true},
+ {auto_save, 5000},
+ {verbosity, log}]},
+ {error_report_module, snmpa_error_logger},
+ {config, [{dir, ConfDir},
+ {force_load, true},
+ {verbosity, trace}]},
+ {multi_threaded, true},
+ {mib_server, [{mibentry_override, false},
+ {trapentry_override, false},
+ {verbosity, info}]},
+ {target_cache, [{verbosity,info}]},
+ {symbolic_store, [{verbosity,log}]},
+ {note_store, [{timeout,30000}, {verbosity,log}]},
+ {net_if, [{module, snmpa_net_if},
+ {verbosity, trace},
+ {options, [{bind_to, false},
+ {no_reuse, false},
+ {req_limit, infinity}]}]},
+ {audit_trail_log, [{type, read_write},
+ {dir, LogDir},
+ {size, {10240,20}},
+ {repair, true},
+ {seqno, true}]}],
+
+ process_options(Defaults, Opts).
+
+process_options(Defaults, _Opts) ->
+ %% process_options(Defaults, Opts, []).
+ Defaults.
+
+%% process_options([], _Opts, Acc) ->
+%% lists:reverse(Acc);
+%% process_options([{Key, DefaultValue}|Defaults], Opts, Acc) ->
+%% case lists:keysearch(Key, 1, Opts) of
+%% {value, {Key, Value}} when is_list->
+
+
+snmp_app_env_init(Node, Entity, Conf) ->
+ rpc:call(Node, snmp_app_env_init, [Entity, Conf]).
+
+snmp_app_env_init(Entity, Conf) ->
+ application:unload(snmp),
+ application:load(snmp),
+ application:set_env(snmp, Entity, Conf).
+
+start_stdalone_agent(Node, Config) ->
+ rpc:call(Node, ?MODULE, start_stdalone_agent, [Config]).
+
+start_stdalone_agent(Config) ->
+ case snmpa_supervisor:start_link(normal, Config) of
+ {ok, AgentTopSup} ->
+ unlink(AgentTopSup),
+ AgentTopSup;
+ {error, {already_started, AgentTopSup}} ->
+ AgentTopSup
+ end.
+
+stop_stdalone_agent(Pid) when (node(Pid) =/= node()) ->
+ MRef = erlang:monitor(process, Pid),
+ rpc:call(node(Pid), ?MODULE, stop_stdalone_agent, [Pid]),
+ receive
+ {'DOWN', MRef, process, Pid, Info} ->
+ ?DBG("received expected DOWN message "
+ "regarding snmp agent supervisor: "
+ "~n Info: ~p", [Info]),
+ ok
+ after 5000 ->
+ ?DBG("no DOWN message "
+ "regarding snmp agent supervisor within time", []),
+ ok
+ end;
+stop_stdalone_agent(Pid) ->
+ ?DBG("attempting to terminate agent top-supervisor: ~p", [Pid]),
+ nkill(Pid, kill).
+
+
+nkill(Pid, Reason) ->
+ nkill(Pid, Reason, 10).
+
+nkill(Pid, Reason, N) when N > 0 ->
+ case (catch erlang:process_info(Pid)) of
+ Info when is_list(Info) ->
+ ?DBG("Info for process to kill: "
+ "~n Info: ~p", [Info]),
+ exit(Pid, Reason),
+ ?SLEEP(1000),
+ nkill(Pid, Reason, N-1);
+ _ ->
+ ?DBG("No process info => already dead?", []),
+ ok
+ end.
+
+
+%%-----------------------------------------------------------------
%% Slogan: info test
%%-----------------------------------------------------------------
diff --git a/lib/snmp/test/snmp_log_test.erl b/lib/snmp/test/snmp_log_test.erl
index b4694fd9ab..91bdc3e849 100644
--- a/lib/snmp/test/snmp_log_test.erl
+++ b/lib/snmp/test/snmp_log_test.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2003-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2003-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -45,20 +45,30 @@
all/1,
open_and_close/1,
open_write_and_close/1,
+ open_write_and_close1/1,
+ open_write_and_close2/1,
+ open_write_and_close3/1,
+ open_write_and_close4/1,
+ log_to_io/1,
log_to_io1/1,
log_to_io2/1,
+ log_to_txt/1,
log_to_txt1/1,
- log_to_txt2/1
+ log_to_txt2/1,
+ log_to_txt3/1
]).
+
%%----------------------------------------------------------------------
%% Internal exports
%%----------------------------------------------------------------------
-export([
log_writer_main/5,
- log_reader_main/1
+ log_reader_main/1,
+ next_seqno/2
]).
+
%%----------------------------------------------------------------------
%% Macros
%%----------------------------------------------------------------------
@@ -102,10 +112,32 @@ all(suite) ->
[
open_and_close,
open_write_and_close,
+ log_to_io,
+ log_to_txt
+ ].
+
+
+open_write_and_close(suite) ->
+ [
+ open_write_and_close1,
+ open_write_and_close2,
+ open_write_and_close3,
+ open_write_and_close4
+ ].
+
+
+log_to_io(suite) ->
+ [
log_to_io1,
- log_to_io2,
+ log_to_io2
+ ].
+
+
+log_to_txt(suite) ->
+ [
log_to_txt1,
- log_to_txt2
+ log_to_txt2,
+ log_to_txt3
].
@@ -132,24 +164,129 @@ open_and_close(Config) when is_list(Config) ->
%%======================================================================
-open_write_and_close(suite) -> [];
-open_write_and_close(Config) when is_list(Config) ->
- p(open_write_and_close),
- put(sname,open_write_and_close),
+open_write_and_close1(suite) ->
+ [];
+open_write_and_close1(doc) ->
+ "Open a plain (no sequence-numbering) log file";
+open_write_and_close1(Config) when is_list(Config) ->
+ p(open_write_and_close1),
+ put(sname,open_write_and_close1),
+ put(verbosity,trace),
+ ?DBG("open_write_and_close1 -> start", []),
+
+ SeqNoGen = none,
+ ?line ok = open_write_and_close(SeqNoGen, Config),
+
+ ?DBG("open_write_and_close1 -> done", []),
+ ok.
+
+
+%%======================================================================
+
+open_write_and_close2(suite) ->
+ [];
+open_write_and_close2(doc) ->
+ "Open a log file with sequence-numbering explicitly disabled";
+open_write_and_close2(Config) when is_list(Config) ->
+ p(open_write_and_close2),
+ put(sname,open_write_and_close2),
+ put(verbosity,trace),
+ ?DBG("open_write_and_close2 -> start", []),
+
+ SeqNoGen = disabled,
+ ?line ok = open_write_and_close(SeqNoGen, Config),
+
+ ?DBG("open_write_and_close2 -> done", []),
+ ok.
+
+
+%%======================================================================
+
+open_write_and_close3(suite) ->
+ [];
+open_write_and_close3(doc) ->
+ "Open a log file with sequence-numbering using MFA";
+open_write_and_close3(Config) when is_list(Config) ->
+ p(open_write_and_close3),
+ put(sname,open_write_and_close3),
+ put(verbosity,trace),
+ ?DBG("open_write_and_close2 -> start", []),
+
+ seqno_init(),
+ SeqNoGen = {?MODULE, next_seqno, [10, 100]},
+ ?line ok = open_write_and_close(SeqNoGen, Config),
+ seqno_finish(),
+
+ ?DBG("open_write_and_close2 -> done", []),
+ ok.
+
+
+%%======================================================================
+
+open_write_and_close4(suite) ->
+ [];
+open_write_and_close4(doc) ->
+ "Open a log file with sequence-numbering using fun";
+open_write_and_close4(Config) when is_list(Config) ->
+ p(open_write_and_close4),
+ put(sname,open_write_and_close4),
put(verbosity,trace),
- ?DBG("open_write_and_close -> start", []),
+ ?DBG("open_write_and_close2 -> start", []),
+
+ seqno_init(),
+ SeqNoGen = fun() -> next_seqno(10, 100) end,
+ ?line ok = open_write_and_close(SeqNoGen, Config),
+ seqno_finish(),
+
+ ?DBG("open_write_and_close2 -> done", []),
+ ok.
+
+
+%%======================================================================
+
+seqno_init() ->
+ ets:new(snmp_log_test_seqno_tab, [named_table, set, protected]).
+
+seqno_finish() ->
+ ets:delete(snmp_log_test_seqno_tab).
+
+next_seqno(Initial, Max) ->
+ Key = seqno,
+ Position = 2,
+ Increment = 1,
+ Threshold = Max,
+ SetValue = Initial,
+ UpdateOp = {Position, Increment, Threshold, SetValue},
+ Tab = snmp_log_test_seqno_tab,
+ case (catch ets:update_counter(Tab, Key, UpdateOp)) of
+ {'EXIT', {badarg, _}} ->
+ ets:insert(Tab, {seqno, Initial}),
+ Initial;
+ Next when is_integer(Next) ->
+ Next
+ end.
+
+open_write_and_close(SeqNoGen, Config) ->
+ ?DBG("open_write_and_close1 -> start", []),
Dir = ?config(log_dir, Config),
Name = "snmp_test",
File = join(Dir, "snmp_test.log"),
Size = {1024, 10},
Repair = true,
?DBG("open_write_and_close -> create log", []),
- ?line {ok, Log} = snmp_log:create(Name, File, Size, Repair),
+
+ ?line {ok, Log} =
+ case SeqNoGen of
+ none ->
+ snmp_log:create(Name, File, Size, Repair);
+ _ ->
+ snmp_log:create(Name, File, SeqNoGen, Size, Repair)
+ end,
Vsn = 'version-2',
Community = "all-rights",
- ?DBG("open_write_and_close -> create messages to log", []),
+ ?DBG("open_write_and_close1 -> create messages to log", []),
%% A request
?line Req = get_next_request(Vsn, Community, [1,1], 1, 235779012),
@@ -162,7 +299,7 @@ open_write_and_close(Config) when is_list(Config) ->
Msgs = lists:flatten(lists:duplicate(1002,[Req,Rep])),
%% And now log them:
- ?DBG("open_write_and_close -> log ~p messages, ~p bytes",
+ ?DBG("open_write_and_close1 -> log ~p messages, ~p bytes",
[length(Msgs), size(list_to_binary(Msgs))]),
Addr = ?LOCALHOST(),
Port = 162,
@@ -172,11 +309,11 @@ open_write_and_close(Config) when is_list(Config) ->
lists:foreach(Logger, Msgs),
check_notify(),
- ?DBG("open_write_and_close -> display info", []),
+ ?DBG("open_write_and_close1 -> display info", []),
?line {ok, Info} = snmp_log:info(Log),
display_info(Info),
- ?DBG("open_write_and_close -> close log", []),
+ ?DBG("open_write_and_close1 -> close log", []),
?line ok = snmp_log:close(Log),
?DBG("open_write_and_close -> done", []),
@@ -308,18 +445,58 @@ log_to_txt1(Config) when is_list(Config) ->
put(sname,l2t1),
put(verbosity,trace),
?DBG("log_to_txt1 -> start", []),
+
+ Name = "snmp_test_l2t1",
+ SeqNoGen = disabled,
+ ?line ok = log_to_txt(Name, SeqNoGen, Config),
+
+ ?DBG("log_to_txt1 -> done", []),
+ ok.
+
+
+
+%%======================================================================
+
+log_to_txt2(suite) -> [];
+log_to_txt2(Config) when is_list(Config) ->
+ p(log_to_txt2),
+ put(sname,l2t2),
+ put(verbosity,trace),
+ ?DBG("log_to_txt2 -> start", []),
+
+ Name = "snmp_test_l2t2",
+ seqno_init(),
+ SeqNoGen = {?MODULE, next_seqno, [1, 100]},
+ ?line ok = log_to_txt(Name, SeqNoGen, Config),
+ seqno_finish(),
+
+ ?DBG("log_to_txt2 -> done", []),
+ ok.
+
+
+
+%%======================================================================
+
+log_to_txt(Name, SeqNoGen, Config) when is_list(Config) ->
+ ?DBG("log_to_txt -> entry", []),
Dir = ?config(log_dir, Config),
- Name = "snmp_test_l2t1",
- File = join(Dir, "snmp_test_l2t1.log"),
+ File = join(Dir, Name ++ ".log"),
Size = {10240, 10},
Repair = true,
- ?DBG("log_to_txt1 -> create log", []),
- ?line {ok, Log} = snmp_log:create(Name, File, Size, Repair),
- ?DBG("log_to_txt1 -> create messages to log", []),
+ ?DBG("log_to_txt -> create log", []),
+ ?line {ok, Log} =
+ case SeqNoGen of
+ none ->
+ snmp_log:create(Name, File, Size, Repair);
+ _ ->
+ snmp_log:create(Name, File, SeqNoGen, Size, Repair)
+ end,
+
+ ?DBG("log_to_txt -> create messages to log", []),
Msgs = messages(),
- ?DBG("log_to_txt1 -> create logger funs", []),
+ ?DBG("log_to_txt -> create logger funs", []),
Addr = ?LOCALHOST(),
Port = 162,
Logger = fun(Packet) ->
@@ -332,42 +509,42 @@ log_to_txt1(Config) when is_list(Config) ->
end,
To = lists:duplicate(20, 5000),
- ?DBG("log_to_txt1 -> log the messages", []),
+ ?DBG("log_to_txt -> log the messages", []),
Start = calendar:local_time(),
lists:foreach(BatchLogger, To),
Stop = calendar:local_time(),
- ?DBG("log_to_txt1 -> display info", []),
+ ?DBG("log_to_txt -> display info", []),
?line {ok, Info} = snmp_log:info(Log),
display_info(Info),
Out1 = join(Dir, "snmp_text-1.txt"),
- ?DBG("log_to_txt1 -> do the convert to a text file when"
+ ?DBG("log_to_txt -> do the convert to a text file when"
"~n Out1: ~p", [Out1]),
?line ok = snmp:log_to_txt(Dir, [], Out1, Log, File),
?line {ok, #file_info{size = Size1}} = file:read_file_info(Out1),
- ?DBG("log_to_txt1 -> text file size: ~p", [Size1]),
+ ?DBG("log_to_txt -> text file size: ~p", [Size1]),
validate_size(Size1),
Out2 = join(Dir, "snmp_text-2.txt"),
- ?DBG("log_to_txt1 -> do the convert to a text file when"
+ ?DBG("log_to_txt -> do the convert to a text file when"
"~n Start: ~p"
"~n Stop: ~p"
"~n Out2: ~p", [Start, Stop, Out2]),
?line ok = snmp:log_to_txt(Dir, [], Out2, Log, File, Start, Stop),
?line {ok, #file_info{size = Size2}} = file:read_file_info(Out2),
- ?DBG("log_to_txt1 -> text file size: ~p", [Size2]),
+ ?DBG("log_to_txt -> text file size: ~p", [Size2]),
validate_size(Size2, {le, Size1}),
%% Calculate new start / stop times...
GStart = calendar:datetime_to_gregorian_seconds(Start),
- ?DBG("log_to_txt1 -> GStart: ~p", [GStart]),
+ ?DBG("log_to_txt -> GStart: ~p", [GStart]),
GStop = calendar:datetime_to_gregorian_seconds(Stop),
- ?DBG("log_to_txt1 -> GStop: ~p", [GStop]),
+ ?DBG("log_to_txt -> GStop: ~p", [GStop]),
Diff4 = (GStop - GStart) div 4,
- ?DBG("log_to_txt1 -> Diff4: ~p", [Diff4]),
+ ?DBG("log_to_txt -> Diff4: ~p", [Diff4]),
GStart2 = GStart + Diff4,
GStop2 = GStop - Diff4,
if
@@ -381,20 +558,20 @@ log_to_txt1(Config) when is_list(Config) ->
Stop2 = calendar:gregorian_seconds_to_datetime(GStop2),
Out3 = join(Dir, "snmp_text-3.txt"),
- ?DBG("log_to_txt1 -> do the convert to a text file when"
+ ?DBG("log_to_txt -> do the convert to a text file when"
"~n Start2: ~p"
"~n Stop2: ~p"
"~n Out3: ~p", [Start2, Stop2, Out3]),
?line ok = snmp:log_to_txt(Dir, [], Out3, Log, File, Start2, Stop2),
?line {ok, #file_info{size = Size3}} = file:read_file_info(Out3),
- ?DBG("log_to_txt1 -> text file size: ~p", [Size3]),
+ ?DBG("log_to_txt -> text file size: ~p", [Size3]),
validate_size(Size3, {l, Size1}),
- ?DBG("log_to_txt1 -> close log", []),
+ ?DBG("log_to_txt -> close log", []),
?line ok = snmp_log:close(Log),
- ?DBG("log_to_txt1 -> done", []),
+ ?DBG("log_to_txt -> done", []),
ok.
@@ -405,19 +582,21 @@ log_to_txt1(Config) when is_list(Config) ->
%%
%% Test: ts:run(snmp, snmp_log_test, log_to_txt2, [batch]).
-log_to_txt2(suite) -> [];
-log_to_txt2(doc) -> "Log to txt file from a different process than which "
- "opened and wrote the log";
-log_to_txt2(Config) when is_list(Config) ->
+log_to_txt3(suite) ->
+ [];
+log_to_txt3(doc) ->
+ "Log to txt file from a different process than which "
+ "opened and wrote the log";
+log_to_txt3(Config) when is_list(Config) ->
process_flag(trap_exit, true),
- p(log_to_txt2),
- put(sname,l2t2),
+ p(log_to_txt3),
+ put(sname,l2t3),
put(verbosity,trace),
- ?DBG("log_to_txt2 -> start", []),
+ ?DBG("log_to_txt3 -> start", []),
Dir = ?config(log_dir, Config),
- Name = "snmp_test_l2t2",
- LogFile = join(Dir, "snmp_test_l2t2.log"),
- TxtFile = join(Dir, "snmp_test_l2t2.txt"),
+ Name = "snmp_test_l2t3",
+ LogFile = join(Dir, "snmp_test_l2t3.log"),
+ TxtFile = join(Dir, "snmp_test_l2t3.txt"),
Meg = 1024*1024,
Size = {10*Meg, 10},
Repair = true,
@@ -425,22 +604,22 @@ log_to_txt2(Config) when is_list(Config) ->
StdMibDir = filename:join(code:priv_dir(snmp), "mibs") ++ "/",
Mibs = [join(StdMibDir, "SNMPv2-MIB")],
- ?DBG("log_to_txt2 -> create log writer process", []),
+ ?DBG("log_to_txt3 -> create log writer process", []),
?line {ok, Log, Logger} = log_writer_start(Name, LogFile, Size, Repair),
- ?DBG("log_to_txt2 -> create log reader process", []),
+ ?DBG("log_to_txt3 -> create log reader process", []),
?line {ok, Reader} = log_reader_start(),
- ?DBG("log_to_txt2 -> wait some time", []),
+ ?DBG("log_to_txt3 -> wait some time", []),
?SLEEP(5000),
- ?DBG("log_to_txt2 -> display log info", []),
+ ?DBG("log_to_txt3 -> display log info", []),
?line log_writer_info(Logger),
- ?DBG("log_to_txt2 -> instruct the log writer to sleep some", []),
+ ?DBG("log_to_txt3 -> instruct the log writer to sleep some", []),
?line ok = log_writer_sleep(Logger, 5000),
- ?DBG("log_to_txt2 -> instruct the log reader to log to txt", []),
+ ?DBG("log_to_txt3 -> instruct the log reader to log to txt", []),
Res =
log_reader_log_to(Reader,
fun() ->
@@ -457,25 +636,25 @@ log_to_txt2(Config) when is_list(Config) ->
case Res of
{ok, Info} ->
- ?DBG("log_to_txt2 -> ~n Info: ~p", [Info]),
+ ?DBG("log_to_txt3 -> ~n Info: ~p", [Info]),
?line {ok, #file_info{size = FileSize}} =
file:read_file_info(TxtFile),
- ?DBG("log_to_txt2 -> text file size: ~p", [FileSize]),
+ ?DBG("log_to_txt3 -> text file size: ~p", [FileSize]),
validate_size(FileSize);
{Error, Info} ->
- ?DBG("log_to_txt2 -> log to txt failed: "
+ ?DBG("log_to_txt3 -> log to txt failed: "
"~n Error: ~p"
"~n Info: ~p", [Error, Info]),
?line ?FAIL({log_lo_txt_failed, Error, Info})
end,
- ?DBG("log_to_txt2 -> instruct the log writer to stop", []),
+ ?DBG("log_to_txt3 -> instruct the log writer to stop", []),
?line log_writer_stop(Logger),
- ?DBG("log_to_txt2 -> instruct the log reader to stop", []),
+ ?DBG("log_to_txt3 -> instruct the log reader to stop", []),
?line log_reader_stop(Reader),
- ?DBG("log_to_txt2 -> done", []),
+ ?DBG("log_to_txt3 -> done", []),
ok.
diff --git a/lib/snmp/test/snmp_manager_config_test.erl b/lib/snmp/test/snmp_manager_config_test.erl
index 51325996e6..fcb3d7e30c 100644
--- a/lib/snmp/test/snmp_manager_config_test.erl
+++ b/lib/snmp/test/snmp_manager_config_test.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2004-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2004-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -86,7 +86,12 @@
stats_create_and_increment/1,
tickets/1,
- otp_7219/1
+ otp_7219/1,
+ otp_8395/1,
+ otp_8395_1/1,
+ otp_8395_2/1,
+ otp_8395_3/1,
+ otp_8395_4/1
]).
@@ -2295,7 +2300,8 @@ loop(N, _, F) when (N > 0) andalso is_function(F) ->
tickets(suite) ->
[
- otp_7219
+ otp_7219,
+ otp_8395
].
@@ -2347,6 +2353,170 @@ otp_7219(Config) when is_list(Config) ->
ok.
+
+otp_8395(suite) ->
+ [
+ otp_8395_1,
+ otp_8395_2,
+ otp_8395_3,
+ otp_8395_4
+ ].
+
+otp_8395_1(suite) -> [];
+otp_8395_1(doc) ->
+ "OTP-8395(1)";
+otp_8395_1(Conf) when is_list(Conf) ->
+ put(tname, otp_8395_1),
+ p("start"),
+ process_flag(trap_exit, true),
+ otp8395(Conf, false, ok),
+ ok.
+
+otp_8395_2(suite) -> [];
+otp_8395_2(doc) ->
+ "OTP-8395(2)";
+otp_8395_2(Conf) when is_list(Conf) ->
+ put(tname, otp_8395_2),
+ p("start"),
+ process_flag(trap_exit, true),
+ otp8395(Conf, true, ok),
+ ok.
+
+otp_8395_3(suite) -> [];
+otp_8395_3(doc) ->
+ "OTP-8395(3)";
+otp_8395_3(Conf) when is_list(Conf) ->
+ put(tname, otp_8395_3),
+ p("start"),
+ process_flag(trap_exit, true),
+ otp8395(Conf, gurka, error),
+ ok.
+
+otp8395(Conf, SeqNoVal, Expect) ->
+ ConfDir = ?config(manager_conf_dir, Conf),
+ DbDir = ?config(manager_db_dir, Conf),
+ LogDir = ?config(manager_log_dir, Conf),
+ StdMibDir = filename:join(code:priv_dir(snmp), "mibs") ++ "/",
+
+ write_manager_conf(ConfDir),
+
+ %% Third set of options (no versions):
+ p("all options"),
+ NetIfOpts = [{module, snmpm_net_if},
+ {verbosity, trace},
+ {options, [{recbuf, 30000},
+ {bind_to, false},
+ {no_reuse, false}]}],
+ ServerOpts = [{timeout, 10000}, {verbosity, trace}],
+ NoteStoreOpts = [{timeout, 20000}, {verbosity, trace}],
+ ConfigOpts = [{dir, ConfDir}, {verbosity, trace}, {db_dir, DbDir}],
+ Mibs = [join(StdMibDir, "SNMP-NOTIFICATION-MIB"),
+ join(StdMibDir, "SNMP-USER-BASED-SM-MIB")],
+ Prio = normal,
+ ATL = [{type, read_write},
+ {dir, LogDir},
+ {size, {10,10240}},
+ {repair, true},
+ {seqno, SeqNoVal}],
+ Vsns = [v1,v2,v3],
+ Opts = [{config, ConfigOpts},
+ {net_if, NetIfOpts},
+ {server, ServerOpts},
+ {note_store, NoteStoreOpts},
+ {audit_trail_log, ATL},
+ {priority, Prio},
+ {mibs, Mibs},
+ {versions, Vsns}],
+
+ case config_start(Opts) of
+ {ok, _Pid} when (Expect =:= ok) ->
+ ?line ok = config_stop(),
+ ok;
+ {ok, _Pid} when (Expect =/= ok) ->
+ config_stop(),
+ exit({unexpected_started_config, SeqNoVal});
+ _Error when (Expect =/= ok) ->
+ ok;
+ Error when (Expect =:= ok) ->
+ exit({unexpected_failed_starting_config, SeqNoVal, Error})
+ end,
+ p("done"),
+ ok.
+
+
+otp_8395_4(suite) -> [];
+otp_8395_4(doc) ->
+ "OTP-8395(4)";
+otp_8395_4(Conf) when is_list(Conf) ->
+ put(tname, otp_8395_4),
+ p("start"),
+ process_flag(trap_exit, true),
+
+ snmp:print_version_info(),
+
+ ConfDir = ?config(manager_conf_dir, Conf),
+ DbDir = ?config(manager_db_dir, Conf),
+ LogDir = ?config(manager_log_dir, Conf),
+ StdMibDir = filename:join(code:priv_dir(snmp), "mibs") ++ "/",
+
+ write_manager_conf(ConfDir),
+
+ %% Third set of options (no versions):
+ p("all options"),
+ NetIfOpts = [{module, snmpm_net_if},
+ {verbosity, trace},
+ {options, [{recbuf, 30000},
+ {bind_to, false},
+ {no_reuse, false}]}],
+ ServerOpts = [{timeout, 10000}, {verbosity, trace}],
+ NoteStoreOpts = [{timeout, 20000}, {verbosity, trace}],
+ ConfigOpts = [{dir, ConfDir}, {verbosity, trace}, {db_dir, DbDir}],
+ Mibs = [join(StdMibDir, "SNMP-NOTIFICATION-MIB"),
+ join(StdMibDir, "SNMP-USER-BASED-SM-MIB")],
+ Prio = normal,
+ ATL = [{type, read_write},
+ {dir, LogDir},
+ {size, {10,10240}},
+ {repair, true},
+ {seqno, true}],
+ Vsns = [v1,v2,v3],
+ Opts = [{config, ConfigOpts},
+ {net_if, NetIfOpts},
+ {server, ServerOpts},
+ {note_store, NoteStoreOpts},
+ {audit_trail_log, ATL},
+ {priority, Prio},
+ {mibs, Mibs},
+ {versions, Vsns}],
+
+ ?line {ok, _Pid} = config_start(Opts),
+
+ Counter = otp_8395_4,
+ Initial = 10,
+ Increment = 2,
+ Max = 20,
+
+ %% At this call the counter does *not* exist. The call creates
+ %% it with the initial value!
+
+ Val1 = Initial,
+ Val1 = otp8395_incr_counter(Counter, Initial, Increment, Max),
+
+ %% Now it exist, make sure another call does the expected increment
+
+ Val2 = Initial + Increment,
+ Val2 = otp8395_incr_counter(Counter, Initial, Increment, Max),
+
+ ?line ok = config_stop(),
+
+ p("done"),
+ ok.
+
+
+otp8395_incr_counter(Counter, Initial, Increment, Max) ->
+ snmpm_config:increment_counter(Counter, Initial, Increment, Max).
+
+
%%======================================================================
%% Internal functions
%%======================================================================
diff --git a/lib/snmp/test/snmp_manager_test.erl b/lib/snmp/test/snmp_manager_test.erl
index 31cc095349..518b8b34de 100644
--- a/lib/snmp/test/snmp_manager_test.erl
+++ b/lib/snmp/test/snmp_manager_test.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2003-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2003-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -111,7 +111,9 @@
tickets/1,
otp8015/1,
- otp8015_1/1
+ otp8015_1/1,
+ otp8395/1,
+ otp8395_1/1
]).
@@ -240,18 +242,22 @@ init_per_testcase3(Case, Config) ->
simple_async_set2,
simple_sync_get_bulk2,
simple_async_get_bulk2,
- misc_async2
+ misc_async2,
+ otp8395_1
],
- Cases = [
- trap1,
- trap2,
- inform1,
- inform2,
- inform3,
- inform4,
- inform_swarm,
- report
- ] ++ OldApiCases ++ NewApiCases,
+ Cases =
+ [
+ trap1,
+ trap2,
+ inform1,
+ inform2,
+ inform3,
+ inform4,
+ inform_swarm,
+ report
+ ] ++
+ OldApiCases ++
+ NewApiCases,
case lists:member(Case, Cases) of
true ->
NoAutoInformCases = [inform1, inform2, inform3, inform_swarm],
@@ -265,6 +271,8 @@ init_per_testcase3(Case, Config) ->
{agent_verbosity, info},
{agent_net_if_verbosity, info}],
Verb ++ Config;
+ Case =:= otp8395_1 ->
+ [{manager_atl_seqno, true} | Config];
true ->
Config
end,
@@ -315,18 +323,22 @@ fin_per_testcase2(Case, Config) ->
simple_async_set2,
simple_sync_get_bulk2,
simple_async_get_bulk2,
- misc_async2
+ misc_async2,
+ otp8395_1
],
- Cases = [
- trap1,
- trap2,
- inform1,
- inform2,
- inform3,
- inform4,
- inform_swarm,
- report
- ] ++ OldApiCases ++ NewApiCases,
+ Cases =
+ [
+ trap1,
+ trap2,
+ inform1,
+ inform2,
+ inform3,
+ inform4,
+ inform_swarm,
+ report
+ ] ++
+ OldApiCases ++
+ NewApiCases,
case lists:member(Case, Cases) of
true ->
Conf1 = case lists:member(Case, NewApiCases) of
@@ -446,7 +458,8 @@ event_tests(suite) ->
tickets(suite) ->
[
- otp8015
+ otp8015,
+ otp8395
].
otp8015(suite) ->
@@ -454,6 +467,11 @@ otp8015(suite) ->
otp8015_1
].
+otp8395(suite) ->
+ [
+ otp8395_1
+ ].
+
%%======================================================================
%% Test functions
@@ -1372,6 +1390,9 @@ simple_sync_get2(suite) -> [];
simple_sync_get2(Config) when is_list(Config) ->
process_flag(trap_exit, true),
put(tname, ssg2),
+ do_simple_get(Config).
+
+do_simple_get(Config) ->
p("starting with Config: ~p~n", [Config]),
Node = ?config(manager_node, Config),
@@ -1386,7 +1407,7 @@ simple_sync_get2(Config) when is_list(Config) ->
Oids2 = [[sysObjectID, 0], [sysDescr, 0], [sysUpTime, 0]],
?line ok = do_simple_get(Node, TargetName, Oids2),
ok.
-
+
do_simple_get(Node, TargetName, Oids) ->
?line {ok, Reply, Rem} = mgr_user_sync_get(Node, TargetName, Oids),
@@ -4438,6 +4459,16 @@ otp8015_1(Config) when is_list(Config) ->
%%======================================================================
+
+otp8395_1(doc) -> ["OTP-8395:1 - simple get with ATL sequence numbering."];
+otp8395_1(suite) -> [];
+otp8395_1(Config) when is_list(Config) ->
+ process_flag(trap_exit, true),
+ put(tname, otp8395_1),
+ do_simple_get(Config).
+
+
+%%======================================================================
%% async snmp utility functions
%%======================================================================
@@ -5063,12 +5094,15 @@ start_manager(Node, Vsns, Conf0, Opts) ->
ServerVerbosity = get_opt(manager_server_verbosity, Conf0, trace),
NetIfVerbosity = get_opt(manager_net_if_verbosity, Conf0, trace),
+ AtlSeqNo = get_opt(manager_atl_seqno, Conf0, false),
+
Env = [{versions, Vsns},
{inform_request_behaviour, IRB},
{audit_trail_log, [{type, read_write},
{dir, AtlDir},
{size, {10240, 10}},
- {repair, true}]},
+ {repair, true},
+ {seqno, AtlSeqNo}]},
{config, [{dir, ConfDir},
{db_dir, DbDir},
{verbosity, ConfigVerbosity}]},
diff --git a/lib/snmp/test/snmp_test_mgr.erl b/lib/snmp/test/snmp_test_mgr.erl
index 085dc8600f..84bdc6b04f 100644
--- a/lib/snmp/test/snmp_test_mgr.erl
+++ b/lib/snmp/test/snmp_test_mgr.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
diff --git a/lib/snmp/vsn.mk b/lib/snmp/vsn.mk
index 9931bb90f4..d78a2cec7a 100644
--- a/lib/snmp/vsn.mk
+++ b/lib/snmp/vsn.mk
@@ -1,27 +1,29 @@
#-*-makefile-*- ; force emacs to enter makefile-mode
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 1997-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 1997-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
-SNMP_VSN = 4.15.0.1
-PRE_VSN =
+SNMP_VSN = 4.16
+PRE_VSN =-p01
APP_VSN = "snmp-$(SNMP_VSN)$(PRE_VSN)"
-TICKETS = OTP-8229 OTP-8249
+TICKETS = OTP-8395
+
+TICKETS_4_15 = OTP-8229 OTP-8249
TICKETS_4_14 = OTP-8223 OTP-8228 OTP-8237
diff --git a/lib/ssl/c_src/Makefile.in b/lib/ssl/c_src/Makefile.in
index bd1b2f9375..49a209f2eb 100644
--- a/lib/ssl/c_src/Makefile.in
+++ b/lib/ssl/c_src/Makefile.in
@@ -1,19 +1,19 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 1999-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 1999-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
#
@@ -106,6 +106,7 @@ SSL_MAKEFILE =
endif
CC_R_FLAG=@CFLAG_RUNTIME_LIBRARY_PATH@
+
ifeq ($(findstring @,$(CC_R_FLAG)),@)
# Old erts configure used which hasn't replaced @CFLAG_RUNTIME_LIBRARY_PATH@;
# we try our best here instead...
@@ -127,6 +128,12 @@ else
CC_R_OPT = $(CC_R_FLAG)$(SSL_LIBDIR)
endif
+SSL_CC_RUNTIME_LIBRARY_PATH=@SSL_CC_RUNTIME_LIBRARY_PATH@
+# Sigh...
+ifeq ($(findstring @,$(SSL_CC_RUNTIME_LIBRARY_PATH)),@)
+SSL_CC_RUNTIME_LIBRARY_PATH = $(CC_R_OPT)
+endif
+
SSL_LINK_LIB=-L$(SSL_LIBDIR) -lssl -lcrypto
else
# not dynamic crypto lib (default from R11B-5)
@@ -134,6 +141,7 @@ NEED_KERBEROS=@SSL_LINK_WITH_KERBEROS@
NEED_ZLIB=@SSL_LINK_WITH_ZLIB@
SSL_MAKEFILE =
CC_R_OPT =
+SSL_CC_RUNTIME_LIBRARY_PATH=
SSL_LINK_LIB = $(SSL_LIBDIR)/libssl.a $(SSL_LIBDIR)/libcrypto.a
ifeq ($(NEED_KERBEROS),yes)
SSL_LINK_LIB += @STATIC_KERBEROS_LIBS@
@@ -163,11 +171,11 @@ $(OBJDIR)/%$(obj): %.c
# Unix
$(BINDIR)/ssl_esock: $(OBJS)
- $(CC) $(CC_R_OPT) $(PLAIN_CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(SSL_LINK_LIB)
+ $(CC) $(PLAIN_CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) $(SSL_CC_RUNTIME_LIBRARY_PATH) $(SSL_LINK_LIB)
# Win32/Cygwin
$(BINDIR)/ssl_esock.exe: $(OBJS)
- $(LD) -L$(SSL_LIBDIR) -o $@ $^ -lwsock32 -llibeay32 -lssleay32
+ $(LD) $(SSL_CC_RUNTIME_LIBRARY_PATH) -L$(SSL_LIBDIR) -o $@ $^ -lwsock32 -llibeay32 -lssleay32
# Unix only, and only when linking statically
$(SSL_MAKEFILE):
diff --git a/lib/stdlib/doc/src/epp.xml b/lib/stdlib/doc/src/epp.xml
index 455d9dc124..e6b48b270a 100644
--- a/lib/stdlib/doc/src/epp.xml
+++ b/lib/stdlib/doc/src/epp.xml
@@ -4,23 +4,21 @@
<erlref>
<header>
<copyright>
- <year>1996</year>
- <year>2007</year>
- <holder>Ericsson AB, All Rights Reserved</holder>
+ <year>1996</year><year>2010</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
- The contents of this file are subject to the Erlang Public License,
- Version 1.1, (the "License"); you may not use this file except in
- compliance with the License. You should have received a copy of the
- Erlang Public License along with this software. If not, it can be
- retrieved online at http://www.erlang.org/.
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and limitations
- under the License.
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
- The Initial Developer of the Original Code is Ericsson AB.
</legalnotice>
<title>epp</title>
@@ -112,7 +110,7 @@
<p>A string which describes the error is obtained with the following call:
</p>
<code type="none">
-apply(Module, format_error, ErrorDescriptor) </code>
+ Module:format_error(ErrorDescriptor) </code>
</section>
<section>
diff --git a/lib/stdlib/doc/src/erl_lint.xml b/lib/stdlib/doc/src/erl_lint.xml
index e339f484cc..6a7d37765c 100644
--- a/lib/stdlib/doc/src/erl_lint.xml
+++ b/lib/stdlib/doc/src/erl_lint.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>erl_lint</title>
@@ -147,7 +147,7 @@
<p>A string which describes the error is obtained with the following call:
</p>
<code type="none">
-apply(Module, format_error, ErrorDescriptor) </code>
+ Module:format_error(ErrorDescriptor) </code>
</section>
<section>
diff --git a/lib/stdlib/doc/src/erl_parse.xml b/lib/stdlib/doc/src/erl_parse.xml
index 739fde7a40..ae8a8afd5c 100644
--- a/lib/stdlib/doc/src/erl_parse.xml
+++ b/lib/stdlib/doc/src/erl_parse.xml
@@ -4,23 +4,21 @@
<erlref>
<header>
<copyright>
- <year>1996</year>
- <year>2007</year>
- <holder>Ericsson AB, All Rights Reserved</holder>
+ <year>1996</year><year>2010</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
- The contents of this file are subject to the Erlang Public License,
- Version 1.1, (the "License"); you may not use this file except in
- compliance with the License. You should have received a copy of the
- Erlang Public License along with this software. If not, it can be
- retrieved online at http://www.erlang.org/.
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and limitations
- under the License.
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
- The Initial Developer of the Original Code is Ericsson AB.
</legalnotice>
<title>erl_parse</title>
@@ -188,7 +186,7 @@
<p>A string which describes the error is obtained with the following call:
</p>
<code type="none">
-apply(Module, format_error, ErrorDescriptor) </code>
+ Module:format_error(ErrorDescriptor) </code>
</section>
<section>
diff --git a/lib/stdlib/doc/src/file_sorter.xml b/lib/stdlib/doc/src/file_sorter.xml
index b3f4da294c..ccb32659a0 100644
--- a/lib/stdlib/doc/src/file_sorter.xml
+++ b/lib/stdlib/doc/src/file_sorter.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2001</year><year>2009</year>
+ <year>2001</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>file_sorter</title>
@@ -83,13 +83,15 @@
An ordering function is antisymmetric, transitive and total.
<c>Fun(A,&nbsp;B)</c> should return <c>true</c> if <c>A</c>
comes before <c>B</c> in the ordering, <c>false</c> otherwise.
+ An example of a typical ordering function is less than or equal
+ to, <c>=&lt;/2</c>.
Using an ordering function will slow down the sort
considerably. The <c>keysort</c>, <c>keymerge</c> and
<c>keycheck</c> functions do not accept ordering functions.
</item>
<item><c>{unique, bool()}</c>. When sorting or merging files,
- only the first of a sequence of terms that compare equal is
- output if this option is set to <c>true</c>. The default
+ only the first of a sequence of terms that compare equal (<c>==</c>)
+ is output if this option is set to <c>true</c>. The default
value is <c>false</c> which implies that all terms that
compare equal are output. When checking files for
sortedness, a check that no pair of consecutive terms
@@ -301,7 +303,7 @@ Value = Term</pre>
<desc>
<p>Sorts tuples on files. The sort is performed on the
element(s) mentioned in <c>KeyPos</c>. If two tuples
- compare equal on one element, next element according to
+ compare equal (<c>==</c>) on one element, next element according to
<c>KeyPos</c> is compared. The sort is stable.
</p>
<p><c>keysort(N, FileName)</c> is equivalent to
diff --git a/lib/stdlib/doc/src/gb_sets.xml b/lib/stdlib/doc/src/gb_sets.xml
index accec623b9..60d8bcbfa3 100644
--- a/lib/stdlib/doc/src/gb_sets.xml
+++ b/lib/stdlib/doc/src/gb_sets.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2001</year><year>2009</year>
+ <year>2001</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>gb_sets</title>
@@ -34,6 +34,8 @@
General Balanced Trees. This can be much more efficient than
using ordered lists, for larger sets, but depends on the
application.</p>
+ <p>This module considers two elements as different if and only if
+ they do not compare equal (<c>==</c>).</p>
</description>
<section>
diff --git a/lib/stdlib/doc/src/gb_trees.xml b/lib/stdlib/doc/src/gb_trees.xml
index 2bf18138c0..94f40c28bd 100644
--- a/lib/stdlib/doc/src/gb_trees.xml
+++ b/lib/stdlib/doc/src/gb_trees.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2001</year><year>2009</year>
+ <year>2001</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>gb_trees</title>
@@ -34,6 +34,8 @@
Balanced Trees. These have no storage overhead compared to
unbalanced binary trees, and their performance is in general
better than AVL trees.</p>
+ <p>This module considers two keys as different if and only if
+ they do not compare equal (<c>==</c>).</p>
</description>
<section>
diff --git a/lib/stdlib/doc/src/io.xml b/lib/stdlib/doc/src/io.xml
index 6f9d979c9a..efbb1fc078 100644
--- a/lib/stdlib/doc/src/io.xml
+++ b/lib/stdlib/doc/src/io.xml
@@ -1021,7 +1021,7 @@ Error: error 11</pre>
<p>A string which describes the error is obtained with the following
call:</p>
<code type="none">
-apply(Module, format_error, ErrorDescriptor)</code>
+Module:format_error(ErrorDescriptor)</code>
</section>
</erlref>
diff --git a/lib/stdlib/doc/src/lists.xml b/lib/stdlib/doc/src/lists.xml
index 39fc05420d..855a7e0244 100644
--- a/lib/stdlib/doc/src/lists.xml
+++ b/lib/stdlib/doc/src/lists.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>lists</title>
@@ -30,15 +30,16 @@
<module>lists</module>
<modulesummary>List Processing Functions</modulesummary>
<description>
- <p>This module contains functions for list processing. The functions
- are organized in two groups: those in the first group perform a
- particular operation on one or more lists, whereas those in the
- second group are higher-order functions, using a fun as argument
- to perform an operation on one list.</p>
+ <p>This module contains functions for list processing.</p>
+
<p>Unless otherwise stated, all functions assume that position
numbering starts at 1. That is, the first element of a list is at
position 1.</p>
+ <p>Two terms <c>T1</c> and <c>T2</c> compare equal if
+ <c>T1&nbsp;==&nbsp;T2</c> evaluates to <c>true</c>. They match
+ if <c>T1&nbsp;=:=&nbsp;T2</c> evaluates to <c>true</c>.</p>
+
<p>Whenever an <marker
id="ordering_function"></marker><em>ordering function</em>
<c>F</c> is expected as argument, it is assumed that the
diff --git a/lib/stdlib/doc/src/proplists.xml b/lib/stdlib/doc/src/proplists.xml
index a218dcf1fe..9f1c5b24ad 100644
--- a/lib/stdlib/doc/src/proplists.xml
+++ b/lib/stdlib/doc/src/proplists.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2002</year><year>2009</year>
+ <year>2002</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>proplists</title>
@@ -44,6 +44,9 @@
such as options passed to a function where a user may specify options
overriding the default settings, object properties, annotations,
etc.</p>
+ <p>Two keys are considered equal if they match (<c>=:=</c>). In other
+ words, numbers are compared literally rather than by value, so that,
+ for instance, <c>1</c> and <c>1.0</c> are different keys.</p>
</description>
<funcs>
<func>
diff --git a/lib/stdlib/doc/src/shell.xml b/lib/stdlib/doc/src/shell.xml
index b8fc64f45e..2a7c5b8c69 100644
--- a/lib/stdlib/doc/src/shell.xml
+++ b/lib/stdlib/doc/src/shell.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1996</year><year>2009</year>
+ <year>1996</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>shell</title>
@@ -739,6 +739,27 @@ loop(N) ->
returns <c>{error,Reason}</c>.</item>
</list>
</section>
+
+ <section>
+ <title>Prompting</title>
+ <p>The default shell prompt function displays the name of the node
+ (if the node can be part of a distributed system) and the
+ current command number. The user can customize the prompt
+ function by calling
+ <c>shell:prompt_func/1</c> or by setting the application
+ configuration parameter <c>shell_prompt_func</c> for the
+ application STDLIB.</p>
+ <p>A customized prompt function is stated as a tuple
+ <c>{Mod,&nbsp;Func}</c>. The function is called as
+ <c>Mod:Func(L)</c>, where <c>L</c> is a list of key-value pairs
+ created by the shell. Currently there is only one pair:
+ <c>{history, N}</c>, where N is the current command number. The
+ function should return a list of characters or an atom. This
+ constraint is due to the Erlang I/O-protocol. Note that in
+ restricted mode the call <c>Mod:Func(L)</c> must be allowed or
+ the default shell prompt function will be called.</p>
+ </section>
+
<funcs>
<func>
<name>history(N) -> integer()</name>
@@ -782,6 +803,19 @@ loop(N) ->
</desc>
</func>
<func>
+ <name>prompt_func(PromptFunc) -> prompt_func()</name>
+ <fsummary>Sets the shell prompt</fsummary>
+ <type>
+ <v>PromptFunc = prompt_func()</v>
+ <v>prompt_func() = default | {Mod, Func}</v>
+ <v>Mod = Func = atom()</v>
+ </type>
+ <desc>
+ <p>Sets the shell prompt function to <c>PromptFunc</c>. The
+ previous prompt function is returned.</p>
+ </desc>
+ </func>
+ <func>
<name>start_restricted(Module) -> ok | {error, Reason}</name>
<fsummary>Exits a normal shell and starts a restricted shell.</fsummary>
<type>
diff --git a/lib/stdlib/doc/src/sofs.xml b/lib/stdlib/doc/src/sofs.xml
index ac434ec5b7..8c8ae51262 100644
--- a/lib/stdlib/doc/src/sofs.xml
+++ b/lib/stdlib/doc/src/sofs.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>2001</year><year>2009</year>
+ <year>2001</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>sofs</title>
@@ -311,7 +311,7 @@
applying Fun to the type of the given set), and that Fun does
nothing but selecting, duplicating or rearranging parts of the
elements. Specifying a SetFun as an integer I is equivalent to
- specifying <c>{external, fun(X)&nbsp;-> element(I,&nbsp;X)}</c>,
+ specifying <c>{external, fun(X)&nbsp;-> element(I,&nbsp;X)&nbsp;end}</c>,
but is to be preferred since it makes it possible to handle this
case even more efficiently. Examples of SetFuns:</p>
<pre>
@@ -336,6 +336,7 @@ fun(S) -> sofs:partition(1, S) end
<c>badarg</c>, <c>bad_function</c>, or <c>type_mismatch</c>
message when given badly formed arguments or sets the types of
which are not compatible.</p>
+ <p>When comparing external sets the operator <c>==/2</c> is used.</p>
<p><em>Types</em></p>
<pre>
anyset() = -&nbsp;an unordered, ordered or atomic set&nbsp;-
@@ -1108,7 +1109,13 @@ type() = -&nbsp;a type&nbsp;- </pre>
<desc>
<p>Returns <c>true</c> if the AnySet1 and AnySet2
are <seealso marker="#equal">equal</seealso>, <c>false</c>
- otherwise.</p>
+ otherwise. This example shows that <c>==/2</c> is used when
+ comparing sets for equality:</p>
+ <pre>
+1> <input>S1 = sofs:set([1.0]),</input>
+<input>S2 = sofs:set([1]),</input>
+<input>sofs:is_equal(S1, S2).</input>
+true</pre>
</desc>
</func>
<func>
diff --git a/lib/stdlib/doc/src/stdlib_app.xml b/lib/stdlib/doc/src/stdlib_app.xml
index da046b8a8d..a615c1bf88 100644
--- a/lib/stdlib/doc/src/stdlib_app.xml
+++ b/lib/stdlib/doc/src/stdlib_app.xml
@@ -4,23 +4,21 @@
<appref>
<header>
<copyright>
- <year>2005</year>
- <year>2007</year>
- <holder>Ericsson AB, All Rights Reserved</holder>
+ <year>2005</year><year>2010</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
- The contents of this file are subject to the Erlang Public License,
- Version 1.1, (the "License"); you may not use this file except in
- compliance with the License. You should have received a copy of the
- Erlang Public License along with this software. If not, it can be
- retrieved online at http://www.erlang.org/.
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and limitations
- under the License.
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
- The Initial Developer of the Original Code is Ericsson AB.
</legalnotice>
<title>STDLIB</title>
@@ -63,6 +61,16 @@
<p>This parameter can be used to determine how many
commands are saved by the Erlang shell.</p>
</item>
+ <tag><c>shell_prompt_func = {Mod, Func} | default</c></tag>
+ <item>
+ <p>where</p>
+ <list type="bulleted">
+ <item><c>Mod = atom()</c></item>
+ <item><c>Func = atom()</c></item>
+ </list>
+ <p>This parameter can be used to set a customized
+ Erlang shell prompt function.</p>
+ </item>
<tag><c>shell_saved_results = integer() >= 0</c></tag>
<item>
<p>This parameter can be used to determine how many
diff --git a/lib/stdlib/src/epp.erl b/lib/stdlib/src/epp.erl
index 8b702c005b..424aed3d2e 100644
--- a/lib/stdlib/src/epp.erl
+++ b/lib/stdlib/src/epp.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
-module(epp).
@@ -111,18 +111,24 @@ format_error({bad,W}) ->
io_lib:format("badly formed '~s'", [W]);
format_error({call,What}) ->
io_lib:format("illegal macro call '~s'",[What]);
-format_error({undefined,M}) ->
- io_lib:format("undefined macro '~w'", [M]);
+format_error({undefined,M,none}) ->
+ io_lib:format("undefined macro '~s'", [M]);
+format_error({undefined,M,A}) ->
+ io_lib:format("undefined macro '~s/~p'", [M,A]);
format_error({depth,What}) ->
io_lib:format("~s too deep",[What]);
format_error({mismatch,M}) ->
- io_lib:format("argument mismatch for macro '~w'", [M]);
+ io_lib:format("argument mismatch for macro '~s'", [M]);
format_error({arg_error,M}) ->
- io_lib:format("badly formed argument for macro '~w'", [M]);
+ io_lib:format("badly formed argument for macro '~s'", [M]);
format_error({redefine,M}) ->
- io_lib:format("redefining macro '~w'", [M]);
-format_error({circular,M}) ->
- io_lib:format("circular macro '~w'", [M]);
+ io_lib:format("redefining macro '~s'", [M]);
+format_error({redefine_predef,M}) ->
+ io_lib:format("redefining predefined macro '~s'", [M]);
+format_error({circular,M,none}) ->
+ io_lib:format("circular macro '~s'", [M]);
+format_error({circular,M,A}) ->
+ io_lib:format("circular macro '~s/~p'", [M,A]);
format_error({include,W,F}) ->
io_lib:format("can't find include ~s \"~s\"", [W,F]);
format_error({illegal,How,What}) ->
@@ -258,18 +264,23 @@ user_predef([{M,Val,redefine}|Pdm], Ms) when is_atom(M) ->
user_predef(Pdm, dict:store({atom,M}, {none,Exp}, Ms));
user_predef([{M,Val}|Pdm], Ms) when is_atom(M) ->
case dict:find({atom,M}, Ms) of
- {ok,_Def} ->
+ {ok,_Defs} when is_list(_Defs) -> %% User defined macros
{error,{redefine,M}};
+ {ok,_Def} -> %% Predefined macros
+ {error,{redefine_predef,M}};
error ->
Exp = erl_parse:tokens(erl_parse:abstract(Val)),
- user_predef(Pdm, dict:store({atom,M}, {none,Exp}, Ms))
+ user_predef(Pdm, dict:store({atom,M}, [{none, {none,Exp}}], Ms))
end;
user_predef([M|Pdm], Ms) when is_atom(M) ->
case dict:find({atom,M}, Ms) of
- {ok,_Def} ->
+ {ok,_Defs} when is_list(_Defs) -> %% User defined macros
{error,{redefine,M}};
+ {ok,_Def} -> %% Predefined macros
+ {error,{redefine_predef,M}};
error ->
- user_predef(Pdm, dict:store({atom,M}, {none,[{atom,1,true}]}, Ms))
+ user_predef(Pdm,
+ dict:store({atom,M}, [{none, {none,[{atom,1,true}]}}], Ms))
end;
user_predef([Md|_Pdm], _Ms) -> {error,{bad,Md}};
user_predef([], Ms) -> {ok,Ms}.
@@ -476,57 +487,56 @@ scan_extends(_Ts, _As, Ms) -> Ms.
%% scan_define(Tokens, DefineToken, From, EppState)
-scan_define([{'(',_Lp},{atom,_Lm,M}=Mac,{',',_Lc}|Toks], _Def, From, St) ->
+scan_define([{'(',_Lp},{Type,_Lm,M}=Mac,{',',_Lc}|Toks], _Def, From, St)
+ when Type =:= atom; Type =:= var ->
case dict:find({atom,M}, St#epp.macs) of
- {ok,_OldDef} ->
- epp_reply(From, {error,{loc(Mac),epp,{redefine,M}}}),
- wait_req_scan(St);
- error ->
- scan_define_cont(From, St,
- {atom, M},
- {none,macro_expansion(Toks)})
- end;
-scan_define([{'(',_Lp},{atom,_Lm,M}=Mac,{'(',_Lc}|Toks], Def, From, St) ->
- case dict:find({atom,M}, St#epp.macs) of
- {ok,_Def} ->
- epp_reply(From, {error,{loc(Mac),epp,{redefine,M}}}),
- wait_req_scan(St);
- error ->
- case catch macro_pars(Toks, []) of
- {ok, {As, Me}} ->
- scan_define_cont(From, St,
- {atom, M},
- {As, Me});
- _ ->
- epp_reply(From, {error,{loc(Def),epp,{bad,define}}}),
- wait_req_scan(St)
- end
- end;
-scan_define([{'(',_Lp},{var,_Lm,M}=Mac,{',',_Lc}|Toks], _Def, From, St) ->
- case dict:find({atom,M}, St#epp.macs) of
- {ok,_OldDef} ->
- epp_reply(From, {error,{loc(Mac),epp,{redefine,M}}}),
- wait_req_scan(St);
- error ->
- scan_define_cont(From, St,
- {atom, M},
- {none,macro_expansion(Toks)})
+ {ok, Defs} when is_list(Defs) ->
+ %% User defined macros: can be overloaded
+ case proplists:is_defined(none, Defs) of
+ true ->
+ epp_reply(From, {error,{loc(Mac),epp,{redefine,M}}}),
+ wait_req_scan(St);
+ false ->
+ scan_define_cont(From, St,
+ {atom, M},
+ {none, {none,macro_expansion(Toks)}})
+ end;
+ {ok, _PreDef} ->
+ %% Predefined macros: cannot be overloaded
+ epp_reply(From, {error,{loc(Mac),epp,{redefine_predef,M}}}),
+ wait_req_scan(St);
+ error ->
+ scan_define_cont(From, St,
+ {atom, M},
+ {none, {none,macro_expansion(Toks)}})
end;
-scan_define([{'(',_Lp},{var,_Lm,M}=Mac,{'(',_Lc}|Toks], Def, From, St) ->
- case dict:find({atom,M}, St#epp.macs) of
- {ok,_Def} ->
- epp_reply(From, {error,{loc(Mac),epp,{redefine,M}}}),
- wait_req_scan(St);
- error ->
- case catch macro_pars(Toks, []) of
- {ok, {As, Me}} ->
- scan_define_cont(From, St,
- {atom, M},
- {As, Me});
- _ ->
- epp_reply(From, {error,{loc(Def),epp,{bad,define}}}),
- wait_req_scan(St)
- end
+scan_define([{'(',_Lp},{Type,_Lm,M}=Mac,{'(',_Lc}|Toks], Def, From, St)
+ when Type =:= atom; Type =:= var ->
+ case catch macro_pars(Toks, []) of
+ {ok, {As,Me}} ->
+ Len = length(As),
+ case dict:find({atom,M}, St#epp.macs) of
+ {ok, Defs} when is_list(Defs) ->
+ %% User defined macros: can be overloaded
+ case proplists:is_defined(Len, Defs) of
+ true ->
+ epp_reply(From,{error,{loc(Mac),epp,{redefine,M}}}),
+ wait_req_scan(St);
+ false ->
+ scan_define_cont(From, St, {atom, M},
+ {Len, {As, Me}})
+ end;
+ {ok, _PreDef} ->
+ %% Predefined macros: cannot be overloaded
+ %% (There are currently no predefined F(...) macros.)
+ epp_reply(From, {error,{loc(Mac),epp,{redefine_predef,M}}}),
+ wait_req_scan(St);
+ error ->
+ scan_define_cont(From, St, {atom, M}, {Len, {As, Me}})
+ end;
+ _ ->
+ epp_reply(From, {error,{loc(Def),epp,{bad,define}}}),
+ wait_req_scan(St)
end;
scan_define(_Toks, Def, From, St) ->
epp_reply(From, {error,{loc(Def),epp,{bad,define}}}),
@@ -541,13 +551,17 @@ scan_define(_Toks, Def, From, St) ->
%%% the information from St#epp.uses is traversed, and if a circularity
%%% is detected, an error message is thrown.
-scan_define_cont(F, St, M, Def) ->
- Ms = dict:store(M, Def, St#epp.macs),
- U = dict:store(M, macro_uses(Def), St#epp.uses),
- scan_toks(F, St#epp{uses=U, macs=Ms}).
+scan_define_cont(F, St, M, {Arity, Def}) ->
+ Ms = dict:append_list(M, [{Arity, Def}], St#epp.macs),
+ try dict:append_list(M, [{Arity, macro_uses(Def)}], St#epp.uses) of
+ U ->
+ scan_toks(F, St#epp{uses=U, macs=Ms})
+ catch
+ {error, Line, Reason} ->
+ epp_reply(F, {error,{Line,epp,Reason}}),
+ wait_req_scan(St)
+ end.
-macro_uses(undefined) ->
- undefined;
macro_uses({_Args, Tokens}) ->
Uses0 = macro_ref(Tokens),
lists:usort(Uses0).
@@ -556,31 +570,25 @@ macro_ref([]) ->
[];
macro_ref([{'?', _}, {'?', _} | Rest]) ->
macro_ref(Rest);
-macro_ref([{'?', _}, {atom, _, A} | Rest]) ->
- [{atom, A} | macro_ref(Rest)];
-macro_ref([{'?', _}, {var, _, A} | Rest]) ->
- [{atom, A} | macro_ref(Rest)];
+macro_ref([{'?', _}, {atom, Lm, A} | Rest]) ->
+ Arity = count_args(Rest, Lm, A),
+ [{{atom, A}, Arity} | macro_ref(Rest)];
+macro_ref([{'?', _}, {var, Lm, A} | Rest]) ->
+ Arity = count_args(Rest, Lm, A),
+ [{{atom, A}, Arity} | macro_ref(Rest)];
macro_ref([_Token | Rest]) ->
macro_ref(Rest).
-all_macro_uses(D0) ->
- L = dict:to_list(D0),
- D = dict:new(),
- add_macro_uses(L, D).
-
-add_macro_uses([], D) ->
- D;
-add_macro_uses([{Key, Def} | Rest], D0) ->
- add_macro_uses(Rest, dict:store(Key, macro_uses(Def), D0)).
-
%% scan_undef(Tokens, UndefToken, From, EppState)
scan_undef([{'(',_Llp},{atom,_Lm,M},{')',_Lrp},{dot,_Ld}], _Undef, From, St) ->
- scan_toks(From, St#epp{macs=dict:erase({atom,M}, St#epp.macs),
- uses=all_macro_uses(St#epp.macs)});
+ Macs = dict:erase({atom,M}, St#epp.macs),
+ Uses = dict:erase({atom,M}, St#epp.uses),
+ scan_toks(From, St#epp{macs=Macs, uses=Uses});
scan_undef([{'(',_Llp},{var,_Lm,M},{')',_Lrp},{dot,_Ld}], _Undef, From,St) ->
- scan_toks(From, St#epp{macs=dict:erase({atom,M}, St#epp.macs),
- uses=all_macro_uses(St#epp.macs)});
+ Macs = dict:erase({atom,M}, St#epp.macs),
+ Uses = dict:erase({atom,M}, St#epp.uses),
+ scan_toks(From, St#epp{macs=Macs, uses=Uses});
scan_undef(_Toks, Undef, From, St) ->
epp_reply(From, {error,{loc(Undef),epp,{bad,undef}}}),
wait_req_scan(St).
@@ -819,42 +827,57 @@ expand_macros(Type, MacT, M, Toks, Ms0) ->
%% (Type will always be 'atom')
{Ms, U} = Ms0,
Lm = loc(MacT),
- check_uses([{Type,M}], [], U, Lm),
Tinfo = element(2, MacT),
- case dict:find({Type,M}, Ms) of
+ case expand_macro1(Type, Lm, M, Toks, Ms) of
{ok,{none,Exp}} ->
- expand_macros(expand_macro(Exp, Tinfo, Toks, dict:new()), Ms0);
+ check_uses([{{Type,M}, none}], [], U, Lm),
+ Toks1 = expand_macros(expand_macro(Exp, Tinfo, [], dict:new()), Ms0),
+ expand_macros(Toks1++Toks, Ms0);
{ok,{As,Exp}} ->
+ check_uses([{{Type,M}, length(As)}], [], U, Lm),
{Bs,Toks1} = bind_args(Toks, Lm, M, As, dict:new()),
- %%io:format("Bound arguments to macro ~w (~w)~n", [M,Bs]),
- expand_macros(expand_macro(Exp, Tinfo, Toks1, Bs), Ms0);
- {ok,undefined} ->
- throw({error,Lm,{undefined,M}});
- error ->
- throw({error,Lm,{undefined,M}})
+ expand_macros(expand_macro(Exp, Tinfo, Toks1, Bs), Ms0)
+ end.
+
+expand_macro1(Type, Lm, M, Toks, Ms) ->
+ Arity = count_args(Toks, Lm, M),
+ case dict:find({Type,M}, Ms) of
+ error -> %% macro not found
+ throw({error,Lm,{undefined,M,Arity}});
+ {ok, undefined} -> %% Predefined macro without definition
+ throw({error,Lm,{undefined,M,Arity}});
+ {ok, [{none, Def}]} ->
+ {ok, Def};
+ {ok, Defs} when is_list(Defs) ->
+ case proplists:get_value(Arity, Defs) of
+ undefined ->
+ throw({error,Lm,{mismatch,M}});
+ Def ->
+ {ok, Def}
+ end;
+ {ok, PreDef} -> %% Predefined macro
+ {ok, PreDef}
end.
-check_uses(undefined, _Anc, _U, _Lm) ->
- ok;
check_uses([], _Anc, _U, _Lm) ->
ok;
check_uses([M|Rest], Anc, U, Lm) ->
case lists:member(M, Anc) of
true ->
- {_, Name} = M,
- throw({error,Lm,{circular,Name}});
+ {{_, Name},Arity} = M,
+ throw({error,Lm,{circular,Name,Arity}});
false ->
L = get_macro_uses(M, U),
check_uses(L, [M|Anc], U, Lm),
check_uses(Rest, Anc, U, Lm)
end.
-
-get_macro_uses(M, U) ->
+
+get_macro_uses({M,Arity}, U) ->
case dict:find(M, U) of
error ->
[];
{ok, L} ->
- L
+ proplists:get_value(Arity, L, proplists:get_value(none, L, []))
end.
%% Macro expansion
@@ -882,7 +905,7 @@ expand_macros([T|Ts], Ms) ->
expand_macros([], _Ms) -> [].
%% bind_args(Tokens, MacroLocation, MacroName, ArgumentVars, Bindings)
-%% Collect the arguments to a macro call and check for correct number.
+%% Collect the arguments to a macro call.
bind_args([{'(',_Llp},{')',_Lrp}|Toks], _Lm, _M, [], Bs) ->
{Bs,Toks};
@@ -890,7 +913,7 @@ bind_args([{'(',_Llp}|Toks0], Lm, M, [A|As], Bs) ->
{Arg,Toks1} = macro_arg(Toks0, [], []),
macro_args(Toks1, Lm, M, As, store_arg(Lm, M, A, Arg, Bs));
bind_args(_Toks, Lm, M, _As, _Bs) ->
- throw({error,Lm,{mismatch,M}}).
+ throw({error,Lm,{mismatch,M}}). % Cannot happen.
macro_args([{')',_Lrp}|Toks], _Lm, _M, [], Bs) ->
{Bs,Toks};
@@ -898,15 +921,39 @@ macro_args([{',',_Lc}|Toks0], Lm, M, [A|As], Bs) ->
{Arg,Toks1} = macro_arg(Toks0, [], []),
macro_args(Toks1, Lm, M, As, store_arg(Lm, M, A, Arg, Bs));
macro_args([], Lm, M, _As, _Bs) ->
- throw({error,Lm,{arg_error,M}});
+ throw({error,Lm,{arg_error,M}}); % Cannot happen.
macro_args(_Toks, Lm, M, _As, _Bs) ->
- throw({error,Lm,{mismatch,M}}).
+ throw({error,Lm,{mismatch,M}}). % Cannot happen.
store_arg(L, M, _A, [], _Bs) ->
throw({error,L,{mismatch,M}});
store_arg(_L, _M, A, Arg, Bs) ->
dict:store(A, Arg, Bs).
+%% count_args(Tokens, MacroLine, MacroName)
+%% Count the number of arguments in a macro call.
+count_args([{'(', _Llp},{')',_Lrp}|_Toks], _Lm, _M) ->
+ 0;
+count_args([{'(', _Llp},{',',_Lc}|_Toks], Lm, M) ->
+ throw({error,Lm,{arg_error,M}});
+count_args([{'(',_Llp}|Toks0], Lm, M) ->
+ {_Arg,Toks1} = macro_arg(Toks0, [], []),
+ count_args(Toks1, Lm, M, 1);
+count_args(_Toks, _Lm, _M) ->
+ none.
+
+count_args([{')',_Lrp}|_Toks], _Lm, _M, NbArgs) ->
+ NbArgs;
+count_args([{',',_Lc},{')',_Lrp}|_Toks], Lm, M, _NbArgs) ->
+ throw({error,Lm,{arg_error,M}});
+count_args([{',',_Lc}|Toks0], Lm, M, NbArgs) ->
+ {_Arg,Toks1} = macro_arg(Toks0, [], []),
+ count_args(Toks1, Lm, M, NbArgs+1);
+count_args([], Lm, M, _NbArgs) ->
+ throw({error,Lm,{arg_error,M}});
+count_args(_Toks, Lm, M, _NbArgs) ->
+ throw({error,Lm,{mismatch,M}}). % Cannot happen.
+
%% macro_arg([Tok], [ClosePar], [ArgTok]) -> {[ArgTok],[RestTok]}.
%% Collect argument tokens until we hit a ',' or a ')'. We know a
%% enough about syntax to recognise "open parentheses" and keep
diff --git a/lib/stdlib/src/shell.erl b/lib/stdlib/src/shell.erl
index a8d31b4e6b..ebb221c151 100644
--- a/lib/stdlib/src/shell.erl
+++ b/lib/stdlib/src/shell.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
-module(shell).
@@ -22,12 +22,14 @@
-export([whereis_evaluator/0, whereis_evaluator/1]).
-export([start_restricted/1, stop_restricted/0]).
-export([local_allowed/3, non_local_allowed/3]).
+-export([prompt_func/1]).
-define(LINEMAX, 30).
-define(CHAR_MAX, 60).
-define(DEF_HISTORY, 20).
-define(DEF_RESULTS, 20).
-define(DEF_CATCH_EXCEPTION, false).
+-define(DEF_PROMPT_FUNC, default).
-define(RECORDS, shell_records).
@@ -235,14 +237,15 @@ server(StartSync) ->
{History,Results} = check_and_get_history_and_results(),
server_loop(0, start_eval(Bs, RT, []), Bs, RT, [], History, Results).
-server_loop(N0, Eval_0, Bs0, RT, Ds0, History0, Results0) ->
+server_loop(N0, Eval_0, Bs00, RT, Ds00, History0, Results0) ->
N = N0 + 1,
- {Res, Eval0} = get_command(prompt(N), Eval_0, Bs0, RT, Ds0),
+ {Eval_1,Bs0,Ds0,Prompt} = prompt(N, Eval_0, Bs00, RT, Ds00),
+ {Res,Eval0} = get_command(Prompt, Eval_1, Bs0, RT, Ds0),
case Res of
{ok,Es0,_EndLine} ->
case expand_hist(Es0, N) of
{ok,Es} ->
- {V,Eval,Bs,Ds} = shell_cmd(Es, Eval0, Bs0, RT, Ds0),
+ {V,Eval,Bs,Ds} = shell_cmd(Es, Eval0, Bs0, RT, Ds0, cmd),
{History,Results} = check_and_get_history_and_results(),
add_cmd(N, Es, V),
HB1 = del_cmd(command, N - History, N - History0, false),
@@ -301,7 +304,42 @@ get_command1(Pid, Eval, Bs, RT, Ds) ->
get_command1(Pid, start_eval(Bs, RT, Ds), Bs, RT, Ds)
end.
-prompt(N) ->
+prompt(N, Eval0, Bs0, RT, Ds0) ->
+ case get_prompt_func() of
+ {M,F} ->
+ L = [{history,N}],
+ C = {call,1,{remote,1,{atom,1,M},{atom,1,F}},[{value,1,L}]},
+ {V,Eval,Bs,Ds} = shell_cmd([C], Eval0, Bs0, RT, Ds0, pmt),
+ {Eval,Bs,Ds,case V of
+ {pmt,Val} ->
+ Val;
+ _ ->
+ bad_prompt_func({M,F}),
+ default_prompt(N)
+ end};
+ default ->
+ {Eval0,Bs0,Ds0,default_prompt(N)}
+ end.
+
+get_prompt_func() ->
+ case application:get_env(stdlib, shell_prompt_func) of
+ {ok,{M,F}=PromptFunc} when is_atom(M), is_atom(F) ->
+ PromptFunc;
+ {ok,default=Default} ->
+ Default;
+ {ok,Term} ->
+ bad_prompt_func(Term),
+ default;
+ undefined ->
+ default
+ end.
+
+bad_prompt_func(M) ->
+ fwrite_severity(benign, <<"Bad prompt function: ~p">>, [M]).
+
+default_prompt(N) ->
+ %% Don't bother flattening the list irrespective of what the
+ %% I/O-protocol states.
case is_alive() of
true -> io_lib:format(<<"(~s)~w> ">>, [node(), N]);
false -> io_lib:format(<<"~w> ">>, [N])
@@ -461,14 +499,16 @@ has_bin(T, I) ->
has_bin(element(I, T)),
has_bin(T, I - 1).
-%% shell_cmd(Sequence, Evaluator, Bindings, RecordTable, Dictionary)
+%% shell_cmd(Sequence, Evaluator, Bindings, RecordTable, Dictionary, What)
%% shell_rep(Evaluator, Bindings, RecordTable, Dictionary) ->
%% {Value,Evaluator,Bindings,Dictionary}
%% Send a command to the evaluator and wait for the reply. Start a new
%% evaluator if necessary.
+%% What = pmt | cmd. When evaluating a prompt ('pmt') the evaluated value
+%% must not be displayed, and it has to be returned.
-shell_cmd(Es, Eval, Bs, RT, Ds) ->
- Eval ! {shell_cmd,self(),{eval,Es}},
+shell_cmd(Es, Eval, Bs, RT, Ds, W) ->
+ Eval ! {shell_cmd,self(),{eval,Es}, W},
shell_rep(Eval, Bs, RT, Ds).
shell_rep(Ev, Bs0, RT, Ds0) ->
@@ -559,26 +599,26 @@ evaluator(Shell, Bs, RT, Ds) ->
eval_loop(Shell, Bs0, RT) ->
receive
- {shell_cmd,Shell,{eval,Es}} ->
+ {shell_cmd,Shell,{eval,Es},W} ->
Ef = {value,
fun(MForFun, As) -> apply_fun(MForFun, As, Shell) end},
Lf = local_func_handler(Shell, RT, Ef),
- Bs = eval_exprs(Es, Shell, Bs0, RT, Lf, Ef),
+ Bs = eval_exprs(Es, Shell, Bs0, RT, Lf, Ef, W),
eval_loop(Shell, Bs, RT)
end.
restricted_eval_loop(Shell, Bs0, RT, RShMod) ->
receive
- {shell_cmd,Shell,{eval,Es}} ->
+ {shell_cmd,Shell,{eval,Es}, W} ->
{LFH,NLFH} = restrict_handlers(RShMod, Shell, RT),
put(restricted_expr_state, []),
- Bs = eval_exprs(Es, Shell, Bs0, RT, {eval,LFH}, {value,NLFH}),
+ Bs = eval_exprs(Es, Shell, Bs0, RT, {eval,LFH}, {value,NLFH}, W),
restricted_eval_loop(Shell, Bs, RT, RShMod)
end.
-eval_exprs(Es, Shell, Bs0, RT, Lf, Ef) ->
+eval_exprs(Es, Shell, Bs0, RT, Lf, Ef, W) ->
try
- {R,Bs2} = exprs(Es, Bs0, RT, Lf, Ef),
+ {R,Bs2} = exprs(Es, Bs0, RT, Lf, Ef, W),
Shell ! {shell_rep,self(),R},
Bs2
catch
@@ -614,10 +654,10 @@ do_catch(_Class, _Reason) ->
false
end.
-exprs(Es, Bs0, RT, Lf, Ef) ->
- exprs(Es, Bs0, RT, Lf, Ef, Bs0).
+exprs(Es, Bs0, RT, Lf, Ef, W) ->
+ exprs(Es, Bs0, RT, Lf, Ef, Bs0, W).
-exprs([E0|Es], Bs1, RT, Lf, Ef, Bs0) ->
+exprs([E0|Es], Bs1, RT, Lf, Ef, Bs0, W) ->
UsedRecords = used_record_defs(E0, RT),
RBs = record_bindings(UsedRecords, Bs1),
case check_command(prep_check([E0]), RBs) of
@@ -629,16 +669,20 @@ exprs([E0|Es], Bs1, RT, Lf, Ef, Bs0) ->
if
Es =:= [] ->
VS = pp(V0, 1, RT),
- io:requests([{put_chars, VS}, nl]),
+ [io:requests([{put_chars, VS}, nl]) || W =:= cmd],
%% Don't send the result back if it will be
%% discarded anyway.
- V = case result_will_be_saved() of
- true -> V0;
- false -> ignored
+ V = if
+ W =:= pmt ->
+ {W,V0};
+ true -> case result_will_be_saved() of
+ true -> V0;
+ false -> ignored
+ end
end,
{{value,V,Bs,get()},Bs};
true ->
- exprs(Es, Bs, RT, Lf, Ef, Bs0)
+ exprs(Es, Bs, RT, Lf, Ef, Bs0, W)
end;
{error,Error} ->
{{command_error,Error},Bs0}
@@ -1383,7 +1427,7 @@ pp(V, I, RT) ->
columns() ->
case io:columns() of
- {ok,N} -> N;
+ {ok,N} -> N;
_ -> 80
end.
@@ -1438,3 +1482,9 @@ results(L) when is_integer(L), L >= 0 ->
catch_exception(Bool) ->
set_env(stdlib, shell_catch_exception, Bool, ?DEF_CATCH_EXCEPTION).
+
+-type prompt_func() :: 'default' | {module(),atom()}.
+-spec prompt_func(prompt_func()) -> prompt_func().
+
+prompt_func(String) ->
+ set_env(stdlib, shell_prompt_func, String, ?DEF_PROMPT_FUNC).
diff --git a/lib/stdlib/src/shell_default.erl b/lib/stdlib/src/shell_default.erl
index 670f8cdb44..3fe359af0e 100644
--- a/lib/stdlib/src/shell_default.erl
+++ b/lib/stdlib/src/shell_default.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 1996-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
@@ -45,6 +45,7 @@ help() ->
format("h() -- history\n"),
format("history(N) -- set how many previous commands to keep\n"),
format("results(N) -- set how many previous command results to keep\n"),
+ format("catch_exception(B) -- how exceptions are handled\n"),
format("v(N) -- use the value of query <N>\n"),
format("rd(R,D) -- define a record\n"),
format("rf() -- remove all record information\n"),
diff --git a/lib/stdlib/test/epp_SUITE.erl b/lib/stdlib/test/epp_SUITE.erl
index 67e20fd2e1..9a3ae0baf5 100644
--- a/lib/stdlib/test/epp_SUITE.erl
+++ b/lib/stdlib/test/epp_SUITE.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 1998-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 1998-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
-module(epp_SUITE).
@@ -23,7 +23,7 @@
upcase_mac/1, upcase_mac_1/1, upcase_mac_2/1,
variable/1, variable_1/1, otp_4870/1, otp_4871/1, otp_5362/1,
pmod/1, not_circular/1, skip_header/1, otp_6277/1, otp_7702/1,
- otp_8130/1]).
+ otp_8130/1, overload_mac/1, otp_8388/1]).
-export([epp_parse_erl_form/2]).
@@ -61,8 +61,9 @@ fin_per_testcase(_, Config) ->
all(doc) ->
["Test cases for epp."];
all(suite) ->
- [rec_1, upcase_mac, predef_mac, variable, otp_4870, otp_4871, otp_5362,
- pmod, not_circular, skip_header, otp_6277, otp_7702, otp_8130].
+ [rec_1, upcase_mac, predef_mac, variable, otp_4870, otp_4871, otp_5362,
+ pmod, not_circular, skip_header, otp_6277, otp_7702, otp_8130,
+ overload_mac, otp_8388].
rec_1(doc) ->
["Recursive macros hang or crash epp (OTP-1398)."];
@@ -466,7 +467,7 @@ otp_6277(Config) when is_list(Config) ->
-define(ASSERT, ?MODULE).
?ASSERT().">>,
- [{error,{{4,16},epp,{undefined,'MODULE'}}}]}],
+ [{error,{{4,16},epp,{undefined,'MODULE', none}}}]}],
?line [] = check(Config, Ts),
ok.
@@ -673,7 +674,7 @@ otp_8130(Config) when is_list(Config) ->
{otp_8130_c7,
<<"\nt() -> ?A.\n">>,
- {errors,[{{2,9},epp,{undefined,'A'}}],[]}},
+ {errors,[{{2,9},epp,{undefined,'A', none}}],[]}},
{otp_8130_c8,
<<"\n-include_lib(\"$apa/foo.hrl\").\n">>,
@@ -683,7 +684,7 @@ otp_8130(Config) when is_list(Config) ->
{otp_8130_c9,
<<"-define(S, ?S).\n"
"t() -> ?S.\n">>,
- {errors,[{{2,9},epp,{circular,'S'}}],[]}},
+ {errors,[{{2,9},epp,{circular,'S', none}}],[]}},
{otp_8130_c10,
<<"\n-file.">>,
@@ -718,22 +719,22 @@ otp_8130(Config) when is_list(Config) ->
{otp_8130_c17,
<<"\n-define(A(B), B).\n"
"-define(A, 1).\n">>,
- {errors,[{{3,9},epp,{redefine,'A'}}],[]}},
+ []},
{otp_8130_c18,
<<"\n-define(A, 1).\n"
"-define(A(B), B).\n">>,
- {errors,[{{3,9},epp,{redefine,'A'}}],[]}},
+ []},
{otp_8130_c19,
<<"\n-define(a(B), B).\n"
"-define(a, 1).\n">>,
- {errors,[{{3,9},epp,{redefine,a}}],[]}},
+ []},
{otp_8130_c20,
<<"\n-define(a, 1).\n"
"-define(a(B), B).\n">>,
- {errors,[{{3,9},epp,{redefine,a}}],[]}},
+ []},
{otp_8130_c21,
<<"\n-define(A(B, B), B).\n">>,
@@ -745,7 +746,7 @@ otp_8130(Config) when is_list(Config) ->
{otp_8130_c23,
<<"\n-file(?b, 3).\n">>,
- {errors,[{{2,8},epp,{undefined,b}}],[]}},
+ {errors,[{{2,8},epp,{undefined,b, none}}],[]}},
{otp_8130_c24,
<<"\n-include(\"no such file.erl\").\n">>,
@@ -821,7 +822,8 @@ macs(Epp) ->
macro(Epp, N) ->
case lists:keyfind({atom,N}, 1, epp:macro_defs(Epp)) of
false -> false;
- {{atom,N},{_,V}} -> V
+ {{atom,N},{_,V}} -> V;
+ {{atom,N},Defs} -> lists:append([V || {_,{_,V}} <- Defs])
end.
ifdef(Config) ->
@@ -1030,6 +1032,113 @@ ifdef(Config) ->
],
?line [] = run(Config, Ts).
+
+
+overload_mac(doc) ->
+ ["Advanced test on overloading macros."];
+overload_mac(suite) ->
+ [];
+overload_mac(Config) when is_list(Config) ->
+ Cs = [
+ %% '-undef' removes all definitions of a macro
+ {overload_mac_c1,
+ <<"-define(A, a).\n"
+ "-define(A(X), X).\n"
+ "-undef(A).\n"
+ "t1() -> ?A.\n",
+ "t2() -> ?A(1).">>,
+ {errors,[{{4,9},epp,{undefined,'A', none}},
+ {{5,9},epp,{undefined,'A', 1}}],[]}},
+
+ %% cannot overload predefined macros
+ {overload_mac_c2,
+ <<"-define(MODULE(X), X).">>,
+ {errors,[{{1,9},epp,{redefine_predef,'MODULE'}}],[]}},
+
+ %% cannot overload macros with same arity
+ {overload_mac_c3,
+ <<"-define(A(X), X).\n"
+ "-define(A(Y), Y).">>,
+ {errors,[{{2,9},epp,{redefine,'A'}}],[]}},
+
+ {overload_mac_c4,
+ <<"-define(A, a).\n"
+ "-define(A(X,Y), {X,Y}).\n"
+ "a(X) -> X.\n"
+ "t() -> ?A(1).">>,
+ {errors,[{{4,9},epp,{mismatch,'A'}}],[]}}
+ ],
+ ?line [] = compile(Config, Cs),
+
+ Ts = [
+ {overload_mac_r1,
+ <<"-define(A, 1).\n"
+ "-define(A(X), X).\n"
+ "-define(A(X, Y), {X, Y}).\n"
+ "t() -> {?A, ?A(2), ?A(3, 4)}.">>,
+ {1, 2, {3, 4}}},
+
+ {overload_mac_r2,
+ <<"-define(A, 1).\n"
+ "-define(A(X), X).\n"
+ "t() -> ?A(?A).">>,
+ 1},
+
+ {overload_mac_r3,
+ <<"-define(A, ?B).\n"
+ "-define(B, a).\n"
+ "-define(B(X), {b,X}).\n"
+ "a(X) -> X.\n"
+ "t() -> ?A(1).">>,
+ 1}
+ ],
+ ?line [] = run(Config, Ts).
+
+
+otp_8388(doc) ->
+ ["OTP-8388. More tests on overloaded macros."];
+otp_8388(suite) ->
+ [];
+otp_8388(Config) when is_list(Config) ->
+ Dir = ?config(priv_dir, Config),
+ ?line File = filename:join(Dir, "otp_8388.erl"),
+ ?line ok = file:write_file(File, <<"-module(otp_8388)."
+ "-define(LINE, a).">>),
+ fun() ->
+ PreDefMacros = [{'LINE', a}],
+ ?line {error,{redefine_predef,'LINE'}} =
+ epp:open(File, [], PreDefMacros)
+ end(),
+
+ fun() ->
+ PreDefMacros = ['LINE'],
+ ?line {error,{redefine_predef,'LINE'}} =
+ epp:open(File, [], PreDefMacros)
+ end(),
+
+ Ts = [
+ {macro_1,
+ <<"-define(m(A), A).\n"
+ "t() -> ?m(,).\n">>,
+ {errors,[{{2,11},epp,{arg_error,m}}],[]}},
+ {macro_2,
+ <<"-define(m(A), A).\n"
+ "t() -> ?m(a,).\n">>,
+ {errors,[{{2,12},epp,{arg_error,m}}],[]}},
+ {macro_3,
+ <<"-define(LINE, a).\n">>,
+ {errors,[{{1,9},epp,{redefine_predef,'LINE'}}],[]}},
+ {macro_4,
+ <<"-define(A(B, C, D), {B,C,D}).\n"
+ "t() -> ?A(a,,3).\n">>,
+ {errors,[{{2,8},epp,{mismatch,'A'}}],[]}},
+ {macro_5,
+ <<"-define(Q, {?F0(), ?F1(,,4)}).\n">>,
+ {errors,[{{1,24},epp,{arg_error,'F1'}}],[]}}
+ ],
+ ?line [] = compile(Config, Ts),
+ ok.
+
check(Config, Tests) ->
eval_tests(Config, fun check_test/2, Tests).
diff --git a/lib/stdlib/test/shell_SUITE.erl b/lib/stdlib/test/shell_SUITE.erl
index 5827d5f332..da73046c2a 100644
--- a/lib/stdlib/test/shell_SUITE.erl
+++ b/lib/stdlib/test/shell_SUITE.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2004-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2004-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%%
-module(shell_SUITE).
@@ -28,13 +28,13 @@
progex/1, progex_bit_syntax/1, progex_records/1,
progex_lc/1, progex_funs/1,
tickets/1, otp_5990/1, otp_6166/1, otp_6554/1, otp_6785/1,
- otp_7184/1, otp_7232/1]).
+ otp_7184/1, otp_7232/1, otp_8393/1]).
-export([restricted/1, start_restricted_from_shell/1,
start_restricted_on_command_line/1,restricted_local/1]).
%% Internal export.
--export([otp_5435_2/0]).
+-export([otp_5435_2/0, prompt1/1, prompt2/1, prompt3/1, prompt4/1]).
%%
%% Define to run outside of test server
@@ -2256,7 +2256,7 @@ progex_funs(Config) when is_list(Config) ->
ok.
tickets(suite) ->
- [otp_5990, otp_6166, otp_6554, otp_6785, otp_7184, otp_7232].
+ [otp_5990, otp_6166, otp_6554, otp_6785, otp_7184, otp_7232, otp_8393].
otp_5990(doc) ->
"OTP-5990. {erlang,is_record}.";
@@ -2598,6 +2598,80 @@ otp_7232(Config) when is_list(Config) ->
" end}])" = evaluate(Info, []),
ok.
+otp_8393(doc) ->
+ "OTP-8393. Prompt string.";
+otp_8393(suite) -> [];
+otp_8393(Config) when is_list(Config) ->
+ ?line _ = shell:prompt_func(default),
+ ?line "Bad prompt function: '> '" =
+ prompt_err(<<"shell:prompt_func('> ').">>),
+
+ ?line _ = shell:prompt_func(default),
+ ?line "exception error: bad argument in an arithmetic expression"++_ =
+ prompt_err(<<"shell:prompt_func({shell_SUITE,prompt4}).">>),
+
+ ?line _ = shell:prompt_func(default),
+ ?line "default.\n" =
+ t(<<"shell:prompt_func({shell_SUITE,prompt2}).">>),
+
+ ?line _ = shell:prompt_func(default),
+ ?line "default\nl.\n" =
+ t(<<"shell:prompt_func({shell_SUITE,prompt3}). l.">>),
+
+ %% Restricted shell.
+ Contents = <<"-module(test_restricted_shell).
+ -export([local_allowed/3, non_local_allowed/3]).
+ local_allowed(_,_,State) ->
+ {false,State}.
+
+ non_local_allowed({shell,stop_restricted},[],State) ->
+ {true,State};
+ non_local_allowed({shell,prompt_func},[_L],State) ->
+ {true,State};
+ non_local_allowed({shell_SUITE,prompt1},[_L],State) ->
+ {true,State};
+ non_local_allowed(_,_,State) ->
+ {false,State}.
+ ">>,
+ ?line Test = filename:join(?config(priv_dir, Config),
+ "test_restricted_shell.erl"),
+ ?line ok = compile_file(Config, Test, Contents, []),
+ ?line _ = shell:prompt_func(default),
+ ?line "exception exit: restricted shell starts now" =
+ comm_err(<<"begin shell:start_restricted("
+ "test_restricted_shell) end.">>),
+ ?line "default.\n"++_ =
+ t(<<"shell:prompt_func({shell_SUITE,prompt1}).">>),
+ ?line "exception exit: restricted shell does not allow apple(" ++ _ =
+ comm_err(<<"apple(1).">>),
+ ?line "{shell_SUITE,prompt1}.\n" =
+ t(<<"shell:prompt_func(default).">>),
+ ?line "exception exit: restricted shell stopped"=
+ comm_err(<<"begin shell:stop_restricted() end.">>),
+ ?line undefined =
+ application:get_env(stdlib, restricted_shell),
+
+ ?line NR = shell:results(20),
+ ?line "default\n20.\n" =
+ t(<<"shell:prompt_func({shell_SUITE,prompt3}). results(0).">>),
+
+ ?line _ = shell:prompt_func(default),
+ ?line 0 = shell:results(NR),
+ ok.
+
+prompt1(_L) ->
+ "prompt> ".
+
+prompt2(_L) ->
+ {'EXIT', []}.
+
+prompt3(L) ->
+ N = proplists:get_value(history, L),
+ integer_to_list(N).
+
+prompt4(_L) ->
+ erlang:apply({erlang,'/'}, [1,0]).
+
-ifdef(not_used).
exit_term(B) ->
"** exception exit:" ++ Reply = t(B),
@@ -2627,7 +2701,16 @@ comm_err(B) ->
Reply = t(B),
S0 = string:left(Reply, string:chr(Reply, $\n)-1),
S1 = string:strip(S0, left, $*),
- S2 = string:strip(S1, both, $ ),
+ S2 = string:strip(S1, both, $ ),
+ S = string:strip(S2, both, $"),
+ string:strip(S, right, $.).
+
+prompt_err(B) ->
+ Reply = t(B),
+ S00 = string:sub_string(Reply, string:chr(Reply, $\n)+1),
+ S0 = string:left(S00, string:chr(S00, $\n)-1),
+ S1 = string:strip(S0, left, $*),
+ S2 = string:strip(S1, both, $ ),
S = string:strip(S2, both, $"),
string:strip(S, right, $.).
diff --git a/lib/wx/c_src/Makefile.in b/lib/wx/c_src/Makefile.in
index 2f04b1dbf6..5a0b4ce8ef 100644
--- a/lib/wx/c_src/Makefile.in
+++ b/lib/wx/c_src/Makefile.in
@@ -1,19 +1,19 @@
#
# %CopyrightBegin%
-#
-# Copyright Ericsson AB 2008-2009. All Rights Reserved.
-#
+#
+# Copyright Ericsson AB 2008-2010. All Rights Reserved.
+#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
-#
+#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
-#
+#
# %CopyrightEnd%
#
@@ -47,14 +47,11 @@ ERL_DIR = @ERLANG_ROOT_DIR@
ERL_INCS = -I$(ERL_DIR)/usr/include
else
-ERLANG_OSTYPE = @WXERL_SYS_TYPE@
-
-ERL_INCS= -I$(ERL_TOP)/erts/emulator/beam \
- -I$(ERL_TOP)/erts/emulator/sys/$(ERLANG_OSTYPE) \
- -I$(ERL_TOP)/erts/include/internal \
- -I$(ERL_TOP)/erts/include/internal/$(ERLANG_OSTYPE) \
- -I$(ERL_TOP)/erts/include \
- -I$(ERL_TOP)/erts/include/$(ERLANG_OSTYPE)
+
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp_ded.mk
+
+ERL_INCS= $(DED_INCLUDES)
endif
diff --git a/lib/wx/c_src/gen/gl_fdefs.h b/lib/wx/c_src/gen/gl_fdefs.h
index 5fcd2d8e9b..f8851ddb83 100644
--- a/lib/wx/c_src/gen/gl_fdefs.h
+++ b/lib/wx/c_src/gen/gl_fdefs.h
@@ -1,19 +1,19 @@
/*
* %CopyrightBegin%
- *
- * Copyright Ericsson AB 2008-2009. All Rights Reserved.
- *
+ *
+ * Copyright Ericsson AB 2008-2010. All Rights Reserved.
+ *
* The contents of this file are subject to the Erlang Public License,
* Version 1.1, (the "License"); you may not use this file except in
* compliance with the License. You should have received a copy of the
* Erlang Public License along with this software. If not, it can be
* retrieved online at http://www.erlang.org/.
- *
+ *
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
- *
+ *
* %CopyrightEnd%
*/
/***** This file is generated do not edit ****/
diff --git a/lib/wx/c_src/gen/gl_finit.h b/lib/wx/c_src/gen/gl_finit.h
index dac74ca7b6..a22192d06a 100644
--- a/lib/wx/c_src/gen/gl_finit.h
+++ b/lib/wx/c_src/gen/gl_finit.h
@@ -1,19 +1,19 @@
/*
* %CopyrightBegin%
- *
- * Copyright Ericsson AB 2008-2009. All Rights Reserved.
- *
+ *
+ * Copyright Ericsson AB 2008-2010. All Rights Reserved.
+ *
* The contents of this file are subject to the Erlang Public License,
* Version 1.1, (the "License"); you may not use this file except in
* compliance with the License. You should have received a copy of the
* Erlang Public License along with this software. If not, it can be
* retrieved online at http://www.erlang.org/.
- *
+ *
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
- *
+ *
* %CopyrightEnd%
*/
/***** This file is generated do not edit ****/
diff --git a/lib/wx/c_src/gen/gl_funcs.cpp b/lib/wx/c_src/gen/gl_funcs.cpp
index 784731f02c..41a5524891 100644
--- a/lib/wx/c_src/gen/gl_funcs.cpp
+++ b/lib/wx/c_src/gen/gl_funcs.cpp
@@ -1,19 +1,19 @@
/*
* %CopyrightBegin%
- *
- * Copyright Ericsson AB 2008-2009. All Rights Reserved.
- *
+ *
+ * Copyright Ericsson AB 2008-2010. All Rights Reserved.
+ *
* The contents of this file are subject to the Erlang Public License,
* Version 1.1, (the "License"); you may not use this file except in
* compliance with the License. You should have received a copy of the
* Erlang Public License along with this software. If not, it can be
* retrieved online at http://www.erlang.org/.
- *
+ *
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
- *
+ *
* %CopyrightEnd%
*/
/***** This file is generated do not edit ****/
diff --git a/lib/wx/c_src/gen/glu_finit.h b/lib/wx/c_src/gen/glu_finit.h
index 7135c53243..2f0e2d15e4 100644
--- a/lib/wx/c_src/gen/glu_finit.h
+++ b/lib/wx/c_src/gen/glu_finit.h
@@ -1,19 +1,19 @@
/*
* %CopyrightBegin%
- *
- * Copyright Ericsson AB 2008-2009. All Rights Reserved.
- *
+ *
+ * Copyright Ericsson AB 2008-2010. All Rights Reserved.
+ *
* The contents of this file are subject to the Erlang Public License,
* Version 1.1, (the "License"); you may not use this file except in
* compliance with the License. You should have received a copy of the
* Erlang Public License along with this software. If not, it can be
* retrieved online at http://www.erlang.org/.
- *
+ *
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
- *
+ *
* %CopyrightEnd%
*/
/***** This file is generated do not edit ****/
diff --git a/lib/wx/c_src/gen/wxe_derived_dest.h b/lib/wx/c_src/gen/wxe_derived_dest.h
index ec56df7d4e..b8ff8519f1 100644
--- a/lib/wx/c_src/gen/wxe_derived_dest.h
+++ b/lib/wx/c_src/gen/wxe_derived_dest.h
@@ -1,19 +1,19 @@
/*
* %CopyrightBegin%
- *
- * Copyright Ericsson AB 2008-2009. All Rights Reserved.
- *
+ *
+ * Copyright Ericsson AB 2008-2010. All Rights Reserved.
+ *
* The contents of this file are subject to the Erlang Public License,
* Version 1.1, (the "License"); you may not use this file except in
* compliance with the License. You should have received a copy of the
* Erlang Public License along with this software. If not, it can be
* retrieved online at http://www.erlang.org/.
- *
+ *
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
- *
+ *
* %CopyrightEnd%
*/
diff --git a/lib/wx/c_src/gen/wxe_init.cpp b/lib/wx/c_src/gen/wxe_init.cpp
index c69f853203..96c775c4c0 100644
--- a/lib/wx/c_src/gen/wxe_init.cpp
+++ b/lib/wx/c_src/gen/wxe_init.cpp
@@ -1,19 +1,19 @@
/*
* %CopyrightBegin%
- *
- * Copyright Ericsson AB 2008-2009. All Rights Reserved.
- *
+ *
+ * Copyright Ericsson AB 2008-2010. All Rights Reserved.
+ *
* The contents of this file are subject to the Erlang Public License,
* Version 1.1, (the "License"); you may not use this file except in
* compliance with the License. You should have received a copy of the
* Erlang Public License along with this software. If not, it can be
* retrieved online at http://www.erlang.org/.
- *
+ *
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
- *
+ *
* %CopyrightEnd%
*/
/* This file is also generated */
diff --git a/lib/wx/configure.in b/lib/wx/configure.in
index 2b47f86baa..855c0c975e 100755
--- a/lib/wx/configure.in
+++ b/lib/wx/configure.in
@@ -1,20 +1,20 @@
dnl Process this file with autoconf to produce a configure script. -*-m4-*-
dnl %CopyrightBegin%
-dnl
-dnl Copyright Ericsson AB 2008-2009. All Rights Reserved.
-dnl
+dnl
+dnl Copyright Ericsson AB 2008-2010. All Rights Reserved.
+dnl
dnl The contents of this file are subject to the Erlang Public License,
dnl Version 1.1, (the "License"); you may not use this file except in
dnl compliance with the License. You should have received a copy of the
dnl Erlang Public License along with this software. If not, it can be
dnl retrieved online at http://www.erlang.org/.
-dnl
+dnl
dnl Software distributed under the License is distributed on an "AS IS"
dnl basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
dnl the License for the specific language governing rights and limitations
dnl under the License.
-dnl
+dnl
dnl %CopyrightEnd%
AC_INIT()
@@ -244,7 +244,10 @@ AC_SUBST(ERLANG_ROOT_DIR)
dnl
dnl Check for wxwidgets
dnl
-if test X"$MIXED_CYGWIN_VC" != X"yes" ; then
+if test "$cross_compiling" = "yes"; then
+ echo "Cross compilation of the wx driver is not supported yet, wx will NOT be usable" > ./CONF_INFO
+ WXERL_CAN_BUILD_DRIVER=false
+elif test X"$MIXED_CYGWIN_VC" != X"yes" ; then
m4_include(wxwin.m4)
AM_OPTIONS_WXCONFIG
@@ -306,7 +309,7 @@ define(wx_warn_text,[
if test X"$WX_BUILDING_INSIDE_ERLSRC" != X"true" ; then
AC_MSG_ERROR([wx_warn_text])
else
- echo "wxWidgets not found, wx will NOT be useable" > ./CONF_INFO
+ echo "wxWidgets not found, wx will NOT be usable" > ./CONF_INFO
WXERL_CAN_BUILD_DRIVER=false
AC_MSG_WARN([wx_warn_text])
fi
@@ -378,6 +381,8 @@ else
AC_SUBST(WX_RESCOMP)
fi
+if test "$WXERL_CAN_BUILD_DRIVER" != "false"; then
+
AC_SUBST(WX_HAVE_STATIC_LIBS)
AC_SUBST(RC_FILE_TYPE)
@@ -544,6 +549,8 @@ if test X"$CAN_LINK_WX" != X"yes" ; then
AC_MSG_WARN([Can not link wx program are all developer packages installed?])
fi
+fi dnl - if test "$WXERL_CAN_BUILD_DRIVER" != "false"
+
AC_SUBST(WXERL_CAN_BUILD_DRIVER)
#############################################################################
diff --git a/lib/wx/include/gl.hrl b/lib/wx/include/gl.hrl
index 7891ebf568..2fa0d72a59 100644
--- a/lib/wx/include/gl.hrl
+++ b/lib/wx/include/gl.hrl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% OPENGL DEFINITIONS
diff --git a/lib/wx/include/glu.hrl b/lib/wx/include/glu.hrl
index 27985aa8f7..a2ab55d054 100644
--- a/lib/wx/include/glu.hrl
+++ b/lib/wx/include/glu.hrl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% GLU DEFINITIONS
diff --git a/lib/wx/src/gen/gl.erl b/lib/wx/src/gen/gl.erl
index 8220acad98..d789f1b72f 100644
--- a/lib/wx/src/gen/gl.erl
+++ b/lib/wx/src/gen/gl.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% OPENGL API
diff --git a/lib/wx/src/gen/gl_debug.hrl b/lib/wx/src/gen/gl_debug.hrl
index 8c25d94590..68225197cf 100644
--- a/lib/wx/src/gen/gl_debug.hrl
+++ b/lib/wx/src/gen/gl_debug.hrl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/glu.erl b/lib/wx/src/gen/glu.erl
index 9a06be4077..ae4bac4e06 100644
--- a/lib/wx/src/gen/glu.erl
+++ b/lib/wx/src/gen/glu.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% OPENGL UTILITY API
diff --git a/lib/wx/src/gen/wxAcceleratorEntry.erl b/lib/wx/src/gen/wxAcceleratorEntry.erl
index 4c6d35829c..c7256a80db 100644
--- a/lib/wx/src/gen/wxAcceleratorEntry.erl
+++ b/lib/wx/src/gen/wxAcceleratorEntry.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxAcceleratorTable.erl b/lib/wx/src/gen/wxAcceleratorTable.erl
index f4f7f55f70..9fe5e4ee51 100644
--- a/lib/wx/src/gen/wxAcceleratorTable.erl
+++ b/lib/wx/src/gen/wxAcceleratorTable.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxArtProvider.erl b/lib/wx/src/gen/wxArtProvider.erl
index 4708f0844b..7a45b0d79d 100644
--- a/lib/wx/src/gen/wxArtProvider.erl
+++ b/lib/wx/src/gen/wxArtProvider.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxAuiDockArt.erl b/lib/wx/src/gen/wxAuiDockArt.erl
index 9997e69dfd..f2be643dd9 100644
--- a/lib/wx/src/gen/wxAuiDockArt.erl
+++ b/lib/wx/src/gen/wxAuiDockArt.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxAuiManager.erl b/lib/wx/src/gen/wxAuiManager.erl
index 7f46a36991..5d19ca5f58 100644
--- a/lib/wx/src/gen/wxAuiManager.erl
+++ b/lib/wx/src/gen/wxAuiManager.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxAuiManagerEvent.erl b/lib/wx/src/gen/wxAuiManagerEvent.erl
index c15eeb4ad6..c348f2abdb 100644
--- a/lib/wx/src/gen/wxAuiManagerEvent.erl
+++ b/lib/wx/src/gen/wxAuiManagerEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxAuiNotebook.erl b/lib/wx/src/gen/wxAuiNotebook.erl
index abd2cf618b..67596ed082 100644
--- a/lib/wx/src/gen/wxAuiNotebook.erl
+++ b/lib/wx/src/gen/wxAuiNotebook.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxAuiNotebookEvent.erl b/lib/wx/src/gen/wxAuiNotebookEvent.erl
index 763d7092f2..6257ff3602 100644
--- a/lib/wx/src/gen/wxAuiNotebookEvent.erl
+++ b/lib/wx/src/gen/wxAuiNotebookEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxAuiPaneInfo.erl b/lib/wx/src/gen/wxAuiPaneInfo.erl
index 1683045a90..8f699452cf 100644
--- a/lib/wx/src/gen/wxAuiPaneInfo.erl
+++ b/lib/wx/src/gen/wxAuiPaneInfo.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxAuiTabArt.erl b/lib/wx/src/gen/wxAuiTabArt.erl
index 354ab611d0..725bac9664 100644
--- a/lib/wx/src/gen/wxAuiTabArt.erl
+++ b/lib/wx/src/gen/wxAuiTabArt.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxBitmap.erl b/lib/wx/src/gen/wxBitmap.erl
index 930d87198c..0b5a216a35 100644
--- a/lib/wx/src/gen/wxBitmap.erl
+++ b/lib/wx/src/gen/wxBitmap.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxBitmapButton.erl b/lib/wx/src/gen/wxBitmapButton.erl
index 78d43d4918..a06b77e47b 100644
--- a/lib/wx/src/gen/wxBitmapButton.erl
+++ b/lib/wx/src/gen/wxBitmapButton.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxBitmapDataObject.erl b/lib/wx/src/gen/wxBitmapDataObject.erl
index 7c7f6a20b0..31a896bf82 100644
--- a/lib/wx/src/gen/wxBitmapDataObject.erl
+++ b/lib/wx/src/gen/wxBitmapDataObject.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxBoxSizer.erl b/lib/wx/src/gen/wxBoxSizer.erl
index 3599cd11b6..30f56b37c1 100644
--- a/lib/wx/src/gen/wxBoxSizer.erl
+++ b/lib/wx/src/gen/wxBoxSizer.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxBrush.erl b/lib/wx/src/gen/wxBrush.erl
index 2a5f184ce6..0d8a99fa3e 100644
--- a/lib/wx/src/gen/wxBrush.erl
+++ b/lib/wx/src/gen/wxBrush.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxBufferedDC.erl b/lib/wx/src/gen/wxBufferedDC.erl
index b99822040d..25d3fb41dc 100644
--- a/lib/wx/src/gen/wxBufferedDC.erl
+++ b/lib/wx/src/gen/wxBufferedDC.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxBufferedPaintDC.erl b/lib/wx/src/gen/wxBufferedPaintDC.erl
index 5674712055..805d69ce2c 100644
--- a/lib/wx/src/gen/wxBufferedPaintDC.erl
+++ b/lib/wx/src/gen/wxBufferedPaintDC.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxButton.erl b/lib/wx/src/gen/wxButton.erl
index 261a961063..9fee37139a 100644
--- a/lib/wx/src/gen/wxButton.erl
+++ b/lib/wx/src/gen/wxButton.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxCalendarCtrl.erl b/lib/wx/src/gen/wxCalendarCtrl.erl
index 5b87ac54e4..bea52dd332 100644
--- a/lib/wx/src/gen/wxCalendarCtrl.erl
+++ b/lib/wx/src/gen/wxCalendarCtrl.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxCalendarDateAttr.erl b/lib/wx/src/gen/wxCalendarDateAttr.erl
index 197e0eb996..e0f6cd5f73 100644
--- a/lib/wx/src/gen/wxCalendarDateAttr.erl
+++ b/lib/wx/src/gen/wxCalendarDateAttr.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxCalendarEvent.erl b/lib/wx/src/gen/wxCalendarEvent.erl
index de51d20cae..4fa2628fa0 100644
--- a/lib/wx/src/gen/wxCalendarEvent.erl
+++ b/lib/wx/src/gen/wxCalendarEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxCaret.erl b/lib/wx/src/gen/wxCaret.erl
index 50844d36ff..168865e5b4 100644
--- a/lib/wx/src/gen/wxCaret.erl
+++ b/lib/wx/src/gen/wxCaret.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxCheckBox.erl b/lib/wx/src/gen/wxCheckBox.erl
index bf368dc965..583ac25e87 100644
--- a/lib/wx/src/gen/wxCheckBox.erl
+++ b/lib/wx/src/gen/wxCheckBox.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxCheckListBox.erl b/lib/wx/src/gen/wxCheckListBox.erl
index 7cbf9d18df..4c84bc4f93 100644
--- a/lib/wx/src/gen/wxCheckListBox.erl
+++ b/lib/wx/src/gen/wxCheckListBox.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxChildFocusEvent.erl b/lib/wx/src/gen/wxChildFocusEvent.erl
index ea04e6863b..4abdb492e8 100644
--- a/lib/wx/src/gen/wxChildFocusEvent.erl
+++ b/lib/wx/src/gen/wxChildFocusEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxChoice.erl b/lib/wx/src/gen/wxChoice.erl
index 3e20d5f933..1626736b07 100644
--- a/lib/wx/src/gen/wxChoice.erl
+++ b/lib/wx/src/gen/wxChoice.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxChoicebook.erl b/lib/wx/src/gen/wxChoicebook.erl
index faf7c402b7..b11a100bc7 100644
--- a/lib/wx/src/gen/wxChoicebook.erl
+++ b/lib/wx/src/gen/wxChoicebook.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxClientDC.erl b/lib/wx/src/gen/wxClientDC.erl
index 86418cc922..08ec69954c 100644
--- a/lib/wx/src/gen/wxClientDC.erl
+++ b/lib/wx/src/gen/wxClientDC.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxClipboard.erl b/lib/wx/src/gen/wxClipboard.erl
index c92f7b9af4..1c9f1f8b40 100644
--- a/lib/wx/src/gen/wxClipboard.erl
+++ b/lib/wx/src/gen/wxClipboard.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxCloseEvent.erl b/lib/wx/src/gen/wxCloseEvent.erl
index e8e25a448c..6e3ac5fa70 100644
--- a/lib/wx/src/gen/wxCloseEvent.erl
+++ b/lib/wx/src/gen/wxCloseEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxColourData.erl b/lib/wx/src/gen/wxColourData.erl
index 973086c295..2b9ec830cb 100644
--- a/lib/wx/src/gen/wxColourData.erl
+++ b/lib/wx/src/gen/wxColourData.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxColourDialog.erl b/lib/wx/src/gen/wxColourDialog.erl
index 08a6b73775..89ee8ecb27 100644
--- a/lib/wx/src/gen/wxColourDialog.erl
+++ b/lib/wx/src/gen/wxColourDialog.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxColourPickerCtrl.erl b/lib/wx/src/gen/wxColourPickerCtrl.erl
index 1f345b4294..2bec462324 100644
--- a/lib/wx/src/gen/wxColourPickerCtrl.erl
+++ b/lib/wx/src/gen/wxColourPickerCtrl.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxColourPickerEvent.erl b/lib/wx/src/gen/wxColourPickerEvent.erl
index 0ed131fc30..f35d2727a5 100644
--- a/lib/wx/src/gen/wxColourPickerEvent.erl
+++ b/lib/wx/src/gen/wxColourPickerEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxComboBox.erl b/lib/wx/src/gen/wxComboBox.erl
index 6a40aacd50..55983a4108 100644
--- a/lib/wx/src/gen/wxComboBox.erl
+++ b/lib/wx/src/gen/wxComboBox.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxCommandEvent.erl b/lib/wx/src/gen/wxCommandEvent.erl
index f1df933d78..925a26f2c9 100644
--- a/lib/wx/src/gen/wxCommandEvent.erl
+++ b/lib/wx/src/gen/wxCommandEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxContextMenuEvent.erl b/lib/wx/src/gen/wxContextMenuEvent.erl
index 15167b0996..ea3e4ff0d5 100644
--- a/lib/wx/src/gen/wxContextMenuEvent.erl
+++ b/lib/wx/src/gen/wxContextMenuEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxControl.erl b/lib/wx/src/gen/wxControl.erl
index 1088afcc43..c612b2514a 100644
--- a/lib/wx/src/gen/wxControl.erl
+++ b/lib/wx/src/gen/wxControl.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxControlWithItems.erl b/lib/wx/src/gen/wxControlWithItems.erl
index ff5e3aaedf..cb98949f7e 100644
--- a/lib/wx/src/gen/wxControlWithItems.erl
+++ b/lib/wx/src/gen/wxControlWithItems.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxCursor.erl b/lib/wx/src/gen/wxCursor.erl
index 4c2a46cc84..283fb0c80c 100644
--- a/lib/wx/src/gen/wxCursor.erl
+++ b/lib/wx/src/gen/wxCursor.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxDC.erl b/lib/wx/src/gen/wxDC.erl
index 17bf77c331..b87cbb1c5c 100644
--- a/lib/wx/src/gen/wxDC.erl
+++ b/lib/wx/src/gen/wxDC.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxDataObject.erl b/lib/wx/src/gen/wxDataObject.erl
index 801bd3dfba..bad6d96fb5 100644
--- a/lib/wx/src/gen/wxDataObject.erl
+++ b/lib/wx/src/gen/wxDataObject.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxDateEvent.erl b/lib/wx/src/gen/wxDateEvent.erl
index 9885d6729a..ca500982e9 100644
--- a/lib/wx/src/gen/wxDateEvent.erl
+++ b/lib/wx/src/gen/wxDateEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxDatePickerCtrl.erl b/lib/wx/src/gen/wxDatePickerCtrl.erl
index b9ac9cdbad..92d58213f8 100644
--- a/lib/wx/src/gen/wxDatePickerCtrl.erl
+++ b/lib/wx/src/gen/wxDatePickerCtrl.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxDialog.erl b/lib/wx/src/gen/wxDialog.erl
index 75b8064bf7..d88af2acd1 100644
--- a/lib/wx/src/gen/wxDialog.erl
+++ b/lib/wx/src/gen/wxDialog.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxDirDialog.erl b/lib/wx/src/gen/wxDirDialog.erl
index 4329be13bd..01d71049b5 100644
--- a/lib/wx/src/gen/wxDirDialog.erl
+++ b/lib/wx/src/gen/wxDirDialog.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxDirPickerCtrl.erl b/lib/wx/src/gen/wxDirPickerCtrl.erl
index 787d3606f5..5f131b51a7 100644
--- a/lib/wx/src/gen/wxDirPickerCtrl.erl
+++ b/lib/wx/src/gen/wxDirPickerCtrl.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxDisplayChangedEvent.erl b/lib/wx/src/gen/wxDisplayChangedEvent.erl
index 280a51ffc2..29b5fb67d6 100644
--- a/lib/wx/src/gen/wxDisplayChangedEvent.erl
+++ b/lib/wx/src/gen/wxDisplayChangedEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxEraseEvent.erl b/lib/wx/src/gen/wxEraseEvent.erl
index 66fc161aba..7d1d52dfb1 100644
--- a/lib/wx/src/gen/wxEraseEvent.erl
+++ b/lib/wx/src/gen/wxEraseEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxEvent.erl b/lib/wx/src/gen/wxEvent.erl
index dda4c0189d..403fd89f1f 100644
--- a/lib/wx/src/gen/wxEvent.erl
+++ b/lib/wx/src/gen/wxEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxEvtHandler.erl b/lib/wx/src/gen/wxEvtHandler.erl
index 0d4e224fc5..f155351b66 100644
--- a/lib/wx/src/gen/wxEvtHandler.erl
+++ b/lib/wx/src/gen/wxEvtHandler.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxFileDataObject.erl b/lib/wx/src/gen/wxFileDataObject.erl
index 513f15eb00..09fd5ea832 100644
--- a/lib/wx/src/gen/wxFileDataObject.erl
+++ b/lib/wx/src/gen/wxFileDataObject.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxFileDialog.erl b/lib/wx/src/gen/wxFileDialog.erl
index efe1ff57f3..7bffdee19e 100644
--- a/lib/wx/src/gen/wxFileDialog.erl
+++ b/lib/wx/src/gen/wxFileDialog.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxFileDirPickerEvent.erl b/lib/wx/src/gen/wxFileDirPickerEvent.erl
index 0f9166e542..dfa2592d9e 100644
--- a/lib/wx/src/gen/wxFileDirPickerEvent.erl
+++ b/lib/wx/src/gen/wxFileDirPickerEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxFilePickerCtrl.erl b/lib/wx/src/gen/wxFilePickerCtrl.erl
index c182d20f36..a8dc861efb 100644
--- a/lib/wx/src/gen/wxFilePickerCtrl.erl
+++ b/lib/wx/src/gen/wxFilePickerCtrl.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxFindReplaceData.erl b/lib/wx/src/gen/wxFindReplaceData.erl
index ac09a23e89..cf7551cab5 100644
--- a/lib/wx/src/gen/wxFindReplaceData.erl
+++ b/lib/wx/src/gen/wxFindReplaceData.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxFindReplaceDialog.erl b/lib/wx/src/gen/wxFindReplaceDialog.erl
index 82da24abf5..091babcc31 100644
--- a/lib/wx/src/gen/wxFindReplaceDialog.erl
+++ b/lib/wx/src/gen/wxFindReplaceDialog.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxFlexGridSizer.erl b/lib/wx/src/gen/wxFlexGridSizer.erl
index 5387d04043..a862cdd788 100644
--- a/lib/wx/src/gen/wxFlexGridSizer.erl
+++ b/lib/wx/src/gen/wxFlexGridSizer.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxFocusEvent.erl b/lib/wx/src/gen/wxFocusEvent.erl
index 48a0f65e4f..4fb0432927 100644
--- a/lib/wx/src/gen/wxFocusEvent.erl
+++ b/lib/wx/src/gen/wxFocusEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxFont.erl b/lib/wx/src/gen/wxFont.erl
index 4ee829d83d..3158429763 100644
--- a/lib/wx/src/gen/wxFont.erl
+++ b/lib/wx/src/gen/wxFont.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxFontData.erl b/lib/wx/src/gen/wxFontData.erl
index 9b8de9212f..5fc27c14d6 100644
--- a/lib/wx/src/gen/wxFontData.erl
+++ b/lib/wx/src/gen/wxFontData.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxFontDialog.erl b/lib/wx/src/gen/wxFontDialog.erl
index 009e320117..b04fef436b 100644
--- a/lib/wx/src/gen/wxFontDialog.erl
+++ b/lib/wx/src/gen/wxFontDialog.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxFontPickerCtrl.erl b/lib/wx/src/gen/wxFontPickerCtrl.erl
index fca934df49..83e25f9789 100644
--- a/lib/wx/src/gen/wxFontPickerCtrl.erl
+++ b/lib/wx/src/gen/wxFontPickerCtrl.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxFontPickerEvent.erl b/lib/wx/src/gen/wxFontPickerEvent.erl
index 28c1e0fc98..28dc4308bd 100644
--- a/lib/wx/src/gen/wxFontPickerEvent.erl
+++ b/lib/wx/src/gen/wxFontPickerEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxFrame.erl b/lib/wx/src/gen/wxFrame.erl
index 136651c001..934e562ee7 100644
--- a/lib/wx/src/gen/wxFrame.erl
+++ b/lib/wx/src/gen/wxFrame.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGBSizerItem.erl b/lib/wx/src/gen/wxGBSizerItem.erl
index 4d79e5c3db..43909138b8 100644
--- a/lib/wx/src/gen/wxGBSizerItem.erl
+++ b/lib/wx/src/gen/wxGBSizerItem.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGLCanvas.erl b/lib/wx/src/gen/wxGLCanvas.erl
index 25d4ddc9f2..927b7eeb05 100644
--- a/lib/wx/src/gen/wxGLCanvas.erl
+++ b/lib/wx/src/gen/wxGLCanvas.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGauge.erl b/lib/wx/src/gen/wxGauge.erl
index 3a5e117e19..559daea3d4 100644
--- a/lib/wx/src/gen/wxGauge.erl
+++ b/lib/wx/src/gen/wxGauge.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGraphicsBrush.erl b/lib/wx/src/gen/wxGraphicsBrush.erl
index c1db82dcb3..99fd7f1ac8 100644
--- a/lib/wx/src/gen/wxGraphicsBrush.erl
+++ b/lib/wx/src/gen/wxGraphicsBrush.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGraphicsContext.erl b/lib/wx/src/gen/wxGraphicsContext.erl
index 885578657d..4ca9ad25c4 100644
--- a/lib/wx/src/gen/wxGraphicsContext.erl
+++ b/lib/wx/src/gen/wxGraphicsContext.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGraphicsFont.erl b/lib/wx/src/gen/wxGraphicsFont.erl
index 07c964d9b9..423bc15f8b 100644
--- a/lib/wx/src/gen/wxGraphicsFont.erl
+++ b/lib/wx/src/gen/wxGraphicsFont.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGraphicsMatrix.erl b/lib/wx/src/gen/wxGraphicsMatrix.erl
index b8c7b3eefb..ed6de90267 100644
--- a/lib/wx/src/gen/wxGraphicsMatrix.erl
+++ b/lib/wx/src/gen/wxGraphicsMatrix.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGraphicsObject.erl b/lib/wx/src/gen/wxGraphicsObject.erl
index 5b8b44ceca..7e63285b7a 100644
--- a/lib/wx/src/gen/wxGraphicsObject.erl
+++ b/lib/wx/src/gen/wxGraphicsObject.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGraphicsPath.erl b/lib/wx/src/gen/wxGraphicsPath.erl
index 7b27545d5f..c3adc3581d 100644
--- a/lib/wx/src/gen/wxGraphicsPath.erl
+++ b/lib/wx/src/gen/wxGraphicsPath.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGraphicsPen.erl b/lib/wx/src/gen/wxGraphicsPen.erl
index 6abf52f025..ee15519d6d 100644
--- a/lib/wx/src/gen/wxGraphicsPen.erl
+++ b/lib/wx/src/gen/wxGraphicsPen.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGraphicsRenderer.erl b/lib/wx/src/gen/wxGraphicsRenderer.erl
index 457ffe2b6e..ed53ebf468 100644
--- a/lib/wx/src/gen/wxGraphicsRenderer.erl
+++ b/lib/wx/src/gen/wxGraphicsRenderer.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGrid.erl b/lib/wx/src/gen/wxGrid.erl
index 2a45bc3d6b..84ca181ce1 100644
--- a/lib/wx/src/gen/wxGrid.erl
+++ b/lib/wx/src/gen/wxGrid.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGridBagSizer.erl b/lib/wx/src/gen/wxGridBagSizer.erl
index 56dc6092ad..716024bcbc 100644
--- a/lib/wx/src/gen/wxGridBagSizer.erl
+++ b/lib/wx/src/gen/wxGridBagSizer.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGridCellAttr.erl b/lib/wx/src/gen/wxGridCellAttr.erl
index b9fd65304c..3d23c2acfc 100644
--- a/lib/wx/src/gen/wxGridCellAttr.erl
+++ b/lib/wx/src/gen/wxGridCellAttr.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGridCellBoolEditor.erl b/lib/wx/src/gen/wxGridCellBoolEditor.erl
index b5afaba68f..13084b3590 100644
--- a/lib/wx/src/gen/wxGridCellBoolEditor.erl
+++ b/lib/wx/src/gen/wxGridCellBoolEditor.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGridCellBoolRenderer.erl b/lib/wx/src/gen/wxGridCellBoolRenderer.erl
index 442c00df1c..8cfdd9d02e 100644
--- a/lib/wx/src/gen/wxGridCellBoolRenderer.erl
+++ b/lib/wx/src/gen/wxGridCellBoolRenderer.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGridCellChoiceEditor.erl b/lib/wx/src/gen/wxGridCellChoiceEditor.erl
index d62933fd07..ebadc1888b 100644
--- a/lib/wx/src/gen/wxGridCellChoiceEditor.erl
+++ b/lib/wx/src/gen/wxGridCellChoiceEditor.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGridCellEditor.erl b/lib/wx/src/gen/wxGridCellEditor.erl
index c08027e040..a27ba7bd0f 100644
--- a/lib/wx/src/gen/wxGridCellEditor.erl
+++ b/lib/wx/src/gen/wxGridCellEditor.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGridCellFloatEditor.erl b/lib/wx/src/gen/wxGridCellFloatEditor.erl
index e924c8f9a5..104602b137 100644
--- a/lib/wx/src/gen/wxGridCellFloatEditor.erl
+++ b/lib/wx/src/gen/wxGridCellFloatEditor.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGridCellFloatRenderer.erl b/lib/wx/src/gen/wxGridCellFloatRenderer.erl
index 1d207ae4e0..000cbcf4a7 100644
--- a/lib/wx/src/gen/wxGridCellFloatRenderer.erl
+++ b/lib/wx/src/gen/wxGridCellFloatRenderer.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGridCellNumberEditor.erl b/lib/wx/src/gen/wxGridCellNumberEditor.erl
index 347c03c377..4a5dd9d58b 100644
--- a/lib/wx/src/gen/wxGridCellNumberEditor.erl
+++ b/lib/wx/src/gen/wxGridCellNumberEditor.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGridCellNumberRenderer.erl b/lib/wx/src/gen/wxGridCellNumberRenderer.erl
index cf90987dc9..2ace853675 100644
--- a/lib/wx/src/gen/wxGridCellNumberRenderer.erl
+++ b/lib/wx/src/gen/wxGridCellNumberRenderer.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGridCellRenderer.erl b/lib/wx/src/gen/wxGridCellRenderer.erl
index c7040049a4..d9520c478f 100644
--- a/lib/wx/src/gen/wxGridCellRenderer.erl
+++ b/lib/wx/src/gen/wxGridCellRenderer.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGridCellStringRenderer.erl b/lib/wx/src/gen/wxGridCellStringRenderer.erl
index 1c37cf4d6c..bc0e6b229d 100644
--- a/lib/wx/src/gen/wxGridCellStringRenderer.erl
+++ b/lib/wx/src/gen/wxGridCellStringRenderer.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGridCellTextEditor.erl b/lib/wx/src/gen/wxGridCellTextEditor.erl
index f785d736f0..305940fddc 100644
--- a/lib/wx/src/gen/wxGridCellTextEditor.erl
+++ b/lib/wx/src/gen/wxGridCellTextEditor.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGridEvent.erl b/lib/wx/src/gen/wxGridEvent.erl
index 4d89408c98..bf7dd15a70 100644
--- a/lib/wx/src/gen/wxGridEvent.erl
+++ b/lib/wx/src/gen/wxGridEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxGridSizer.erl b/lib/wx/src/gen/wxGridSizer.erl
index bcc62be429..cf0d3bb8b7 100644
--- a/lib/wx/src/gen/wxGridSizer.erl
+++ b/lib/wx/src/gen/wxGridSizer.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxHelpEvent.erl b/lib/wx/src/gen/wxHelpEvent.erl
index 4785ff10de..d21b55d171 100644
--- a/lib/wx/src/gen/wxHelpEvent.erl
+++ b/lib/wx/src/gen/wxHelpEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxHtmlEasyPrinting.erl b/lib/wx/src/gen/wxHtmlEasyPrinting.erl
index a782bd71c3..adb56273c8 100644
--- a/lib/wx/src/gen/wxHtmlEasyPrinting.erl
+++ b/lib/wx/src/gen/wxHtmlEasyPrinting.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxHtmlLinkEvent.erl b/lib/wx/src/gen/wxHtmlLinkEvent.erl
index 04eccad939..aba2cb4ab7 100644
--- a/lib/wx/src/gen/wxHtmlLinkEvent.erl
+++ b/lib/wx/src/gen/wxHtmlLinkEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxHtmlWindow.erl b/lib/wx/src/gen/wxHtmlWindow.erl
index 6f43c17890..745f52e0ea 100644
--- a/lib/wx/src/gen/wxHtmlWindow.erl
+++ b/lib/wx/src/gen/wxHtmlWindow.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxIcon.erl b/lib/wx/src/gen/wxIcon.erl
index d95fad1458..4f605a8f04 100644
--- a/lib/wx/src/gen/wxIcon.erl
+++ b/lib/wx/src/gen/wxIcon.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxIconBundle.erl b/lib/wx/src/gen/wxIconBundle.erl
index be600c69da..3350838203 100644
--- a/lib/wx/src/gen/wxIconBundle.erl
+++ b/lib/wx/src/gen/wxIconBundle.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxIconizeEvent.erl b/lib/wx/src/gen/wxIconizeEvent.erl
index 09f8843b74..43d805faa4 100644
--- a/lib/wx/src/gen/wxIconizeEvent.erl
+++ b/lib/wx/src/gen/wxIconizeEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxIdleEvent.erl b/lib/wx/src/gen/wxIdleEvent.erl
index e205eff522..d7f1e117d7 100644
--- a/lib/wx/src/gen/wxIdleEvent.erl
+++ b/lib/wx/src/gen/wxIdleEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxImage.erl b/lib/wx/src/gen/wxImage.erl
index f90ae09707..d35a56bdc6 100644
--- a/lib/wx/src/gen/wxImage.erl
+++ b/lib/wx/src/gen/wxImage.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxImageList.erl b/lib/wx/src/gen/wxImageList.erl
index b20dfda315..ecc11f100e 100644
--- a/lib/wx/src/gen/wxImageList.erl
+++ b/lib/wx/src/gen/wxImageList.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxJoystickEvent.erl b/lib/wx/src/gen/wxJoystickEvent.erl
index b07cbd6d9a..cf4cd0fcaf 100644
--- a/lib/wx/src/gen/wxJoystickEvent.erl
+++ b/lib/wx/src/gen/wxJoystickEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxKeyEvent.erl b/lib/wx/src/gen/wxKeyEvent.erl
index 0e92402435..0dea0fec7c 100644
--- a/lib/wx/src/gen/wxKeyEvent.erl
+++ b/lib/wx/src/gen/wxKeyEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxLayoutAlgorithm.erl b/lib/wx/src/gen/wxLayoutAlgorithm.erl
index 8ea920d80b..d61142c9e0 100644
--- a/lib/wx/src/gen/wxLayoutAlgorithm.erl
+++ b/lib/wx/src/gen/wxLayoutAlgorithm.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxListBox.erl b/lib/wx/src/gen/wxListBox.erl
index 5fd9f329d0..5c4d67cf2a 100644
--- a/lib/wx/src/gen/wxListBox.erl
+++ b/lib/wx/src/gen/wxListBox.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxListCtrl.erl b/lib/wx/src/gen/wxListCtrl.erl
index 980415f577..a847f4059e 100644
--- a/lib/wx/src/gen/wxListCtrl.erl
+++ b/lib/wx/src/gen/wxListCtrl.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxListEvent.erl b/lib/wx/src/gen/wxListEvent.erl
index fd1cc381ed..2d80e86abc 100644
--- a/lib/wx/src/gen/wxListEvent.erl
+++ b/lib/wx/src/gen/wxListEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxListItem.erl b/lib/wx/src/gen/wxListItem.erl
index 31d44b9601..9891adb897 100644
--- a/lib/wx/src/gen/wxListItem.erl
+++ b/lib/wx/src/gen/wxListItem.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxListView.erl b/lib/wx/src/gen/wxListView.erl
index a39a594a6a..7c938a21ca 100644
--- a/lib/wx/src/gen/wxListView.erl
+++ b/lib/wx/src/gen/wxListView.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxListbook.erl b/lib/wx/src/gen/wxListbook.erl
index 385c50c316..7cdc861c26 100644
--- a/lib/wx/src/gen/wxListbook.erl
+++ b/lib/wx/src/gen/wxListbook.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxLogNull.erl b/lib/wx/src/gen/wxLogNull.erl
index f33070b197..3ec2c6384d 100644
--- a/lib/wx/src/gen/wxLogNull.erl
+++ b/lib/wx/src/gen/wxLogNull.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxMDIChildFrame.erl b/lib/wx/src/gen/wxMDIChildFrame.erl
index 3403ab6c9c..42e1af8d98 100644
--- a/lib/wx/src/gen/wxMDIChildFrame.erl
+++ b/lib/wx/src/gen/wxMDIChildFrame.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxMDIClientWindow.erl b/lib/wx/src/gen/wxMDIClientWindow.erl
index 6a6fbab4a7..a1bcaf0dee 100644
--- a/lib/wx/src/gen/wxMDIClientWindow.erl
+++ b/lib/wx/src/gen/wxMDIClientWindow.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxMDIParentFrame.erl b/lib/wx/src/gen/wxMDIParentFrame.erl
index 2638309ce7..1519ec985c 100644
--- a/lib/wx/src/gen/wxMDIParentFrame.erl
+++ b/lib/wx/src/gen/wxMDIParentFrame.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxMask.erl b/lib/wx/src/gen/wxMask.erl
index 881f8ba183..0686165254 100644
--- a/lib/wx/src/gen/wxMask.erl
+++ b/lib/wx/src/gen/wxMask.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxMaximizeEvent.erl b/lib/wx/src/gen/wxMaximizeEvent.erl
index 4ad1be3de0..0d775bf201 100644
--- a/lib/wx/src/gen/wxMaximizeEvent.erl
+++ b/lib/wx/src/gen/wxMaximizeEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxMemoryDC.erl b/lib/wx/src/gen/wxMemoryDC.erl
index 28471cc8d3..97b74a4d9f 100644
--- a/lib/wx/src/gen/wxMemoryDC.erl
+++ b/lib/wx/src/gen/wxMemoryDC.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxMenu.erl b/lib/wx/src/gen/wxMenu.erl
index bc4fef6f18..02a8c5e76e 100644
--- a/lib/wx/src/gen/wxMenu.erl
+++ b/lib/wx/src/gen/wxMenu.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxMenuBar.erl b/lib/wx/src/gen/wxMenuBar.erl
index 28dab451b8..84017d1526 100644
--- a/lib/wx/src/gen/wxMenuBar.erl
+++ b/lib/wx/src/gen/wxMenuBar.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxMenuEvent.erl b/lib/wx/src/gen/wxMenuEvent.erl
index 77ce7c04b7..47e696d0ba 100644
--- a/lib/wx/src/gen/wxMenuEvent.erl
+++ b/lib/wx/src/gen/wxMenuEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxMenuItem.erl b/lib/wx/src/gen/wxMenuItem.erl
index 2d9fd15d86..74f314f468 100644
--- a/lib/wx/src/gen/wxMenuItem.erl
+++ b/lib/wx/src/gen/wxMenuItem.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxMessageDialog.erl b/lib/wx/src/gen/wxMessageDialog.erl
index eab41919ba..83e6dcee7f 100644
--- a/lib/wx/src/gen/wxMessageDialog.erl
+++ b/lib/wx/src/gen/wxMessageDialog.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxMiniFrame.erl b/lib/wx/src/gen/wxMiniFrame.erl
index 3e7799a66f..f99b74da1f 100644
--- a/lib/wx/src/gen/wxMiniFrame.erl
+++ b/lib/wx/src/gen/wxMiniFrame.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxMirrorDC.erl b/lib/wx/src/gen/wxMirrorDC.erl
index 9300f7a31e..20cc2b2f28 100644
--- a/lib/wx/src/gen/wxMirrorDC.erl
+++ b/lib/wx/src/gen/wxMirrorDC.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxMouseCaptureChangedEvent.erl b/lib/wx/src/gen/wxMouseCaptureChangedEvent.erl
index 629dcde795..c156f0e87e 100644
--- a/lib/wx/src/gen/wxMouseCaptureChangedEvent.erl
+++ b/lib/wx/src/gen/wxMouseCaptureChangedEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxMouseEvent.erl b/lib/wx/src/gen/wxMouseEvent.erl
index 0772e99b0d..69a9efc75d 100644
--- a/lib/wx/src/gen/wxMouseEvent.erl
+++ b/lib/wx/src/gen/wxMouseEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxMoveEvent.erl b/lib/wx/src/gen/wxMoveEvent.erl
index 17a33ff3ed..4d88658262 100644
--- a/lib/wx/src/gen/wxMoveEvent.erl
+++ b/lib/wx/src/gen/wxMoveEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxMultiChoiceDialog.erl b/lib/wx/src/gen/wxMultiChoiceDialog.erl
index 98690654e6..6784dfeb48 100644
--- a/lib/wx/src/gen/wxMultiChoiceDialog.erl
+++ b/lib/wx/src/gen/wxMultiChoiceDialog.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxNavigationKeyEvent.erl b/lib/wx/src/gen/wxNavigationKeyEvent.erl
index 9a74a75c51..ed54eca139 100644
--- a/lib/wx/src/gen/wxNavigationKeyEvent.erl
+++ b/lib/wx/src/gen/wxNavigationKeyEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxNcPaintEvent.erl b/lib/wx/src/gen/wxNcPaintEvent.erl
index 22e00d337d..015b7d41b0 100644
--- a/lib/wx/src/gen/wxNcPaintEvent.erl
+++ b/lib/wx/src/gen/wxNcPaintEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxNotebook.erl b/lib/wx/src/gen/wxNotebook.erl
index 93cc741036..2f00e79607 100644
--- a/lib/wx/src/gen/wxNotebook.erl
+++ b/lib/wx/src/gen/wxNotebook.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxNotebookEvent.erl b/lib/wx/src/gen/wxNotebookEvent.erl
index 4664f85527..58c3c0ccc0 100644
--- a/lib/wx/src/gen/wxNotebookEvent.erl
+++ b/lib/wx/src/gen/wxNotebookEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxNotifyEvent.erl b/lib/wx/src/gen/wxNotifyEvent.erl
index 4e463aa7e0..195e0db0cf 100644
--- a/lib/wx/src/gen/wxNotifyEvent.erl
+++ b/lib/wx/src/gen/wxNotifyEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPageSetupDialog.erl b/lib/wx/src/gen/wxPageSetupDialog.erl
index 73eac44ab5..6802f3b26f 100644
--- a/lib/wx/src/gen/wxPageSetupDialog.erl
+++ b/lib/wx/src/gen/wxPageSetupDialog.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPageSetupDialogData.erl b/lib/wx/src/gen/wxPageSetupDialogData.erl
index 576be819a2..479c5be963 100644
--- a/lib/wx/src/gen/wxPageSetupDialogData.erl
+++ b/lib/wx/src/gen/wxPageSetupDialogData.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPaintDC.erl b/lib/wx/src/gen/wxPaintDC.erl
index ea4e847f69..a84bca2342 100644
--- a/lib/wx/src/gen/wxPaintDC.erl
+++ b/lib/wx/src/gen/wxPaintDC.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPaintEvent.erl b/lib/wx/src/gen/wxPaintEvent.erl
index 9f6b84890b..859e00e8dd 100644
--- a/lib/wx/src/gen/wxPaintEvent.erl
+++ b/lib/wx/src/gen/wxPaintEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPalette.erl b/lib/wx/src/gen/wxPalette.erl
index 499e6f47ce..38b9be3906 100644
--- a/lib/wx/src/gen/wxPalette.erl
+++ b/lib/wx/src/gen/wxPalette.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPaletteChangedEvent.erl b/lib/wx/src/gen/wxPaletteChangedEvent.erl
index 147389709c..1cde5997a3 100644
--- a/lib/wx/src/gen/wxPaletteChangedEvent.erl
+++ b/lib/wx/src/gen/wxPaletteChangedEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPanel.erl b/lib/wx/src/gen/wxPanel.erl
index ca18caf4da..8afbe6df99 100644
--- a/lib/wx/src/gen/wxPanel.erl
+++ b/lib/wx/src/gen/wxPanel.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPasswordEntryDialog.erl b/lib/wx/src/gen/wxPasswordEntryDialog.erl
index 70728355e9..125a9915c5 100644
--- a/lib/wx/src/gen/wxPasswordEntryDialog.erl
+++ b/lib/wx/src/gen/wxPasswordEntryDialog.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPen.erl b/lib/wx/src/gen/wxPen.erl
index cf159f559e..ffd2c42140 100644
--- a/lib/wx/src/gen/wxPen.erl
+++ b/lib/wx/src/gen/wxPen.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPickerBase.erl b/lib/wx/src/gen/wxPickerBase.erl
index 173f31faf0..90c8fa7642 100644
--- a/lib/wx/src/gen/wxPickerBase.erl
+++ b/lib/wx/src/gen/wxPickerBase.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPostScriptDC.erl b/lib/wx/src/gen/wxPostScriptDC.erl
index 6e67abdd08..d142f33bc5 100644
--- a/lib/wx/src/gen/wxPostScriptDC.erl
+++ b/lib/wx/src/gen/wxPostScriptDC.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPreviewCanvas.erl b/lib/wx/src/gen/wxPreviewCanvas.erl
index 4f52e2015f..d483d78f39 100644
--- a/lib/wx/src/gen/wxPreviewCanvas.erl
+++ b/lib/wx/src/gen/wxPreviewCanvas.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPreviewControlBar.erl b/lib/wx/src/gen/wxPreviewControlBar.erl
index 0118977e9a..db1eee9582 100644
--- a/lib/wx/src/gen/wxPreviewControlBar.erl
+++ b/lib/wx/src/gen/wxPreviewControlBar.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPreviewFrame.erl b/lib/wx/src/gen/wxPreviewFrame.erl
index 93dac8dbd9..c324680e87 100644
--- a/lib/wx/src/gen/wxPreviewFrame.erl
+++ b/lib/wx/src/gen/wxPreviewFrame.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPrintData.erl b/lib/wx/src/gen/wxPrintData.erl
index 49fad6b093..3e4fac5912 100644
--- a/lib/wx/src/gen/wxPrintData.erl
+++ b/lib/wx/src/gen/wxPrintData.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPrintDialog.erl b/lib/wx/src/gen/wxPrintDialog.erl
index 5100e7dcd4..f167059990 100644
--- a/lib/wx/src/gen/wxPrintDialog.erl
+++ b/lib/wx/src/gen/wxPrintDialog.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPrintDialogData.erl b/lib/wx/src/gen/wxPrintDialogData.erl
index b4ad5a4a82..3bbac3b4fc 100644
--- a/lib/wx/src/gen/wxPrintDialogData.erl
+++ b/lib/wx/src/gen/wxPrintDialogData.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPrintPreview.erl b/lib/wx/src/gen/wxPrintPreview.erl
index 8a616c64fb..cab174e3ee 100644
--- a/lib/wx/src/gen/wxPrintPreview.erl
+++ b/lib/wx/src/gen/wxPrintPreview.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPrinter.erl b/lib/wx/src/gen/wxPrinter.erl
index d12a1f5909..cc32badeb3 100644
--- a/lib/wx/src/gen/wxPrinter.erl
+++ b/lib/wx/src/gen/wxPrinter.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxPrintout.erl b/lib/wx/src/gen/wxPrintout.erl
index 30811d32a0..67a7cb5c82 100644
--- a/lib/wx/src/gen/wxPrintout.erl
+++ b/lib/wx/src/gen/wxPrintout.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxProgressDialog.erl b/lib/wx/src/gen/wxProgressDialog.erl
index 6d7d2d9743..78b3b1d3a0 100644
--- a/lib/wx/src/gen/wxProgressDialog.erl
+++ b/lib/wx/src/gen/wxProgressDialog.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxQueryNewPaletteEvent.erl b/lib/wx/src/gen/wxQueryNewPaletteEvent.erl
index 140d58c42c..a5322f0d64 100644
--- a/lib/wx/src/gen/wxQueryNewPaletteEvent.erl
+++ b/lib/wx/src/gen/wxQueryNewPaletteEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxRadioBox.erl b/lib/wx/src/gen/wxRadioBox.erl
index ab76354da2..0481b03cd2 100644
--- a/lib/wx/src/gen/wxRadioBox.erl
+++ b/lib/wx/src/gen/wxRadioBox.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxRadioButton.erl b/lib/wx/src/gen/wxRadioButton.erl
index 066023d121..7d2c41ec10 100644
--- a/lib/wx/src/gen/wxRadioButton.erl
+++ b/lib/wx/src/gen/wxRadioButton.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxRegion.erl b/lib/wx/src/gen/wxRegion.erl
index a2d2c7d830..6a929480b1 100644
--- a/lib/wx/src/gen/wxRegion.erl
+++ b/lib/wx/src/gen/wxRegion.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxSashEvent.erl b/lib/wx/src/gen/wxSashEvent.erl
index 56453fbe2f..3df2543378 100644
--- a/lib/wx/src/gen/wxSashEvent.erl
+++ b/lib/wx/src/gen/wxSashEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxSashLayoutWindow.erl b/lib/wx/src/gen/wxSashLayoutWindow.erl
index 9b3c372369..9d40021b3f 100644
--- a/lib/wx/src/gen/wxSashLayoutWindow.erl
+++ b/lib/wx/src/gen/wxSashLayoutWindow.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxSashWindow.erl b/lib/wx/src/gen/wxSashWindow.erl
index d836d84ed3..c665dd4c9a 100644
--- a/lib/wx/src/gen/wxSashWindow.erl
+++ b/lib/wx/src/gen/wxSashWindow.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxScreenDC.erl b/lib/wx/src/gen/wxScreenDC.erl
index 35dcb23179..86b62a48c7 100644
--- a/lib/wx/src/gen/wxScreenDC.erl
+++ b/lib/wx/src/gen/wxScreenDC.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxScrollBar.erl b/lib/wx/src/gen/wxScrollBar.erl
index f77b4dde21..9ca197af8d 100644
--- a/lib/wx/src/gen/wxScrollBar.erl
+++ b/lib/wx/src/gen/wxScrollBar.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxScrollEvent.erl b/lib/wx/src/gen/wxScrollEvent.erl
index 52bb5b8347..19e21e6b03 100644
--- a/lib/wx/src/gen/wxScrollEvent.erl
+++ b/lib/wx/src/gen/wxScrollEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxScrollWinEvent.erl b/lib/wx/src/gen/wxScrollWinEvent.erl
index d87be2c792..9b7fcca3da 100644
--- a/lib/wx/src/gen/wxScrollWinEvent.erl
+++ b/lib/wx/src/gen/wxScrollWinEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxScrolledWindow.erl b/lib/wx/src/gen/wxScrolledWindow.erl
index d3e250fbe1..9673d09fe8 100644
--- a/lib/wx/src/gen/wxScrolledWindow.erl
+++ b/lib/wx/src/gen/wxScrolledWindow.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxSetCursorEvent.erl b/lib/wx/src/gen/wxSetCursorEvent.erl
index 74cc1c1a5a..75cf542ba1 100644
--- a/lib/wx/src/gen/wxSetCursorEvent.erl
+++ b/lib/wx/src/gen/wxSetCursorEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxShowEvent.erl b/lib/wx/src/gen/wxShowEvent.erl
index 173cd4269a..c00b1acbee 100644
--- a/lib/wx/src/gen/wxShowEvent.erl
+++ b/lib/wx/src/gen/wxShowEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxSingleChoiceDialog.erl b/lib/wx/src/gen/wxSingleChoiceDialog.erl
index 485e7f8be9..9424a536cd 100644
--- a/lib/wx/src/gen/wxSingleChoiceDialog.erl
+++ b/lib/wx/src/gen/wxSingleChoiceDialog.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxSizeEvent.erl b/lib/wx/src/gen/wxSizeEvent.erl
index e9e337df33..115f6d3f6c 100644
--- a/lib/wx/src/gen/wxSizeEvent.erl
+++ b/lib/wx/src/gen/wxSizeEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxSizer.erl b/lib/wx/src/gen/wxSizer.erl
index 4086d34b19..7cc31b1b6e 100644
--- a/lib/wx/src/gen/wxSizer.erl
+++ b/lib/wx/src/gen/wxSizer.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxSizerFlags.erl b/lib/wx/src/gen/wxSizerFlags.erl
index 898b2d42ed..8dfaa2ca4b 100644
--- a/lib/wx/src/gen/wxSizerFlags.erl
+++ b/lib/wx/src/gen/wxSizerFlags.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxSizerItem.erl b/lib/wx/src/gen/wxSizerItem.erl
index e8391d859a..e69b269b21 100644
--- a/lib/wx/src/gen/wxSizerItem.erl
+++ b/lib/wx/src/gen/wxSizerItem.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxSlider.erl b/lib/wx/src/gen/wxSlider.erl
index 694630859b..55418ece91 100644
--- a/lib/wx/src/gen/wxSlider.erl
+++ b/lib/wx/src/gen/wxSlider.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxSpinButton.erl b/lib/wx/src/gen/wxSpinButton.erl
index 1cc59ec6aa..5c0c3637a1 100644
--- a/lib/wx/src/gen/wxSpinButton.erl
+++ b/lib/wx/src/gen/wxSpinButton.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxSpinCtrl.erl b/lib/wx/src/gen/wxSpinCtrl.erl
index bed2d733a3..ae137195c9 100644
--- a/lib/wx/src/gen/wxSpinCtrl.erl
+++ b/lib/wx/src/gen/wxSpinCtrl.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxSpinEvent.erl b/lib/wx/src/gen/wxSpinEvent.erl
index 2c44b3c2a3..37fc6e6457 100644
--- a/lib/wx/src/gen/wxSpinEvent.erl
+++ b/lib/wx/src/gen/wxSpinEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxSplashScreen.erl b/lib/wx/src/gen/wxSplashScreen.erl
index 8fe543c4e8..c7c5d5cf90 100644
--- a/lib/wx/src/gen/wxSplashScreen.erl
+++ b/lib/wx/src/gen/wxSplashScreen.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxSplitterEvent.erl b/lib/wx/src/gen/wxSplitterEvent.erl
index a3a8171742..0f40455998 100644
--- a/lib/wx/src/gen/wxSplitterEvent.erl
+++ b/lib/wx/src/gen/wxSplitterEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxSplitterWindow.erl b/lib/wx/src/gen/wxSplitterWindow.erl
index 6522858266..689ddd03b2 100644
--- a/lib/wx/src/gen/wxSplitterWindow.erl
+++ b/lib/wx/src/gen/wxSplitterWindow.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxStaticBitmap.erl b/lib/wx/src/gen/wxStaticBitmap.erl
index 5f22b5780e..8c6adc16aa 100644
--- a/lib/wx/src/gen/wxStaticBitmap.erl
+++ b/lib/wx/src/gen/wxStaticBitmap.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxStaticBox.erl b/lib/wx/src/gen/wxStaticBox.erl
index 08e8fd8c0c..da53a5c2fe 100644
--- a/lib/wx/src/gen/wxStaticBox.erl
+++ b/lib/wx/src/gen/wxStaticBox.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxStaticBoxSizer.erl b/lib/wx/src/gen/wxStaticBoxSizer.erl
index d097bc95e3..efe1918b21 100644
--- a/lib/wx/src/gen/wxStaticBoxSizer.erl
+++ b/lib/wx/src/gen/wxStaticBoxSizer.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxStaticLine.erl b/lib/wx/src/gen/wxStaticLine.erl
index c4b660b317..b879e53ab0 100644
--- a/lib/wx/src/gen/wxStaticLine.erl
+++ b/lib/wx/src/gen/wxStaticLine.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxStaticText.erl b/lib/wx/src/gen/wxStaticText.erl
index 0e4aec3365..baac7b1877 100644
--- a/lib/wx/src/gen/wxStaticText.erl
+++ b/lib/wx/src/gen/wxStaticText.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxStatusBar.erl b/lib/wx/src/gen/wxStatusBar.erl
index c77c3c447d..c7e605c65b 100644
--- a/lib/wx/src/gen/wxStatusBar.erl
+++ b/lib/wx/src/gen/wxStatusBar.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxStdDialogButtonSizer.erl b/lib/wx/src/gen/wxStdDialogButtonSizer.erl
index 3ee3ef4a36..4826fae0a7 100644
--- a/lib/wx/src/gen/wxStdDialogButtonSizer.erl
+++ b/lib/wx/src/gen/wxStdDialogButtonSizer.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxStyledTextCtrl.erl b/lib/wx/src/gen/wxStyledTextCtrl.erl
index 21964403f9..edf6d9cfed 100644
--- a/lib/wx/src/gen/wxStyledTextCtrl.erl
+++ b/lib/wx/src/gen/wxStyledTextCtrl.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxStyledTextEvent.erl b/lib/wx/src/gen/wxStyledTextEvent.erl
index ed5788b6fd..753431e47e 100644
--- a/lib/wx/src/gen/wxStyledTextEvent.erl
+++ b/lib/wx/src/gen/wxStyledTextEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxSysColourChangedEvent.erl b/lib/wx/src/gen/wxSysColourChangedEvent.erl
index a90c7320d9..2b0d12d78a 100644
--- a/lib/wx/src/gen/wxSysColourChangedEvent.erl
+++ b/lib/wx/src/gen/wxSysColourChangedEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxTextAttr.erl b/lib/wx/src/gen/wxTextAttr.erl
index dea39c19d0..d504588e28 100644
--- a/lib/wx/src/gen/wxTextAttr.erl
+++ b/lib/wx/src/gen/wxTextAttr.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxTextCtrl.erl b/lib/wx/src/gen/wxTextCtrl.erl
index 1df8accdaa..43ce66d744 100644
--- a/lib/wx/src/gen/wxTextCtrl.erl
+++ b/lib/wx/src/gen/wxTextCtrl.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxTextDataObject.erl b/lib/wx/src/gen/wxTextDataObject.erl
index 1e4cee70aa..5905977270 100644
--- a/lib/wx/src/gen/wxTextDataObject.erl
+++ b/lib/wx/src/gen/wxTextDataObject.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxTextEntryDialog.erl b/lib/wx/src/gen/wxTextEntryDialog.erl
index 42e7f41513..5957a8aa54 100644
--- a/lib/wx/src/gen/wxTextEntryDialog.erl
+++ b/lib/wx/src/gen/wxTextEntryDialog.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxToggleButton.erl b/lib/wx/src/gen/wxToggleButton.erl
index 0a8f4f1127..dccf2e6e7d 100644
--- a/lib/wx/src/gen/wxToggleButton.erl
+++ b/lib/wx/src/gen/wxToggleButton.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxToolBar.erl b/lib/wx/src/gen/wxToolBar.erl
index c8392a10ca..0af762e0bd 100644
--- a/lib/wx/src/gen/wxToolBar.erl
+++ b/lib/wx/src/gen/wxToolBar.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxToolTip.erl b/lib/wx/src/gen/wxToolTip.erl
index 3a57ece765..b56e632cab 100644
--- a/lib/wx/src/gen/wxToolTip.erl
+++ b/lib/wx/src/gen/wxToolTip.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxToolbook.erl b/lib/wx/src/gen/wxToolbook.erl
index 44d3ea945d..31f4830700 100644
--- a/lib/wx/src/gen/wxToolbook.erl
+++ b/lib/wx/src/gen/wxToolbook.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxTopLevelWindow.erl b/lib/wx/src/gen/wxTopLevelWindow.erl
index 3bb63886d9..75eeaca2bb 100644
--- a/lib/wx/src/gen/wxTopLevelWindow.erl
+++ b/lib/wx/src/gen/wxTopLevelWindow.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxTreebook.erl b/lib/wx/src/gen/wxTreebook.erl
index 34b16a1cc6..2117388623 100644
--- a/lib/wx/src/gen/wxTreebook.erl
+++ b/lib/wx/src/gen/wxTreebook.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2009-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxUpdateUIEvent.erl b/lib/wx/src/gen/wxUpdateUIEvent.erl
index eddccd3575..9dd4c5caf9 100644
--- a/lib/wx/src/gen/wxUpdateUIEvent.erl
+++ b/lib/wx/src/gen/wxUpdateUIEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxWindow.erl b/lib/wx/src/gen/wxWindow.erl
index d431696660..be9727757c 100644
--- a/lib/wx/src/gen/wxWindow.erl
+++ b/lib/wx/src/gen/wxWindow.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxWindowCreateEvent.erl b/lib/wx/src/gen/wxWindowCreateEvent.erl
index 0503bdfef4..fa58999b92 100644
--- a/lib/wx/src/gen/wxWindowCreateEvent.erl
+++ b/lib/wx/src/gen/wxWindowCreateEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxWindowDC.erl b/lib/wx/src/gen/wxWindowDC.erl
index 63b2249844..a441d178da 100644
--- a/lib/wx/src/gen/wxWindowDC.erl
+++ b/lib/wx/src/gen/wxWindowDC.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxWindowDestroyEvent.erl b/lib/wx/src/gen/wxWindowDestroyEvent.erl
index 8d98b36f68..40ec93af5d 100644
--- a/lib/wx/src/gen/wxWindowDestroyEvent.erl
+++ b/lib/wx/src/gen/wxWindowDestroyEvent.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wxXmlResource.erl b/lib/wx/src/gen/wxXmlResource.erl
index c9f396e608..3a7070e2c1 100644
--- a/lib/wx/src/gen/wxXmlResource.erl
+++ b/lib/wx/src/gen/wxXmlResource.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/lib/wx/src/gen/wx_misc.erl b/lib/wx/src/gen/wx_misc.erl
index ef50e22e99..cf23d4cf8b 100644
--- a/lib/wx/src/gen/wx_misc.erl
+++ b/lib/wx/src/gen/wx_misc.erl
@@ -1,19 +1,19 @@
%%
%% %CopyrightBegin%
-%%
-%% Copyright Ericsson AB 2008-2009. All Rights Reserved.
-%%
+%%
+%% Copyright Ericsson AB 2008-2010. All Rights Reserved.
+%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
-%%
+%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
-%%
+%%
%% %CopyrightEnd%
%% This file is generated DO NOT EDIT
diff --git a/make/cross_check_erl b/make/cross_check_erl
new file mode 100755
index 0000000000..cb9dadfb32
--- /dev/null
+++ b/make/cross_check_erl
@@ -0,0 +1,147 @@
+#!/bin/sh
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2010. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+# Author: Rickard Green
+#
+
+target=
+build_otp=
+erl_top=
+force=no
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ -target)
+ shift
+ test $# -gt 0 || { echo "$0: Missing target" 1>&2; exit 1; }
+ target="$1";;
+ -otp)
+ shift
+ test $# -gt 0 || { echo "$0: Missing otp release" 1>&2; exit 1; }
+ build_otp="$1";;
+ -erl_top)
+ shift
+ test $# -gt 0 || { echo "$0: Missing erl top" 1>&2; exit 1; }
+ erl_top="$1";;
+ -force)
+ shift
+ test $# -gt 0 || { echo "$0: Missing force value" 1>&2; exit 1; }
+ force=$1;;
+ *)
+ echo "$0: Bad argument: $1" 1>&2
+ exit 1;;
+ esac
+ shift
+done
+
+test "X$target" != "X" || { echo "$0: Missing target" 1>&2; exit 1; }
+test "X$build_otp" != "X" || { echo "$0: Missing otp release" 1>&2; exit 1; }
+test "X$erl_top" != "X" || { echo "$0: Missing erl top" 1>&2; exit 1; }
+test "X$force" != "X" || { echo "$0: Missing force value" 1>&2; exit 1; }
+
+cd $erl_top
+
+cat > cross_check_erl.erl <<\EOF
+%
+% Copyright Ericsson AB 2010. All Rights Reserved.
+%
+% The contents of this file are subject to the Erlang Public License,
+% Version 1.1, (the "License"); you may not use this file except in
+% compliance with the License. You should have received a copy of the
+% Erlang Public License along with this software. If not, it can be
+% retrieved online at http://www.erlang.org/.
+%
+% Software distributed under the License is distributed on an "AS IS"
+% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+% the License for the specific language governing rights and limitations
+% under the License.
+%
+
+-module(cross_check_erl).
+
+-export([start/0]).
+
+start() ->
+ OTP = case catch erlang:system_info(otp_release) of
+ {'EXIT', _} -> "OTP";
+ Rel -> "OTP-" ++ Rel
+ end,
+ io:format("~s~n", [OTP]),
+ init:stop().
+
+EOF
+
+erlc cross_check_erl.erl 2>/dev/null \
+ && used_otp=`erl -noshell -noinput -pa . -run cross_check_erl 2>/dev/null`
+
+res=$?
+
+rm -f cross_check_erl.erl cross_check_erl.beam
+
+test $res -eq 0 || {
+ cat 1>&2 <<EOF
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+* ERROR: No usable Erlang/OTP system for the build machine found! Cannot
+* cross compile without such a system.
+*
+* Either build a bootstrap system for the build machine, or provide
+* an Erlang/$build_otp system in the \$PATH, and try again. For more
+* information on cross compiling Erlang/$build_otp, see the
+* \$ERL_TOP/xcomp/README file.
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+EOF
+ exit 1
+}
+
+test "X$build_otp" = "X$used_otp" || {
+ test $force = yes || {
+ cat 1>&2 <<EOF
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+* ERROR: Trying to cross compile an Erlang/$build_otp system with a different
+* Erlang/$used_otp system. When cross compiling you should compile
+* with an Erlang/OTP system of the same release. It is possible,
+* however not recomended, to force the cross compilation even though
+* the wrong Erlang/OTP system is used. For more information on this,
+* and cross compiling Erlang/$build_otp in general, see the
+* \$ERL_TOP/xcomp/README file.
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+EOF
+ exit 1
+ }
+
+ cat <<EOF
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+* WARNING: Cross compiling an Erlang/$build_otp system with a different
+* Erlang/$used_otp system. When cross compiling you should compile
+* with an Erlang/OTP system of the same release. This build might
+* fail, or silently produce suboptimal code. For more information on
+* cross compiling Erlang/$build_otp, see the \$ERL_TOP/xcomp/README
+* file.
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+EOF
+}
+
+cat <<EOF
+*
+* Cross compiling Erlang/$build_otp for: $target
+*
+EOF
+
+exit 0
diff --git a/make/install_bin b/make/install_bin
new file mode 100755
index 0000000000..0d3e82266e
--- /dev/null
+++ b/make/install_bin
@@ -0,0 +1,702 @@
+#!/bin/sh
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2010. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+# Author: Rickard Green
+#
+
+#
+# NOTE! This script needs to be portable since it is run on all platforms
+# (besides win32). Keep this in mind when updating it.
+#
+
+## set `INST_BIN_DEBUG=true' in environment when debugging the script to
+## avoid removing, and creating stuff etc...
+
+##
+## We do not reset these variables, since values may be passed either via
+## environment, or command line arguments.
+##
+#bindir=
+#exec_prefix=
+#erlang_bindir=
+#DESTDIR=
+#EXTRA_PREFIX=
+#BINDIR_SYMLINKS=
+#LN_S=
+tst=
+
+#
+# When this script communicates with the user it talks of the parameters
+# as they are given to configure if such exist (currently --bindir, and
+# --exec-prefix); otherwise, as the variable names used in the top
+# Makefile (which calls this script).
+#
+
+path_variables="DESTDIR EXTRA_PREFIX exec_prefix bindir erlang_bindir"
+DQ=
+
+dbg=
+test "$INST_BIN_DEBUG" != "true" || dbg=true
+
+while [ $# -gt 1 ]; do
+ case "$1" in
+ --bindir) bindir="$2";;
+ --exec-prefix) exec_prefix="$2";;
+ --erlang-bindir) erlang_bindir="$2";;
+ --destdir) DESTDIR="$2";;
+ --extra-prefix) EXTRA_PREFIX="$2";;
+ --bindir-symlinks) BINDIR_SYMLINKS="$2";;
+ --ln_s) LN_S="$2";;
+ --test-file) tst="$2";;
+ *) break;;
+ esac
+ shift
+ shift
+done
+
+
+test $# -gt 0 || {
+ echo " ERROR: Missing files to install" 1>&2
+ test "$tst" = "" || echo "{error,{arg,missing_files}}." > $tst
+ exit 1;
+}
+test "$bindir" != "" || {
+ echo " ERROR: Missing --bindir" 1>&2
+ test "$tst" = "" || echo "{error,{arg,missing_bindir}}." > $tst
+ exit 1
+}
+test "$exec_prefix" != "" || {
+ echo " ERROR: Missing --exec-prefix" 1>&2
+ test "$tst" = "" || echo "{error,{arg,missing_exec_prefix}}." > $tst
+ exit 1
+}
+test "$erlang_bindir" != "" || {
+ echo " ERROR: Missing erlang_bindir" 1>&2
+ test "$tst" = "" || echo "{error,{arg,missing_erlang_bindir}}." > $tst
+ exit 1
+}
+
+# Make sure all paths are absolute
+for dir_var in $path_variables; do
+ eval "dir_path=\"\$$dir_var\""
+
+ case "$dir_path" in
+ /*) ;;
+ "")
+ # Empty DESTDIR or EXTRA_PREFIX which is ok
+ case $dir_var in
+ DESTDIR|EXTRA_PREFIX) ;;
+ *)
+ echo " ERROR: Internal error: \$$dir_var is empty" 1>&2
+ test "$tst" = "" || echo "{error,{empty,$dir_var}}." > $tst
+ exit 1;;
+ esac
+ continue;;
+ *)
+ case $dir_var in
+ bindir) flag="--bindir=";;
+ exec_prefix) flag="--exec-prefix=";;
+ erlang_bindir) flag="erlang_bindir=";;
+ DESTDIR) flag="DESTDIR=";;
+ EXTRA_PREFIX) flag="EXTRA_PREFIX=";;
+ *) flag="";; # Need to update the script...
+ esac
+ cat 1>&2 <<EOF
+ ERROR: Found path to a directory which was not absolute. All paths needs to
+ be absolute.
+
+ $flag"$dir_path"
+EOF
+ test "$tst" = "" || echo "{error,{not_abs,'$dir_var'}}." > $tst
+ exit 1;;
+ esac
+ case "$dir_path" in
+ *[!A-Za-z0-9/=_.-]*) DQ="\"";;
+ *) ;;
+ esac
+done
+
+# We place temporary check files in the source dir and the target dir. These
+# can later be used to verify that our modifications of the paths are
+# successful.
+
+test "$dbg" = "true" || {
+ bchk_file="tmp-erlang-install-bin.$$"
+ ebchk_file="tmp-erlang-install-erl-bin.$$"
+ bchk="$DESTDIR$EXTRA_PREFIX$bindir/$bchk_file"
+ ebchk="$DESTDIR$EXTRA_PREFIX$erlang_bindir/$ebchk_file"
+ chk_txt="Temporary Erlang/OTP install file."
+ chk_err=no
+
+ # Make sure we haven't got any old ones...
+ rm -f "$bchk" "$ebchk"
+
+ { { echo "$chk_txt" > "$ebchk"; } 2>/dev/null && test -r "$ebchk"; } || {
+ cat 1>&2 <<EOF
+ ERROR: Cannot create files in 'erlang_bindir'.
+
+EOF
+ chk_err=no_create_erlang_bindir
+ }
+
+ { { echo "$chk_txt" > "$bchk"; } 2>/dev/null && test -r "$bchk"; } || {
+ cat 1>&2 <<EOF
+ ERROR: Cannot create files in '--bindir'.
+
+EOF
+ chk_err=no_create_bindir
+ }
+
+
+ { test $chk_err != no ||
+ test ! -f "$DESTDIR$EXTRA_PREFIX$bindir/$ebchk_file"; } || {
+ # Refuse to install in the same directory as the source...
+ cat 1>&2 <<EOF
+ ERROR: '--bindir' and 'erlang_bindir' both points to the same directory. This
+ can be due to symbolic directory links.
+
+EOF
+ chk_err=target_and_source_same_dir
+ }
+
+ test $chk_err = no || {
+ cat 1>&2 <<EOF
+ --bindir="$bindir"
+ erlang_bindir="$erlang_bindir"
+ EXTRA_PREFIX="$EXTRA_PREFIX"
+ DESTDIR="$DESTDIR"
+
+ Note that all absolute directory paths are prefixed by
+ \$DESTDIR\$EXTRA_PREFIX when accessed.
+EOF
+ rm -f "$bchk" "$ebchk"
+ test "$tst" = "" || echo "{error,$chk_err}." > $tst
+ exit 1
+ }
+}
+
+dirty=no
+
+# Make all paths look good (remove all `.' dirs, `//', and trailing `/').
+for dir_var in $path_variables; do
+ eval "dir_path=\"\$$dir_var\""
+ test "$dir_path" != "" || continue
+
+ ndp=
+ save_IFS=$IFS
+ IFS=/
+ for dir in $dir_path; do
+ case "$dir" in
+ "" | ".") continue;;
+ "..")
+ case $dir_var in
+ bindir|erlang_bindir|exec_prefix) dirty=yes;;
+ *) ;;
+ esac;;
+ *) ;;
+ esac
+ ndp="$ndp/$dir"
+ done
+ IFS=$save_IFS
+ test "$ndp" != "" || ndp="/"
+ eval "$dir_var=\"$ndp\""
+done
+
+iprfx="$DESTDIR$EXTRA_PREFIX"
+
+# Make sure we didn't mess up
+{ $dbg test -f "$iprfx$bindir/$bchk_file" &&
+ $dbg test -f "$iprfx$erlang_bindir/$ebchk_file"; } || {
+ cat 1>&2 <<EOF
+ ERROR: Internal error: Unsuccessfully trimmed the paths
+
+ --bindir="$bindir"
+ erlang_bindir="$erlang_bindir"
+ --exec-prefix="$exec_prefix"
+ EXTRA_PREFIX="$EXTRA_PREFIX"
+ DESTDIR="$DESTDIR"
+EOF
+ $dbg rm -f "$bchk" "$ebchk"
+ test "$tst" = "" || echo "{error,bad_trim}." > $tst
+ exit 1
+}
+
+# Now all paths look good...
+
+
+# $ln_s should be either 'ln -s', 'ln', or 'cp -p'. We don't want to
+# maks hard links, so make sure we got 'ln -s'; otherwise, use 'cp -p'
+
+# This is the fallback if we haven't got 'ln -s'
+ln_s="cp -p"
+type=copy
+paths=absolute
+abspath_reason=no_ln_s
+src_dir="$iprfx$erlang_bindir"
+
+case "X${LN_S}X" in
+ Xln[\ \ ]*X|X*[\ \ ]ln[\ \ ]*X)
+ # Got `ln'; check that we also got `-s' flag
+ case "X${LN_S}X" in
+ X*[\ \ ]-sX|X*[\ \ ]-s[\ \ ]*X)
+ # Ok; seems like we got `ln -s'
+ ln_s="ln -s"
+ type=link
+ paths="$BINDIR_SYMLINKS"
+ test "$BINDIR_SYMLINKS" = "absolute" && abspath_reason=request
+ # $DESTDIR should *not* be part of src_dir when linking
+ src_dir="$EXTRA_PREFIX$erlang_bindir"
+ ;;
+ *) ;;
+ esac;;
+ *) ;;
+esac
+
+case "$paths" in
+ absolute|relative) ;;
+ *) paths=undetermined;;
+esac
+
+# Determine if we should use absolute or relative paths for links
+test $paths != absolute && {
+ # If $paths is undetermined, use absolute paths unless both $bindir
+ # and $erlang_bindir are prefixed by $exec_prefix (which is the normal
+ # case)
+ test $paths = relative || paths=absolute
+ abspath_reason=not_prefix
+ resolved_bindir="$bindir"
+ resolved_erlang_bindir="$erlang_bindir"
+ resolved_exec_prefix="$exec_prefix"
+ case "$bindir" in
+ "$exec_prefix"*)
+ case "$erlang_bindir" in
+ "$exec_prefix"*) paths=relative;;
+ *) ;;
+ esac;;
+ *);;
+ esac
+ # Now paths=absolute|relative
+
+ # If we got dirty paths (contains ..) and are going for relative links,
+ # we need to resolve the paths
+ test $dirty-$paths = yes-relative && {
+ # Need to resolve $bindir and $erlang_bindir paths
+ for dir_var in bindir erlang_bindir exec_prefix; do
+ eval "dir_path=\"\$$dir_var\""
+
+ ndp="/"
+ save_IFS=$IFS
+ IFS=/
+ for dir in $dir_path; do
+ case "$dir" in
+ "") ;;
+ "..")
+ test "$ndp" != "/" || {
+ IFS=$save_IFS
+ paths=absolute
+ abspath_reason=unreasonable_path
+ break 2
+ }
+ ndp=`dirname "$ndp" 2>/dev/null` || {
+ IFS=$save_IFS
+ paths=absolute
+ abspath_reason=dirname_failed
+ break 2
+ };;
+ *)
+ if test "$ndp" = "/"; then
+ ndp="/$dir"
+ else
+ ndp="$ndp/$dir"
+ fi;;
+ esac
+ done
+ IFS=$save_IFS
+ test "$ndp" != "" || ndp="/"
+ eval "resolved_$dir_var=\"$ndp\""
+ done
+ }
+
+ # If we still are going for relative and relative symbolic links have
+ # not been explicitly requested check that the resolved paths still
+ # are prefixed by exec_prefix
+ test $paths = relative && test "$BINDIR_SYMLINKS" != "relative" && {
+ paths=absolute
+ abspath_reason=not_prefix
+ case "$resolved_bindir" in
+ "$resolved_exec_prefix"*)
+ case "$resolved_erlang_bindir" in
+ "$resolved_exec_prefix"*)
+ paths=relative;;
+ *) ;;
+ esac;;
+ *) ;;
+ esac
+ }
+
+ # If we still are going for relative check that resolved paths are
+ # reachable (might not be if the directory structure contains symbolic
+ # directory links).
+ test $paths = relative && {
+ ($dbg test -r "$iprfx$resolved_bindir/$bchk_file" &&
+ $dbg test -r "$iprfx$resolved_erlang_bindir/$ebchk_file" &&
+ $dbg cd "$iprfx$resolved_bindir" &&
+ $dbg test -r "./$bchk_file" &&
+ $dbg cd "$iprfx$resolved_erlang_bindir" &&
+ $dbg test -r "./$ebchk_file") || {
+ paths=absolute
+ abspath_reason=unreachable_absolute
+ }
+ }
+
+
+ # If we still are going for relative, calculate the relative path from
+ # $resolved_bindir to $resolved_erlang_bindir and verify that we
+ # can reach $erlang_bindir from $bindir via calculated relative path
+ test $paths = relative && {
+ relpath=
+ common=
+
+ save_IFS=$IFS
+ IFS=/
+
+ build=false
+ for dir in $resolved_erlang_bindir; do
+ test "$dir" != "" || continue
+ test $build = false || { relpath="$relpath/$dir"; continue; }
+ cand="${common}/$dir"
+ case "$resolved_bindir" in
+ "$cand"*) common="$cand";;
+ *) relpath="$dir"; build=true;;
+ esac
+ done
+
+ check=
+ build=false
+ test "$common" != "" || build=true
+
+ for dir in $resolved_bindir; do
+ test "$dir" != "" || continue
+ test $build = true || {
+ check="${check}/$dir"
+ test "$check" != "$common" || build=true
+ continue
+ }
+ if test "$relpath" = ""; then
+ relpath=".."
+ else
+ relpath="../$relpath"
+ fi
+ done
+
+ IFS=$save_IFS
+
+ test "$relpath" != "" || {
+ cat 1>&2 <<EOF
+ ERROR: Internal error: Computed relative path: .
+
+ --bindir="$bindir"
+ erlang_bindir="$erlang_bindir"
+ --exec-prefix="$exec_prefix"
+ EXTRA_PREFIX="$EXTRA_PREFIX"
+ DESTDIR="$DESTDIR"
+ BINDIR_SYMLINKS="$BINDIR_SYMLINKS"
+EOF
+ $dbg rm -f "$bchk" "$ebchk"
+ test "$tst" = "" || echo "{error,empty_relpath}." > $tst
+ exit 1
+ }
+
+ # Verify that it works otherwise go for absolute links
+ if ($dbg cd "$iprfx$bindir" 2>/dev/null && \
+ $dbg test -r "$relpath/$ebchk_file"); then
+ src_dir="$relpath"
+ else
+ abspath_reason=unreachable_relative
+ paths=absolute
+ fi
+ }
+}
+
+# Don't need the temporary check files anymore
+$dbg rm -f "$bchk" "$ebchk"
+
+# If we reverted to absolute paths we may have to abort or notify the user
+# about this...
+case "$paths-$BINDIR_SYMLINKS" in
+ absolute-absolute) # User requested absolute and got it
+ case "$abspath_reason" in
+ no_ln_s)
+ cat <<EOF
+ ERROR: Cannot install absolute symbolic links in the '--bindir' directory,
+ since 'ln -s' does not work. If you want to install using 'cp -p'
+ invoke 'make install' without setting BINDIR_SYMLINKS.
+
+ --bindir="$bindir"
+ erlang_bindir="$erlang_bindir"
+ --exec-prefix="$exec_prefix"
+ EXTRA_PREFIX="$EXTRA_PREFIX"
+ DESTDIR="$DESTDIR"
+ BINDIR_SYMLINKS="$BINDIR_SYMLINKS"
+
+ Note that all absolute directory paths are prefixed by
+ \$DESTDIR\$EXTRA_PREFIX when accessed.
+EOF
+ test "$tst" = "" || echo "{error,$abspath_reason}." > $tst
+ exit 1;; # Abort...
+ *)
+ ;;
+ esac;;
+
+ absolute-relative) # User forced relative symbolic links, but we need
+ # to revert to absolute symbolic links. Print error
+ # message and abort.
+
+ case "$abspath_reason" in
+ no_ln_s)
+ cat 1>&2 <<EOF
+ ERROR: Cannot install relative symbolic links in the '--bindir' directory,
+ since 'ln -s' does not work. If you want to install using 'cp -p' do
+ not set BINDIR_SYMLINKS, and invoke 'make install' again.
+
+EOF
+ ;;
+ not_prefix)
+ cat 1>&2 <<EOF
+ ERROR: Internal error: Should not have reverted to absolute paths just
+ because '--exec-prefix' was not a prefix of '--bindir' and/or
+ 'erlang_bindir' since relative symbolic links were forced.
+
+EOF
+ ;;
+ unreasonable_path)
+ cat 1>&2 <<EOF
+ ERROR: Refusing to install relative symbolic links, since the relative path
+ potentially could go via \$DESTDIR\$EXTRA_PREFIX/. Make your install
+ paths a bit more reasonable (preferably) or, do not invoke
+ 'make install' with 'BINDIR_SYMLINKS=relative'.
+
+EOF
+ ;;
+ unreachable_absolute)
+ cat 1>&2 <<EOF
+ ERROR: Could not find '--bindir' and/or 'erlang_bindir' after resolving paths.
+ The directory structure probably consists of symbolic directory links.
+ Refusing to install obviously incorrect relative symbolic links. In
+ order to install absolute symbolic links, invoke 'make install' without
+ 'BINDIR_SYMLINKS=relative'.
+
+EOF
+ ;;
+ unreachable_relative)
+ cat 1>&2 <<EOF
+ ERROR: Could not find 'erlang_bindir' from '--bindir' via computed relative
+ path. This probably due to symbolic directory links. Refusing to install
+ obviously incorrect relative symbolic links. In order to install
+ absolute symbolic links, invoke 'make install' without
+ 'BINDIR_SYMLINKS=relative'.
+
+ Computed relative path="$relpath"
+EOF
+ ;;
+ dirname_failed)
+ cat 1>&2 <<EOF
+ ERROR: Cannot install relative symbolic links since the 'dirname' command
+ failed while computing the relative path. The 'dirname' command is only
+ needed when '--bindir', 'erlang_bindir', and/or '--exec-prefix' contain
+ relative parts, i.e., '..' parts. If you modify your install paths, it
+ may be possible to install relative symbolic links. In order to install
+ absolute symbolic links, invoke 'make install' without
+ 'BINDIR_SYMLINKS=relative'.
+
+EOF
+ ;;
+ *)
+ cat 1>&2 <<EOF
+ ERROR: Refusing to install relative symbolic links. The error description for
+ \"$abspath_reason\" is however missing.
+
+EOF
+ ;;
+ esac
+ cat 1>&2 <<EOF
+ --bindir="$bindir"
+ erlang_bindir="$erlang_bindir"
+ --exec-prefix="$exec_prefix"
+ EXTRA_PREFIX="$EXTRA_PREFIX"
+ DESTDIR="$DESTDIR"
+ BINDIR_SYMLINKS="$BINDIR_SYMLINKS"
+
+ Note that all absolute directory paths are prefixed by
+ \$DESTDIR\$EXTRA_PREFIX when accessed.
+EOF
+ test "$tst" = "" || echo "{error,$abspath_reason}." > $tst
+ exit 1;; # Abort...
+
+ absolute-*) # Notify the user that we reverted to absolute symbolic links
+ cat <<EOF
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+EOF
+ case "$abspath_reason" in
+ no_ln_s)
+ cat <<EOF
+ NOTE: Cannot install symbolic links in the '--bindir' directory, since
+ 'ln -s' does not work. Will create copies using 'cp -p' instead.
+
+EOF
+ ;;
+ not_prefix)
+ cat <<EOF
+ NOTE: Installing absolute symbolic links in the '--bindir' directory to the
+ 'erlang_bindir' directory instead of relative ones. This since at least
+ one of these directories is not prefixed by '--exec-prefix'. It is
+ possible to force relative symbolic links if you want that by invoking
+ the install as 'make BINDIR_SYMLINKS=relative install'.
+
+EOF
+ ;;
+
+ unreasonable_path)
+ cat <<EOF
+ NOTE: Installing absolute symbolic links in the '--bindir' directory to the
+ 'erlang_bindir' directory instead of relative ones. This since it
+ potentially would pass outside of '\$DESTDIR\$EXTRA_PREFIX/'.
+
+EOF
+ ;;
+ unreachable_absolute)
+ cat <<EOF
+ NOTE: Installing absolute symbolic links in the '--bindir' directory to the
+ 'erlang_bindir' instead of relative ones. This since at least one of
+ these directory could not be found after resolving paths. This is
+ probably due to symbolic directory links.
+
+EOF
+ ;;
+ unreachable_relative)
+ cat <<EOF
+ NOTE: Installing absolute symbolic links in the '--bindir' directory to the
+ 'erlang_bindir' directory instead of relative ones. This since the
+ 'erlang_bindir' directory could not be found from the '--bindir'
+ directory using the computed relative path. This is probably due
+ to symbolic directory links.
+
+ Computed relative path="$relpath"
+EOF
+ ;;
+ dirname_failed)
+ cat 1>&2 <<EOF
+ NOTE: Installing absolute symbolic links in the '--bindir' directory to the
+ 'erlang_bindir' directory instead of relative ones. This since the
+ 'dirname' command failed while computing the relative path. The
+ 'dirname' command is only needed when '--bindir', 'erlang_bindir',
+ and/or '--exec-prefix' contain relative parts, i.e., '..' parts. If
+ you modify your install paths, it may be possible to install relative
+ symbolic links.
+
+EOF
+ ;;
+ *)
+ cat 1>&2 <<EOF
+ NOTE: Installing absolute symbolic links in the '--bindir' directory
+ to the 'erlang_bindir' instead of relative ones. The notification
+ description for "$abspath_reason" is however missing.
+
+EOF
+ ;;
+ esac
+
+ cat <<EOF
+ --bindir="$bindir"
+ erlang_bindir="$erlang_bindir"
+ --exec-prefix="$exec_prefix"
+ EXTRA_PREFIX="$EXTRA_PREFIX"
+ DESTDIR="$DESTDIR"
+ BINDIR_SYMLINKS="$BINDIR_SYMLINKS"
+
+ Note that all absolute directory paths are prefixed by
+ \$DESTDIR\$EXTRA_PREFIX when accessed.
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+EOF
+ ;;
+
+ *) # relative links
+ ;;
+esac
+
+# Now paths=absolute|relative and src_dir is correct (relative bindir)
+
+# cd into "$iprfx$bindir" and do it from there...
+echo cd "$DQ$iprfx$bindir$DQ"
+$dbg cd "$iprfx$bindir" || {
+ test "$tst" = "" || echo "{error,cd_bin_failed}." > $tst
+ exit 1
+}
+
+# Verify that the source files actually exist (done in a separate pass
+# before we modify anything, so we leave it untouched if it should fail).
+# Note that we will not find them under $src_dir if we use absolute symbolic
+# links and $DESTDIR != "". In this case (actually all cases) they can then
+# be found under $iprfx$erlang_bindir
+test_src_dir="$src_dir"
+test "$paths-$type" != "absolute-link" || test_src_dir="$iprfx$erlang_bindir"
+
+for file in "$@"; do
+ test "$file" != "" || continue
+ src_file="$test_src_dir/$file"
+ $dbg test -f "$src_file" || {
+ cat 1>&2 <<EOF
+ ERROR: Missing source file: $src_file
+
+ --bindir="$bindir"
+ erlang_bindir="$erlang_bindir"
+ --exec-prefix="$exec_prefix"
+ EXTRA_PREFIX="$EXTRA_PREFIX"
+ DESTDIR="$DESTDIR"
+ BINDIR_SYMLINKS="$BINDIR_SYMLINKS"
+
+ Note that all absolute directory paths are prefixed by
+ \$DESTDIR\$EXTRA_PREFIX when accessed.
+EOF
+ test "$tst" = "" || echo "{error,{no_srcfile,\"$src_file\"}}." > $tst
+ exit 1
+ }
+done
+
+# Remove after possible old install (done in a separate pass since I think
+# the output looks nicer than if mixed). Note that we cannot test for existance
+# in a portable way, so force remove.
+for file in "$@"; do
+ test "$file" != "" || continue
+ echo rm -f "$file"
+ $dbg rm -f "$file"
+done
+
+# do it
+for file in "$@"; do
+ echo $ln_s "$DQ$src_dir/$file$DQ" "$file"
+ $dbg $ln_s "$src_dir/$file" "$file" || {
+ test "$tst" = "" || echo "{error,{$type,\"$file\",failed}}." > $tst
+ exit 1
+ }
+done
+
+test "$tst" = "" || echo "{ok,{$paths,\"$iprfx$bindir\",\"$src_dir\"}}." > $tst
+
+exit 0 # Done
diff --git a/make/otp_ded.mk.in b/make/otp_ded.mk.in
index 0a91a42df5..e719312473 100644
--- a/make/otp_ded.mk.in
+++ b/make/otp_ded.mk.in
@@ -1,22 +1,48 @@
#-*-makefile-*- ; force emacs to enter makefile-mode
# ----------------------------------------------------
-# Make include file for otp
+# %CopyrightBegin%
#
-# Copyright (C) 1996, Ericsson Telecommunications
-# Author: Lars Thorsen
+# Copyright Ericsson AB 2009-2010. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+
+# The version.
+#
+# Note that it is important that the version is
+# explicitly expressed here. Some applications need to
+# be able to check this value *before* configure has
+# been run and generated otp_ded.mk
+DED_MK_VSN = 1
+# ----------------------------------------------------
+# Variables needed for building Dynamic Erlang Drivers
# ----------------------------------------------------
DED_CC = @CC@
+DED_GCC = @GCC@
DED_LD = @DED_LD@
DED_LDFLAGS = @DED_LDFLAGS@
-DED__NOWARN_CFLAGS = @DED_CFLAGS@
-DED_CFLAGS = @WFLAGS@ @DED_CFLAGS@
+DED__NOWARN_NOTHR_CFLAGS = @DED_CFLAGS@
+DED__NOTHR_CFLAGS = @WFLAGS@ @DED_CFLAGS@
+DED__NOWARN_CFLAGS = @DED_EMU_THR_DEFS@ @DED_CFLAGS@
+DED_THR_DEFS = @DED_THR_DEFS@
+DED_EMU_THR_DEFS = @DED_EMU_THR_DEFS@
+DED_WARN_FLAGS = @WFLAGS@
+DED_CFLAGS = @WFLAGS@ @DED_EMU_THR_DEFS@ @DED_CFLAGS@
DED_LIBS = @LIBS@
+DED_EXT = @DED_EXT@
ERLANG_OSTYPE = @ERLANG_OSTYPE@
-TARGET = @host@
PRIVDIR = ../priv
OBJDIR = $(PRIVDIR)/obj/$(TARGET)
LIBDIR = $(PRIVDIR)/lib/$(TARGET)
-DED_SYS_INCLUDE = -I$(ERL_TOP)/erts/emulator/beam \
- -I$(ERL_TOP)/erts/emulator/sys/$(ERLANG_OSTYPE)
-
+DED_SYS_INCLUDE = @DED_SYS_INCLUDE@
DED_INCLUDES = $(DED_SYS_INCLUDE)
diff --git a/make/unexpected_use b/make/unexpected_use
new file mode 100755
index 0000000000..d7543a7d83
--- /dev/null
+++ b/make/unexpected_use
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2010. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+
+prog=`basename "$0"` || prog="$0"
+
+cat 1>&2 <<EOF
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ ERROR: Unexpected use of '$prog' in 'install', or 'release' phase.
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+EOF
+
+exit 1
diff --git a/otp_build b/otp_build
index 3fd1d18634..b7dc15bcc0 100755
--- a/otp_build
+++ b/otp_build
@@ -28,23 +28,33 @@ clearmake=false
#
# NOTE: lazy_configure depends on '.' always being last directory
if [ -z "$ONLY_ERTS" ]; then
- AUTOCONF_SUBDIRS="lib lib/*"
+ AUTOCONF_SUBDIRS="lib lib/* lib/test_server/src"
fi
AUTOCONF_SUBDIRS="$AUTOCONF_SUBDIRS erts ."
+# `bootstrap_apps' should include application that are built, or
+# partly built in one of the bootstrap phases. Applications that
+# only get some static includes copied into the bootstrap directory
+# should not be included.
+bootstrap_apps="erts lib/asn1 lib/compiler lib/hipe lib/ic lib/kernel lib/parsetools lib/sasl lib/snmp lib/stdlib lib/syntax_tools"
+
+# We will quote a bit more than needed, but the important thing is that
+# all that needs quoting will be quoted...
+DONT_QUOTE="A-Za-z0-9/=_+-"
+
# Utility functions
usage ()
{
- echo "Available options:"
+ echo "Available options (-a switch select all applications):"
echo " setup [-a] [<configure parameters>] - does autoconf, configure and boot."
echo " all [-a] <dir> - does autoconf, configure, boot, release"
echo " autoconf - (re)build the configure scripts"
echo " configure [<configure parameters>] - does the actual configuration"
- echo " smp [-a] - build a small Erlang system, smp flavor"
- echo " hybrid [-a] - build a small Erlang system, hybrid flavor"
- echo " boot [-a] - bootstraps and build system (after configure)"
+ echo " boot [-a] - bootstraps and builds the system (after configure)"
echo " release <target_dir> - creates a small release to <target_dir>"
echo " release [-a] <target_dir> - creates full release to <target_dir>"
+ echo " smp [-a] - build an Erlang system, smp flavor only"
+ echo " hybrid [-a] - build an Erlang system, hybrid flavor only"
echo " tests <dir> - Build testsuites to <dir>"
echo ""
echo "These are for cleaning up an open source distribution"
@@ -64,9 +74,6 @@ usage ()
echo "Before trying to build for vxworks, consider the following option"
echo " env_vxworks <cpu> - echo environment settings for vxworks, use with eval"
echo ""
- echo "Before trying to cross compile, set environment via the following option"
- echo "Please note that the path to the configuration file should be absolute."
- echo " env_cross <absolute path to cross conf file> - echo environment settings for cross compilation, use with eval"
case $version_controller in
none)
;;
@@ -102,84 +109,32 @@ usage ()
esac
}
-export_cross_env ()
-{
- if [ "x$ERL_XCOMP_CONF" != "x" ]; then
- export erl_xcomp_host
- export erl_xcomp_configure_flags
- export erl_xcomp_cc
- export erl_xcomp_ld
- export erl_xcomp_cflags
- export erl_xcomp_cpp
- export erl_xcomp_ldflags
- export erl_xcomp_ranlib
- export erl_xcomp_ar
- export erl_xcomp_ded_ld
- export erl_xcomp_ded_ldflags
- export erl_xcomp_ded_ld_runtime_library_path
- export erl_xcomp_bigendian
- export erl_xcomp_linux_clock_gettime_correction
- export erl_xcomp_linux_nptl
- export erl_xcomp_linux_usable_sigusrx
- export erl_xcomp_linux_usable_sigaltstack
- export erl_xcomp_poll
- export erl_xcomp_kqueue
- export erl_xcomp_putenv_copy
- export erl_xcomp_reliable_fpe
- export erl_xcomp_getaddrinfo
- export erl_xcomp_gethrvtime_procfs_ioctl
- export erl_xcomp_clock_gettime
- export erl_xcomp_after_morecore_hook
- export erl_xcomp_dlsym_brk_wrappers
- fi
-}
-
-xcomp_fail ()
+hide_vars ()
{
- echo "The mandatory cross compilation variable '"$1"' is not set, aborting..." >&2
- exit 1
-}
-
-source_xcomp_file ()
-{
- case x$1 in
- x/*)
- ;;
- x)
- echo "env_cross requires path to cross compilation configuration" >&2
- exit 1;;
- x*)
- echo "An absoulute path to the cross compilation file is required: $1" >&2
- exit 1;;
- esac
-
- if [ ! -f $1 ]; then
- echo "No such file: $1" >&2
- exit 1
+ script=
+ for var in "$@"; do
+ if [ "X$var" != "X" ]; then
+ script="$script test \"X\$$var\" = \"X\" || hidden_$var=\$$var; unset $var;"
+ fi
+ done
+ if [ "X$script" != "X" ]; then
+ eval "$script"
fi
-
- . $1
+ unset script
}
-finalize_xcomp_conf ()
+restore_vars ()
{
- if test "x$erl_xcomp_host" = "x"; then
- xcomp_fail erl_xcomp_host
- fi
-
- if test "x$erl_xcomp_target" != "x"; then
- echo "The 'erl_xcomp_target' configuration variable should no longer be used." >&2
- echo "For more information see the xcomp/README file." >&2
- exit 1;
- fi
-
- OVERRIDE_TARGET=`$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host`
- if test $? -ne 0; then
- exit $?
+ script=
+ for var in "$@"; do
+ if [ "X$var" != "X" ]; then
+ script="$script unset $var; test \"X\$hidden_$var\" = \"X\" || { $var=\$hidden_$var; export $var; } ; unset hidden_$var;"
+ fi
+ done
+ if [ "X$script" != "X" ]; then
+ eval "$script"
fi
- TARGET=$OVERRIDE_TARGET
-
- return 0
+ unset script
}
@@ -190,6 +145,7 @@ check_erltop ()
if [ -f ./otp_build -a -f ./erts/autoconf/config.guess ]; then
ERLTOP_FORCED=true
ERL_TOP=`/bin/pwd`
+ export ERL_TOP
else
echo "The environment variable ERL_TOP must be set." >&2
exit 1
@@ -221,27 +177,36 @@ determine_version_controller ()
fi
fi
}
-
# Execution of the different options
# Special static config flags for certain platforms are set here
set_config_flags ()
{
+ # * Extra flags to pass to configure are placed in `CONFIG_FLAGS'.
+ # * The command line is no longer added to `CONFIG_FLAGS' by
+ # `set_config_flags'. It is instead passed directly to
+ # `run_configure', or added to `CONFIG_FLAGS' at some other
+ # place.
+ # * `CONFIG_FLAGS' may contain flags when `set_config_flags' is
+ # called. These flags should survive the call to `set_config_flags'
+ # (in the cross compilation case the whole command line as well as
+ # the cross configuration have been moved here).
+
if target_contains linux; then
XX=`echo $* | grep -v able-hipe`
if [ "$*" = "$XX" ]; then
- CONFIG_FLAGS="--disable-hipe"
+ CONFIG_FLAGS="$CONFIG_FLAGS --disable-hipe"
fi
fi
if target_contains "univel-sysv4"; then
- CONFIG_FLAGS="--x-libraries=/usr/lib/X11"
+ CONFIG_FLAGS="$CONFIG_FLAGS --x-libraries=/usr/lib/X11"
fi
if target_contains free_source; then
CONFIG_FLAGS="$CONFIG_FLAGS --host=$TARGET"
fi
if target_contains win32; then
- CONFIG_FLAGS="--build=$BUILDSYS build_alias=win32 --host=win32 --target=win32"
+ CONFIG_FLAGS="--build=$BUILDSYS build_alias=win32 --host=win32 --target=win32 $CONFIG_FLAGS"
else
# Link SSL static for all binary distributions if not overridden
XX=`echo $* | grep -v dynamic-ssl-lib`
@@ -255,12 +220,61 @@ set_config_flags ()
CONFIG_FLAGS="$CONFIG_FLAGS --cache-file=$OVERRIDE_CONFIG_CACHE"
fi
- CONFIG_FLAGS="$CONFIG_FLAGS $*"
+ env_to_config_flags $erl_build_tool_vars
+
export CONFIG_FLAGS;
}
-
+
+create_lib_configure_in()
+{
+ cd $ERL_TOP
+
+ # Multiple versions of autoconf generates code that
+ # don't work on all platforms (e.g. SunOS 5.8) if
+ # sub directories are soft links. Internally at Ericsson
+ # some OTP application directories are soft links.
+ # An added "/." solves this problem.
+
+ sdirs=
+ for lib_app in $bootstrap_apps; do
+ case $lib_app in
+ lib/*)
+ if [ -f "$lib_app/configure.in" ]; then
+ app=`echo "$lib_app" | sed "s|lib/\(.*\)|\1|"`
+ sdirs="${sdirs}test ! -f $app/configure || AC_CONFIG_SUBDIRS($app/.)\n"
+ fi;;
+ *)
+ ;;
+ esac
+ done
+
+ sed_bootstrap="s%@BOOTSTRAP_CONFIGURE_APPS@%$sdirs%g"
+
+ sdirs=
+ for lib_app in lib/*; do
+ is_bapp=false
+ for bapp in $bootstrap_apps; do
+ test $bapp != $lib_app || { is_bapp=true; break; }
+ done
+ if [ $is_bapp = false ] && [ -f "$lib_app/configure.in" ]; then
+ app=`echo "$lib_app" | sed "s|lib/\(.*\)|\1|"`
+ sdirs="${sdirs} test ! -f $app/configure || AC_CONFIG_SUBDIRS($app/.)\n"
+ fi
+ done
+
+ sed_non_bootstrap="s%@NON_BOOTSTRAP_CONFIGURE_APPS@%$sdirs%g"
+
+ rm -f lib/configure.in
+ sed "$sed_bootstrap;$sed_non_bootstrap" > lib/configure.in < lib/configure.in.src || {
+ echo "Failed to create lib/configure.in"
+ exit 1
+ }
+}
+
do_autoconf ()
{
+ create_lib_configure_in
+
if target_contains win32; then
# Select the correct autoconf on cygwin
save_want_autoconf_ver=$WANT_AUTOCONF_VER
@@ -285,17 +299,8 @@ do_autoconf ()
;;
esac
- if [ -d erts/autom4te.cache ]; then
- echo "Cleaning erts/autom4te.cache"
- rm -f erts/autom4te.cache/*
- fi
-
- save_ot="$OVERRIDE_TARGET"
- save_t="$TARGET"
if [ ! -z "$OVERRIDE_CONFIGURE" ]; then
echo "Autoconf disabled on target $TARGET, but is performed on host" >&2
- OVERRIDE_TARGET=
- export OVERRIDE_TARGET
# We still use erts configure for erl_interface and VxWorks
case "$TARGET" in
*vxworks*)
@@ -305,23 +310,30 @@ do_autoconf ()
-e 's,lib/megaco,,'`
;;
esac
- TARGET=`$ERL_TOP/erts/autoconf/config.guess`
fi
+ hide_vars OVERRIDE_TARGET TARGET
+ TARGET=$BUILDSYS
+ export TARGET
+
for d in $AUTOCONF_SUBDIRS; do
- if [ -f $d/configure.in ]; then
- echo "=== running autoconf in $d"
- ( cd $d && autoconf ) || exit 1
- fi
- if [ x$d = x"erts" ]; then
- echo "=== running autoheader in $d"
- ( cd $d && autoheader configure.in > config.h.in ) \
- || exit 1
- fi
+ file="$d/configure.in"
+ [ -f "$file" ] || continue
+ echo ""
+ [ ! -d "$d/autom4te.cache" ] || {
+ echo "=== cleaning $d/autom4te.cache"
+ rm -f "$d"/autom4te.cache/*
+ }
+ echo "=== running autoconf in $d"
+ ( cd "$d" && autoconf ) || exit 1
+ chdr=`cat "$file" | sed -n "s|.*\(AC_CONFIG_HEADER\).*|\1|p"`
+ [ "$chdr" = "AC_CONFIG_HEADER" ] || continue
+ echo "=== running autoheader in $d"
+ ( cd "$d" && autoheader ) || exit 1
done
- OVERRIDE_TARGET="$save_ot"
- export OVERRIDE_TARGET
- TARGET="$save_t"
+
+ restore_vars OVERRIDE_TARGET TARGET
+
if target_contains win32; then
WANT_AUTOCONF_VER=$save_want_autoconf_ver
export WANT_AUTOCONF_VER
@@ -338,22 +350,176 @@ mk_targetdir ()
fi
}
+run_configure ()
+{
+ cdir="$ERL_TOP"
+ [ -z "$ONLY_ERTS" ] || {
+ cdir="$ERL_TOP/erts"
+ CONFIG_FLAGS="$CONFIG_FLAGS --no-recursion"
+ }
+
+ echo "$cdir/configure $CONFIG_FLAGS" ${1+"$@"}
+ (cd "$cdir" && $config_eval ./configure $CONFIG_FLAGS ${1+"$@"}) || exit 1
+}
+
+env_to_config_flags ()
+{
+ for env_var in "$@"; do
+ script="echo $env_var=\$$env_var; unset $env_var >/dev/null 2>&1"
+ env_arg=`eval $script`
+ case $env_arg in
+ "$env_var=")
+ ;;
+ *[!$DONT_QUOTE]*)
+ config_eval=eval
+ new_arg=`echo "X$env_arg" | sed "s|^X||;s|\([^$DONT_QUOTE]\)|\\\\\\\\\1|g"`
+ CONFIG_FLAGS="$CONFIG_FLAGS $new_arg";;
+ *)
+ CONFIG_FLAGS="$CONFIG_FLAGS $env_arg";;
+ esac
+ eval unset $env_var
+ done
+}
+
+try_cross_configure ()
+{
+ cross_configure=no
+ host_value=
+ build_value=
+
+ # Get `erl_xcomp_vars'
+ . "$ERL_TOP/xcomp/erl-xcomp-vars.sh" || exit 1
+
+ for arg in ${1+"$@"}; do
+ case "$arg" in
+ --host=*)
+ host_value=`echo $x | sed "s|^--host=\(.*\)|\1|"`;;
+ --build=*)
+ build_value=`echo $x | sed "s|^--build=\(.*\)|\1|"`;;
+ --xcomp-conf=*)
+ cross_configure=yes;;
+ *)
+ ;;
+ esac
+ done
+
+ test $cross_configure = yes || {
+
+ test "X$host_value" = "X" || {
+
+ test "X$build_value" != "X" || build_value="$BUILDSYS"
+
+ build_sys=`$ERL_TOP/erts/autoconf/config.sub "$build_value"` || exit 1
+ host_sys=`$ERL_TOP/erts/autoconf/config.sub "$host_value"` || exit 1
+
+
+ test "$host_sys" = "$build_sys" || cross_configure=yes
+ }
+ }
+
+ test $cross_configure = yes || return 1
+
+ # cross configure...
+ CONFIG_FLAGS=
+
+ env_to_config_flags $erl_build_tool_vars $erl_xcomp_vars
+
+ for arg in ${1+"$@"}; do
+ case "$arg" in
+ --host=*)
+ host_value=`echo $x | sed "s|^--host=\(.*\)|\1|"`;;
+ --build=*)
+ build_value=`echo $x | sed "s|^--build=\(.*\)|\1|"`;;
+ --xcomp-conf=*)
+ xcomp_conf=`echo "X$arg" | sed "s|^X--xcomp-conf=\(.*\)\$|\1|g"`
+ test "X$xcomp_conf" != "X" || {
+ echo "$0: Missing xcomp-conf file name"
+ exit 1
+ }
+ test -f "$xcomp_conf" || {
+ echo "$0: Missing xcomp-conf file: $xcomp_conf"
+ exit 1
+ }
+ . "$xcomp_conf"
+ test $? -eq 0 || {
+ echo "$0: Failed to read xcomp-conf file: $conf"
+ exit 1
+ }
+ test "X$erl_xcomp_build" = "X" || build_value="$erl_xcomp_build"
+ test "X$erl_xcomp_host" = "X" || host_value="$erl_xcomp_host"
+ unset erl_xcomp_build
+ unset erl_xcomp_host
+ CONFIG_FLAGS="$CONFIG_FLAGS $erl_xcomp_configure_flags"
+ unset erl_xcomp_configure_flags
+ env_to_config_flags $erl_build_tool_vars $erl_xcomp_vars;;
+ *[!$DONT_QUOTE]*)
+ config_eval=eval
+ new_arg=`echo "X$arg" | sed "s|^X||;s|\([^$DONT_QUOTE]\)|\\\\\\\\\1|g"`
+ CONFIG_FLAGS="$CONFIG_FLAGS $new_arg";;
+ *)
+ CONFIG_FLAGS="$CONFIG_FLAGS $arg";;
+ esac
+ done
+
+ CONFIG_FLAGS="--host=$host_value $CONFIG_FLAGS"
+ test "X$build_value" != "Xguess" || build_value="$BUILDSYS"
+ test "X$build_value" = "X" || CONFIG_FLAGS="--build=$build_value $CONFIG_FLAGS"
+
+ # Configure build system for boot strap
+ cat <<EOF
+
+*
+* Configuring the bootstrap build system...
+*
+
+EOF
+
+ # hide build tools environment which is for the cross configure
+ set_config_flags $CONFIG_FLAGS
+ hide_vars CONFIG_FLAGS
+
+ set_config_flags
+ run_configure --enable-bootstrap-only
+
+ # restore the hidden build tools environment for the cross configure
+ restore_vars CONFIG_FLAGS
+
+ COMPFIX=""
+ cat <<EOF
+
+*
+* Configuring the cross host system ($host_value)...
+*
+
+EOF
+ # We don't pass the command line here since we already have moved it
+ # into CONFIG_FLAGS
+ run_configure
+
+ return 0
+}
+
do_configure ()
{
setup_make
mk_targetdir
- save_ot="$OVERRIDE_TARGET"
- save_t="$TARGET"
+
+ # Get `erl_build_tool_vars'
+ . "$ERL_TOP/erl-build-tool-vars.sh" || exit 1
+
if [ ! -z "$OVERRIDE_CONFIGURE" ]; then
case $TARGET in
vxworks_*)
( cd erts/autoconf && \
$ERL_TOP/erts/autoconf/configure.vxworks $TARGET )
- echo "Configuring for build host too..." >&2
- OVERRIDE_TARGET=
- export OVERRIDE_TARGET
- TARGET=`$ERL_TOP/erts/autoconf/config.guess`
- mk_targetdir;;
+ echo "Configuring for build system too..." >&2
+ hide_vars OVERRIDE_TARGET TARGET
+ TARGET=$BUILDSYS
+ export TARGET
+ mk_targetdir
+ set_config_flags "$@"
+ run_configure "$@"
+ restore_vars OVERRIDE_TARGET TARGET;;
*)
echo "Unexpected target when ordinary configure is" \
"overridden" >&2
@@ -362,110 +528,13 @@ do_configure ()
exit 1;;
esac
else
- if [ "x$OVERRIDE_TARGET" != "x" -a "x$OVERRIDE_TARGET" != "xwin32" ]; then
- save_CONFIG_FLAGS="$CONFIG_FLAGS"
- if [ "x$erl_xcomp_configure_flags" != "x" ]; then
- set_config_flags $erl_xcomp_configure_flags
- else
- set_config_flags $CONFIG_FLAGS "$@"
- fi
- COMPFIX=""
- save_CC="$CC"
- save_LD="$LD"
- save_CFLAGS="$CFLAGS"
- save_LDFLAGS="$LDFLAGS"
- save_RANLIB="$RANLIB"
- save_AR="$AR"
- save_DED_LD="$DED_LD"
- save_DED_LDFLAGS="$DED_LDFLAGS"
- save_DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$DED_LD_FLAG_RUNTIME_LIBRARY_PATH"
- save_CPP="$CPP"
- if [ "x$erl_xcomp_cc" != "x" ]; then
- CC="$erl_xcomp_cc"
- fi
- if [ "x$erl_xcomp_cpp" != "x" ]; then
- CPP="$erl_xcomp_cpp"
- fi
- if [ "x$erl_xcomp_ld" != "x" ]; then
- LD="$erl_xcomp_ld"
- fi
- if [ "x$erl_xcomp_cflags" != "x" ]; then
- CFLAGS="$erl_xcomp_cflags"
- fi
- if [ "x$erl_xcomp_ldflags" != "x" ]; then
- LDFLAGS="$erl_xcomp_ldflags"
- fi
- if [ "x$erl_xcomp_ranlib" != "x" ]; then
- RANLIB="$erl_xcomp_ranlib"
- fi
- if [ "x$erl_xcomp_ar" != "x" ]; then
- AR="$erl_xcomp_ar"
- fi
- if [ "x$erl_xcomp_ded_ld" != "x" ]; then
- DED_LD="$erl_xcomp_ded_ld"
- fi
- if [ "x$erl_xcomp_ded_ld_runtime_library_path" != "x" ]; then
- DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$erl_xcomp_ded_ld_runtime_library_path"
- fi
- if [ "x$erl_xcomp_ded_ldflags" != "x" ]; then
- DED_LDFLAGS="$erl_xcomp_ded_ldflags"
- fi
- export CC LD CFLAGS LDFLAGS RANLIB AR DED_LD DED_LDFLAGS DED_LD_FLAG_RUNTIME_LIBRARY_PATH CPP
-
- #
- # The environment for compilers, cflags et al are sometimes hard
- # to pass along in recursive configure, why each cross configure
- # is run separately instead. This variable (crossdirs) need to
- # be updated whenever a new application needs a configure
- # of it's own, at least until I get the recirsive configure
- # to work for the complicated environment needed by i.e. vxworks
- # compilers. It's a kludge, but a working one...
- #
-
- if [ -z "$ONLY_ERTS" ]; then
- crossdirs="erts lib/common_test lib/erl_interface lib/gs lib/megaco lib/odbc lib/snmp lib/wx"
- else
- crossdirs="erts"
- fi
-
- export_cross_env
-
- for d in $crossdirs; do
- echo "== Entering $d =="
- echo "./configure --build=$BUILDSYS --host=$erl_xcomp_host $CONFIG_FLAGS"
- (cd $ERL_TOP/$d; ./configure --build=$BUILDSYS --host=$erl_xcomp_host $CONFIG_FLAGS) || exit 1
- echo "== Leaving $d =="
- done
-
- CC="$save_CC"
- LD="$save_LD"
- CFLAGS="$save_CFLAGS"
- LDFLAGS="$save_LDFLAGS"
- RANLIB="$save_RANLIB"
- AR="$save_AR"
- DED_LD="$save_DED_LD"
- DED_LDFLAGS="$save_DED_LDFLAGS"
- DED_LD_FLAG_RUNTIME_LIBRARY_PATH="$save_DED_LD_FLAG_RUNTIME_LIBRARY_PATH"
- CPP="$save_CPP"
- export CC LD CFLAGS LDFLAGS RANLIB AR DED_LD DED_LDFLAGS DED_LD_FLAG_RUNTIME_LIBRARY_PATH CPP
- echo "Configuring for build host too..." >&2
- OVERRIDE_TARGET=
- export OVERRIDE_TARGET
- TARGET=`$ERL_TOP/erts/autoconf/config.guess`
- mk_targetdir
- CONFIG_FLAGS="$save_CONFIG_FLAGS"
+ try_cross_configure "$@"
+ if [ $cross_configure = no ]; then
+ CONFIG_FLAGS=
+ set_config_flags "$@"
+ run_configure "$@"
fi
fi
- set_config_flags $CONFIG_FLAGS "$@"
- if [ -z "$ONLY_ERTS" ]; then
- ./configure $CONFIG_FLAGS || exit 1
- else
- echo "erts/configure $CONFIG_FLAGS"
- (cd $ERL_TOP/erts; ./configure $CONFIG_FLAGS) || exit 1
- fi
- OVERRIDE_TARGET="$save_ot"
- export OVERRIDE_TARGET
- TARGET="$save_t"
}
do_lazy_configure ()
@@ -475,7 +544,10 @@ do_lazy_configure ()
echo "Not supported for cross compilation" >&2
exit 1
fi
- set_config_flags $CONFIG_FLAGS "$@"
+ CONFIG_FLAGS=
+ set_config_flags "$@"
+ CONFIGURE_FLAGS="$@"
+ [ "$CONFIG_FLAGS" = "" ] || CONFIGURE_FLAGS="$CONFIG_FLAGS $CONFIGURE_FLAGS"
for c_dir in $AUTOCONF_SUBDIRS; do
if test -f $ERL_TOP/$c_dir/configure.in; then
dir=$ERL_TOP/$c_dir
@@ -490,7 +562,7 @@ do_lazy_configure ()
$MAKE -f $ERL_TOP/make/lazy_configure.mk \
MAKE="$MAKE" TARGET=$TARGET \
ERL_TOP=$ERL_TOP \
- CONFIGURE_FLAGS="$CONFIG_FLAGS" \
+ CONFIGURE_FLAGS="$CONFIGURE_FLAGS" \
CONFIGURE_DIR=$dir \
EXTRA_CONFIGURE_DEPENDENCIES=$xc_dep \
EXTRA_CONFIG_STATUS_DEPENDENCIES=$xcs_dep \
@@ -633,16 +705,6 @@ echo_env_vxworks ()
echo_envinfo
}
-echo_env_cross ()
-{
- source_xcomp_file $1
- finalize_xcomp_conf
- echo_env_erltop
- echo_setenv ERL_XCOMP_CONF $1 ';'
- echo_setenv OVERRIDE_TARGET $OVERRIDE_TARGET
- echo_envinfo
-}
-
echo_env_win32 ()
{
#echo_envinfo
@@ -814,31 +876,21 @@ do_noboot_lib_and_erts ()
{
setup_make
EMULATORS=emulator
+ if [ X`$MAKE is_cross_configured` = Xyes ]; then
+ TARGET=`$MAKE target_configured`
+ fi
if [ "x$MAKE" != "x$clearmake" ]; then
$MAKE MAKE="$MAKE" TARGET=$TARGET OTP_SMALL_BUILD=$OTP_SMALL_BUILD depend || exit 1;
fi
$MAKE MAKE="$MAKE" TARGET=$TARGET OTP_SMALL_BUILD=$OTP_SMALL_BUILD TYPE=$TYPE FLAVOR=$FLAVOR noboot || exit 1
}
-do_primary_cross ()
-{
- save_t="$TARGET"
- save_ot="$OVERRIDE_TARGET"
- OVERRIDE_TARGET=
- export OVERRIDE_TARGET
- TARGET=`$ERL_TOP/erts/autoconf/config.guess`
- $MAKE MAKE="$MAKE" BOOTSTRAP_ROOT=$BOOTSTRAP_ROOT TARGET=$TARGET primary_bootstrap || exit 1;
- $MAKE MAKE="$MAKE" BOOTSTRAP_ROOT=$BOOTSTRAP_ROOT TARGET=$TARGET all_bootstraps || exit 1
- OVERRIDE_TARGET="$save_ot"
- export OVERRIDE_TARGET
- TARGET="$save_t"
-}
-
do_primary ()
{
setup_make
if [ "x$OVERRIDE_TARGET" != "x" -a "x$OVERRIDE_TARGET" != "xwin32" ]; then
- do_primary_cross
+ echo "OVERRIDE_TARGET set" >&2
+ exit 1
else
$MAKE MAKE="$MAKE" BOOTSTRAP_ROOT=$BOOTSTRAP_ROOT TARGET=$TARGET primary_bootstrap || exit 1;
fi
@@ -1029,59 +1081,54 @@ do_cancel_prel ()
echo '*****************************************************'
}
-
-
-do_boot_cross ()
-{
- SAVE_TARGET=$TARGET
- SAVE_OVERRIDE_TARGET=$OVERRIDE_TARGET
- OVERRIDE_TARGET=
- TARGET=`$ERL_TOP/erts/autoconf/config.guess`
-
- $MAKE MAKE="$MAKE" BOOTSTRAP_ROOT=$BOOTSTRAP_ROOT TARGET=$TARGET all_bootstraps || exit 1;
-
- TARGET=$SAVE_TARGET
- OVERRIDE_TARGET=$SAVE_OVERRIDE_TARGET
-
- $MAKE MAKE="$MAKE" BOOTSTRAP_ROOT=$BOOTSTRAP_ROOT TARGET=$TARGET libs || exit 1;
- $MAKE MAKE="$MAKE" BOOTSTRAP_ROOT=$BOOTSTRAP_ROOT TARGET=$TARGET depend || exit 1;
- $MAKE MAKE="$MAKE" BOOTSTRAP_ROOT=$BOOTSTRAP_ROOT TARGET=$TARGET emulator || exit 1;
-}
-
-do_boot_emu_cross ()
-{
- $MAKE MAKE="$MAKE" BOOTSTRAP_ROOT=$BOOTSTRAP_ROOT TARGET=$TARGET emulator || exit 1;
-}
do_boot ()
{
setup_make
- if [ "x$OVERRIDE_TARGET" != "x" -a "x$OVERRIDE_TARGET" != "xwin32" ]; then
- do_boot_cross
- else
- $MAKE MAKE="$MAKE" BOOTSTRAP_ROOT=$BOOTSTRAP_ROOT TARGET=$TARGET all || exit 1
+
+ # Bootstrap if we are cross compiling
+ if [ X`$MAKE is_cross_configured` = Xyes ]; then
+ TARGET=$BUILDSYS
+ $MAKE MAKE="$MAKE" BOOTSTRAP_ROOT=$BOOTSTRAP_ROOT CROSS_COMPILING=no TARGET=$TARGET bootstrap || exit 1
+ TARGET=`$MAKE target_configured`
+ elif [ "x$OVERRIDE_TARGET" != "x" -a "x$OVERRIDE_TARGET" != "xwin32" ]; then
+ hide_vars OVERRIDE_TARGET TARGET
+ TARGET=$BUILDSYS
+ $MAKE MAKE="$MAKE" BOOTSTRAP_ROOT=$BOOTSTRAP_ROOT TARGET=$TARGET bootstrap || exit 1
+
+ restore_vars OVERRIDE_TARGET TARGET
fi
+
+ # Build it (including bootstrap if not cross compiling)
+ $MAKE MAKE="$MAKE" BOOTSTRAP_ROOT=$BOOTSTRAP_ROOT TARGET=$TARGET all || exit 1
}
do_boot_emu ()
{
setup_make
- if [ "x$OVERRIDE_TARGET" != "x" -a "x$OVERRIDE_TARGET" != "xwin32" ]; then
- do_boot_emu_cross
- else
- $MAKE MAKE="$MAKE" BOOTSTRAP_ROOT=$BOOTSTRAP_ROOT TARGET=$TARGET emulator || exit 1
+ if [ X`$MAKE is_cross_configured` = Xyes ]; then
+ TARGET=`$MAKE target_configured`
fi
+ $MAKE MAKE="$MAKE" BOOTSTRAP_ROOT=$BOOTSTRAP_ROOT TARGET=$TARGET emulator || exit 1
}
do_release ()
{
setup_make
- $MAKE MAKE="$MAKE" BOOTSTRAP_ROOT=$BOOTSTRAP_ROOT TARGET=$TARGET RELEASE_ROOT=$1 release || exit 1
+ if [ X`$MAKE is_cross_configured` = Xyes ]; then
+ TARGET=`$MAKE target_configured`
+ fi
+ $MAKE MAKE="$MAKE" BOOTSTRAP_ROOT=$BOOTSTRAP_ROOT TARGET=$TARGET \
+ RELEASE_ROOT=$1 OTP_STRICT_INSTALL=$OTP_STRICT_INSTALL \
+ release || exit 1
}
do_tests ()
{
setup_make
+ if [ X`$MAKE is_cross_configured` = Xyes ]; then
+ TARGET=`$MAKE target_configured`
+ fi
if [ X"$1" = X"" ]; then
$MAKE MAKE="$MAKE" TARGET=$TARGET release_tests || exit 1
else
@@ -1232,10 +1279,6 @@ esac
if [ ! -z "$OVERRIDE_TARGET" ]; then
TARGET="$OVERRIDE_TARGET"
-else
- if [ "x$erl_xcomp_host" != "x" ]; then
- finalize_xcomp_conf
- fi
fi
# Setting a bootstrap root is inherently very dangerous now that the bootstrap
@@ -1263,10 +1306,6 @@ else
fi
export OTP_SMALL_BUILD
-if [ "x$ERL_XCOMP_CONF" != "x" ]; then
- . $ERL_XCOMP_CONF
-fi
-
TYPE=
case "$1" in
all)
diff --git a/prebuild.skip b/prebuild.skip
index 1f88ed4c6d..e366c6a164 100644
--- a/prebuild.skip
+++ b/prebuild.skip
@@ -1,3 +1,4 @@
Makefile
bin
bootstrap/bin
+ibin
diff --git a/system/doc/reference_manual/macros.xml b/system/doc/reference_manual/macros.xml
index a1ba182eff..9dd5fc79bd 100644
--- a/system/doc/reference_manual/macros.xml
+++ b/system/doc/reference_manual/macros.xml
@@ -4,7 +4,7 @@
<chapter>
<header>
<copyright>
- <year>2003</year><year>2009</year>
+ <year>2003</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>The Preprocessor</title>
@@ -140,6 +140,38 @@ bar(X) ->
</section>
<section>
+ <title>Macros Overloading</title>
+ <p>It is possible to overload macros, except for predefined
+ macros. An overloaded macro has more than one definition,
+ each with a different number of arguments.</p>
+ <p>The feature was added in Erlang 5.7.5/OTP R13B04.</p>
+ <p>A macro <c>?Func(Arg1,...,ArgN)</c> with a (possibly empty)
+ list of arguments results in an error message if there is at
+ least one definition of <c>Func</c> with arguments, but none
+ with N arguments.</p>
+ <p>Assuming these definitions:</p>
+ <code type="none">
+-define(F0(), c).
+-define(F1(A), A).
+-define(C, m:f).</code>
+ <p>the following will not work:</p>
+ <code type="none">
+f0() ->
+ ?F0. % No, an empty list of arguments expected.
+
+f1(A) ->
+ ?F1(A, A). % No, exactly one argument expected.</code>
+ <p>On the other hand,</p>
+ <code>
+f() ->
+ ?C().</code>
+ <p>will expand to</p>
+ <code>
+f() ->
+ m:f().</code>
+ </section>
+
+ <section>
<title>Flow Control in Macros</title>
<p>The following macro directives are supplied:</p>
<taglist>
diff --git a/xcomp/README b/xcomp/README
index dfda81fc8e..4cb577471a 100644
--- a/xcomp/README
+++ b/xcomp/README
@@ -1,10 +1,10 @@
-================================================================================
- Cross compiling Erlang/OTP
-================================================================================
+===============================================================================
+ Cross compiling Erlang/OTP
+===============================================================================
%CopyrightBegin%
-Copyright Ericsson AB 2009. All Rights Reserved.
+Copyright Ericsson AB 2009-2010. All Rights Reserved.
The contents of this file are subject to the Erlang Public License,
Version 1.1, (the "License"); you may not use this file except in
@@ -19,200 +19,413 @@ under the License.
%CopyrightEnd%
-================================================================================
+===============================================================================
+
+This document describes how to cross compile Erlang/OTP. Note that the support
+for cross compiling Erlang/OTP is in its early stage of development, and
+should be considered as experimental. You are encouraged to read the whole
+document before attempting to cross compile Erlang/OTP.
+
+Building Erlang/OTP can be done either by using the `$ERL_TOP/otp_build'
+script, or by invoking `configure' and `make' directly. The
+`erl-xcomp.conf.template' file contains all available configuration variables
+and can be used as a template when creating a configuration. See
+`erl-xcomp-TileraMDE2.0-tilepro.conf` and `erl-xcomp-x86_64-saf-linux-gnu.conf'
+for examples of working configurations.
+
+The configuration files can be passed to `$ERL_TOP/otp_build configure' using
+the `--xcomp-conf' command line argument. Note that `configure' doesn't accept
+this command line argument. When using the `configure' script directly, pass
+the configuration variables as arguments to `configure' (or exported in the
+environment). If the default behavior of a variable is satisfactory, the
+variable doesn't need to be set. However, the `configure' script will issue a
+warning when a default value is used. When a variable has been set, no warning
+will be issued.
+
+All Erlang/OTP applications except the `wx' application can be cross compiled.
+The build of the `wx' driver will currently be automatically disabled when
+cross compiling.
+
+Note, that `$ERL_TOP/otp_build configure' will produce a default configuration
+that differs from what `$ERL_TOP/configure' will produce by default. For
+example, currently `--disable-dynamic-ssl-lib' is added to the
+`$ERL_TOP/configure' command line arguments unless `--enable-dynamic-ssl-lib'
+has been explicitly passed. The defaults used by `$ERL_TOP/otp_build configure'
+may change at any time without prior notice.
+
+The build system, including cross compilation configuration variables used,
+may be subject to non backward compatible changes without prior notice.
+Current cross build system has been tested when cross compiling some Linux/GNU
+systems, but has only been partly tested for more esoteric platforms. The
+VxWorks example file is highly dependent on our environment and is here more
+or less only for internal use.
-This directory contains a configuration file template and configuration examples
-for cross compiling Erlang/OTP. The configuration files contain configuration
-variables and should be supplied to the $ERL_TOP/otp_build when setting up an
-appropriate environment for cross compiling. The currently used configuration
-variables are described later in this document.
+Please submit any patches for cross compiling in a way consistent with this
+system. All input is welcome as we have a very limited set of cross compiling
+environments to test with. If a new configuration variable is needed, add it
+to `$ERL_TOP/xcomp/erl-xcomp.conf.template', and use it in `configure.in'.
+Other files that might need to be updated are:
+- `$ERL_TOP/xcomp/erl-xcomp-vars.sh'
+- `$ERL_TOP/erl-build-tool-vars.sh'
+- `$ERL_TOP/erts/aclocal.m4'
+- `$ERL_TOP/xcomp/README'
+- `$ERL_TOP/xcomp/erl-xcomp-*.conf'
+Note that this might be an incomplete list of files that need to be updated.
-The erl-xcomp.conf.template contains all available configuration variables
-and can be used as a template when creating a configuration. See the
-erl-xcomp-TileraMDE2.0-tilepro.conf for an example of a working configuration
-file.
+General information on how to submit patches can be found at:
+ http://wiki.github.com/erlang/otp/submitting-patches
-Instead of using the configuration files one can export the configuration
-variables as ordinary environment variables before calling otp_build. If
-default behavior of a variable is satisfactory, the variable need not to
-be set and exported.
+======= Build and Install =====================================================
-Note that the support for cross compiling is in its early stage of development,
-and should be considered as experimental. The build system including cross
-compilation configuration variables used may be subject to non backward
-compatible changes without prior notice. It works for cross compiling some
-Linux/GNU systems, but has only been partly tested for more esoteric platforms.
-The VxWorks example file is highly dependent on our environment and is here
-more or less only for internal use.
+ [1]
-Please submit any patches for cross compiling in a way consistent with this
-system. If a new configuration variable is needed for your system, add it to the
-template file, use it in otp_build, aclocal.m4 and/or configure.in. All input is
-welcome as we cannot possibly have all cross compiling environments out there to
-test with.
+Change directory into the top directory of the Erlang/OTP source tree.
-General information on how to submit patches can be found at:
- http://wiki.github.com/erlang/otp/submitting-patches
+ $ cd $ERL_TOP
+
+------- Build -----------------------------------------------------------------
+
+In order to compile Erlang code, a small Erlang bootstrap system has to be
+built, or an Erlang/OTP system of the same release as the one being built
+has to be provided in the `$PATH'. The Erlang/OTP for the target system will
+be built using this Erlang system, together with the cross compilation tools
+provided.
+
+If you want to build using a compatible Erlang/OTP system in the `$PATH',
+jump to [3].
+
+-- Building a bootstrap system --
+
+ [2]
+
+ $ ./configure --enable-bootstrap-only
+ $ make
+
+The `--enable-bootstrap-only' argument to `configure' isn't strictly necessary,
+but will speed things up. It will only run `configure' in applications
+necessary for the bootstrap, and will disable a lot of things not needed by
+the bootstrap system. If you run `configure' without `--enable-boostrap-only'
+you also have to run make as `make bootstrap'; otherwise, the whole system will
+be built.
+
+-- Cross building the system --
+
+ [3]
+
+ $ ./configure --build=<BUILD> --host=<HOST> [Other Configure Args]
+ $ make
+
+<BUILD> should equal the CPU-VENDOR-OS triplet of the system that you build
+on. If you execute `$ERL_TOP/erts/autoconf/config.guess', it will in most
+cases print the triplet you want to use for this.
+
+<HOST> is the system that you build for. It does not have to be a full
+CPU-VENDOR-OS triplet, but can be. The full CPU-VENDOR-OS triplet will be
+created by executing `$ERL_TOP/erts/autoconf/config.sub <HOST>'. If
+`config.sub' fails, you need to be more specific.
+
+Pass the cross compilation variables as command line arguments to `configure'
+using a `<VAR>=<VALUE>' syntax (or export them in the environment). Note that
+you can *not* pass a configuration file using `--xcomp-conf=<FILE>' when you
+invoke `configure' directly. The `--xcomp-conf=<FILE>' argument can only
+be passed to `$ERL_TOP/otp_build configure'.
+
+`make' will verify that the Erlang/OTP system used when building is of the
+same release as the system being built, and will fail if this is not the case.
+It is possible, however not recommended, to force the cross compilation even
+though the wrong Erlang/OTP system is used. This by invoking `make' like this:
+`make ERL_XCOMP_FORCE_DIFFERENT_OTP=yes'. Note that this build might fail,
+silently produce suboptimal code, or silently produce erroneous code.
+
+-- Installing --
+
+You can either install using the installation paths determined by `configure'
+[4], or install manually using [5].
+
+ [4]
+
+ $ make install DESTDIR=<TEMPORARY_PREFIX>
+
+`make install' will install at a location specified when doing `configure'.
+`configure' arguments specifying where the installation should reside are for
+example: `--prefix', `--exec-prefix', `--libdir', `--bindir', etc. By default
+it will install under `/usr/local'. You typically do not want to install your
+cross build under `/usr/local' on your build machine. Using `DESTDIR' will
+cause the installation paths to be prefixed by `$DESTDIR'. This makes it
+possible to install and package the installation on the build machine without
+having to place the installation in the same directory on the build machine as
+it should be executed from on the target machine.
+
+When `make install' has finished, change directory into `$DESTDIR', package
+the system, move it to the target machine, and unpack it. Note that the
+installation will only be working on the target machine at the location
+determined by `configure'.
+
+Installing manually:
+
+ [5]
+
+ $ make release RELEASE_ROOT=<RELEASE_DIR>
+
+`make release' will copy what you have built for the target machine to
+`<RELEASE_DIR>'. The `Install' script will not be run. The content of
+`<RELEASE_DIR>' is what by default ends up in `/usr/local/lib/erlang'.
-== Build and Install ===========================================================
+The `Install' script used when installing Erlang/OTP requires common Unix
+tools such as `sed' to be present in your `$PATH'. If your target system
+does not have such tools, you need to run the `Install' script on your
+build machine before packaging Erlang/OTP. The `Install' script should
+currently be invoked as follows in the directory where it resides
+(the top directory):
+ `./Install [-cross] [-minimal|-sasl] <ERL_ROOT>'
+ where:
+ -minimal - Creates an installation that starts up a minimal amount
+ of applications, i.e., only `kernel' and `stdlib' are
+ started. The minimal system is normally enough.
+ -sasl - Creates an installation that also starts up the `sasl'
+ application.
+ -cross - For cross compilation. Informs the install script that it
+ is run on the build machine.
+ <ERL_ROOT> - The absolute path to the Erlang installation to use at run
+ time. This is often the same as the current working
+ directory, but does not have to be. It can follow any other
+ path through the file system to the same directory.
+If neither `-minimal', nor `-sasl' is passed as argument you will be
+prompted.
- [1] $ cd $ERL_TOP
+You can now either:
-Either set up your cross compilation variables in the environment manually,
-or set up the environment using a configuration file by executing:
- [2] $ eval `./otp_build env_cross <ABSOLUTE_PATH_TO_XCONF_FILE>`
+ [6]
-Configure and build Erlang/OTP:
- [3] $ ./otp_build configure
- [4] $ ./otp_build boot -a
- [5] $ ./otp_build release -a <ABSOLUTE_PATH_TO_RELEASE_ROOT>
+* Decide where the installation should be located on the target machine, run
+ the `Install' script on the build machine, and package the installed
+ installation. The installation just need to be unpacked at the right
+ location on the target machine:
-The Install script used when installing Erlang/OTP requires common Unix
-tools such as 'sed' to be present in your PATH. If your target system
-does not have such tools, you need to run the Install script on your
-build machine before packing Erlang/OTP. If so, run the Install script
-like follows; otherwise skip [6] and [7]:
- [6] $ cd <ABSOLUTE_PATH_TO_RELEASE_ROOT>
- [7] $ ./Install -cross <ABSOLUTE_INSTALL_ROOT_ON_TARGET> # answer questions
+ $ cd <RELEASE_DIR>
+ $ ./Install -cross [-minimal|-sasl] <ABSOLUTE_INSTALL_DIR_ON_TARGET>
-Pack Erlang/OTP as follows (gnu tar is assumed):
- [8] $ cd <ABSOLUTE_PATH_TO_RELEASE_ROOT>
- [9] $ tar -zcf <WHERE_TO_SAVE_THE_RELEASE>/<RELEASE_NAME>.tar.gz *
+ [7]
-Install Erlang/OTP on the target system like follows. If you ran the Install
-script before packing ([6] and [7]) you should skip [12]:
- [10] $ cd <ABSOLUTE_INSTALL_ROOT_ON_TARGET>
- [11] $ tar -zxf <WHERE_THE_PACKED_RELEASE_EXIST>/<RELEASE_NAME>.tar.gz
- [12] $ ./Install <ABSOLUTE_INSTALL_ROOT_ON_TARGET> # answer questions
+* Package the installation in <RELEASE_DIR>, place it wherever you want on
+ your target machine, and run the `Install' script on your target machine:
-<ABSOLUTE_INSTALL_ROOT_ON_TARGET> usually equals current working directory
-when you run the Install script on the target system, but does not have to.
-It can follow another path through the file system to the same directory.
-<ABSOLUTE_INSTALL_ROOT_ON_TARGET> is the path that will be used when running
-Erlang/OTP and is the path that have to be available at run time.
+ $ cd <ABSOLUTE_INSTALL_DIR_ON_TARGET>
+ $ ./Install [-minimal|-sasl] <ABSOLUTE_INSTALL_DIR_ON_TARGET>
-== Currently used configuration variables ======================================
+-- Building with the `otp_build' script --
--- Mandatory -------------------------------------------------------------------
+ [8]
-* erl_xcomp_host
- Target system. The value will be passed as '--host' argument to the configure
- script. It does not have to be a full CPU-VENDOR-OS triplet, but can be. The
- full CPU-VENDOR-OS triplet will be created by:
- $ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host
+ $ cd $ERL_TOP
--- Optional --------------------------------------------------------------------
+ [9]
-* erl_xcomp_configure_flags
- To override the configure flags for a special target system, you
- can set this variable which overrides configure parameters on the
- command line and instead uses the specified options. The variable
- leaves the build-host system untouched.
+ $ ./otp_build configure [--build=<BUILD>] [--host=<HOST>] \
+ [--with-xcomp-conf=<FILE>] [Other Configure Args]
--- Optional build environment flags --
+If you have your cross compilation configuration in a file, pass it using the
+`--xcomp-conf=<FILE>' command line argument. If not, pass the configuration
+variables on the command line using a `<VAR>=<VALUE>' syntax (or in the
+environment).
-If the cross compilation tools aren't prefixed by '$erl_xcomp_host-',
-you will have to use these configuration variables in order to use the
-right cross compilation tools.
+`--build=<BUILD>', and `--host=<HOST>' are the same as described at [3].
+The `--xcomp-conf=<FILE>' argument causes `otp_build' to read the cross
+compilation configuration from `<FILE>'. All of these arguments are in this
+case optional, but `<BUILD>', and `<HOST>' must be given either by passing
+`--build=<BUILD>' and `--host=<HOST>' on the command line, or by setting
+`erl_xcomp_build=<HOST>', and `erl_xcomp_host=<HOST>' in `<FILE>' and
+passing the `--xcomp-conf=<FILE>' argument.
-* erl_xcomp_cc
- C compiler.
+`otp_build configure' will configure both for the boostrap system on the
+build machine and the cross host system.
-* erl_xcomp_ld
- Linker.
+ [10]
-* erl_xcomp_cflags
- C compiler flags.
+ $ ./otp_build boot -a
-* erl_xcomp_cpp
- C pre processor.
+ 'otp_build boot -a' will first build a bootstrap system
+for the build machine and then do the cross build of the system.
-* erl_xcomp_ldflags
- Linker flags.
+ [11]
-* erl_xcomp_ranlib
- Ranlib program.
+ $ ./otp_build release -a <RELEASE_DIR>
-* erl_xcomp_ar
- Ar program.
+'otp_build release -a' will do the same as [5], and you will after this have
+to do a manual install either by doing [6], or [7].
-* erl_xcomp_ded_ld
- Dynamic Erlang Driver linker.
+======== Currently used configuration variables ===============================
-* erl_xcomp_ded_ldflags
- Dynamic Erlang Driver linker flags.
+Note that you cannot define arbitrary variables in a cross compilation
+configuration file. Only the ones listed below will be guaranteed to be
+visible throughout the whole execution of all `configure' scripts. Other
+variables needs to be defined as arguments to `configure' or exported in
+the environment.
-* erl_xcomp_ded_ld_runtime_library_path
- Dynamic Erlang Driver runtime linker path.
+-------- `otp_build' only variables -------------------------------------------
--- Optional feature, or bug tests --
+Variables in this section are only used, when configuring Erlang/OTP for
+cross compilation using `$ERL_TOP/otp_build configure'.
+
+NOTE! These variables currently have *no* effect if you configure using the
+`configure' script directly.
+
+* erl_xcomp_build - Build system.
+ This value will be passed as `--build=$erl_xcomp_build' argument to the
+ `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+ but can be. The full CPU-VENDOR-OS triplet will be created by:
+ `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_build'
+ If `erl_xcomp_build=guess', the build system will be guessed using:
+ `$ERL_TOP/erts/autoconf/config.guess'.
+
+* erl_xcomp_host - Cross host system.
+ This value will be passed as `--host=$erl_xcomp_host' argument to the
+ `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+ but can be. The full CPU-VENDOR-OS triplet will be created by:
+ `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host'
+
+* erl_xcomp_configure_flags - Extra configure flags.
+ Extra flags to pass to the `configure' script.
+
+-------- Cross compiler and other tools to use --------------------------------
+
+If the cross compilation tools are prefixed by `<HOST>-' you probably do
+not need to set these variables (where `<HOST>' is what has been passed as
+`--host=<HOST>' argument to `configure').
+
+* CC - C compiler.
+
+* CFLAGS - C compiler flags.
+
+* STATIC_CFLAGS - Static C compiler flags.
+
+* CFLAG_RUNTIME_LIBRARY_PATH - C compiler runtime library path flag.
+ This flag should set a specific runtime library path for the shared
+ library at link time. Note that this is actually a linker flag, but it
+ needs to be passed via the compiler.
+
+* CPP - C pre-processor.
+
+* CPPFLAGS - C pre-processor flags.
+
+* CXX - C++ compiler.
+
+* CXXFLAGS - C++ compiler flags.
+
+* LD - Linker
+
+* LDFLAGS - Linker flags.
+
+-- Dynamic Erlang Driver linker flags. --
+
+NOTE! Either define all or non of the DED_LD* variables.
+
+* DED_LD - Linker.
+
+* DED_LDFLAGS - Linker flags.
+
+* DED_LD_FLAG_RUNTIME_LIBRARY_PATH - Linker runtime library path flag.
+ This flag should set a specific runtime library path for the shared
+ library at link time.
+
+-- Other tools --
+
+* RANLIB - ranlib
+
+* AR - ar
+
+-------- Cross System Root Locations ------------------------------------------
+
+* erl_xcomp_sysroot - Absolute cross system root path.
+ The absolute path to the system root of the cross compilation
+ environment. Currently, the `crypto', `odbc', `ssh' and `ssl'
+ applications need the system root. These applications will be skipped
+ if the system root has not been set. The system root might be needed
+ for other things too. If this is the case and the system root has not
+ been set, `configure' will fail and request you to set it.
+
+* erl_xcomp_isysroot - Absolute cross include system root path.
+ The absolute path to the system root for includes of the cross
+ compilation environment. If not set, this value defaults to
+ `$erl_xcomp_sysroot', i.e., only set this value if the include system
+ root path is not the same as the system root path.
+
+-------- Optional feature, or bug tests ---------------------------------------
These tests cannot (always) be done automatically when cross compiling. You
usually does not need to set these variables. Only set these if you really
know what you are doing.
+The `configure' script will issue a warning when a default value is used.
+When a variable has been set, no warning will be issued.
+
* erl_xcomp_bigendian - yes|no
- If yes, the target system must be big endian. If no, little endian. This can
- often be automatically detected, but not always. If not automatically
- detected, configure will fail unless this variable is set. No default value
- is used, i.e., configure will try to figure this out automatically.
-
-* erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to yes)
- If yes, clock_gettime(CLOCK_MONOTONIC, _) on the target system must work.
- This variable is recommended to be set to no on Linux systems with kernel
- versions less than 2.6.
-
-* erl_xcomp_linux_nptl - yes|no (defaults to yes on Linux; otherwise, no)
- If yes, the target system must have NPTL (Native POSIX Thread Library).
- Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
- versions typically less than 2.6).
-
-* erl_xcomp_linux_usable_sigusrx - yes|no (defaults to yes)
- If yes, the SIGUSR1 and SIGUSR2 must be usable by the ERTS. Old
- LinuxThreads thread libraries (Linux kernel versions less than 2.2) used
- these signals and made them unusable by the ERTS.
-
-* erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to yes)
- If yes, sigaltstack() must be usable on the target system. sigaltstack()
- on Linux kernel versions less than 2.4 are broken.
-
-* erl_xcomp_poll - yes|no (defaults to no on Darwin/MacOSX; otherwise, yes)
- If yes, the target system must have a working poll() implementation that also
- can handle devices. If no, select() will be used instead of poll().
-
-* erl_xcomp_kqueue - yes|no (defaults to no)
- If yes, the target system must have a working kqueue() implementation that
- returns a file descriptor which can be used by poll() and/or select().
- If no and the target system has not got epoll() or /dev/poll, the kernel-poll
- feature will be disabled.
-
-* erl_xcomp_putenv_copy - yes|no (defaults to no)
- If yes, the target system must have a putenv() implementation that stores a
- copy of the key/value pair.
-
-* erl_xcomp_reliable_fpe - yes|no (defaults to no)
- If yes, the target system must have reliable floating point exceptions.
-
-* erl_xcomp_getaddrinfo - yes|no (defaults to no)
- If yes, the target system must have a working getaddrinfo() implementation
- that can handle both IPv4 and IPv6.
-
-* erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to no)
- If yes, the target system must have a working gethrvtime() implementation
- and is used with procfs ioctl().
-
-* erl_xcomp_clock_gettime - yes|no (defaults to no)
- If yes, the target system must have a working clock_gettime() implementation
- that can be used for retrieving process CPU time.
-
-* erl_xcomp_after_morecore_hook - yes|no (defaults to no)
- If yes, the target system must have a working __after_morecore_hook that can
- be used for tracking used malloc() implementations core memory usage.
-
-* erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to no)
- If yes, the target system must have a working dlsym(RTLD_NEXT, <S>)
- implementation that can be used on 'brk' and 'sbrk' symbols used by the
- malloc() implementation in use, and by this track the malloc() implementations
- core memory usage.
-
-================================================================================
+ If `yes', the target system must be big endian. If `no', little endian.
+ This can often be automatically detected, but not always. If not
+ automatically detected, `configure' will fail unless this variable is
+ set. No default value is used, i.e., `configure' will try to figure
+ this out automatically.
+
+* erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to `yes' on
+ Linux; otherwise, `no')
+ If `yes', `clock_gettime(CLOCK_MONOTONIC, _)' on the target system must
+ work. This variable is recommended to be set to `no' on Linux systems
+ with kernel versions less than 2.6.
+
+* erl_xcomp_linux_nptl - yes|no (defaults to `yes' on Linux; otherwise, `no')
+ If `yes', the target system must have NPTL (Native POSIX Thread Library).
+ Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
+ versions typically less than 2.6).
+
+* erl_xcomp_linux_usable_sigusrx - yes|no (defaults to `yes')
+ If `yes', the `SIGUSR1' and `SIGUSR2' signals must be usable by the ERTS.
+ Old LinuxThreads thread libraries (Linux kernel versions less than 2.2)
+ used these signals and made them unusable by the ERTS.
+
+* erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to `yes' on Linux;
+ otherwise, `no')
+ If `yes', `sigaltstack()' must be usable on the target system.
+ `sigaltstack()' on Linux kernel versions less than 2.4 are broken.
+
+* erl_xcomp_poll - yes|no (defaults to `no' on Darwin/MacOSX; otherwise, `yes')
+ If `yes', the target system must have a working `poll()' implementation
+ that also can handle devices. If `no', `select()' will be used instead of
+ `poll()'.
+
+* erl_xcomp_kqueue - yes|no (defaults to `no')
+ If `yes', the target system must have a working `kqueue()' implementation
+ that returns a file descriptor which can be used by `poll()' and/or
+ `select()'. If `no' and the target system has not got `epoll()' or
+ `/dev/poll', the kernel-poll feature will be disabled.
+
+* erl_xcomp_putenv_copy - yes|no (defaults to `no')
+ If `yes', the target system must have a `putenv()' implementation that
+ stores a copy of the key/value pair.
+
+* erl_xcomp_reliable_fpe - yes|no (defaults to `no')
+ If `yes', the target system must have reliable floating point exceptions.
+
+* erl_xcomp_getaddrinfo - yes|no (defaults to `no')
+ If `yes', the target system must have a working `getaddrinfo()'
+ implementation that can handle both IPv4 and IPv6.
+
+* erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to `no')
+ If `yes', the target system must have a working `gethrvtime()'
+ implementation and is used with procfs `ioctl()'.
+
+* erl_xcomp_clock_gettime_cpu_time - yes|no (defaults to `no')
+ If `yes', the target system must have a working `clock_gettime()'
+ implementation that can be used for retrieving process CPU time.
+
+* erl_xcomp_after_morecore_hook - yes|no (defaults to `no')
+ If `yes', the target system must have a working `__after_morecore_hook'
+ that can be used for tracking used `malloc()' implementations core memory
+ usage.
+
+* erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to `no')
+ If `yes', the target system must have a working `dlsym(RTLD_NEXT, <S>)'
+ implementation that can be used on `brk' and `sbrk' symbols used by the
+ `malloc()' implementation in use, and by this track the `malloc()'
+ implementations core memory usage.
+
+===============================================================================
diff --git a/xcomp/erl-xcomp-TileraMDE2.0-tilepro.conf b/xcomp/erl-xcomp-TileraMDE2.0-tilepro.conf
index c8e7212e1f..67da8b5abb 100644
--- a/xcomp/erl-xcomp-TileraMDE2.0-tilepro.conf
+++ b/xcomp/erl-xcomp-TileraMDE2.0-tilepro.conf
@@ -1,200 +1,236 @@
-###
-### %CopyrightBegin%
-###
-### Copyright Ericsson AB 2009. All Rights Reserved.
-###
-### The contents of this file are subject to the Erlang Public License,
-### Version 1.1, (the "License"); you may not use this file except in
-### compliance with the License. You should have received a copy of the
-### Erlang Public License along with this software. If not, it can be
-### retrieved online at http://www.erlang.org/.
-###
-### Software distributed under the License is distributed on an "AS IS"
-### basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
-### the License for the specific language governing rights and limitations
-### under the License.
-###
-### %CopyrightEnd%
-###
-### File: erl-xcomp-TileraMDE2.0-tilepro.conf
-### Author: Rickard Green
-###
-
-### ----------------------------------------------------------------------------
-### When cross compiling Erlang/OTP, copy this file and set the variables
-### needed below. Then pass the path to the copy of this file as an argument
-### to "eval `otp_build env_cross <absolute path to erl-xcomp.conf file>`".
-### ----------------------------------------------------------------------------
-
-### ----------------------------------------------------------------------------
-### Variables in the following section *have* to be set.
-###
-
-
-##
-## Target system. The value will be passed as '--host' argument to the configure
-## script. It does not have to be a full CPU-VENDOR-OS tripplet, but can be. The
-## full CPU-VENDOR-OS tripplet will be created by:
-## $ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host
-##
+#### -*-shell-script-*-
+####
+#### %CopyrightBegin%
+####
+#### Copyright Ericsson AB 2009-2010. All Rights Reserved.
+####
+#### The contents of this file are subject to the Erlang Public License,
+#### Version 1.1, (the "License"); you may not use this file except in
+#### compliance with the License. You should have received a copy of the
+#### Erlang Public License along with this software. If not, it can be
+#### retrieved online at http://www.erlang.org/.
+####
+#### Software distributed under the License is distributed on an "AS IS"
+#### basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+#### the License for the specific language governing rights and limitations
+#### under the License.
+####
+#### %CopyrightEnd%
+####
+#### File: erl-xcomp-TileraMDE2.0-tilepro.conf
+#### Author: Rickard Green
+####
+#### --------------------------------------------------------------------------
+#### When cross compiling Erlang/OTP using `otp_build', copy this file and set
+#### the variables needed below. Then pass the path to the copy of this file as
+#### an argument to `otp_build' in the configure stage:
+#### `otp_build configure --xcomp-conf=<FILE>'
+#### --------------------------------------------------------------------------
+
+### Note that you cannot define arbitrary variables in a cross compilation
+### configuration file. Only the ones listed below will be guaranteed to be
+### visible throughout the whole execution of all `configure' scripts. Other
+### variables needs to be defined as arguments to `configure' or exported in
+### the environment.
+
+### ---- `otp_build' only variables -------------------------------------------
+
+### Variables in this section are only used, when configuring Erlang/OTP for
+### cross compilation using `$ERL_TOP/otp_build configure'.
+
+### NOTE! These variables currently have *no* effect if you configure using the
+### `configure' script directly.
+
+## erl_xcomp_build - Build system.
+## This value will be passed as `--build=$erl_xcomp_build' argument to the
+## `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+## but can be. The full CPU-VENDOR-OS triplet will be created by:
+## `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_build'
+## If `erl_xcomp_build=guess', the build system will be guessed using:
+## `$ERL_TOP/erts/autoconf/config.guess'.
+erl_xcomp_build=guess
+
+## erl_xcomp_host - Cross host system.
+## This value will be passed as `--host=$erl_xcomp_host' argument to the
+## `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+## but can be. The full CPU-VENDOR-OS triplet will be created by:
+## `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host'
erl_xcomp_host=tile
-### ----------------------------------------------------------------------------
-### ----------------------------------------------------------------------------
-### To override the configure flags for a special target system, You
-### can set this variable which overrides configure parameters on the
-### command line and instead uses the specified options. The variable
-### leaves the build-host system untouched.
-### ----------------------------------------------------------------------------
+## erl_xcomp_configure_flags - Extra configure flags.
+## Extra flags to pass to the `configure' script.
erl_xcomp_configure_flags="--without-termcap"
-###-----------------------------------------------------------------------------
-### You can specify a specific CC or LD for the build target (the cross
-### compiler) here along with magic CFLAGS and/or LDFLAGS if needed
-### ar and ranlib might also be specified if needed.
-###-----------------------------------------------------------------------------
+### ---- Cross compiler and other tools to use --------------------------------
-erl_xcomp_cc=
+### If the cross compilation tools are prefixed by `<HOST>-' you probably do
+### not need to set these variables (where `<HOST>' is what has been passed as
+### `--host=<HOST>' argument to `configure').
-erl_xcomp_ld=
+## CC - C compiler.
+#CC=
-erl_xcomp_cflags=
+## CFLAGS - C compiler flags.
+#CFLAGS=
-erl_xcomp_cpp=
+## STATIC_CFLAGS - Static C compiler flags.
+#STATIC_CFLAGS=
-erl_xcomp_ldflags=
+## CFLAG_RUNTIME_LIBRARY_PATH - C compiler runtime library path flag.
+## This flag should set a specific runtime library path for the shared
+## library at link time. Note that this is actually a linker flag, but it
+## needs to be passed via the compiler.
+#CFLAG_RUNTIME_LIBRARY_PATH=
-erl_xcomp_ranlib=
+## CPP - C pre-processor.
+#CPP=
-erl_xcomp_ar=
+## CPPFLAGS - C pre-processor flags.
+#CPPFLAGS=
-###-----------------------------------------------------------------------------
-### The ded_ls and ded_ldflags variables control linking of dynamically loaded
-### erlang drivers. On i.e. Linux these are set to
-### $(CC) and "-shared" respectively, but other OS'es might need other
-### programs and flags to build a dynamic library.
-### erl_xcomp_ded_ld_runtime_library_path is the flag to set a
-### specific runtime library path for the shared library at link time,
-### usually this should be left empty.
-###-----------------------------------------------------------------------------
+## CXX - C++ compiler.
+#CXX=
-erl_xcomp_ded_ld=
+## CXXFLAGS - C++ compiler flags.
+#CXXFLAGS=
-erl_xcomp_ded_ldflags=
+## LD - Linker
+#LD=
-erl_xcomp_ded_ld_runtime_library_path=
+## LDFLAGS - Linker flags.
+#LDFLAGS=
-###
-### Optional feature, or bug tests
-###
-### These tests cannot (always) be done automatically when cross compiling.
-### You usually does not need to set these variables. Only set these if you
-### really know what you are doing.
-###
+### -- Dynamic Erlang Driver linker flags. --
+
+### NOTE! Either define all or non of the DED_LD* variables.
+
+## DED_LD - Linker.
+#DED_LD=
+
+## DED_LDFLAGS - Linker flags.
+#DED_LDFLAGS=
+
+## DED_LD_FLAG_RUNTIME_LIBRARY_PATH - Linker runtime library path flag.
+## This flag should set a specific runtime library path for the shared
+## library at link time.
+#DED_LD_FLAG_RUNTIME_LIBRARY_PATH=
+
+### -- Other tools --
+
+## RANLIB - ranlib
+#RANLIB=
+
+## AR - ar
+#AR=
+
+### ---- Cross System Root Locations ------------------------------------------
+
+## erl_xcomp_sysroot - Absolute cross system root path.
+## The absolute path to the system root of the cross compilation
+## environment. Currently, the `crypto', `odbc', `ssh' and `ssl'
+## applications need the system root. These applications will be skipped
+## if the system root has not been set. The system root might be needed
+## for other things too. If this is the case and the system root has not
+## been set, `configure' will fail and request you to set it.
+erl_xcomp_sysroot="$TILERA_ROOT/tile"
+
+## erl_xcomp_isysroot - Absolute cross include system root path.
+## The absolute path to the system root for includes of the cross
+## compilation environment. If not set, this value defaults to
+## `$erl_xcomp_sysroot', i.e., only set this value if the include system
+## root path is not the same as the system root path.
+#erl_xcomp_isysroot=
+
+### ---- Optional feature, or bug tests ---------------------------------------
+
+### These tests cannot (always) be done automatically when cross compiling. You
+### usually does not need to set these variables. Only set these if you really
+### know what you are doing.
+
+### The `configure' script will issue a warning when a default value is used.
+### When a variable has been set, no warning will be issued.
-##
## erl_xcomp_bigendian - yes|no
-## If yes, the target system must be big endian. If no, little endian. This
-## can often be automatically detected, but not always. If not automatically
-## detected, configure will fail unless this variable is set. No default value
-## is used, i.e., configure will try to figure this out automatically.
-erl_xcomp_bigendian=
-
-##
-## erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to yes)
-## If yes, clock_gettime(CLOCK_MONOTONIC, _) on the target system must work.
-## This variable is recommended to be set to no on Linux systems with kernel
-## versions less than 2.6.
-##
-erl_xcomp_linux_clock_gettime_correction=yes
-
-##
-## erl_xcomp_linux_nptl - yes|no (defaults to yes on Linux; otherwise, no)
-## If yes, the target system must have NPTL (Native POSIX Thread Library).
-## Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
-## versions typically less than 2.6).
-##
-erl_xcomp_linux_nptl=yes
-
-##
-## erl_xcomp_linux_usable_sigusrx - yes|no (defaults to yes)
-## If yes, the SIGUSR1 and SIGUSR2 must be usable by the ERTS. Old
-## LinuxThreads thread libraries (Linux kernel versions less than 2.2) used
-## these signals and made them unusable by the ERTS.
-##
-erl_xcomp_linux_usable_sigusrx=yes
-
-##
-## erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to yes)
-## If yes, sigaltstack() must be usable on the target system. sigaltstack()
-## on Linux kernel versions less than 2.4 are broken.
-##
-erl_xcomp_linux_usable_sigaltstack=yes
-
-##
-## erl_xcomp_poll - yes|no (defaults to no on Darwin/MacOSX; otherwise, yes)
-## If yes, the target system must have a working poll() implementation that
-## also can handle devices. If no, select() will be used instead of poll().
-##
-erl_xcomp_poll=yes
-
-##
-## erl_xcomp_kqueue - yes|no (defaults to no)
-## If yes, the target system must have a working kqueue() implementation that
-## returns a file descriptor which can be used by poll() and/or select().
-## If no and the target system has not got epoll() or /dev/poll, the
-## kernel-poll feature will be disabled.
-##
-erl_xcomp_kqueue=
-
-##
-## erl_xcomp_putenv_copy - yes|no (defaults to no)
-## If yes, the target system must have a putenv() implementation that stores a
-## copy of the key/value pair.
-##
-erl_xcomp_putenv_copy=
-
-##
-## erl_xcomp_reliable_fpe - yes|no (defaults to no)
-## If yes, the target system must have reliable floating point exceptions.
-##
-erl_xcomp_reliable_fpe=
-
-##
-## erl_xcomp_getaddrinfo - yes|no (defaults to no)
-## If yes, the target system must have a working getaddrinfo() implementation
-## that can handle both IPv4 and IPv6.
-##
+## If `yes', the target system must be big endian. If `no', little endian.
+## This can often be automatically detected, but not always. If not
+## automatically detected, `configure' will fail unless this variable is
+## set. No default value is used, i.e., `configure' will try to figure
+## this out automatically.
+#erl_xcomp_bigendian=
+
+## erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to `yes' on
+## Linux; otherwise, `no')
+## If `yes', `clock_gettime(CLOCK_MONOTONIC, _)' on the target system must
+## work. This variable is recommended to be set to `no' on Linux systems
+## with kernel versions less than 2.6.
+#erl_xcomp_linux_clock_gettime_correction=
+
+## erl_xcomp_linux_nptl - yes|no (defaults to `yes' on Linux; otherwise, `no')
+## If `yes', the target system must have NPTL (Native POSIX Thread Library).
+## Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
+## versions typically less than 2.6).
+#erl_xcomp_linux_nptl=
+
+## erl_xcomp_linux_usable_sigusrx - yes|no (defaults to `yes')
+## If `yes', the `SIGUSR1' and `SIGUSR2' signals must be usable by the ERTS.
+## Old LinuxThreads thread libraries (Linux kernel versions less than 2.2)
+## used these signals and made them unusable by the ERTS.
+#erl_xcomp_linux_usable_sigusrx=
+
+## erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to `yes' on Linux;
+## otherwise, `no')
+## If `yes', `sigaltstack()' must be usable on the target system.
+## `sigaltstack()' on Linux kernel versions less than 2.4 are broken.
+#erl_xcomp_linux_usable_sigaltstack=
+
+## erl_xcomp_poll - yes|no (defaults to `no' on Darwin/MacOSX; otherwise, `yes')
+## If `yes', the target system must have a working `poll()' implementation
+## that also can handle devices. If `no', `select()' will be used instead of
+## `poll()'.
+#erl_xcomp_poll=
+
+## erl_xcomp_kqueue - yes|no (defaults to `no')
+## If `yes', the target system must have a working `kqueue()' implementation
+## that returns a file descriptor which can be used by `poll()' and/or
+## `select()'. If `no' and the target system has not got `epoll()' or
+## `/dev/poll', the kernel-poll feature will be disabled.
+#erl_xcomp_kqueue=
+
+## erl_xcomp_putenv_copy - yes|no (defaults to `no')
+## If `yes', the target system must have a `putenv()' implementation that
+## stores a copy of the key/value pair.
+#erl_xcomp_putenv_copy=
+
+## erl_xcomp_reliable_fpe - yes|no (defaults to `no')
+## If `yes', the target system must have reliable floating point exceptions.
+#erl_xcomp_reliable_fpe=
+
+## erl_xcomp_getaddrinfo - yes|no (defaults to `no')
+## If `yes', the target system must have a working `getaddrinfo()'
+## implementation that can handle both IPv4 and IPv6.
erl_xcomp_getaddrinfo=yes
-##
-## erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to no)
-## If yes, the target system must have a working gethrvtime() implementation
-## and is used with procfs ioctl().
-##
-erl_xcomp_gethrvtime_procfs_ioctl=
-
-##
-## erl_xcomp_clock_gettime - yes|no (defaults to no)
-## If yes, the target system must have a working clock_gettime()
-## implementation that can be used for retrieving process CPU time.
-##
-erl_xcomp_clock_gettime=
-
-##
-## erl_xcomp_after_morecore_hook - yes|no (defaults to no)
-## If yes, the target system must have a working __after_morecore_hook that
-## can be used for tracking used malloc() implementations core memory usage.
-##
-erl_xcomp_after_morecore_hook=
-
-##
-## erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to no)
-## If yes, the target system must have a working dlsym(RTLD_NEXT, <S>)
-## implementation that can be used on 'brk' and 'sbrk' symbols used by the
-## malloc() implementation in use, and by this track the malloc()
-## implementations core memory usage.
-##
-erl_xcomp_dlsym_brk_wrappers=
-
-### ----------------------------------------------------------------------------
+## erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to `no')
+## If `yes', the target system must have a working `gethrvtime()'
+## implementation and is used with procfs `ioctl()'.
+#erl_xcomp_gethrvtime_procfs_ioctl=
+
+## erl_xcomp_clock_gettime_cpu_time - yes|no (defaults to `no')
+## If `yes', the target system must have a working `clock_gettime()'
+## implementation that can be used for retrieving process CPU time.
+#erl_xcomp_clock_gettime_cpu_time=
+
+## erl_xcomp_after_morecore_hook - yes|no (defaults to `no')
+## If `yes', the target system must have a working `__after_morecore_hook'
+## that can be used for tracking used `malloc()' implementations core memory
+## usage.
+#erl_xcomp_after_morecore_hook=
+
+## erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to `no')
+## If `yes', the target system must have a working `dlsym(RTLD_NEXT, <S>)'
+## implementation that can be used on `brk' and `sbrk' symbols used by the
+## `malloc()' implementation in use, and by this track the `malloc()'
+## implementations core memory usage.
+#erl_xcomp_dlsym_brk_wrappers=
+
+#### --------------------------------------------------------------------------
diff --git a/xcomp/erl-xcomp-vars.sh b/xcomp/erl-xcomp-vars.sh
new file mode 100644
index 0000000000..d9972eb3db
--- /dev/null
+++ b/xcomp/erl-xcomp-vars.sh
@@ -0,0 +1,29 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 2010. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+
+#
+# erl_xcomp_vars - Cross configuration variables currently reqognized by
+# `configure' scripts in OTP.
+#
+# NOTE:
+# When updating, also update $ERL_TOP/xcomp/{README,erl-xcomp.conf.template},
+# and precious variables in $ERL_TOP/erts/aclocal.m4.
+#
+
+erl_xcomp_vars="erl_xcomp_sysroot erl_xcomp_isysroot erl_xcomp_bigendian erl_xcomp_linux_clock_gettime_correction erl_xcomp_linux_nptl erl_xcomp_linux_usable_sigusrx erl_xcomp_linux_usable_sigaltstack erl_xcomp_poll erl_xcomp_kqueue erl_xcomp_putenv_copy erl_xcomp_reliable_fpe erl_xcomp_getaddrinfo erl_xcomp_gethrvtime_procfs_ioctl erl_xcomp_clock_gettime_cpu_time erl_xcomp_after_morecore_hook erl_xcomp_dlsym_brk_wrappers"
diff --git a/xcomp/erl-xcomp-vxworks_ppc32.conf b/xcomp/erl-xcomp-vxworks_ppc32.conf
index 19a9327239..fbd23c2fb9 100644
--- a/xcomp/erl-xcomp-vxworks_ppc32.conf
+++ b/xcomp/erl-xcomp-vxworks_ppc32.conf
@@ -1,199 +1,236 @@
-###
-### %CopyrightBegin%
-###
-### Copyright Ericsson AB 2009. All Rights Reserved.
-###
-### The contents of this file are subject to the Erlang Public License,
-### Version 1.1, (the "License"); you may not use this file except in
-### compliance with the License. You should have received a copy of the
-### Erlang Public License along with this software. If not, it can be
-### retrieved online at http://www.erlang.org/.
-###
-### Software distributed under the License is distributed on an "AS IS"
-### basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
-### the License for the specific language governing rights and limitations
-### under the License.
-###
-### %CopyrightEnd%
-###
-### File: erl-xcomp-vxworks_ppc32.conf
-### Author: Rickard Green/Patrik Nyblom
-###
-
-### ----------------------------------------------------------------------------
-### When cross compiling Erlang/OTP, copy this file and set the variables
-### needed below. Then pass the path to the copy of this file as an argument
-### to "eval `otp_build env_cross <absolute path to erl-xcomp.conf file>`".
-### ----------------------------------------------------------------------------
-
-### ----------------------------------------------------------------------------
-### Variables in the following section *have* to be set.
-###
-
-##
-## Target system. The value will be passed as '--host' argument to the configure
-## script. It does not have to be a full CPU-VENDOR-OS tripplet, but can be. The
-## full CPU-VENDOR-OS tripplet will be created by:
-## $ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host
-##
+#### -*-shell-script-*-
+####
+#### %CopyrightBegin%
+####
+#### Copyright Ericsson AB 2009-2010. All Rights Reserved.
+####
+#### The contents of this file are subject to the Erlang Public License,
+#### Version 1.1, (the "License"); you may not use this file except in
+#### compliance with the License. You should have received a copy of the
+#### Erlang Public License along with this software. If not, it can be
+#### retrieved online at http://www.erlang.org/.
+####
+#### Software distributed under the License is distributed on an "AS IS"
+#### basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+#### the License for the specific language governing rights and limitations
+#### under the License.
+####
+#### %CopyrightEnd%
+####
+#### File: erl-xcomp-vxworks_ppc32.conf
+#### Author: Rickard Green/Patrik Nyblom
+####
+#### --------------------------------------------------------------------------
+#### When cross compiling Erlang/OTP using `otp_build', copy this file and set
+#### the variables needed below. Then pass the path to the copy of this file as
+#### an argument to `otp_build' in the configure stage:
+#### `otp_build configure --xcomp-conf=<FILE>'
+#### --------------------------------------------------------------------------
+
+### Note that you cannot define arbitrary variables in a cross compilation
+### configuration file. Only the ones listed below will be guaranteed to be
+### visible throughout the whole execution of all `configure' scripts. Other
+### variables needs to be defined as arguments to `configure' or exported in
+### the environment.
+
+### ---- `otp_build' only variables -------------------------------------------
+
+### Variables in this section are only used, when configuring Erlang/OTP for
+### cross compilation using `$ERL_TOP/otp_build configure'.
+
+### NOTE! These variables currently have *no* effect if you configure using the
+### `configure' script directly.
+
+## erl_xcomp_build - Build system.
+## This value will be passed as `--build=$erl_xcomp_build' argument to the
+## `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+## but can be. The full CPU-VENDOR-OS triplet will be created by:
+## `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_build'
+## If `erl_xcomp_build=guess', the build system will be guessed using:
+## `$ERL_TOP/erts/autoconf/config.guess'.
+erl_xcomp_build=guess
+
+## erl_xcomp_host - Cross host system.
+## This value will be passed as `--host=$erl_xcomp_host' argument to the
+## `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+## but can be. The full CPU-VENDOR-OS triplet will be created by:
+## `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host'
erl_xcomp_host=powerpc-wrs-vxworks
-### ----------------------------------------------------------------------------
-### ----------------------------------------------------------------------------
-### To override the configure flags for a special target system, You
-### can set this variable which overrides configure parameters on the
-### command line and instead uses the specified options. The variable
-### leaves the build-host system untouched.
-### ----------------------------------------------------------------------------
-erl_xcomp_configure_flags="--without-termcap"
+## erl_xcomp_configure_flags - Extra configure flags.
+## Extra flags to pass to the `configure' script.
+erl_xcomp_configure_flags="--disable-threads --without-termcap"
-###-----------------------------------------------------------------------------
-### You can specify a specific CC or LD for the build target (the cross
-### compiler) here along with magic CFLAGS and/or LDFLAGS if needed
-### ar and ranlib might also be specified if needed.
-###-----------------------------------------------------------------------------
+### ---- Cross compiler and other tools to use --------------------------------
-erl_xcomp_cc="$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/bin/ccppc"
+### If the cross compilation tools are prefixed by `<HOST>-' you probably do
+### not need to set these variables (where `<HOST>' is what has been passed as
+### `--host=<HOST>' argument to `configure').
-erl_xcomp_ld="$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/bin/ldppc"
+## CC - C compiler.
+CC="$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/bin/ccppc"
-erl_xcomp_cflags="-DCPU=PPC32 -DTOOL_FAMILY=gnu -DTOOL=gnu -DWANT_NONBLOCKING -DHAVE_SENS -DHAVE_MEMMOVE -DVXWORKS -I$WIND_BASE/vxworks-6.3/target/h -I$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/lib/gcc/powerpc-wrs-vxworks/3.4.4/include -I$WIND_BASE/vxworks-6.3/target/h/wrn/coreip -I$WIND_BASE/vxworks-6.3/target/h -mstrict-align -fvolatile -fno-builtin -mlongcall"
+## CFLAGS - C compiler flags.
+CFLAGS="-DCPU=PPC32 -DTOOL_FAMILY=gnu -DTOOL=gnu -DWANT_NONBLOCKING -DHAVE_SENS -DHAVE_MEMMOVE -DVXWORKS -I$WIND_BASE/vxworks-6.3/target/h -I$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/lib/gcc/powerpc-wrs-vxworks/3.4.4/include -I$WIND_BASE/vxworks-6.3/target/h/wrn/coreip -I$WIND_BASE/vxworks-6.3/target/h -mstrict-align -fvolatile -fno-builtin -mlongcall"
-erl_xcomp_cpp="$erl_xcomp_cc $erl_xcomp_cflags -E"
+## STATIC_CFLAGS - Static C compiler flags.
+#STATIC_CFLAGS=
-erl_xcomp_ldflags="-mlongcall"
+## CFLAG_RUNTIME_LIBRARY_PATH - C compiler runtime library path flag.
+## This flag should set a specific runtime library path for the shared
+## library at link time. Note that this is actually a linker flag, but it
+## needs to be passed via the compiler.
+#CFLAG_RUNTIME_LIBRARY_PATH=
-erl_xcomp_ranlib="$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/bin/ranlibppc"
+## CPP - C pre-processor.
+CPP="$CC $CFLAGS -E"
-erl_xcomp_ar="$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/bin/arppc"
+## CPPFLAGS - C pre-processor flags.
+#CPPFLAGS=
-###-----------------------------------------------------------------------------
-### The ded_ls and ded_ldflags variables control linking of dynamically loaded
-### erlang drivers. On i.e. Linux these are set to
-### $(CC) and "-shared" respectively, but other OS'es might need other
-### programs and flags to build a dynamic library.
-### erl_xcomp_ded_ld_runtime_library_path is the flag to set a
-### specific runtime library path for the shared library at link time,
-### usually this should be left empty.
-###-----------------------------------------------------------------------------
+## CXX - C++ compiler.
+#CXX=
-erl_xcomp_ded_ld=
+## CXXFLAGS - C++ compiler flags.
+#CXXFLAGS=
-erl_xcomp_ded_ldflags=
+## LD - Linker
+LD="$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/bin/ldppc"
-erl_xcomp_ded_ld_runtime_library_path=
+## LDFLAGS - Linker flags.
+LDFLAGS="-mlongcall"
-###
-### Optional feature, or bug tests
-###
-### These tests cannot (always) be done automatically when cross compiling.
-### You usually does not need to set these variables. Only set these if you
-### really know what you are doing.
-###
+### -- Dynamic Erlang Driver linker flags. --
+
+### NOTE! Either define all or non of the DED_LD* variables.
+
+## DED_LD - Linker.
+#DED_LD=
+
+## DED_LDFLAGS - Linker flags.
+#DED_LDFLAGS=
+
+## DED_LD_FLAG_RUNTIME_LIBRARY_PATH - Linker runtime library path flag.
+## This flag should set a specific runtime library path for the shared
+## library at link time.
+#DED_LD_FLAG_RUNTIME_LIBRARY_PATH=
+
+### -- Other tools --
+
+## RANLIB - ranlib
+RANLIB="$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/bin/ranlibppc"
+
+## AR - ar
+AR="$WIND_BASE/gnu/3.4.4-vxworks-6.3/$WIND_HOST_TYPE/bin/arppc"
+
+### ---- Cross System Root Locations ------------------------------------------
+
+## erl_xcomp_sysroot - Absolute cross system root path.
+## The absolute path to the system root of the cross compilation
+## environment. Currently, the `crypto', `odbc', `ssh' and `ssl'
+## applications need the system root. These applications will be skipped
+## if the system root has not been set. The system root might be needed
+## for other things too. If this is the case and the system root has not
+## been set, `configure' will fail and request you to set it.
+#erl_xcomp_sysroot=
+
+## erl_xcomp_isysroot - Absolute cross include system root path.
+## The absolute path to the system root for includes of the cross
+## compilation environment. If not set, this value defaults to
+## `$erl_xcomp_sysroot', i.e., only set this value if the include system
+## root path is not the same as the system root path.
+#erl_xcomp_isysroot=
+
+### ---- Optional feature, or bug tests ---------------------------------------
+
+### These tests cannot (always) be done automatically when cross compiling. You
+### usually does not need to set these variables. Only set these if you really
+### know what you are doing.
+
+### The `configure' script will issue a warning when a default value is used.
+### When a variable has been set, no warning will be issued.
-##
## erl_xcomp_bigendian - yes|no
-## If yes, the target system must be big endian. If no, little endian. This
-## can often be automatically detected, but not always. If not automatically
-## detected, configure will fail unless this variable is set. No default value
-## is used, i.e., configure will try to figure this out automatically.
+## If `yes', the target system must be big endian. If `no', little endian.
+## This can often be automatically detected, but not always. If not
+## automatically detected, `configure' will fail unless this variable is
+## set. No default value is used, i.e., `configure' will try to figure
+## this out automatically.
erl_xcomp_bigendian=yes
-##
-## erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to yes)
-## If yes, clock_gettime(CLOCK_MONOTONIC, _) on the target system must work.
-## This variable is recommended to be set to no on Linux systems with kernel
-## versions less than 2.6.
-##
-erl_xcomp_linux_clock_gettime_correction=
-
-##
-## erl_xcomp_linux_nptl - yes|no (defaults to yes on Linux; otherwise, no)
-## If yes, the target system must have NPTL (Native POSIX Thread Library).
-## Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
-## versions typically less than 2.6).
-##
-erl_xcomp_linux_nptl=
-
-##
-## erl_xcomp_linux_usable_sigusrx - yes|no (defaults to yes)
-## If yes, the SIGUSR1 and SIGUSR2 must be usable by the ERTS. Old
-## LinuxThreads thread libraries (Linux kernel versions less than 2.2) used
-## these signals and made them unusable by the ERTS.
-##
-erl_xcomp_linux_usable_sigusrx=
-
-##
-## erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to yes)
-## If yes, sigaltstack() must be usable on the target system. sigaltstack()
-## on Linux kernel versions less than 2.4 are broken.
-##
-erl_xcomp_linux_usable_sigaltstack=
-
-##
-## erl_xcomp_poll - yes|no (defaults to no on Darwin/MacOSX; otherwise, yes)
-## If yes, the target system must have a working poll() implementation that
-## also can handle devices. If no, select() will be used instead of poll().
-##
-erl_xcomp_poll=
-
-##
-## erl_xcomp_kqueue - yes|no (defaults to no)
-## If yes, the target system must have a working kqueue() implementation that
-## returns a file descriptor which can be used by poll() and/or select().
-## If no and the target system has not got epoll() or /dev/poll, the
-## kernel-poll feature will be disabled.
-##
-erl_xcomp_kqueue=
-
-##
-## erl_xcomp_putenv_copy - yes|no (defaults to no)
-## If yes, the target system must have a putenv() implementation that stores a
-## copy of the key/value pair.
-##
-erl_xcomp_putenv_copy=
-
-##
-## erl_xcomp_reliable_fpe - yes|no (defaults to no)
-## If yes, the target system must have reliable floating point exceptions.
-##
-erl_xcomp_reliable_fpe=
-
-##
-## erl_xcomp_getaddrinfo - yes|no (defaults to no)
-## If yes, the target system must have a working getaddrinfo() implementation
-## that can handle both IPv4 and IPv6.
-##
-erl_xcomp_getaddrinfo=
-
-##
-## erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to no)
-## If yes, the target system must have a working gethrvtime() implementation
-## and is used with procfs ioctl().
-##
-erl_xcomp_gethrvtime_procfs_ioctl=
-
-##
-## erl_xcomp_clock_gettime - yes|no (defaults to no)
-## If yes, the target system must have a working clock_gettime()
-## implementation that can be used for retrieving process CPU time.
-##
-erl_xcomp_clock_gettime=
-
-##
-## erl_xcomp_after_morecore_hook - yes|no (defaults to no)
-## If yes, the target system must have a working __after_morecore_hook that
-## can be used for tracking used malloc() implementations core memory usage.
-##
-erl_xcomp_after_morecore_hook=
-
-##
-## erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to no)
-## If yes, the target system must have a working dlsym(RTLD_NEXT, <S>)
-## implementation that can be used on 'brk' and 'sbrk' symbols used by the
-## malloc() implementation in use, and by this track the malloc()
-## implementations core memory usage.
-##
-erl_xcomp_dlsym_brk_wrappers=
-
-### ----------------------------------------------------------------------------
+## erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to `yes' on
+## Linux; otherwise, `no')
+## If `yes', `clock_gettime(CLOCK_MONOTONIC, _)' on the target system must
+## work. This variable is recommended to be set to `no' on Linux systems
+## with kernel versions less than 2.6.
+#erl_xcomp_linux_clock_gettime_correction=
+
+## erl_xcomp_linux_nptl - yes|no (defaults to `yes' on Linux; otherwise, `no')
+## If `yes', the target system must have NPTL (Native POSIX Thread Library).
+## Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
+## versions typically less than 2.6).
+#erl_xcomp_linux_nptl=
+
+## erl_xcomp_linux_usable_sigusrx - yes|no (defaults to `yes')
+## If `yes', the `SIGUSR1' and `SIGUSR2' signals must be usable by the ERTS.
+## Old LinuxThreads thread libraries (Linux kernel versions less than 2.2)
+## used these signals and made them unusable by the ERTS.
+#erl_xcomp_linux_usable_sigusrx=
+
+## erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to `yes' on Linux;
+## otherwise, `no')
+## If `yes', `sigaltstack()' must be usable on the target system.
+## `sigaltstack()' on Linux kernel versions less than 2.4 are broken.
+#erl_xcomp_linux_usable_sigaltstack=
+
+## erl_xcomp_poll - yes|no (defaults to `no' on Darwin/MacOSX; otherwise, `yes')
+## If `yes', the target system must have a working `poll()' implementation
+## that also can handle devices. If `no', `select()' will be used instead of
+## `poll()'.
+#erl_xcomp_poll=
+
+## erl_xcomp_kqueue - yes|no (defaults to `no')
+## If `yes', the target system must have a working `kqueue()' implementation
+## that returns a file descriptor which can be used by `poll()' and/or
+## `select()'. If `no' and the target system has not got `epoll()' or
+## `/dev/poll', the kernel-poll feature will be disabled.
+#erl_xcomp_kqueue=
+
+## erl_xcomp_putenv_copy - yes|no (defaults to `no')
+## If `yes', the target system must have a `putenv()' implementation that
+## stores a copy of the key/value pair.
+#erl_xcomp_putenv_copy=
+
+## erl_xcomp_reliable_fpe - yes|no (defaults to `no')
+## If `yes', the target system must have reliable floating point exceptions.
+#erl_xcomp_reliable_fpe=
+
+## erl_xcomp_getaddrinfo - yes|no (defaults to `no')
+## If `yes', the target system must have a working `getaddrinfo()'
+## implementation that can handle both IPv4 and IPv6.
+#erl_xcomp_getaddrinfo=
+
+## erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to `no')
+## If `yes', the target system must have a working `gethrvtime()'
+## implementation and is used with procfs `ioctl()'.
+#erl_xcomp_gethrvtime_procfs_ioctl=
+
+## erl_xcomp_clock_gettime_cpu_time - yes|no (defaults to `no')
+## If `yes', the target system must have a working `clock_gettime()'
+## implementation that can be used for retrieving process CPU time.
+#erl_xcomp_clock_gettime_cpu_time=
+
+## erl_xcomp_after_morecore_hook - yes|no (defaults to `no')
+## If `yes', the target system must have a working `__after_morecore_hook'
+## that can be used for tracking used `malloc()' implementations core memory
+## usage.
+#erl_xcomp_after_morecore_hook=
+
+## erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to `no')
+## If `yes', the target system must have a working `dlsym(RTLD_NEXT, <S>)'
+## implementation that can be used on `brk' and `sbrk' symbols used by the
+## `malloc()' implementation in use, and by this track the `malloc()'
+## implementations core memory usage.
+#erl_xcomp_dlsym_brk_wrappers=
+
+#### --------------------------------------------------------------------------
diff --git a/xcomp/erl-xcomp-x86_64-saf-linux-gnu.conf b/xcomp/erl-xcomp-x86_64-saf-linux-gnu.conf
new file mode 100644
index 0000000000..b6730cff0a
--- /dev/null
+++ b/xcomp/erl-xcomp-x86_64-saf-linux-gnu.conf
@@ -0,0 +1,236 @@
+#### -*-shell-script-*-
+####
+#### %CopyrightBegin%
+####
+#### Copyright Ericsson AB 2010. All Rights Reserved.
+####
+#### The contents of this file are subject to the Erlang Public License,
+#### Version 1.1, (the "License"); you may not use this file except in
+#### compliance with the License. You should have received a copy of the
+#### Erlang Public License along with this software. If not, it can be
+#### retrieved online at http://www.erlang.org/.
+####
+#### Software distributed under the License is distributed on an "AS IS"
+#### basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+#### the License for the specific language governing rights and limitations
+#### under the License.
+####
+#### %CopyrightEnd%
+####
+#### File: erl-xcomp-x86_64-saf-linux-gnu.conf
+#### Author: Rickard Green
+####
+#### --------------------------------------------------------------------------
+#### When cross compiling Erlang/OTP using `otp_build', copy this file and set
+#### the variables needed below. Then pass the path to the copy of this file as
+#### an argument to `otp_build' in the configure stage:
+#### `otp_build configure --xcomp-conf=<FILE>'
+#### --------------------------------------------------------------------------
+
+### Note that you cannot define arbitrary variables in a cross compilation
+### configuration file. Only the ones listed below will be guaranteed to be
+### visible throughout the whole execution of all `configure' scripts. Other
+### variables needs to be defined as arguments to `configure' or exported in
+### the environment.
+
+### ---- `otp_build' only variables -------------------------------------------
+
+### Variables in this section are only used, when configuring Erlang/OTP for
+### cross compilation using `$ERL_TOP/otp_build configure'.
+
+### NOTE! These variables currently have *no* effect if you configure using the
+### `configure' script directly.
+
+## erl_xcomp_build - Build system.
+## This value will be passed as `--build=$erl_xcomp_build' argument to the
+## `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+## but can be. The full CPU-VENDOR-OS triplet will be created by:
+## `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_build'
+## If `erl_xcomp_build=guess', the build system will be guessed using:
+## `$ERL_TOP/erts/autoconf/config.guess'.
+erl_xcomp_build=guess
+
+## erl_xcomp_host - Cross host system.
+## This value will be passed as `--host=$erl_xcomp_host' argument to the
+## `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+## but can be. The full CPU-VENDOR-OS triplet will be created by:
+## `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host'
+erl_xcomp_host=x86_64-saf-linux-gnu
+
+## erl_xcomp_configure_flags - Extra configure flags.
+## Extra flags to pass to the `configure' script.
+#erl_xcomp_configure_flags=
+
+### ---- Cross compiler and other tools to use --------------------------------
+
+### If the cross compilation tools are prefixed by `<HOST>-' you probably do
+### not need to set these variables (where `<HOST>' is what has been passed as
+### `--host=<HOST>' argument to `configure').
+
+## CC - C compiler.
+CC=x86_64-saf-gcc
+
+## CFLAGS - C compiler flags.
+#CFLAGS=
+
+## STATIC_CFLAGS - Static C compiler flags.
+#STATIC_CFLAGS=
+
+## CFLAG_RUNTIME_LIBRARY_PATH - C compiler runtime library path flag.
+## This flag should set a specific runtime library path for the shared
+## library at link time. Note that this is actually a linker flag, but it
+## needs to be passed via the compiler.
+#CFLAG_RUNTIME_LIBRARY_PATH=
+
+## CPP - C pre-processor.
+#CPP=
+
+## CPPFLAGS - C pre-processor flags.
+#CPPFLAGS=
+
+## CXX - C++ compiler.
+CXX=x86_64-saf-g++
+
+## CXXFLAGS - C++ compiler flags.
+#CXXFLAGS=
+
+## LD - Linker
+LD=x86_64-saf-ld
+
+## LDFLAGS - Linker flags.
+#LDFLAGS=
+
+### -- Dynamic Erlang Driver linker flags. --
+
+### NOTE! Either define all or non of the DED_LD* variables.
+
+## DED_LD - Linker.
+#DED_LD=
+
+## DED_LDFLAGS - Linker flags.
+#DED_LDFLAGS=
+
+## DED_LD_FLAG_RUNTIME_LIBRARY_PATH - Linker runtime library path flag.
+## This flag should set a specific runtime library path for the shared
+## library at link time.
+#DED_LD_FLAG_RUNTIME_LIBRARY_PATH=
+
+### -- Other tools --
+
+## RANLIB - ranlib
+RANLIB=x86_64-saf-ranlib
+
+## AR - ar
+AR=x86_64-saf-ar
+
+### ---- Cross System Root Locations ------------------------------------------
+
+## erl_xcomp_sysroot - Absolute cross system root path.
+## The absolute path to the system root of the cross compilation
+## environment. Currently, the `crypto', `odbc', `ssh' and `ssl'
+## applications need the system root. These applications will be skipped
+## if the system root has not been set. The system root might be needed
+## for other things too. If this is the case and the system root has not
+## been set, `configure' will fail and request you to set it.
+erl_xcomp_sysroot="$SAF_SYSROOT_X86_64"
+
+## erl_xcomp_isysroot - Absolute cross include system root path.
+## The absolute path to the system root for includes of the cross
+## compilation environment. If not set, this value defaults to
+## `$erl_xcomp_sysroot', i.e., only set this value if the include system
+## root path is not the same as the system root path.
+#erl_xcomp_isysroot=
+
+### ---- Optional feature, or bug tests ---------------------------------------
+
+### These tests cannot (always) be done automatically when cross compiling. You
+### usually does not need to set these variables. Only set these if you really
+### know what you are doing.
+
+### The `configure' script will issue a warning when a default value is used.
+### When a variable has been set, no warning will be issued.
+
+## erl_xcomp_bigendian - yes|no
+## If `yes', the target system must be big endian. If `no', little endian.
+## This can often be automatically detected, but not always. If not
+## automatically detected, `configure' will fail unless this variable is
+## set. No default value is used, i.e., `configure' will try to figure
+## this out automatically.
+#erl_xcomp_bigendian=
+
+## erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to `yes' on
+## Linux; otherwise, `no')
+## If `yes', `clock_gettime(CLOCK_MONOTONIC, _)' on the target system must
+## work. This variable is recommended to be set to `no' on Linux systems
+## with kernel versions less than 2.6.
+#erl_xcomp_linux_clock_gettime_correction=
+
+## erl_xcomp_linux_nptl - yes|no (defaults to `yes' on Linux; otherwise, `no')
+## If `yes', the target system must have NPTL (Native POSIX Thread Library).
+## Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
+## versions typically less than 2.6).
+#erl_xcomp_linux_nptl=
+
+## erl_xcomp_linux_usable_sigusrx - yes|no (defaults to `yes')
+## If `yes', the `SIGUSR1' and `SIGUSR2' signals must be usable by the ERTS.
+## Old LinuxThreads thread libraries (Linux kernel versions less than 2.2)
+## used these signals and made them unusable by the ERTS.
+#erl_xcomp_linux_usable_sigusrx=
+
+## erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to `yes' on Linux;
+## otherwise, `no')
+## If `yes', `sigaltstack()' must be usable on the target system.
+## `sigaltstack()' on Linux kernel versions less than 2.4 are broken.
+#erl_xcomp_linux_usable_sigaltstack=
+
+## erl_xcomp_poll - yes|no (defaults to `no' on Darwin/MacOSX; otherwise, `yes')
+## If `yes', the target system must have a working `poll()' implementation
+## that also can handle devices. If `no', `select()' will be used instead of
+## `poll()'.
+#erl_xcomp_poll=
+
+## erl_xcomp_kqueue - yes|no (defaults to `no')
+## If `yes', the target system must have a working `kqueue()' implementation
+## that returns a file descriptor which can be used by `poll()' and/or
+## `select()'. If `no' and the target system has not got `epoll()' or
+## `/dev/poll', the kernel-poll feature will be disabled.
+#erl_xcomp_kqueue=
+
+## erl_xcomp_putenv_copy - yes|no (defaults to `no')
+## If `yes', the target system must have a `putenv()' implementation that
+## stores a copy of the key/value pair.
+#erl_xcomp_putenv_copy=
+
+## erl_xcomp_reliable_fpe - yes|no (defaults to `no')
+## If `yes', the target system must have reliable floating point exceptions.
+#erl_xcomp_reliable_fpe=
+
+## erl_xcomp_getaddrinfo - yes|no (defaults to `no')
+## If `yes', the target system must have a working `getaddrinfo()'
+## implementation that can handle both IPv4 and IPv6.
+erl_xcomp_getaddrinfo=yes
+
+## erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to `no')
+## If `yes', the target system must have a working `gethrvtime()'
+## implementation and is used with procfs `ioctl()'.
+#erl_xcomp_gethrvtime_procfs_ioctl=
+
+## erl_xcomp_clock_gettime_cpu_time - yes|no (defaults to `no')
+## If `yes', the target system must have a working `clock_gettime()'
+## implementation that can be used for retrieving process CPU time.
+#erl_xcomp_clock_gettime_cpu_time=
+
+## erl_xcomp_after_morecore_hook - yes|no (defaults to `no')
+## If `yes', the target system must have a working `__after_morecore_hook'
+## that can be used for tracking used `malloc()' implementations core memory
+## usage.
+erl_xcomp_after_morecore_hook=yes
+
+## erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to `no')
+## If `yes', the target system must have a working `dlsym(RTLD_NEXT, <S>)'
+## implementation that can be used on `brk' and `sbrk' symbols used by the
+## `malloc()' implementation in use, and by this track the `malloc()'
+## implementations core memory usage.
+#erl_xcomp_dlsym_brk_wrappers=
+
+#### --------------------------------------------------------------------------
diff --git a/xcomp/erl-xcomp.conf.template b/xcomp/erl-xcomp.conf.template
index bed365e754..9242318577 100644
--- a/xcomp/erl-xcomp.conf.template
+++ b/xcomp/erl-xcomp.conf.template
@@ -1,198 +1,236 @@
-###
-### %CopyrightBegin%
-###
-### Copyright Ericsson AB 2009. All Rights Reserved.
-###
-### The contents of this file are subject to the Erlang Public License,
-### Version 1.1, (the "License"); you may not use this file except in
-### compliance with the License. You should have received a copy of the
-### Erlang Public License along with this software. If not, it can be
-### retrieved online at http://www.erlang.org/.
-###
-### Software distributed under the License is distributed on an "AS IS"
-### basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
-### the License for the specific language governing rights and limitations
-### under the License.
-###
-### %CopyrightEnd%
-###
-### File: erl-xcomp.conf
-### Author: Rickard Green
-###
-
-### ----------------------------------------------------------------------------
-### When cross compiling Erlang/OTP, copy this file and set the variables
-### needed below. Then pass the path to the copy of this file as an argument
-### to "eval `otp_build env_cross <absolute path to erl-xcomp.conf file>`".
-### ----------------------------------------------------------------------------
-
-### ----------------------------------------------------------------------------
-### Variables in the following section *have* to be set.
-###
-
-##
-## Target system. The value will be passed as '--host' argument to the configure
-## script. It does not have to be a full CPU-VENDOR-OS tripplet, but can be. The
-## full CPU-VENDOR-OS tripplet will be created by:
-## $ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host
-##
-erl_xcomp_host=
-
-### ----------------------------------------------------------------------------
-### To override the configure flags for a special target system, You
-### can set this variable which overrides configure parameters on the
-### command line and instead uses the specified options. The variable
-### leaves the build-host system untouched.
-### ----------------------------------------------------------------------------
-erl_xcomp_configure_flags=
-
-###-----------------------------------------------------------------------------
-### You can specify a specific CC or LD for the build target (the cross
-### compiler) here along with magic CFLAGS and/or LDFLAGS if needed
-### ar and ranlib might also be specified if needed.
-###-----------------------------------------------------------------------------
-
-erl_xcomp_cc=
-
-erl_xcomp_ld=
-
-erl_xcomp_cflags=
-
-erl_xcomp_cpp=
-
-erl_xcomp_ldflags=
-
-erl_xcomp_ranlib=
-
-erl_xcomp_ar=
-
-###-----------------------------------------------------------------------------
-### The ded_ls and ded_ldflags variables control linking of dynamically loaded
-### erlang drivers. On i.e. Linux these are set to
-### $(CC) and "-shared" respectively, but other OS'es might need other
-### programs and flags to build a dynamic library.
-### erl_xcomp_ded_ld_runtime_library_path is the flag to set a
-### specific runtime library path for the shared library at link time,
-### usually this should be left empty.
-###-----------------------------------------------------------------------------
-
-erl_xcomp_ded_ld=
-
-erl_xcomp_ded_ldflags=
-
-erl_xcomp_ded_ld_runtime_library_path=
-
-###
-### Optional feature, or bug tests
-###
-### These tests cannot (always) be done automatically when cross compiling.
-### You usually does not need to set these variables. Only set these if you
-### really know what you are doing.
-###
-
-##
+#### -*-shell-script-*-
+####
+#### %CopyrightBegin%
+####
+#### Copyright Ericsson AB 2009-2010. All Rights Reserved.
+####
+#### The contents of this file are subject to the Erlang Public License,
+#### Version 1.1, (the "License"); you may not use this file except in
+#### compliance with the License. You should have received a copy of the
+#### Erlang Public License along with this software. If not, it can be
+#### retrieved online at http://www.erlang.org/.
+####
+#### Software distributed under the License is distributed on an "AS IS"
+#### basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+#### the License for the specific language governing rights and limitations
+#### under the License.
+####
+#### %CopyrightEnd%
+####
+#### File: erl-xcomp.conf.template
+#### Author: Rickard Green
+####
+#### --------------------------------------------------------------------------
+#### When cross compiling Erlang/OTP using `otp_build', copy this file and set
+#### the variables needed below. Then pass the path to the copy of this file as
+#### an argument to `otp_build' in the configure stage:
+#### `otp_build configure --xcomp-conf=<FILE>'
+#### --------------------------------------------------------------------------
+
+### Note that you cannot define arbitrary variables in a cross compilation
+### configuration file. Only the ones listed below will be guaranteed to be
+### visible throughout the whole execution of all `configure' scripts. Other
+### variables needs to be defined as arguments to `configure' or exported in
+### the environment.
+
+### ---- `otp_build' only variables -------------------------------------------
+
+### Variables in this section are only used, when configuring Erlang/OTP for
+### cross compilation using `$ERL_TOP/otp_build configure'.
+
+### NOTE! These variables currently have *no* effect if you configure using the
+### `configure' script directly.
+
+## erl_xcomp_build - Build system.
+## This value will be passed as `--build=$erl_xcomp_build' argument to the
+## `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+## but can be. The full CPU-VENDOR-OS triplet will be created by:
+## `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_build'
+## If `erl_xcomp_build=guess', the build system will be guessed using:
+## `$ERL_TOP/erts/autoconf/config.guess'.
+#erl_xcomp_build=
+
+## erl_xcomp_host - Cross host system.
+## This value will be passed as `--host=$erl_xcomp_host' argument to the
+## `configure' script. It does not have to be a full CPU-VENDOR-OS triplet,
+## but can be. The full CPU-VENDOR-OS triplet will be created by:
+## `$ERL_TOP/erts/autoconf/config.sub $erl_xcomp_host'
+#erl_xcomp_host=
+
+## erl_xcomp_configure_flags - Extra configure flags.
+## Extra flags to pass to the `configure' script.
+#erl_xcomp_configure_flags=
+
+### ---- Cross compiler and other tools to use --------------------------------
+
+### If the cross compilation tools are prefixed by `<HOST>-' you probably do
+### not need to set these variables (where `<HOST>' is what has been passed as
+### `--host=<HOST>' argument to `configure').
+
+## CC - C compiler.
+#CC=
+
+## CFLAGS - C compiler flags.
+#CFLAGS=
+
+## STATIC_CFLAGS - Static C compiler flags.
+#STATIC_CFLAGS=
+
+## CFLAG_RUNTIME_LIBRARY_PATH - C compiler runtime library path flag.
+## This flag should set a specific runtime library path for the shared
+## library at link time. Note that this is actually a linker flag, but it
+## needs to be passed via the compiler.
+#CFLAG_RUNTIME_LIBRARY_PATH=
+
+## CPP - C pre-processor.
+#CPP=
+
+## CPPFLAGS - C pre-processor flags.
+#CPPFLAGS=
+
+## CXX - C++ compiler.
+#CXX=
+
+## CXXFLAGS - C++ compiler flags.
+#CXXFLAGS=
+
+## LD - Linker
+#LD=
+
+## LDFLAGS - Linker flags.
+#LDFLAGS=
+
+### -- Dynamic Erlang Driver linker flags. --
+
+### NOTE! Either define all or non of the DED_LD* variables.
+
+## DED_LD - Linker.
+#DED_LD=
+
+## DED_LDFLAGS - Linker flags.
+#DED_LDFLAGS=
+
+## DED_LD_FLAG_RUNTIME_LIBRARY_PATH - Linker runtime library path flag.
+## This flag should set a specific runtime library path for the shared
+## library at link time.
+#DED_LD_FLAG_RUNTIME_LIBRARY_PATH=
+
+### -- Other tools --
+
+## RANLIB - ranlib
+#RANLIB=
+
+## AR - ar
+#AR=
+
+### ---- Cross System Root Locations ------------------------------------------
+
+## erl_xcomp_sysroot - Absolute cross system root path.
+## The absolute path to the system root of the cross compilation
+## environment. Currently, the `crypto', `odbc', `ssh' and `ssl'
+## applications need the system root. These applications will be skipped
+## if the system root has not been set. The system root might be needed
+## for other things too. If this is the case and the system root has not
+## been set, `configure' will fail and request you to set it.
+#erl_xcomp_sysroot=
+
+## erl_xcomp_isysroot - Absolute cross include system root path.
+## The absolute path to the system root for includes of the cross
+## compilation environment. If not set, this value defaults to
+## `$erl_xcomp_sysroot', i.e., only set this value if the include system
+## root path is not the same as the system root path.
+#erl_xcomp_isysroot=
+
+### ---- Optional feature, or bug tests ---------------------------------------
+
+### These tests cannot (always) be done automatically when cross compiling. You
+### usually does not need to set these variables. Only set these if you really
+### know what you are doing.
+
+### The `configure' script will issue a warning when a default value is used.
+### When a variable has been set, no warning will be issued.
+
## erl_xcomp_bigendian - yes|no
-## If yes, the target system must be big endian. If no, little endian. This
-## can often be automatically detected, but not always. If not automatically
-## detected, configure will fail unless this variable is set. No default value
-## is used, i.e., configure will try to figure this out automatically.
-erl_xcomp_bigendian=
-
-##
-## erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to yes)
-## If yes, clock_gettime(CLOCK_MONOTONIC, _) on the target system must work.
-## This variable is recommended to be set to no on Linux systems with kernel
-## versions less than 2.6.
-##
-erl_xcomp_linux_clock_gettime_correction=
-
-##
-## erl_xcomp_linux_nptl - yes|no (defaults to yes on Linux; otherwise, no)
-## If yes, the target system must have NPTL (Native POSIX Thread Library).
-## Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
-## versions typically less than 2.6).
-##
-erl_xcomp_linux_nptl=
-
-##
-## erl_xcomp_linux_usable_sigusrx - yes|no (defaults to yes)
-## If yes, the SIGUSR1 and SIGUSR2 must be usable by the ERTS. Old
-## LinuxThreads thread libraries (Linux kernel versions less than 2.2) used
-## these signals and made them unusable by the ERTS.
-##
-erl_xcomp_linux_usable_sigusrx=
-
-##
-## erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to yes)
-## If yes, sigaltstack() must be usable on the target system. sigaltstack()
-## on Linux kernel versions less than 2.4 are broken.
-##
-erl_xcomp_linux_usable_sigaltstack=
-
-##
-## erl_xcomp_poll - yes|no (defaults to no on Darwin/MacOSX; otherwise, yes)
-## If yes, the target system must have a working poll() implementation that
-## also can handle devices. If no, select() will be used instead of poll().
-##
-erl_xcomp_poll=
-
-##
-## erl_xcomp_kqueue - yes|no (defaults to no)
-## If yes, the target system must have a working kqueue() implementation that
-## returns a file descriptor which can be used by poll() and/or select().
-## If no and the target system has not got epoll() or /dev/poll, the
-## kernel-poll feature will be disabled.
-##
-erl_xcomp_kqueue=
-
-##
-## erl_xcomp_putenv_copy - yes|no (defaults to no)
-## If yes, the target system must have a putenv() implementation that stores a
-## copy of the key/value pair.
-##
-erl_xcomp_putenv_copy=
-
-##
-## erl_xcomp_reliable_fpe - yes|no (defaults to no)
-## If yes, the target system must have reliable floating point exceptions.
-##
-erl_xcomp_reliable_fpe=
-
-##
-## erl_xcomp_getaddrinfo - yes|no (defaults to no)
-## If yes, the target system must have a working getaddrinfo() implementation
-## that can handle both IPv4 and IPv6.
-##
-erl_xcomp_getaddrinfo=
-
-##
-## erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to no)
-## If yes, the target system must have a working gethrvtime() implementation
-## and is used with procfs ioctl().
-##
-erl_xcomp_gethrvtime_procfs_ioctl=
-
-##
-## erl_xcomp_clock_gettime - yes|no (defaults to no)
-## If yes, the target system must have a working clock_gettime()
-## implementation that can be used for retrieving process CPU time.
-##
-erl_xcomp_clock_gettime=
-
-##
-## erl_xcomp_after_morecore_hook - yes|no (defaults to no)
-## If yes, the target system must have a working __after_morecore_hook that
-## can be used for tracking used malloc() implementations core memory usage.
-##
-erl_xcomp_after_morecore_hook=
-
-##
-## erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to no)
-## If yes, the target system must have a working dlsym(RTLD_NEXT, <S>)
-## implementation that can be used on 'brk' and 'sbrk' symbols used by the
-## malloc() implementation in use, and by this track the malloc()
-## implementations core memory usage.
-##
-erl_xcomp_dlsym_brk_wrappers=
-
-### ----------------------------------------------------------------------------
+## If `yes', the target system must be big endian. If `no', little endian.
+## This can often be automatically detected, but not always. If not
+## automatically detected, `configure' will fail unless this variable is
+## set. No default value is used, i.e., `configure' will try to figure
+## this out automatically.
+#erl_xcomp_bigendian=
+
+## erl_xcomp_linux_clock_gettime_correction - yes|no (defaults to `yes' on
+## Linux; otherwise, `no')
+## If `yes', `clock_gettime(CLOCK_MONOTONIC, _)' on the target system must
+## work. This variable is recommended to be set to `no' on Linux systems
+## with kernel versions less than 2.6.
+#erl_xcomp_linux_clock_gettime_correction=
+
+## erl_xcomp_linux_nptl - yes|no (defaults to `yes' on Linux; otherwise, `no')
+## If `yes', the target system must have NPTL (Native POSIX Thread Library).
+## Older Linux systems have LinuxThreads instead of NPTL (Linux kernel
+## versions typically less than 2.6).
+#erl_xcomp_linux_nptl=
+
+## erl_xcomp_linux_usable_sigusrx - yes|no (defaults to `yes')
+## If `yes', the `SIGUSR1' and `SIGUSR2' signals must be usable by the ERTS.
+## Old LinuxThreads thread libraries (Linux kernel versions less than 2.2)
+## used these signals and made them unusable by the ERTS.
+#erl_xcomp_linux_usable_sigusrx=
+
+## erl_xcomp_linux_usable_sigaltstack - yes|no (defaults to `yes' on Linux;
+## otherwise, `no')
+## If `yes', `sigaltstack()' must be usable on the target system.
+## `sigaltstack()' on Linux kernel versions less than 2.4 are broken.
+#erl_xcomp_linux_usable_sigaltstack=
+
+## erl_xcomp_poll - yes|no (defaults to `no' on Darwin/MacOSX; otherwise, `yes')
+## If `yes', the target system must have a working `poll()' implementation
+## that also can handle devices. If `no', `select()' will be used instead of
+## `poll()'.
+#erl_xcomp_poll=
+
+## erl_xcomp_kqueue - yes|no (defaults to `no')
+## If `yes', the target system must have a working `kqueue()' implementation
+## that returns a file descriptor which can be used by `poll()' and/or
+## `select()'. If `no' and the target system has not got `epoll()' or
+## `/dev/poll', the kernel-poll feature will be disabled.
+#erl_xcomp_kqueue=
+
+## erl_xcomp_putenv_copy - yes|no (defaults to `no')
+## If `yes', the target system must have a `putenv()' implementation that
+## stores a copy of the key/value pair.
+#erl_xcomp_putenv_copy=
+
+## erl_xcomp_reliable_fpe - yes|no (defaults to `no')
+## If `yes', the target system must have reliable floating point exceptions.
+#erl_xcomp_reliable_fpe=
+
+## erl_xcomp_getaddrinfo - yes|no (defaults to `no')
+## If `yes', the target system must have a working `getaddrinfo()'
+## implementation that can handle both IPv4 and IPv6.
+#erl_xcomp_getaddrinfo=
+
+## erl_xcomp_gethrvtime_procfs_ioctl - yes|no (defaults to `no')
+## If `yes', the target system must have a working `gethrvtime()'
+## implementation and is used with procfs `ioctl()'.
+#erl_xcomp_gethrvtime_procfs_ioctl=
+
+## erl_xcomp_clock_gettime_cpu_time - yes|no (defaults to `no')
+## If `yes', the target system must have a working `clock_gettime()'
+## implementation that can be used for retrieving process CPU time.
+#erl_xcomp_clock_gettime_cpu_time=
+
+## erl_xcomp_after_morecore_hook - yes|no (defaults to `no')
+## If `yes', the target system must have a working `__after_morecore_hook'
+## that can be used for tracking used `malloc()' implementations core memory
+## usage.
+#erl_xcomp_after_morecore_hook=
+
+## erl_xcomp_dlsym_brk_wrappers - yes|no (defaults to `no')
+## If `yes', the target system must have a working `dlsym(RTLD_NEXT, <S>)'
+## implementation that can be used on `brk' and `sbrk' symbols used by the
+## `malloc()' implementation in use, and by this track the `malloc()'
+## implementations core memory usage.
+#erl_xcomp_dlsym_brk_wrappers=
+
+#### --------------------------------------------------------------------------