From 0c9aa17e1d548ff8d6d2b0ca71b45c19eb44bbe0 Mon Sep 17 00:00:00 2001 From: harry-gibson Date: Fri, 14 Aug 2015 15:19:49 +0100 Subject: [PATCH] Initial commit: code to parse DHS record structure and data Initial commit of code for parsing hierarchical data in CSPro format, specifically that provided by DHS as individual recode hierarchical data format. Reconstructs the table structure of the source data and parses data files into this structure. --- .gitignore | 224 + DataFileParsing/CSPro_Dat_Parser.fmw | 3322 ++ DataFileParsing/CSPro_Dat_Parser_Runner.fmw | 956 + DataFileParsing/DHS_DAT_Splitter.ipynb | 194 + DataFileParsing/Global_File_Compare_DEV.ipynb | 88 + DataFileParsing/README.md | 10 + .../translate_all_recordtypes_to_mdb.fmw | 10244 ++++++ ...anslate_all_recordtypes_to_mdb_dynamic.fmw | 14962 ++++++++ .../translate_all_recordtypes_to_pg.fmw | 16122 +++++++++ ...translate_all_recordtypes_to_pg_singly.fmw | 28579 ++++++++++++++++ MetadataManagement/DCF_Parser.ipynb | 224 + MetadataManagement/DCF_Parser_Main.py | 356 + MetadataManagement/README.md | 9 + .../import_dhs_survey_metadata.fmw | 4247 +++ .../import_dhs_survey_metadata_from_dcfs.fmw | 5962 ++++ ..._survey_metadata_from_dcfs_multirunner.fmw | 813 + MetadataManagement/translate_survey_ids.fmw | 2536 ++ MetadataManagement/view_records_by_survey.sql | 6 + README.md | 6 + 19 files changed, 88860 insertions(+) create mode 100644 .gitignore create mode 100644 DataFileParsing/CSPro_Dat_Parser.fmw create mode 100644 DataFileParsing/CSPro_Dat_Parser_Runner.fmw create mode 100644 DataFileParsing/DHS_DAT_Splitter.ipynb create mode 100644 DataFileParsing/Global_File_Compare_DEV.ipynb create mode 100644 DataFileParsing/README.md create mode 100644 DataFileParsing/translate_all_recordtypes_to_mdb.fmw create mode 100644 DataFileParsing/translate_all_recordtypes_to_mdb_dynamic.fmw create mode 100644 DataFileParsing/translate_all_recordtypes_to_pg.fmw create mode 100644 DataFileParsing/translate_all_recordtypes_to_pg_singly.fmw create mode 100644 MetadataManagement/DCF_Parser.ipynb create mode 100644 MetadataManagement/DCF_Parser_Main.py create mode 100644 MetadataManagement/README.md create mode 100644 MetadataManagement/import_dhs_survey_metadata.fmw create mode 100644 MetadataManagement/import_dhs_survey_metadata_from_dcfs.fmw create mode 100644 MetadataManagement/import_dhs_survey_metadata_from_dcfs_multirunner.fmw create mode 100644 MetadataManagement/translate_survey_ids.fmw create mode 100644 MetadataManagement/view_records_by_survey.sql create mode 100644 README.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a2dcbb0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,224 @@ +################# +## Eclipse +################# + +*.pydevproject +.project +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.classpath +.settings/ +.loadpath + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# PDT-specific +.buildpath + + +################# +## Visual Studio +################# + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results + +[Dd]ebug/ +[Rr]elease/ +x64/ +build/ +[Bb]in/ +[Oo]bj/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.log +*.scc + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +*.ncrunch* +.*crunch*.local.xml + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.Publish.xml +*.pubxml +*.publishproj + +# NuGet Packages Directory +## TODO: If you have NuGet Package Restore enabled, uncomment the next line +#packages/ + +# Windows Azure Build Output +csx +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.[Pp]ublish.xml +*.pfx +*.publishsettings + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +App_Data/*.mdf +App_Data/*.ldf + +############# +## Windows detritus +############# + +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Mac crap +.DS_Store + + +############# +## Python +############# + +*.py[cod] + +# Packages +*.egg +*.egg-info +dist/ +build/ +eggs/ +parts/ +var/ +sdist/ +develop-eggs/ +.installed.cfg + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox + +#Translations +*.mo + +#Mr Developer +.mr.developer.cfg + +# Ipython checkpoints +.ipynb_checkpoints/ + +#FME +*.log +*.ffs +*.recover \ No newline at end of file diff --git a/DataFileParsing/CSPro_Dat_Parser.fmw b/DataFileParsing/CSPro_Dat_Parser.fmw new file mode 100644 index 0000000..7a3e7fc --- /dev/null +++ b/DataFileParsing/CSPro_Dat_Parser.fmw @@ -0,0 +1,3322 @@ +#! +#! RECH0REC21REC43NA" +# --OutputCSVDir "C:\Users\zool1301\Documents\DHS\Phase6\fmetest" +# +# +#! PASSWORD="" +#! DESTINATION_ROUTING_FILE="" +#! TITLE="" +#! FME_BUILD_NUM="15485" +#! LAST_SAVE_DATE="2015-08-14T14:40:38" +#! SOURCE="NONE" +#! SHOW_INFO_NODES="true" +#! LEGAL_TERMS_CONDITIONS="" +#! FME_GEOMETRY_HANDLING="Enhanced" +#! VIEW_POSITION="-107.035 411.674" +#! FME_IMPLICIT_CSMAP_REPROJECTION_MODE="Auto" +#! LOG_MAX_PRECISION="Yes" +#! MAX_LOG_FEATURES="200" +#! REDIRECT_TERMINATORS="NONE" +#! WARN_INVALID_XFORM_PARAM="Yes" +#! DOC_EXTENTS="4775.51 2682.69" +#! WORKSPACE_VERSION="1" +#! REQUIREMENTS="" +#! SHOW_ANNOTATIONS="true" +#! MULTI_WRITER_DATASET_ORDER="BY_ID" +#! END_TCL="" +#! ZOOM_SCALE="72" +#! ATTR_TYPE_ENCODING="SDF" +#! FME_SERVER_SERVICES="" +#! LAST_SAVE_BUILD="FME(R) 2015.1.0.3 (20150623 - Build 15485 - WIN64)" +#! LOG_FILE="" +#! USAGE="" +#! CATEGORY="" +#! BEGIN_PYTHON="" +#! SOURCE_ROUTING_FILE="" +#! REQUIREMENTS_KEYWORD="" +#! FME_REPROJECTION_ENGINE="FME" +#! IGNORE_READER_FAILURE="No" +#! FME_STROKE_MAX_DEVIATION="0" +#! HISTORY="" +#! FME_DOCUMENT_PRIORGUID="dfe05891-a47d-4081-89b5-9ca5d89facbc,0f151baa-7c16-40cb-89dc-7b0d9a65cdc1,1ef292a4-6c7d-46a8-a791-aaa5e219368b,960b1097-2456-461f-9419-18109679cc01,3c32e653-b2c4-4b11-80af-d0307ca7f0fb,379cc03c-6908-4d56-9afc-2e8e79f07e26,00e4cdcc-6afd-4cb9-bfab-33f4e3b9e5e5" +#! DESTINATION="NONE" +#! LOG_MAX_RECORDED_FEATURES="200" +#! FME_DOCUMENT_GUID="1e940bc7-1803-4fcc-ac5c-ca029e5f3fdb" +#! DOC_TOP_LEFT="-2.0009 -2341.52" +#! BEGIN_TCL="" +#! DESCRIPTION="" +#! END_PYTHON="" +#! > +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +GUI IGNORE SourceDataset_CSV_1,CSV_IN_NETWORK_AUTHENTICATION_CSV_1,_SKIP_LINES_CSV_1,_SKIP_FOOTER_CSV_1,_STRIP_QUOTES_CSV_1,_DUPLICATE_DELIMS_CSV_1,SORT_GROUP_CSV_1,_SORT_PARAMS_CSV_1,FILTER_GROUP_CSV_1,_FILTER_PARAMS_CSV_1,_ENCODING_CSV_1,SourceDataset_TEXTLINE_1,TEXTLINE_IN_READ_WHOLE_FILE_AT_ONCE_TEXTLINE_1,TEXTLINE_IN_READ_BOTTOM_UP_TEXTLINE_1,TEXTLINE_IN_SKIP_LINES_TEXTLINE_1,TEXTLINE_IN_SKIP_FOOTER_TEXTLINE_1,TEXTLINE_IN_ENCODING_TEXTLINE_1,TEXTLINE_IN_NETWORK_AUTHENTICATION_TEXTLINE_1,SourceDataset_SCHEMA_FROM_TABLE_1,SCHEMA_FROM_TABLE_IN_NETWORK_AUTHENTICATION_SCHEMA_FROM_TABLE_1,SCHEMA_TABLE_NAME_SCHEMA_FROM_TABLE_1,FEATURE_TYPE_COLUMN_SCHEMA_FROM_TABLE_1,ATTRIBUTE_NAME_COLUMN_SCHEMA_FROM_TABLE_1,ATTRIBUTE_TYPE_COLUMN_SCHEMA_FROM_TABLE_1,GEOMETRY_TYPE_COLUMN_SCHEMA_FROM_TABLE_1,ATTRIBUTE_NAME_SEQUENCE_COLUMN_SCHEMA_FROM_TABLE_1,DestDataset_CSV_2,CSV_OUT_EXTENSION_CSV_2,CSV_OUT_APPEND_CSV_2,CSV_OUT_FIELD_NAMES_CSV_2,CSV_OUT_SEPARATOR_CSV_2,CSV_OUT_ENCODING_CSV_2,_OUT_QUOTE_OUTPUT_CSV_2,_QUOTE_FIELD_NAMES_CSV_2,CSV_OUT_END_OF_LINE_CSV_2,_WRITE_UTF8_BOM_CSV_2 +DEFAULT_MACRO SurveySpecCSV C:\Users\zool1301\Documents\DHS\Phase6\SurveySpecs\GAIR60.FlatRecordSpec.csv +GUI MULTIFILE SurveySpecCSV CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* CSV specification for parsing dat file (generate with DCF parser script): +DEFAULT_MACRO SurveyDAT C:\Users\zool1301\Documents\DHS\Phase6\GAIR60.DAT +GUI MULTIFILE SurveyDAT Text/Compressed_Text_Files(*.txt;*.txt.gz)|*.txt;*.txt.gz|Text_Files(*.txt)|*.txt|Compressed_Text_Files(*.txt.gz)|*.txt.gz|All_files(*)|* Survey .DAT file (hierarchical format): +DEFAULT_MACRO RecordTypes REC01RECH0REC21REC43NA +GUI OPTIONAL TEXT_EDIT_OR_NUM RecordTypes Record types (Tables) to Extract (Comma separated list): +DEFAULT_MACRO OutputCSVDir C:\Users\zool1301\Documents\DHS\Phase6\fmetest +GUI DIRNAME OutputCSVDir Destination CSV (CommaSeparatedValue) Folder: +INCLUDE [ if {{$(SurveySpecCSV)} == {}} { puts_real {Parameter 'SurveySpecCSV' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(SurveyDAT)} == {}} { puts_real {Parameter 'SurveyDAT' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(OutputCSVDir)} == {}} { puts_real {Parameter 'OutputCSVDir' must be given a value.}; exit 1; }; ] +#! START_HEADER +#! START_WB_HEADER +READER_TYPE MULTI_READER +MULTI_READER_TYPE{0} CSV +MULTI_READER_KEYWORD{0} CSV_1 +MULTI_READER_GEN_DIRECTIVES{0} FILTER_GROUP,NO,groupBox_2,,_SORT_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%RecordName%RecordTypeValue%Name%Label%Start%Len%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending,_GROUP_BY_DATASET,no,_FILTER_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%RecordName%RecordTypeValue%Name%Label%Start%Len%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no,groupBox_4,,_SCHEMA_WITH_COL_NAMES,FileCodechar7RecordNamechar6RecordTypeValuechar4Namechar7Labelchar62Startnumber40Lennumber30,groupBox_5,,_SKIP_FOOTER,0,groupBox_6,,groupBox,,_IN_FIELD_NAMES,YES,_FIELD_NAMES_AFTER_HEADER,no,SCAN_MAX_FEATURES,10000,_STRIP_QUOTES,yes,_SKIP_LINES,1,SORT_GROUP,NO,_SCHEMA,char7char6char4char7char62number40number30,_IN_SEPARATOR,,_MERGE_SCHEMAS,YES,_DUPLICATE_DELIMS,no,_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_SORT_PARAMS,,_FILTER_PARAMS,,_ENCODING, +MULTI_READER_TYPE{1} TEXTLINE +MULTI_READER_KEYWORD{1} TEXTLINE_1 +MULTI_READER_GEN_DIRECTIVES{1} READ_WHOLE_FILE_AT_ONCE,NO,SKIP_FOOTER,0,READ_BOTTOM_UP,No,SKIP_LINES,0,_MERGE_SCHEMAS,YES,ENCODING, +MULTI_READER_TYPE{2} SCHEMA_FROM_TABLE +MULTI_READER_KEYWORD{2} SCHEMA_FROM_TABLE_1 +MULTI_READER_GEN_DIRECTIVES{2} ATTRIBUTE_TYPE_COLUMN,Len,FEATURE_TYPE_COLUMN,RecordName,ATTRIBUTE_NAME_SEQUENCE_COLUMN,,READER_PARAMETERS,METAFILECSVDATASETC:backslashUsersbackslashzool1301backslashDocumentsbackslashDHSbackslashPhase6backslashSurveySpecsbackslashBDIR61.FlatRecordSpec.csvCOORDSYSRUNTIME_MACROSgroupBox_2commacomma_IN_SEPARATORcommaquotecommaquotecomma_DUPLICATE_DELIMScommanocomma_STRIP_QUOTEScommayescomma_IN_FIELD_NAMEScommaYEScomma_FIELD_NAMES_AFTER_HEADERcommanocommagroupBoxcommacomma_SKIP_LINEScomma1comma_SKIP_FOOTERcomma0commagroupBox_6commacomma_ENCODINGcommacomma_ALLOW_SPACES_IN_COLUMN_NAMEScommayescommagroupBox_4commacomma_GROUP_BY_DATASETcommanocommagroupBox_5commacomma_SCHEMAcommaquotecharcomma7commacommacharcomma6commacommacharcomma4commacommacharcomma7commacommacharcomma62commacommanumbercomma4comma0commanumbercomma3comma0quotecomma_SCHEMA_WITH_COL_NAMEScommaquoteFileCodecommacharcomma7commacommaRecordNamecommacharcomma6commacommaRecordTypeValuecommacharcomma4commacommaNamecommacharcomma7commacommaLabelcommacharcomma62commacommaStartcommanumbercomma4comma0commaLencommanumbercomma3comma0quotecommaSCAN_MAX_FEATUREScomma10000commaSORT_GROUPcommaNOcommaFILTER_GROUPcommaNOcomma_SORT_PARAMScommacomma_SORT_TABLE_CONFIGcommaquotequotequoteNOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:semicolon%COL_DELIM:comma%HAS_DEFAULTS%START_NUM_ROWS:3%backslashquotequoteAttributebackslashquotequote%backslashquotequoteSTRING_OR_CHOICE_ENCODEDspaceATTRIBUTESspaceFileCode%RecordName%RecordTypeValue%Name%Label%Start%Lenbackslashquotequote%%backslashquotequoteAlphasolidusNumbackslashquotequote%backslashquotequoteLOOKUP_CHOICEspaceSORT_CHOICEspaceAlphabeticcommaalphabetic%Numericcommanumericbackslashquotequote%alphabetic%backslashquotequoteOrderbackslashquotequote%backslashquotequoteLOOKUP_CHOICEspaceSORT_ORDERspaceAscendingcommaascending%Descendingcommadescendingbackslashquotequote%ascendingquotequotequotecomma_FILTER_PARAMScommacomma_FILTER_TABLE_CONFIGcommaquotequotequoteNOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:semicolon%COL_DELIM:comma%HAS_DEFAULTS%START_NUM_ROWS:3%backslashquotequoteFieldspaceNamebackslashquotequote%backslashquotequoteSTRING_OR_CHOICE_ENCODEDspaceATTRIBUTESspaceFileCode%RecordName%RecordTypeValue%Name%Label%Start%Lenbackslashquotequote%%backslashquotequoteFilterbackslashquotequote%backslashquotequoteSTRING_ENCODEDspace_FILTER_REGEXspacebackslashquotequote%%backslashquotequoteInvertspaceFilterbackslashquotequote%backslashquotequoteCHECKBOXspace_FILTER_UNMATCHEDspaceyes%nobackslashquotequote%noquotequotequotecomma_MERGE_SCHEMAScommaYESIDLIST,MULTI_VALUE_SEPARATOR,,ATTRIBUTE_NAME_COLUMN,Name,GEOMETRY_TYPE_COLUMN,,_MERGE_SCHEMAS,YES,SCHEMA_TABLE_NAME,CSV +WRITER_TYPE MULTI_WRITER +MULTI_WRITER_DATASET_ORDER BY_ID +MULTI_WRITER_FIRST_WRITER_ID 0 +MULTI_WRITER_TYPE{0} CSV +MULTI_WRITER_KEYWORD{0} CSV_2 +#! END_WB_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_1 +# ============================================================================ +# The following GUI line prompts for a folder to be used as the +# source of the CSV files. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_CSV_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_1 +DEFAULT_MACRO SourceDataset_CSV_1 $(SurveySpecCSV) +GUI MULTIFILE SourceDataset_CSV_1 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +# ============================================================================ +# Hardcode the settings that were used to generate this mapping file +# +DEFAULT_MACRO _SCHEMA_CSV_1 char,7,,char,6,,char,4,,char,7,,char,62,,number,4,0,number,3,0 +DEFAULT_MACRO _IN_FIELD_NAMES_CSV_1 YES +DEFAULT_MACRO _FIELD_NAMES_AFTER_HEADER_CSV_1 no +DEFAULT_MACRO _EXTENSION_CSV_1 CSV +DEFAULT_MACRO _ALLOW_SPACES_IN_COLUMN_NAMES_CSV_1 yes +DEFAULT_MACRO _GROUP_BY_DATASET_CSV_1 no +CSV_1_SCHEMA char,7,,char,6,,char,4,,char,7,,char,62,,number,4,0,number,3,0 +DEFAULT_MACRO _SKIP_LINES_CSV_1 1 +CSV_1_SKIP_LINES $(_SKIP_LINES_CSV_1) +DEFAULT_MACRO _SKIP_FOOTER_CSV_1 0 +CSV_1_SKIP_FOOTER $(_SKIP_FOOTER_CSV_1) +CSV_1_FIELD_NAMES $(_IN_FIELD_NAMES_CSV_1) +CSV_1_FIELD_NAMES_AFTER_HEADER $(_FIELD_NAMES_AFTER_HEADER_CSV_1) +DEFAULT_MACRO _STRIP_QUOTES_CSV_1 yes +CSV_1_STRIP_QUOTES $(_STRIP_QUOTES_CSV_1) +CSV_1_SEPARATOR (",") +CSV_1_EXTENSION CSV +DEFAULT_MACRO _DUPLICATE_DELIMS_CSV_1 no +CSV_1_DUPLICATE_DELIMS $(_DUPLICATE_DELIMS_CSV_1) +CSV_1_SEQUENCED no +CSV_1_ALLOW_SPACES_IN_COLUMN_NAMES $(_ALLOW_SPACES_IN_COLUMN_NAMES_CSV_1) +CSV_1_GROUP_BY_DATASET $(_GROUP_BY_DATASET_CSV_1) +DEFAULT_MACRO SORT_GROUP_CSV_1 NO +CSV_1_SORT_GROUP $(SORT_GROUP_CSV_1) +DEFAULT_MACRO _SORT_PARAMS_CSV_1 +CSV_1_SORT_PARAMS $(_SORT_PARAMS_CSV_1) +DEFAULT_MACRO FILTER_GROUP_CSV_1 NO +CSV_1_FILTER_GROUP $(FILTER_GROUP_CSV_1) +DEFAULT_MACRO _FILTER_PARAMS_CSV_1 +CSV_1_FILTER_PARAMS $(_FILTER_PARAMS_CSV_1) +# ===================================================================== +# Provide some control over what attributes have the user-selected +# encoding applied. Normally all attributes are updated after being +# read, but the following lines exclude from this treatment all +# attributes whose names start with fme_ or csv_. +CSV_1_UNENCODED_ATTR_PREFIX fme_ csv_ +# =========================================================================== +DEFAULT_MACRO CSV_IN_NETWORK_AUTHENTICATION_CSV_1 +CSV_1_NETWORK_AUTHENTICATION "$(CSV_IN_NETWORK_AUTHENTICATION_CSV_1)" +GUI OPTIONAL AUTHENTICATOR CSV_IN_NETWORK_AUTHENTICATION_CSV_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI INTEGER _SKIP_LINES_CSV_1 Number of Lines to Skip: +GUI INTEGER _SKIP_FOOTER_CSV_1 Number of Footer Lines to Skip: +# GUI CHOICE _IN_FIELD_NAMES yes%no Field Names in File: +# GUI CHOICE _FIELD_NAMES_AFTER_HEADER yes%no Field After Header: +GUI CHOICE _STRIP_QUOTES_CSV_1 yes%no Strip Quotes From Fields: +# GUI TEXT _IN_SEPARATOR Field Delimiter: +# GUI TEXT _EXTENSION Default File Extension: +GUI CHOICE _DUPLICATE_DELIMS_CSV_1 yes%no Skip Duplicate Delimiters: +GUI CHOICE SORT_GROUP_CSV_1 yes%no Sorting Enabled: +GUI OPTIONAL GUI_LINE_TABLE _SORT_PARAMS_CSV_1 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Attribute"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%RecordName%RecordTypeValue%Name%Label%Start%Len"%%"Alpha/Num"%"LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric"%alphabetic%"Order"%"LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending"%ascending Sorting Parameters: +GUI CHOICE FILTER_GROUP_CSV_1 yes%no Filter Enabled: +GUI OPTIONAL GUI_LINE_TABLE _FILTER_PARAMS_CSV_1 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Field Name"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%RecordName%RecordTypeValue%Name%Label%Start%Len"%%"Filter"%"STRING_ENCODED _FILTER_REGEX "%%"Invert Filter"%"CHECKBOX _FILTER_UNMATCHED yes%no"%no Filter Parameters: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO _ENCODING_CSV_1 +GUI OPTIONAL STRING_OR_ENCODING _ENCODING_CSV_1 SYSTEM%* Character Encoding: +CSV_1_ENCODING $(_ENCODING_CSV_1) +CSV_1_DATASET "$(SourceDataset_CSV_1)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "TEXTLINE_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER TEXTLINE TEXTLINE_1 +# ===================================================================== +# The following GUI line prompts for a file to be used as the source +# TextLine file. The user input is stored in a macro, which is then +# used to define the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_TEXTLINE_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER TEXTLINE TEXTLINE_1 +DEFAULT_MACRO SourceDataset_TEXTLINE_1 $(SurveyDAT) +GUI MULTIFILE SourceDataset_TEXTLINE_1 Text/Compressed_Text_Files(*.txt;*.txt.gz)|*.txt;*.txt.gz|Text_Files(*.txt)|*.txt|Compressed_Text_Files(*.txt.gz)|*.txt.gz|All_files(*)|* Source Text File(s): +DEFAULT_MACRO TEXTLINE_IN_READ_WHOLE_FILE_AT_ONCE_TEXTLINE_1 NO +TEXTLINE_1_READ_WHOLE_FILE_AT_ONCE "$(TEXTLINE_IN_READ_WHOLE_FILE_AT_ONCE_TEXTLINE_1)" +GUI ACTIVECHOICE TEXTLINE_IN_READ_WHOLE_FILE_AT_ONCE_TEXTLINE_1 YES,TEXTLINE_IN_READ_BOTTOM_UP,TEXTLINE_IN_SKIP_LINES,TEXTLINE_IN_SKIP_FOOTER%NO Read Whole File at Once: +DEFAULT_MACRO TEXTLINE_IN_READ_BOTTOM_UP_TEXTLINE_1 No +TEXTLINE_1_READ_BOTTOM_UP "$(TEXTLINE_IN_READ_BOTTOM_UP_TEXTLINE_1)" +GUI CHOICE TEXTLINE_IN_READ_BOTTOM_UP_TEXTLINE_1 Yes%No Read Bottom Up: +DEFAULT_MACRO TEXTLINE_IN_SKIP_LINES_TEXTLINE_1 0 +TEXTLINE_1_SKIP_LINES "$(TEXTLINE_IN_SKIP_LINES_TEXTLINE_1)" +GUI OPTIONAL INTEGER TEXTLINE_IN_SKIP_LINES_TEXTLINE_1 Number of Lines to Skip: +DEFAULT_MACRO TEXTLINE_IN_SKIP_FOOTER_TEXTLINE_1 0 +TEXTLINE_1_SKIP_FOOTER "$(TEXTLINE_IN_SKIP_FOOTER_TEXTLINE_1)" +GUI OPTIONAL INTEGER TEXTLINE_IN_SKIP_FOOTER_TEXTLINE_1 Number of Footer Lines to Skip: +# ===================================================================== +# Allows to force the encoding of source text file +DEFAULT_MACRO TEXTLINE_IN_ENCODING_TEXTLINE_1 +TEXTLINE_1_ENCODING "$(TEXTLINE_IN_ENCODING_TEXTLINE_1)" +GUI OPTIONAL STRING_OR_ENCODING TEXTLINE_IN_ENCODING_TEXTLINE_1 SYSTEM%* Character Encoding: +# =========================================================================== +DEFAULT_MACRO TEXTLINE_IN_NETWORK_AUTHENTICATION_TEXTLINE_1 +TEXTLINE_1_NETWORK_AUTHENTICATION "$(TEXTLINE_IN_NETWORK_AUTHENTICATION_TEXTLINE_1)" +GUI OPTIONAL AUTHENTICATOR TEXTLINE_IN_NETWORK_AUTHENTICATION_TEXTLINE_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +TEXTLINE_1_DATASET "$(SourceDataset_TEXTLINE_1)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "SCHEMA_FROM_TABLE_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER SCHEMA_FROM_TABLE SCHEMA_FROM_TABLE_1 +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_SCHEMA_FROM_TABLE_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER SCHEMA_FROM_TABLE SCHEMA_FROM_TABLE_1 +DEFAULT_MACRO SourceDataset_SCHEMA_FROM_TABLE_1 $(SurveySpecCSV) +GUI FILE_OR_URL SourceDataset_SCHEMA_FROM_TABLE_1 All_files|* Source Dataset: +DEFAULT_MACRO READER_PARAMETERS_SCHEMA_FROM_TABLE_1 METAFILE,CSV,DATASET,C:Userszool1301DocumentsDHSPhase6SurveySpecsBDIR61.FlatRecordSpec.csv,COORDSYS,,RUNTIME_MACROS,groupBox_2_IN_SEPARATOR_DUPLICATE_DELIMSno_STRIP_QUOTESyes_IN_FIELD_NAMESYES_FIELD_NAMES_AFTER_HEADERnogroupBox_SKIP_LINES1_SKIP_FOOTER0groupBox_6_ENCODING_ALLOW_SPACES_IN_COLUMN_NAMESyesgroupBox_4_GROUP_BY_DATASETnogroupBox_5_SCHEMAchar7char6char4char7char62number40number30_SCHEMA_WITH_COL_NAMESFileCodechar7RecordNamechar6RecordTypeValuechar4Namechar7Labelchar62Startnumber40Lennumber30SCAN_MAX_FEATURES10000SORT_GROUPNOFILTER_GROUPNO_SORT_PARAMS_SORT_TABLE_CONFIGNOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%RecordName%RecordTypeValue%Name%Label%Start%Len%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending_FILTER_PARAMS_FILTER_TABLE_CONFIGNOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%RecordName%RecordTypeValue%Name%Label%Start%Len%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no_MERGE_SCHEMASYES,IDLIST, +DEFAULT_MACRO MULTI_VALUE_SEPARATOR_SCHEMA_FROM_TABLE_1 ; +SCHEMA_FROM_TABLE_1_READER_PARAMETERS "$(READER_PARAMETERS_SCHEMA_FROM_TABLE_1)" +DEFAULT_MACRO SCHEMA_TABLE_NAME_SCHEMA_FROM_TABLE_1 CSV +SCHEMA_FROM_TABLE_1_SCHEMA_TABLE_NAME "$(SCHEMA_TABLE_NAME_SCHEMA_FROM_TABLE_1)" +DEFAULT_MACRO FEATURE_TYPE_COLUMN_SCHEMA_FROM_TABLE_1 RecordName +SCHEMA_FROM_TABLE_1_FEATURE_TYPE_COLUMN "$(FEATURE_TYPE_COLUMN_SCHEMA_FROM_TABLE_1)" +DEFAULT_MACRO ATTRIBUTE_NAME_COLUMN_SCHEMA_FROM_TABLE_1 Name +SCHEMA_FROM_TABLE_1_ATTRIBUTE_NAME_COLUMN "$(ATTRIBUTE_NAME_COLUMN_SCHEMA_FROM_TABLE_1)" +DEFAULT_MACRO ATTRIBUTE_TYPE_COLUMN_SCHEMA_FROM_TABLE_1 Type +SCHEMA_FROM_TABLE_1_ATTRIBUTE_TYPE_COLUMN "$(ATTRIBUTE_TYPE_COLUMN_SCHEMA_FROM_TABLE_1)" +DEFAULT_MACRO GEOMETRY_TYPE_COLUMN_SCHEMA_FROM_TABLE_1 +SCHEMA_FROM_TABLE_1_GEOMETRY_TYPE_COLUMN "$(GEOMETRY_TYPE_COLUMN_SCHEMA_FROM_TABLE_1)" +SCHEMA_FROM_TABLE_1_MULTI_VALUE_SEPARATOR "$(MULTI_VALUE_SEPARATOR_SCHEMA_FROM_TABLE_1)" +DEFAULT_MACRO ATTRIBUTE_NAME_SEQUENCE_COLUMN_SCHEMA_FROM_TABLE_1 +SCHEMA_FROM_TABLE_1_ATTRIBUTE_NAME_SEQUENCE_COLUMN "$(ATTRIBUTE_NAME_SEQUENCE_COLUMN_SCHEMA_FROM_TABLE_1)" +# =========================================================================== +DEFAULT_MACRO SCHEMA_FROM_TABLE_IN_NETWORK_AUTHENTICATION_SCHEMA_FROM_TABLE_1 AUTH_INFO_GROUP,NO,AUTH_METHOD,Unused,NAMED_CONNECTION,Unused,AUTH_USERNAME,Unused,AUTH_PASSWORD, +SCHEMA_FROM_TABLE_1_NETWORK_AUTHENTICATION "$(SCHEMA_FROM_TABLE_IN_NETWORK_AUTHENTICATION_SCHEMA_FROM_TABLE_1)" +GUI OPTIONAL AUTHENTICATOR SCHEMA_FROM_TABLE_IN_NETWORK_AUTHENTICATION_SCHEMA_FROM_TABLE_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI TEXT SCHEMA_TABLE_NAME_SCHEMA_FROM_TABLE_1 Schema Table +GUI TEXT FEATURE_TYPE_COLUMN_SCHEMA_FROM_TABLE_1 Feature Type Column +GUI TEXT ATTRIBUTE_NAME_COLUMN_SCHEMA_FROM_TABLE_1 Attribute Name Column +GUI TEXT ATTRIBUTE_TYPE_COLUMN_SCHEMA_FROM_TABLE_1 Attribute Type Column +GUI OPTIONAL TEXT GEOMETRY_TYPE_COLUMN_SCHEMA_FROM_TABLE_1 Geometry Type Column +GUI OPTIONAL TEXT ATTRIBUTE_NAME_SEQUENCE_COLUMN_SCHEMA_FROM_TABLE_1 Attribute Name Sequence Column +SCHEMA_FROM_TABLE_1_DATASET "$(SourceDataset_SCHEMA_FROM_TABLE_1)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_2" +#! END_WB_HEADER +#! START_DEST_HEADER CSV CSV_2 +# ============================================================================ +# The following GUI line prompts for a folder where the +# CSV files will be stored +#! END_DEST_HEADER +#! START_WB_HEADER +DEFAULT_MACRO DestDataset +INCLUDE [ if {"$(DestDataset)" != ""} { \ + puts {DEFAULT_MACRO DestDataset_CSV_2 $(DestDataset)} \ + } ] +#! END_WB_HEADER +#! START_DEST_HEADER CSV CSV_2 +DEFAULT_MACRO DestDataset_CSV_2 $(OutputCSVDir) +GUI DIRNAME DestDataset_CSV_2 Destination CSV (CommaSeparatedValue) Folder: +CSV_2_PLUGIN_MAX_CHANNELS 100 +CSV_2_ALLOW_TYPE_TRUNCATION yes +CSV_2_PERMISSIVE_TYPES yes +# ============================================================================ +# The following determines the extension for output CSV files +DEFAULT_MACRO CSV_OUT_EXTENSION_CSV_2 csv +CSV_2_EXTENSION "$(CSV_OUT_EXTENSION_CSV_2)" +GUI OPTIONAL TEXT CSV_OUT_EXTENSION_CSV_2 Extension: +# ===================================================================== +# Allows one to append +DEFAULT_MACRO CSV_OUT_APPEND_CSV_2 No +CSV_2_APPEND "$(CSV_OUT_APPEND_CSV_2)" +GUI CHECKBOX CSV_OUT_APPEND_CSV_2 Yes%No Append to File: +# ============================================================================ +# The following determines whether field names will be written on +# the first row of the file. +DEFAULT_MACRO CSV_OUT_FIELD_NAMES_CSV_2 yes +CSV_2_FIELD_NAMES "$(CSV_OUT_FIELD_NAMES_CSV_2)" +GUI CHECKBOX CSV_OUT_FIELD_NAMES_CSV_2 yes%no Output Field Names on First Line: +# ============================================================================ +# The following determines the field seperator +# PR#19714 Changed GUI LOOKUP to STRING_OR_CHOICE for showing space and tab +# as explicit delimiters for parsing issues and symmetry with the reader. +DEFAULT_MACRO CSV_OUT_SEPARATOR_CSV_2 , +CSV_2_SEPARATOR "$(CSV_OUT_SEPARATOR_CSV_2)" +GUI OPTIONAL STRING_OR_CHOICE CSV_OUT_SEPARATOR_CSV_2 ,%;%|%space%tab Separator Character: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO CSV_OUT_ENCODING_CSV_2 +CSV_2_ENCODING "$(CSV_OUT_ENCODING_CSV_2)" +GUI OPTIONAL STRING_OR_ENCODING CSV_OUT_ENCODING_CSV_2 SYSTEM%* Character Encoding: +# ============================================================================ +# The following specifies if output values should be quoted +DEFAULT_MACRO _OUT_QUOTE_OUTPUT_CSV_2 if_needed +GUI CHOICE _OUT_QUOTE_OUTPUT_CSV_2 yes%if_needed%no Quote Output Values: +CSV_2_QUOTE_OUTPUT $(_OUT_QUOTE_OUTPUT_CSV_2) +# ============================================================================ +# The following choice determines if field names on the first row +# should be quoted or not. +DEFAULT_MACRO _QUOTE_FIELD_NAMES_CSV_2 no +GUI CHOICE _QUOTE_FIELD_NAMES_CSV_2 yes%no Quote Field Names: +CSV_2_QUOTE_FIELD_NAMES $(_QUOTE_FIELD_NAMES_CSV_2) +# ===================================================================== +# Allows to set Line termination type +DEFAULT_MACRO CSV_OUT_END_OF_LINE_CSV_2 +GUI OPTIONAL CHOICE CSV_OUT_END_OF_LINE_CSV_2 Windows%Unix%Macintosh Line Termination: +CSV_2_END_OF_LINE $(CSV_OUT_END_OF_LINE_CSV_2) +# ============================================================================ +# PR 15909 +# The following choice determines if the byte order mark should be written +# when using UTF-8 encoding. By default BOM is written, so _WRITE_UTF8_BOM should be yes. +DEFAULT_MACRO _WRITE_UTF8_BOM_CSV_2 yes +GUI CHOICE _WRITE_UTF8_BOM_CSV_2 yes%no Write UTF-8 Byte Order Mark +CSV_2_WRITE_UTF8_BOM $(_WRITE_UTF8_BOM_CSV_2) +CSV_2_DATASET "$(DestDataset_CSV_2)" +#! END_DEST_HEADER +#! END_HEADER + +LOG_FILENAME "$(FME_MF_DIR)CSPro_Dat_Parser.log" +LOG_APPEND NO +LOG_MAX_FEATURES 200 +LOG_MAX_RECORDED_FEATURES 200 +LOG_MAX_PRECISION Yes +FME_REPROJECTION_ENGINE FME +FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto +FME_GEOMETRY_HANDLING Enhanced +FME_STROKE_MAX_DEVIATION 0 +LOG_FILTER_MASK -1 +DEFAULT_MACRO DATASET_KEYWORD_CSV_1 CSV_1 +DEFAULT_MACRO DATASET_KEYWORD_TEXTLINE_1 TEXTLINE_1 +DEFAULT_MACRO DATASET_KEYWORD_SCHEMA_FROM_TABLE_1 SCHEMA_FROM_TABLE_1 +DEFAULT_MACRO DATASET_KEYWORD_CSV_2 CSV_2 +# ------------------------------------------------------------------------- + +CSV_1_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +TEXTLINE_1_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +SCHEMA_FROM_TABLE_1_READER_META_ATTRIBUTES fme_basename fme_feature_type + +# ------------------------------------------------------------------------- + +MULTI_READER_CONTINUE_ON_READER_FAILURE No + +# ------------------------------------------------------------------------- + +MACRO WORKSPACE_NAME CSPro_Dat_Parser +MACRO FME_VIEWER_APP fmedatainspector +# ------------------------------------------------------------------------- + +INCLUDE [ if {[info exists env(FME_TEMP)] && [file isdirectory $env(FME_TEMP)]} {set gVisualizerTemp $env(FME_TEMP)} elseif {[info exists env(TEMP)] && [file isdirectory $env(TEMP)]} {set gVisualizerTemp $env(TEMP)} elseif { $tcl_platform(platform) == "unix" } {set gVisualizerTemp "/tmp"} else {set gVisualizerTemp c:}; regsub -all {[ ,&]} {$(WORKSPACE_NAME)} {_} wsname; set gVisualizerTemp $gVisualizerTemp/${wsname}_[clock format [clock seconds] -format %H%M%S]; puts "MACRO WORKSPACE_TEMP_DIR $gVisualizerTemp"; +MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/inspector.ffs +MACRO VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector.fsc +MACRO VISUALIZER_CREATE_SPATIAL_INDEX YES +# ------------------------------------------------------------------------- +CSV_1_DEF CSV FileCode char(7) RecordName char(6) RecordTypeValue char(4) Name char(12) Label char(96) Start number(4,0) Len number(3,0) Occurrences number(3,0) FMETYPE char(13) +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" INPUT FEATURE_TYPE * ROUTE CSV CSV_1::CSV multi_reader_keyword,$(DATASET_KEYWORD_CSV_1) TO FME_GENERIC ::CSV ALIAS_GEOMETRY ROUTE TEXTLINE TEXTLINE_1::text_line multi_reader_keyword,$(DATASET_KEYWORD_TEXTLINE_1) TO FME_GENERIC ::text_line ALIAS_GEOMETRY ROUTE SCHEMA_FROM_TABLE SCHEMA_FROM_TABLE_1::schema multi_reader_keyword,$(DATASET_KEYWORD_SCHEMA_FROM_TABLE_1) TO FME_GENERIC ::schema ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * +CSV_1_MERGE_DEF CSV_1::CSV EXACT CSV +TEXTLINE_1_MERGE_DEF TEXTLINE_1::text_line EXACT text_line +SCHEMA_FROM_TABLE_1_MERGE_DEF SCHEMA_FROM_TABLE_1::schema EXACT schema +DEFAULT_MACRO WB_CURRENT_CONTEXT +# ------------------------------------------------------------------------- + +INCLUDE [ puts "MACRO REAL_RATE [expr 1 * -1 ]" ] +FACTORY_DEF * SamplingFactory FACTORY_NAME Sampler SAMPLE_RATE $(REAL_RATE) INPUT FEATURE_TYPE CSV OUTPUT SAMPLED FEATURE_TYPE ___SAMPLED___ OUTPUT NOT_SAMPLED FEATURE_TYPE Sampler_NOT_SAMPLED +# This TeeFactory is needed because Sampler will still output features if it has no OUTPUT clauses specified. +# This way we behave nicely even if there are no output connections on the transformer. See PR#28886. + +FACTORY_DEF * TeeFactory FACTORY_NAME Sampler_Sampled INPUT FEATURE_TYPE ___SAMPLED___ OUTPUT FEATURE_TYPE Sampler_SAMPLED + + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TestFactory FACTORY_NAME Tester INPUT FEATURE_TYPE Sampler_NOT_SAMPLED TEST @EvaluateExpression(FDIV,STRING_ENCODED,ValueRecordName,Tester) IN @EvaluateExpression(FDIV,STRING_ENCODED,$(RecordTypes),Tester) ENCODED BOOLEAN_OPERATOR OR OUTPUT PASSED FEATURE_TYPE Tester_PASSED +FACTORY_DEF * TeeFactory FACTORY_NAME "Tester PASSED Splitter" INPUT FEATURE_TYPE Tester_PASSED OUTPUT FEATURE_TYPE Tester_PASSED_0_Vyka/YsBh1U= OUTPUT FEATURE_TYPE Tester_PASSED_1_Vyka/YsBh1U= +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {Tester_Passed} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME Tester_Passed_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME Tester_Passed_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME Tester_Passed_FeatureDirector INPUT FEATURE_TYPE Tester_PASSED_1_Vyka/YsBh1U= TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE Tester_Passed___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE Tester_Passed___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME Tester_Passed___FeatureDirector1 INPUT FEATURE_TYPE Tester_Passed___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE Tester_Passed___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE Tester_Passed___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME Tester_Passed_VectorSetterUpper INPUT FEATURE_TYPE Tester_Passed___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc Tester_Passed_2ab866d6_82cd_4978_a19a_151bcc3c1c6d0_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME Tester_Passed___PointCloudThinner INPUT FEATURE_TYPE Tester_Passed___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("Tester_Passed_2ab866d6_82cd_4978_a19a_151bcc3c1c6d0_thinPointCloud") +Tcl2 proc Tester_Passed_2ab866d6_82cd_4978_a19a_151bcc3c1c6d0_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME Tester_Passed_RasterSetterUpper INPUT FEATURE_TYPE Tester_Passed___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("Tester_Passed_2ab866d6_82cd_4978_a19a_151bcc3c1c6d0_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# Tester_Passed_2ab866d6_82cd_4978_a19a_151bcc3c1c6d0_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO Tester_Passed_2ab866d6_82cd_4978_a19a_151bcc3c1c6d0_VIS_FEAT_TYPE Tester_Passed$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME Tester_Passed_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(Tester_Passed_2ab866d6_82cd_4978_a19a_151bcc3c1c6d0_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA FileCode,varchar255,RecordName,varchar255,RecordTypeValue,varchar255,Name,varchar255,Label,varchar255,Start,varchar255,Len,varchar255,Occurrences,varchar255,FMETYPE,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +DEFAULT_MACRO WB_CURRENT_CONTEXT +MACRO VariableSetter_VAR _recordTypeStart +INCLUDE [ if {{Global} == {Local}} { puts {MACRO VariableSetter_VAR $(WB_CURRENT_CONTEXT)__recordTypeStart}; } ] +FACTORY_DEF * TeeFactory FACTORY_NAME VariableSetter INPUT FEATURE_TYPE Sampler_SAMPLED OUTPUT FEATURE_TYPE VariableSetter_OUTPUT @GlobalVariable(fme_encoded,$(VariableSetter_VAR),"@EvaluateExpression(FDIV,STRING_ENCODED,ValueStart,VariableSetter)") + +# ------------------------------------------------------------------------- + +DEFAULT_MACRO WB_CURRENT_CONTEXT +MACRO VariableSetter_2_VAR _recordTypeLen +INCLUDE [ if {{Global} == {Local}} { puts {MACRO VariableSetter_2_VAR $(WB_CURRENT_CONTEXT)__recordTypeLen}; } ] +FACTORY_DEF * TeeFactory FACTORY_NAME VariableSetter_2 INPUT FEATURE_TYPE VariableSetter_OUTPUT OUTPUT FEATURE_TYPE VariableSetter_2_OUTPUT @GlobalVariable(fme_encoded,$(VariableSetter_2_VAR),"@EvaluateExpression(FDIV,STRING_ENCODED,ValueLen,VariableSetter_2)") + +FACTORY_DEF * TeeFactory FACTORY_NAME "VariableSetter_2 OUTPUT Output Nuker" INPUT FEATURE_TYPE VariableSetter_2_OUTPUT +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {schema} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME schema_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME schema_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME schema_FeatureDirector INPUT FEATURE_TYPE schema TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE schema___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE schema___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME schema___FeatureDirector1 INPUT FEATURE_TYPE schema___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE schema___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE schema___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME schema_VectorSetterUpper INPUT FEATURE_TYPE schema___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc schema_32123d99_b12f_4579_b271_e1097ab5147e0_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME schema___PointCloudThinner INPUT FEATURE_TYPE schema___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("schema_32123d99_b12f_4579_b271_e1097ab5147e0_thinPointCloud") +Tcl2 proc schema_32123d99_b12f_4579_b271_e1097ab5147e0_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME schema_RasterSetterUpper INPUT FEATURE_TYPE schema___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("schema_32123d99_b12f_4579_b271_e1097ab5147e0_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# schema_32123d99_b12f_4579_b271_e1097ab5147e0_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO schema_32123d99_b12f_4579_b271_e1097ab5147e0_VIS_FEAT_TYPE schema$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME schema_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(schema_32123d99_b12f_4579_b271_e1097ab5147e0_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA fme_format_long_name,varchar255,fme_format_short_name,varchar255,fme_basename,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +Tcl2 proc Counter_1299a8aa_0368_4d36_b386_a5777b1666120_createDomain { in_domainName } { set domainName $in_domainName; if { {Global} == {Local} } { set xFormName [FME_EncodeText {Counter_}]; set domainName $xFormName$domainName; }; return $domainName; } + +FACTORY_DEF * TeeFactory FACTORY_NAME Counter INPUT FEATURE_TYPE text_line OUTPUT FEATURE_TYPE Counter_OUTPUT "_inputLineNumber" @Count(fme_encoded,@Tcl2("Counter_1299a8aa_0368_4d36_b386_a5777b1666120_createDomain {counter}"), "0") + +# ------------------------------------------------------------------------- + +DEFAULT_MACRO WB_CURRENT_CONTEXT +MACRO VariableRetriever_VAR _recordTypeStart +INCLUDE [if {{Global} == {Local}} { puts {MACRO VariableRetriever_VAR $(WB_CURRENT_CONTEXT)__recordTypeStart}; }; +FACTORY_DEF * TeeFactory FACTORY_NAME VariableRetriever INPUT FEATURE_TYPE Counter_OUTPUT OUTPUT FEATURE_TYPE VariableRetriever_OUTPUT @GlobalVariable(fme_encoded,$(VariableRetriever_VAR),fme_result_attribute,_rtStart) + +# ------------------------------------------------------------------------- + +DEFAULT_MACRO WB_CURRENT_CONTEXT +MACRO VariableRetriever_2_VAR _recordTypeLen +INCLUDE [if {{Global} == {Local}} { puts {MACRO VariableRetriever_2_VAR $(WB_CURRENT_CONTEXT)__recordTypeLen}; }; +FACTORY_DEF * TeeFactory FACTORY_NAME VariableRetriever_2 INPUT FEATURE_TYPE VariableRetriever_OUTPUT OUTPUT FEATURE_TYPE VariableRetriever_2_OUTPUT @GlobalVariable(fme_encoded,$(VariableRetriever_2_VAR),fme_result_attribute,_rtLen) + +# ------------------------------------------------------------------------- + +# Since the Tcl "END" index specification starts at -1 for the second +# last character, and we've defined -1 to be the last charater, we've got +# small bit of fiddling to do + +Tcl2 proc SubstringExtractor_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } +Tcl2 proc SubstringExtractor_extract {startIdx endIdx} { FME_SetAttribute [FME_DecodeText RecordTypeValue] [string range [FME_GetAttribute [FME_DecodeText text_line_data]] [SubstringExtractor_fixLastIndex $startIdx] [SubstringExtractor_fixLastIndex $endIdx]] } +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor INPUT FEATURE_TYPE VariableRetriever_2_OUTPUT OUTPUT FEATURE_TYPE SubstringExtractor_OUTPUT @Tcl2("SubstringExtractor_extract @EvaluateExpression(FDIV,FLOAT,Value_rtStart-1,SubstringExtractor) @EvaluateExpression(FDIV,FLOAT,Value_rtStart-1+Value_rtLen-1,SubstringExtractor)") + +FACTORY_DEF * TeeFactory FACTORY_NAME "SubstringExtractor OUTPUT Splitter" INPUT FEATURE_TYPE SubstringExtractor_OUTPUT OUTPUT FEATURE_TYPE SubstringExtractor_OUTPUT_0_t23xNLWGpHM= OUTPUT FEATURE_TYPE SubstringExtractor_OUTPUT_1_t23xNLWGpHM= +FACTORY_DEF * TeeFactory FACTORY_NAME "SubstringExtractor_OUTPUT_0_t23xNLWGpHM= Disabled Nuker -1 24" INPUT FEATURE_TYPE SubstringExtractor_OUTPUT_0_t23xNLWGpHM= +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {SubstringExtractor_Output} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME SubstringExtractor_Output_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor_Output_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME SubstringExtractor_Output_FeatureDirector INPUT FEATURE_TYPE SubstringExtractor_OUTPUT_0_t23xNLWGpHM= TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE SubstringExtractor_Output___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE SubstringExtractor_Output___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME SubstringExtractor_Output___FeatureDirector1 INPUT FEATURE_TYPE SubstringExtractor_Output___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE SubstringExtractor_Output___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE SubstringExtractor_Output___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor_Output_VectorSetterUpper INPUT FEATURE_TYPE SubstringExtractor_Output___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc SubstringExtractor_Output_90c199a2_84fd_44cd_a1f9_afc9032b5a7b0_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor_Output___PointCloudThinner INPUT FEATURE_TYPE SubstringExtractor_Output___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("SubstringExtractor_Output_90c199a2_84fd_44cd_a1f9_afc9032b5a7b0_thinPointCloud") +Tcl2 proc SubstringExtractor_Output_90c199a2_84fd_44cd_a1f9_afc9032b5a7b0_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor_Output_RasterSetterUpper INPUT FEATURE_TYPE SubstringExtractor_Output___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("SubstringExtractor_Output_90c199a2_84fd_44cd_a1f9_afc9032b5a7b0_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# SubstringExtractor_Output_90c199a2_84fd_44cd_a1f9_afc9032b5a7b0_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO SubstringExtractor_Output_90c199a2_84fd_44cd_a1f9_afc9032b5a7b0_VIS_FEAT_TYPE SubstringExtractor_Output$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME SubstringExtractor_Output_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(SubstringExtractor_Output_90c199a2_84fd_44cd_a1f9_afc9032b5a7b0_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA text_line_data,varchar255,_inputLineNumber,varchar255,_rtStart,varchar255,_rtLen,varchar255,RecordTypeValue,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +# Since the Tcl "END" index specification starts at -1 for the second +# last character, and we've defined -1 to be the last charater, we've got +# small bit of fiddling to do + +Tcl2 proc SubstringExtractor_4_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } +Tcl2 proc SubstringExtractor_4_extract {startIdx endIdx} { FME_SetAttribute [FME_DecodeText HHID] [string range [FME_GetAttribute [FME_DecodeText text_line_data]] [SubstringExtractor_4_fixLastIndex $startIdx] [SubstringExtractor_4_fixLastIndex $endIdx]] } +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor_4 INPUT FEATURE_TYPE SubstringExtractor_OUTPUT_1_t23xNLWGpHM= OUTPUT FEATURE_TYPE SubstringExtractor_4_OUTPUT @Tcl2("SubstringExtractor_4_extract 0 11") + +# ------------------------------------------------------------------------- + +# Since the Tcl "END" index specification starts at -1 for the second +# last character, and we've defined -1 to be the last charater, we've got +# small bit of fiddling to do + +Tcl2 proc SubstringExtractor_3_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } +Tcl2 proc SubstringExtractor_3_extract {startIdx endIdx} { FME_SetAttribute [FME_DecodeText CASEID] [string range [FME_GetAttribute [FME_DecodeText text_line_data]] [SubstringExtractor_3_fixLastIndex $startIdx] [SubstringExtractor_3_fixLastIndex $endIdx]] } +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor_3 INPUT FEATURE_TYPE SubstringExtractor_4_OUTPUT OUTPUT FEATURE_TYPE SubstringExtractor_3_OUTPUT @Tcl2("SubstringExtractor_3_extract 12 14") + +# ------------------------------------------------------------------------- + +INCLUDE [ set macroLine "MACRO AttributeRemover_3_LIST_EXP "; foreach attr [split ""] { set attr [FME_DecodeText $attr]; set attr [regsub "{}$" $attr "{}.*"]; set attr [regsub -all "{}" $attr "\\{\[0-9\]+\\}"]; append macroLine ",^$attr$"; }; puts $macroLine; ] +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRemover_3 INPUT FEATURE_TYPE SubstringExtractor_3_OUTPUT OUTPUT FEATURE_TYPE AttributeRemover_3_OUTPUT @RemoveAttributes(fme_encoded,) @RemoveAttributes(fme_pcre_match"$(AttributeRemover_3_LIST_EXP)") + +# ------------------------------------------------------------------------- + +INCLUDE [if { {ATTRIBUTES} == {ATTRIBUTES} } { puts "MACRO FeatureMerger_REFERENCE_INFO ATTRIBUTES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} } { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} } { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } else {}; ] + +FACTORY_DEF * ReferenceFactory FACTORY_NAME FeatureMerger INPUT REFERENCER FEATURE_TYPE AttributeRemover_3_OUTPUT INPUT REFERENCEE FEATURE_TYPE Tester_PASSED_0_Vyka/YsBh1U= REFERENCE_INFO $(FeatureMerger_REFERENCE_INFO) REFERENCE_TABLE @EvaluateExpression(FDIV,STRING_ENCODED,ValueRecordTypeValue,FeatureMerger) @EvaluateExpression(FDIV,STRING_ENCODED,ValueRecordTypeValue,FeatureMerger) AUTO ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "REQUESTOR_IF_CONFLICT" IGNORE_NULLS "No" LIST_NAME "_recordItemInfo" MERGE_ATTRIBUTES Yes MANAGE_FME_TYPE Yes MODE COMPLETE PROCESS_DUPLICATE_REFERENCEES No REFERENCEES_FIRST Yes OUTPUT COMPLETE FEATURE_TYPE FeatureMerger_MERGED + +# ------------------------------------------------------------------------- + +INCLUDE [ set macroLine "MACRO AttributeRemover_LIST_EXP "; foreach attr [split ""] { set attr [FME_DecodeText $attr]; set attr [regsub "{}$" $attr "{}.*"]; set attr [regsub -all "{}" $attr "\\{\[0-9\]+\\}"]; append macroLine ",^$attr$"; }; puts $macroLine; ] +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRemover INPUT FEATURE_TYPE FeatureMerger_MERGED OUTPUT FEATURE_TYPE AttributeRemover_OUTPUT @RemoveAttributes(fme_encoded,Label,Len,Name,RecordName,RecordTypeValue,Start) @RemoveAttributes(fme_pcre_match"$(AttributeRemover_LIST_EXP)") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * ElementFactory FACTORY_NAME ListExploder INPUT FEATURE_TYPE AttributeRemover_OUTPUT LIST_NAME "_recordItemInfo{}" CLONE_GEOMETRY ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "ORIGINAL_IF_CONFLICT" INCOMING_PREFIX "" OUTPUT ELEMENT FEATURE_TYPE ListExploder_LIST_FOUND @RemoveAttributes(ElementFactory.baseCloned) +# ------------------------------------------------------------------------- + +# Since the Tcl "END" index specification starts at -1 for the second +# last character, and we've defined -1 to be the last charater, we've got +# small bit of fiddling to do + +Tcl2 proc SubstringExtractor_2_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } +Tcl2 proc SubstringExtractor_2_extract {startIdx endIdx} { FME_SetAttribute [FME_DecodeText _substring] [string range [FME_GetAttribute [FME_DecodeText text_line_data]] [SubstringExtractor_2_fixLastIndex $startIdx] [SubstringExtractor_2_fixLastIndex $endIdx]] } +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor_2 INPUT FEATURE_TYPE ListExploder_LIST_FOUND OUTPUT FEATURE_TYPE SubstringExtractor_2_OUTPUT @Tcl2("SubstringExtractor_2_extract @EvaluateExpression(FDIV,FLOAT,ValueStart-1,SubstringExtractor_2) @EvaluateExpression(FDIV,FLOAT,ValueStart-1+ValueLen-1,SubstringExtractor_2)") + +# ------------------------------------------------------------------------- + +Tcl2 proc AttributeTrimmer_2_16d65152_b76d_45e9_92c1_2f245280f5c70_trimmer { trimChars} { set attrs [split {_substring,CASEID,HHID} {,}]; set trimChars [FME_DecodeText $trimChars]; foreach attr $attrs { set attrVal [FME_GetAttribute $attr]; set length [string length $attrVal]; if {$length > 0} { if {[string length $trimChars] == 0} { set result [string trim $attrVal]; } else { set result [string trim $attrVal $trimChars]; }; if {[string length $result] == 0 && {Yes} == {No}} { if { {trim} == {trimleft}} { set lastPos [expr $length - 1]; set result [string range $attrVal $lastPos $lastPos ]; } elseif { {trim} == {trimright}} { set result [string range $attrVal 0 0]; } else { set midPos [expr $length / 2]; set result [string range $attrVal $midPos $midPos]; }; }; FME_SetAttribute $attr $result; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeTrimmer_2 INPUT FEATURE_TYPE SubstringExtractor_2_OUTPUT OUTPUT FEATURE_TYPE AttributeTrimmer_2_OUTPUT @Tcl2("AttributeTrimmer_2_16d65152_b76d_45e9_92c1_2f245280f5c70_trimmer {} ") + +# ------------------------------------------------------------------------- + +INCLUDE [ set macroLine "MACRO AttributeRemover_2_LIST_EXP "; foreach attr [split ""] { set attr [FME_DecodeText $attr]; set attr [regsub "{}$" $attr "{}.*"]; set attr [regsub -all "{}" $attr "\\{\[0-9\]+\\}"]; append macroLine ",^$attr$"; }; puts $macroLine; ] +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRemover_2 INPUT FEATURE_TYPE AttributeTrimmer_2_OUTPUT OUTPUT FEATURE_TYPE AttributeRemover_2_OUTPUT @RemoveAttributes(fme_encoded,_element_index,FMETYPE,Label,Len,Occurrences,Start,text_line_data) @RemoveAttributes(fme_pcre_match"$(AttributeRemover_2_LIST_EXP)") + +FACTORY_DEF * TeeFactory FACTORY_NAME "AttributeRemover_2 OUTPUT Splitter" INPUT FEATURE_TYPE AttributeRemover_2_OUTPUT OUTPUT FEATURE_TYPE AttributeRemover_2_OUTPUT_0_FeWVeHgY9o4= OUTPUT FEATURE_TYPE AttributeRemover_2_OUTPUT_1_FeWVeHgY9o4= +FACTORY_DEF * TeeFactory FACTORY_NAME "AttributeRemover_2_OUTPUT_0_FeWVeHgY9o4= Disabled Nuker -1 36" INPUT FEATURE_TYPE AttributeRemover_2_OUTPUT_0_FeWVeHgY9o4= +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {AttributeRemover_2_Output} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME AttributeRemover_2_Output_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRemover_2_Output_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME AttributeRemover_2_Output_FeatureDirector INPUT FEATURE_TYPE AttributeRemover_2_OUTPUT_0_FeWVeHgY9o4= TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE AttributeRemover_2_Output___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE AttributeRemover_2_Output___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME AttributeRemover_2_Output___FeatureDirector1 INPUT FEATURE_TYPE AttributeRemover_2_Output___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE AttributeRemover_2_Output___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE AttributeRemover_2_Output___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRemover_2_Output_VectorSetterUpper INPUT FEATURE_TYPE AttributeRemover_2_Output___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc AttributeRemover_2_Output_4fa9a5e5_9eac_4bf6_bc82_442e21756af10_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRemover_2_Output___PointCloudThinner INPUT FEATURE_TYPE AttributeRemover_2_Output___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("AttributeRemover_2_Output_4fa9a5e5_9eac_4bf6_bc82_442e21756af10_thinPointCloud") +Tcl2 proc AttributeRemover_2_Output_4fa9a5e5_9eac_4bf6_bc82_442e21756af10_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRemover_2_Output_RasterSetterUpper INPUT FEATURE_TYPE AttributeRemover_2_Output___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("AttributeRemover_2_Output_4fa9a5e5_9eac_4bf6_bc82_442e21756af10_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# AttributeRemover_2_Output_4fa9a5e5_9eac_4bf6_bc82_442e21756af10_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO AttributeRemover_2_Output_4fa9a5e5_9eac_4bf6_bc82_442e21756af10_VIS_FEAT_TYPE AttributeRemover_2_Output$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME AttributeRemover_2_Output_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(AttributeRemover_2_Output_4fa9a5e5_9eac_4bf6_bc82_442e21756af10_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA _inputLineNumber,varchar255,_rtStart,varchar255,_rtLen,varchar255,HHID,varchar255,CASEID,varchar255,FileCode,varchar255,RecordName,varchar255,RecordTypeValue,varchar255,Name,varchar255,_substring,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_2 INPUT FEATURE_TYPE AttributeRemover_2_OUTPUT_1_FeWVeHgY9o4= OUTPUT FEATURE_TYPE BulkAttributeRenamer_2_OUTPUT @RenameAttributes(PATTERN_REPLACE, PCREGEXPREPLACE, , ".*", "@EvaluateExpression(FDIV,STRING_ENCODED,ValueName,BulkAttributeRenamer_2)", "", "_substring", "-_") + +# ------------------------------------------------------------------------- + +DEFAULT_MACRO Aggregator_BREAK_ATTR +INCLUDE [if {"Yes" == "Yes"} {puts {MACRO Aggregator_BREAK_ATTR BREAK_BEFORE_FIELD_CHANGE _inputLineNumber RecordName RecordTypeValue} }] +FACTORY_DEF * AggregateFactory FACTORY_NAME Aggregator INPUT FEATURE_TYPE BulkAttributeRenamer_2_OUTPUT MODE ONE_LEVEL GROUP_BY _inputLineNumber RecordName RecordTypeValue $(Aggregator_BREAK_ATTR) REMOVE_GEOMETRY YES ACCUMULATE_ATTRIBUTES Yes SEPARATOR OUTPUT AGGREGATE FEATURE_TYPE Aggregator_AGGREGATE + +FACTORY_DEF * TeeFactory FACTORY_NAME "Aggregator AGGREGATE Splitter" INPUT FEATURE_TYPE Aggregator_AGGREGATE OUTPUT FEATURE_TYPE Aggregator_AGGREGATE_0_qtKD1R8siTs= OUTPUT FEATURE_TYPE Aggregator_AGGREGATE_1_qtKD1R8siTs= +# ------------------------------------------------------------------------- +FACTORY_DEF * AttrSetFactory FACTORY_NAME AttributeCreator ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV INPUT FEATURE_TYPE Aggregator_AGGREGATE_1_qtKD1R8siTs= ATTR _outname ValueFileCode_ValueRecordName OUTPUT OUTPUT FEATURE_TYPE AttributeCreator_OUTPUT +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {Aggregator_Aggregate} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME Aggregator_Aggregate_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME Aggregator_Aggregate_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME Aggregator_Aggregate_FeatureDirector INPUT FEATURE_TYPE Aggregator_AGGREGATE_0_qtKD1R8siTs= TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE Aggregator_Aggregate___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE Aggregator_Aggregate___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME Aggregator_Aggregate___FeatureDirector1 INPUT FEATURE_TYPE Aggregator_Aggregate___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE Aggregator_Aggregate___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE Aggregator_Aggregate___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME Aggregator_Aggregate_VectorSetterUpper INPUT FEATURE_TYPE Aggregator_Aggregate___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc Aggregator_Aggregate_0a0e9e7d_9b02_422f_95a2_aaf22605da680_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME Aggregator_Aggregate___PointCloudThinner INPUT FEATURE_TYPE Aggregator_Aggregate___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("Aggregator_Aggregate_0a0e9e7d_9b02_422f_95a2_aaf22605da680_thinPointCloud") +Tcl2 proc Aggregator_Aggregate_0a0e9e7d_9b02_422f_95a2_aaf22605da680_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME Aggregator_Aggregate_RasterSetterUpper INPUT FEATURE_TYPE Aggregator_Aggregate___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("Aggregator_Aggregate_0a0e9e7d_9b02_422f_95a2_aaf22605da680_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# Aggregator_Aggregate_0a0e9e7d_9b02_422f_95a2_aaf22605da680_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO Aggregator_Aggregate_0a0e9e7d_9b02_422f_95a2_aaf22605da680_VIS_FEAT_TYPE Aggregator_Aggregate$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME Aggregator_Aggregate_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(Aggregator_Aggregate_0a0e9e7d_9b02_422f_95a2_aaf22605da680_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA _inputLineNumber,varchar255,_rtStart,varchar255,_rtLen,varchar255,HHID,varchar255,CASEID,varchar255,FileCode,varchar255,RecordName,varchar255,RecordTypeValue,varchar255,Name,varchar255,_substring,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" INPUT FEATURE_TYPE * ROUTE FME_GENERIC AttributeCreator_OUTPUT TO CSV __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODEDfme_template_feature_typeFile1,SupplyAttributesENCODED__wb_out_feat_type__File1,EvaluateExpressionATTR_CREATE_EXPR__wb_out_feat_type__atValueopenparen_outnamecloseparenFile1 GEOMETRY OUTPUT ROUTED FEATURE_TYPE * @FeatureType(ENCODED,@Value(__wb_out_feat_type__)) @RemoveAttributes(__wb_out_feat_type__) OUTPUT NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__ + +# ------------------------------------------------------------------------- + +FACTORY_DEF * CreationFactory CREATE_AT_END OUTPUT FEATURE_TYPE __NUKEME__ @TCL("if [file exists {$(WORKSPACE_TEMP_DIR)}] {set files [glob -nocomplain -directory {$(WORKSPACE_TEMP_DIR)} -tails *.ffs]; if {[llength $files] == 1} { set theFile {$(WORKSPACE_TEMP_DIR)/}; append theFile [lindex $files 0]; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -f FFS $theFile & \175; } elseif { [llength $files] == 0 } { catch { file delete -force {$(WORKSPACE_TEMP_DIR)} }; } else { set filesNoExt {}; set lastfile {}; foreach {fileName} [lsort $files] { set fileNoExt [string trimright $fileName {.ffs}]; if [regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] { if { $fileNoExtBase == $lastfile } { continue } }; set lastfile $fileNoExt; lappend filesNoExt $fileNoExt }; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -d {$(WORKSPACE_TEMP_DIR)} -a ffs -f FFS $filesNoExt & \175; }; }; ") +FACTORY_DEF * TeeFactory INPUT FEATURE_TYPE __NUKEME__ +# ------------------------------------------------------------------------- +CSV_2_DEF_TEMPLATE File1 csv_append_mode INHERIT_FROM_WRITER csv_field_names INHERIT_FROM_WRITER fme_schema_readers "TEXTLINE_1 CSV_1 SCHEMA_FROM_TABLE_1" fme_schema_feature_first No fme_schema_name_expression @EvaluateExpression(FDIV,STRING,ValueRecordName,File1) diff --git a/DataFileParsing/CSPro_Dat_Parser_Runner.fmw b/DataFileParsing/CSPro_Dat_Parser_Runner.fmw new file mode 100644 index 0000000..e445927 --- /dev/null +++ b/DataFileParsing/CSPro_Dat_Parser_Runner.fmw @@ -0,0 +1,956 @@ +#! +#! RECH2RECH6RECHMLRECHMHNA" +# +# +#! DOC_EXTENTS="2294.52 775.758" +#! LEGAL_TERMS_CONDITIONS="" +#! ATTR_TYPE_ENCODING="SDF" +#! DESTINATION_ROUTING_FILE="" +#! DOC_TOP_LEFT="346.002 -1079.26" +#! FME_DOCUMENT_PRIORGUID="c7b964ed-1390-457b-9f6c-9cfd5598a6e9,df61dc4a-0323-4b18-b5ea-ab8ea1bf3699,be8a1266-e88e-4804-aae3-584d8e2f7129,bca91c67-225b-4f46-85b4-3d05f43bbe25" +#! LOG_MAX_RECORDED_FEATURES="200" +#! MULTI_WRITER_DATASET_ORDER="BY_ID" +#! SOURCE_ROUTING_FILE="" +#! END_PYTHON="" +#! PASSWORD="" +#! CATEGORY="" +#! LOG_MAX_PRECISION="Yes" +#! MAX_LOG_FEATURES="200" +#! LAST_SAVE_BUILD="FME(R) 2015.1.0.0 (20150426 - Build 15479 - WIN64)" +#! WORKSPACE_VERSION="1" +#! SHOW_ANNOTATIONS="true" +#! TITLE="" +#! FME_GEOMETRY_HANDLING="Enhanced" +#! DESTINATION="NONE" +#! END_TCL="" +#! DESCRIPTION="" +#! BEGIN_TCL="" +#! REQUIREMENTS="" +#! LOG_FILE="" +#! LAST_SAVE_DATE="2015-05-07T09:56:00" +#! ZOOM_SCALE="100" +#! FME_BUILD_NUM="15479" +#! FME_STROKE_MAX_DEVIATION="0" +#! FME_DOCUMENT_GUID="04bc01ac-a572-4e59-93fa-23ad7c26595e" +#! HISTORY="" +#! REQUIREMENTS_KEYWORD="" +#! FME_REPROJECTION_ENGINE="FME" +#! BEGIN_PYTHON="" +#! WARN_INVALID_XFORM_PARAM="Yes" +#! SOURCE="NONE" +#! SHOW_INFO_NODES="true" +#! USAGE="" +#! VIEW_POSITION="-90.0009 0" +#! REDIRECT_TERMINATORS="NONE" +#! IGNORE_READER_FAILURE="No" +#! FME_IMPLICIT_CSMAP_REPROJECTION_MODE="Auto" +#! FME_SERVER_SERVICES="" +#! > +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +GUI IGNORE PATH_IN_GLOB_PATTERN_PATH_1,PATH_IN_TYPE_PATH_1,PATH_IN_RETRIEVE_FILE_PROPERTIES_PATH_1,SourceDataset_PATH_1,PATH_IN_NETWORK_AUTHENTICATION_PATH_1 +DEFAULT_MACRO SourceDataset_PATH C:\Users\zool1301\Documents\DHS\Phase6_2\ExtractedSurveysAndShapes +GUI MULTIDIR SourceDataset_PATH Source Folder and File Pathnames Folder: +DEFAULT_MACRO OutputCSVDir C:\Users\zool1301\Documents\DHS\Phase6_2\ExtractedSurveyRecords_Parasitemia +GUI DIRNAME OutputCSVDir Destination CSV (CommaSeparatedValue) Folder: +DEFAULT_MACRO RecordTypes RECH1RECH2RECH6RECHMLRECHMHNA +GUI OPTIONAL TEXT_EDIT_OR_NUM RecordTypes Record types (Tables) to Extract (Comma separated list): +INCLUDE [ if {{$(SourceDataset_PATH)} == {}} { puts_real {Parameter 'SourceDataset_PATH' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(OutputCSVDir)} == {}} { puts_real {Parameter 'OutputCSVDir' must be given a value.}; exit 1; }; ] +#! START_HEADER +#! START_WB_HEADER +READER_TYPE PATH +READER_KEYWORD PATH_1 +READER_GEN_DIRECTIVES _MERGE_SCHEMAS,YES,TYPE,FILE,RETRIEVE_FILE_PROPERTIES,NO,GLOB_PATTERN,*.dat +WRITER_TYPE NULL +WRITER_KEYWORD NULL_DEST +NULL_DEST_DATASET null +#! END_WB_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "PATH_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER PATH PATH_1 +# ============================================================================= +DEFAULT_MACRO PATH_IN_GLOB_PATTERN_PATH_1 *.dat +PATH_1_GLOB_PATTERN "$(PATH_IN_GLOB_PATTERN_PATH_1)" +GUI OPTIONAL TEXT_ENCODED PATH_IN_GLOB_PATTERN_PATH_1 Path Filter: +# ============================================================================= +DEFAULT_MACRO PATH_IN_TYPE_PATH_1 FILE +PATH_1_TYPE "$(PATH_IN_TYPE_PATH_1)" +GUI CHOICE PATH_IN_TYPE_PATH_1 ANY%DIRECTORY%FILE Allowed Path Type: +# ============================================================================= +DEFAULT_MACRO PATH_IN_RETRIEVE_FILE_PROPERTIES_PATH_1 NO +PATH_1_RETRIEVE_FILE_PROPERTIES "$(PATH_IN_RETRIEVE_FILE_PROPERTIES_PATH_1)" +GUI CHOICE PATH_IN_RETRIEVE_FILE_PROPERTIES_PATH_1 YES%NO Retrieve file properties: +# ===================================================================== +# The following GUI line prompts for the folder from which to +# read +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_PATH_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER PATH PATH_1 +DEFAULT_MACRO SourceDataset_PATH_1 $(SourceDataset_PATH) +GUI MULTIDIR SourceDataset_PATH_1 Source Folder and File Pathnames Folder: +# =========================================================================== +DEFAULT_MACRO PATH_IN_NETWORK_AUTHENTICATION_PATH_1 +PATH_1_NETWORK_AUTHENTICATION "$(PATH_IN_NETWORK_AUTHENTICATION_PATH_1)" +GUI OPTIONAL AUTHENTICATOR PATH_IN_NETWORK_AUTHENTICATION_PATH_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +PATH_1_DATASET "$(SourceDataset_PATH_1)" +#! END_SOURCE_HEADER +#! END_HEADER + +LOG_FILENAME "$(FME_MF_DIR)CSPro_Dat_Parser_Runner.log" +LOG_APPEND NO +LOG_MAX_FEATURES 200 +LOG_MAX_RECORDED_FEATURES 200 +LOG_MAX_PRECISION Yes +FME_REPROJECTION_ENGINE FME +FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto +FME_GEOMETRY_HANDLING Enhanced +FME_STROKE_MAX_DEVIATION 0 +LOG_FILTER_MASK -1 +DEFAULT_MACRO DATASET_KEYWORD_PATH_1 PATH_1 +# ------------------------------------------------------------------------- + +PATH_1_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +MULTI_READER_CONTINUE_ON_READER_FAILURE No + +# ------------------------------------------------------------------------- + +MACRO WORKSPACE_NAME CSPro_Dat_Parser_Runner +MACRO FME_VIEWER_APP fmedatainspector +# ------------------------------------------------------------------------- + +INCLUDE [ if {[info exists env(FME_TEMP)] && [file isdirectory $env(FME_TEMP)]} {set gVisualizerTemp $env(FME_TEMP)} elseif {[info exists env(TEMP)] && [file isdirectory $env(TEMP)]} {set gVisualizerTemp $env(TEMP)} elseif { $tcl_platform(platform) == "unix" } {set gVisualizerTemp "/tmp"} else {set gVisualizerTemp c:}; regsub -all {[ ,&]} {$(WORKSPACE_NAME)} {_} wsname; set gVisualizerTemp $gVisualizerTemp/${wsname}_[clock format [clock seconds] -format %H%M%S]; puts "MACRO WORKSPACE_TEMP_DIR $gVisualizerTemp"; +MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/inspector.ffs +MACRO VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector.fsc +MACRO VISUALIZER_CREATE_SPATIAL_INDEX YES +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" INPUT FEATURE_TYPE * @SupplyAttributes(multi_reader_keyword,PATH_1) ROUTE PATH PATH_1::PATH TO FME_GENERIC ::PATH ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * +PATH_1_MERGE_DEF PATH_1::PATH EXACT PATH +DEFAULT_MACRO WB_CURRENT_CONTEXT +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeCopier INPUT FEATURE_TYPE PATH OUTPUT FEATURE_TYPE AttributeCopier_OUTPUT @CopyAttributes(ENCODED,ATTR_LIST_DEF_VAL, path_windows,path_csvspec,) + +# ------------------------------------------------------------------------- + +MACRO casemac +INCLUDE [ if { {NO} == {NO} } { puts {MACRO casemac -nocase}} ] +Tcl2 proc StringReplacer_965dc691_c6fb_431c_a5b9_f3d13b8a3bb71_replacer { findText replaceText invalidValue} { set attrs [split \"path_csvspec\" {,}]; set findValue [FME_DecodeText $findText]; set replaceValue [FME_DecodeText $replaceText]; foreach attr $attrs { set attrVal [FME_GetAttribute $attr]; set noMatch true; if {{NO} == {YES}} { set newAttrVal [regsub $(casemac) -all -- $findValue $attrVal $replaceValue]; } else { set newAttrVal [string map $(casemac) [list $findValue $replaceValue] $attrVal]; }; if { $newAttrVal ne $attrVal } { set noMatch false; FME_SetAttribute $attr $newAttrVal; }; if {$noMatch} { if { $invalidValue == {FME_NULL_VALUE} } { FME_SetAttributeNull $attr; } elseif { $invalidValue != {_FME_NO_OP_} } { FME_SetAttribute $attr [FME_DecodeText $invalidValue]; }; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME StringReplacer INPUT FEATURE_TYPE AttributeCopier_OUTPUT OUTPUT FEATURE_TYPE StringReplacer_OUTPUT @Tcl2("StringReplacer_965dc691_c6fb_431c_a5b9_f3d13b8a3bb71_replacer {ExtractedSurveysAndShapes} {SurveySpecs} {_FME_NO_OP_}") + +# ------------------------------------------------------------------------- + +MACRO casemac +INCLUDE [ if { {NO} == {NO} } { puts {MACRO casemac -nocase}} ] +Tcl2 proc StringReplacer_2_5a077652_151d_408d_9c25_e5ebab5325f31_replacer { findText replaceText invalidValue} { set attrs [split \"path_csvspec\" {,}]; set findValue [FME_DecodeText $findText]; set replaceValue [FME_DecodeText $replaceText]; foreach attr $attrs { set attrVal [FME_GetAttribute $attr]; set noMatch true; if {{NO} == {YES}} { set newAttrVal [regsub $(casemac) -all -- $findValue $attrVal $replaceValue]; } else { set newAttrVal [string map $(casemac) [list $findValue $replaceValue] $attrVal]; }; if { $newAttrVal ne $attrVal } { set noMatch false; FME_SetAttribute $attr $newAttrVal; }; if {$noMatch} { if { $invalidValue == {FME_NULL_VALUE} } { FME_SetAttributeNull $attr; } elseif { $invalidValue != {_FME_NO_OP_} } { FME_SetAttribute $attr [FME_DecodeText $invalidValue]; }; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME StringReplacer_2 INPUT FEATURE_TYPE StringReplacer_OUTPUT OUTPUT FEATURE_TYPE StringReplacer_2_OUTPUT @Tcl2("StringReplacer_2_5a077652_151d_408d_9c25_e5ebab5325f31_replacer {.DAT} {.FlatRecordSpec.csv} {_FME_NO_OP_}") + +# ------------------------------------------------------------------------- + +# Convert the workspace name to one containing only / -- Tcl likes this better +# (and so do I) + +# And determine the "NULL" device so we can ensure we don't get stray output +# messing up our stdout if we are running workspaces in the background +# See http://wiki.tcl.tk/1649 for a description of the tcl_platform +# variable, the "platform" part seems to have valid values windows, unix, and +# macintosh (the latter of which is actually pre-OS X) + +Tcl2 if { $tcl_platform(platform) == {windows} } { set ::null_device {NUL:}; set ::__WR_ENV_HELPER__ {}; } else { set ::null_device {/dev/null}; set ::__WR_ENV_HELPER__ {/usr/bin/env FME_SUBPROCESS_RUN_DETACHED=1} }; +Tcl2 proc WorkspaceRunner_e4d1b99e_2c08_47a7_8f5a_a470e5295dee1_runner { parmListString workspaceFile } { set workspaceFileUnix [regsub -all {\\} $workspaceFile {/}]; set parmListString [string trim $parmListString {()}]; set comment { Build up the command line in a list, which we'll "eval" to get at its pieces when we actually execute the "exec". }; lappend commandArguments {*}$::__WR_ENV_HELPER__ {$(FME_HOME_UNIX)/fme} $workspaceFileUnix; set parmList [split $parmListString {,}]; foreach {parmName encodedValue} $parmList { set comment { Decode the parameter value which we now know is very encoded to guard it from the parser and append them each to a new list which will be passed as the arguments to the exec function. Note that the parameter names need to be turned into macro settings by prepending them with -- Note also that the WorkspaceRunner sometimes encodes attribute dereferences by placing at the beginning rather than using @Value. Further note that string range forgives if the ending index is > the length of the string, so we can just ask for the first 5 characters when we're checking for . }; lappend commandArguments \"--$parmName\"; set comment { for backwards compatibility, replace first }; if { [string range $encodedValue 0 4] == {} && [string length $encodedValue] > 5 } { set encodedValue [string replace $encodedValue 0 4 {Value}]]; append encodedValue ""; }; set comment { We used to call FME_DecodeTextOrAttr here. After changes to the code that writes out the mapping file section, we don't need to do this any more because the value would be in the correct state of encoding as required by the child workspace }; set comment { parameter values starting with '<' causes tcl exec to fail so we escape leading '<' with backslash and then do the reverse when parsing command line arguments }; if { [string index $encodedValue 0] == {<} } { set encodedValue "\\$encodedValue"; }; lappend commandArguments $encodedValue; }; set comment { Now optionally run this in a detached way if we were not supposed to wait by adding & on the end to put it in the background. And at the same time, ensure that any stray stdout/stderr is routed to null. }; if { {No} == {No} } { lappend commandArguments \">$::null_device\"; lappend commandArguments \"<$::null_device\"; FME_LogMessage fme_inform \"WorkspaceRunner: Initiating run of FME Workspace $workspaceFile with command line:\"; } else { FME_LogMessage fme_inform \"WorkspaceRunner: Running FME Workspace $workspaceFile with command line:\"; }; set comment { The below 2>@1 forces any standard error output to go into the msg variable or to NULL if we're running in the background. }; lappend commandArguments {2>@1}; if { {No} == {No} } { lappend commandArguments {&}; }; FME_LogMessage fme_inform [concat WorkspaceRunner: $commandArguments]; if { {No} == {No} } { after 1000; while { [FME_CanSpawnFme 7] == {0} } { after 2000; }; }; if {[catch {eval [concat exec $commandArguments] } msg ]} { set msg [regsub {\015*\012child[^\012]*$} $msg {}]; FME_LogMessage fme_warn \"WorkspaceRunner: Failed to run workspace $workspaceFileUnix -- Trace was:\n\n$msg\n\"; FME_SetAttribute _failure_message $msg; return FAILURE; } else { global WorkspaceRunner_e4d1b99e_2c08_47a7_8f5a_a470e5295dee1_process_count; incr WorkspaceRunner_e4d1b99e_2c08_47a7_8f5a_a470e5295dee1_process_count; if { {No} == {No} } { FME_LogMessage fme_inform \"WorkspaceRunner: Successfully initiated run of workspace $workspaceFile\"; global WorkspaceRunner_e4d1b99e_2c08_47a7_8f5a_a470e5295dee1_all_processes; lappend WorkspaceRunner_e4d1b99e_2c08_47a7_8f5a_a470e5295dee1_all_processes $msg; } else { FME_LogMessage fme_inform \"WorkspaceRunner: Successfully ran workspace $workspaceFile\"; }; return SUCCESS; }; } +FACTORY_DEF * TestFactory FACTORY_NAME WorkspaceRunner_ExecutorAndRouter INPUT FEATURE_TYPE StringReplacer_2_OUTPUT TEST @Tcl2("WorkspaceRunner_e4d1b99e_2c08_47a7_8f5a_a470e5295dee1_runner {(SurveySpecCSV,@EvaluateExpression(FDIV,STRING,Valuepath_csvspec,WorkspaceRunner),SurveyDAT,@EvaluateExpression(FDIV,STRING,Valuepath_windows,WorkspaceRunner),RecordTypes,@EvaluateExpression(FDIV,STRING_ENCODED,$(RecordTypes),WorkspaceRunner),OutputCSVDir,@EvaluateExpression(FDIV,STRING,$(OutputCSVDir$encode),WorkspaceRunner))} {@EvaluateExpression(FDIV,STRING,$(FME_MF_DIR$encode)CSPro_Dat_Parser.fmw,WorkspaceRunner)}") == SUCCESS OUTPUT PASSED FEATURE_TYPE WorkspaceRunner_SUCCEEDED OUTPUT FAILED FEATURE_TYPE WorkspaceRunner_FAILED +Tcl2 proc WorkspaceRunner_e4d1b99e_2c08_47a7_8f5a_a470e5295dee1_summarizer { } { global WorkspaceRunner_e4d1b99e_2c08_47a7_8f5a_a470e5295dee1_process_count; set comment { incr 0 creates the variable if it wasn't present }; incr WorkspaceRunner_e4d1b99e_2c08_47a7_8f5a_a470e5295dee1_process_count 0; FME_SetAttribute _proc_count [set WorkspaceRunner_e4d1b99e_2c08_47a7_8f5a_a470e5295dee1_process_count]; global WorkspaceRunner_e4d1b99e_2c08_47a7_8f5a_a470e5295dee1_all_processes; if {[info exists WorkspaceRunner_e4d1b99e_2c08_47a7_8f5a_a470e5295dee1_all_processes]} { set index 0; foreach pid [set WorkspaceRunner_e4d1b99e_2c08_47a7_8f5a_a470e5295dee1_all_processes] { FME_SetAttribute \"_processes{$index}\" $pid; incr index; } } } +FACTORY_DEF * CreationFactory FACTORY_NAME WorkspaceRunner_SummaryMaker CREATE_AT_END yes OUTPUT FEATURE_TYPE WorkspaceRunner_SUMMARY @Tcl2(WorkspaceRunner_e4d1b99e_2c08_47a7_8f5a_a470e5295dee1_summarizer) + +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {WorkspaceRunner_Summary} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME WorkspaceRunner_Summary_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Summary_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME WorkspaceRunner_Summary_FeatureDirector INPUT FEATURE_TYPE WorkspaceRunner_SUMMARY TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE WorkspaceRunner_Summary___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE WorkspaceRunner_Summary___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME WorkspaceRunner_Summary___FeatureDirector1 INPUT FEATURE_TYPE WorkspaceRunner_Summary___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE WorkspaceRunner_Summary___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE WorkspaceRunner_Summary___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Summary_VectorSetterUpper INPUT FEATURE_TYPE WorkspaceRunner_Summary___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc WorkspaceRunner_Summary_a6de30e6_d884_4f5b_9b83_d1bf09c763711_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Summary___PointCloudThinner INPUT FEATURE_TYPE WorkspaceRunner_Summary___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("WorkspaceRunner_Summary_a6de30e6_d884_4f5b_9b83_d1bf09c763711_thinPointCloud") +Tcl2 proc WorkspaceRunner_Summary_a6de30e6_d884_4f5b_9b83_d1bf09c763711_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Summary_RasterSetterUpper INPUT FEATURE_TYPE WorkspaceRunner_Summary___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("WorkspaceRunner_Summary_a6de30e6_d884_4f5b_9b83_d1bf09c763711_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# WorkspaceRunner_Summary_a6de30e6_d884_4f5b_9b83_d1bf09c763711_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO WorkspaceRunner_Summary_a6de30e6_d884_4f5b_9b83_d1bf09c763711_VIS_FEAT_TYPE WorkspaceRunner_Summary$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME WorkspaceRunner_Summary_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(WorkspaceRunner_Summary_a6de30e6_d884_4f5b_9b83_d1bf09c763711_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA _proc_count,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {WorkspaceRunner_Failed} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME WorkspaceRunner_Failed_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Failed_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME WorkspaceRunner_Failed_FeatureDirector INPUT FEATURE_TYPE WorkspaceRunner_FAILED TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE WorkspaceRunner_Failed___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE WorkspaceRunner_Failed___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME WorkspaceRunner_Failed___FeatureDirector1 INPUT FEATURE_TYPE WorkspaceRunner_Failed___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE WorkspaceRunner_Failed___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE WorkspaceRunner_Failed___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Failed_VectorSetterUpper INPUT FEATURE_TYPE WorkspaceRunner_Failed___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc WorkspaceRunner_Failed_03de3fc1_039f_4d97_8462_f7ad162daf791_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Failed___PointCloudThinner INPUT FEATURE_TYPE WorkspaceRunner_Failed___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("WorkspaceRunner_Failed_03de3fc1_039f_4d97_8462_f7ad162daf791_thinPointCloud") +Tcl2 proc WorkspaceRunner_Failed_03de3fc1_039f_4d97_8462_f7ad162daf791_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Failed_RasterSetterUpper INPUT FEATURE_TYPE WorkspaceRunner_Failed___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("WorkspaceRunner_Failed_03de3fc1_039f_4d97_8462_f7ad162daf791_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# WorkspaceRunner_Failed_03de3fc1_039f_4d97_8462_f7ad162daf791_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO WorkspaceRunner_Failed_03de3fc1_039f_4d97_8462_f7ad162daf791_VIS_FEAT_TYPE WorkspaceRunner_Failed$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME WorkspaceRunner_Failed_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(WorkspaceRunner_Failed_03de3fc1_039f_4d97_8462_f7ad162daf791_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA path_unix,varchar255,path_windows,varchar255,path_csvspec,varchar255,path_rootname,varchar255,path_filename,varchar255,path_extension,varchar255,path_filesize,varchar255,path_ownername,varchar255,path_readonly,varchar255,path_modified_date,varchar255,path_created_date,varchar255,path_accessed_date,varchar255,path_directory_unix,varchar255,path_directory_windows,varchar255,path_type,varchar255,_failure_message,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {WorkspaceRunner_Succeeded} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME WorkspaceRunner_Succeeded_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Succeeded_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME WorkspaceRunner_Succeeded_FeatureDirector INPUT FEATURE_TYPE WorkspaceRunner_SUCCEEDED TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE WorkspaceRunner_Succeeded___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE WorkspaceRunner_Succeeded___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME WorkspaceRunner_Succeeded___FeatureDirector1 INPUT FEATURE_TYPE WorkspaceRunner_Succeeded___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE WorkspaceRunner_Succeeded___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE WorkspaceRunner_Succeeded___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Succeeded_VectorSetterUpper INPUT FEATURE_TYPE WorkspaceRunner_Succeeded___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc WorkspaceRunner_Succeeded_e3ebbce3_bc10_48b8_add9_df8324a5e5361_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Succeeded___PointCloudThinner INPUT FEATURE_TYPE WorkspaceRunner_Succeeded___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("WorkspaceRunner_Succeeded_e3ebbce3_bc10_48b8_add9_df8324a5e5361_thinPointCloud") +Tcl2 proc WorkspaceRunner_Succeeded_e3ebbce3_bc10_48b8_add9_df8324a5e5361_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Succeeded_RasterSetterUpper INPUT FEATURE_TYPE WorkspaceRunner_Succeeded___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("WorkspaceRunner_Succeeded_e3ebbce3_bc10_48b8_add9_df8324a5e5361_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# WorkspaceRunner_Succeeded_e3ebbce3_bc10_48b8_add9_df8324a5e5361_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO WorkspaceRunner_Succeeded_e3ebbce3_bc10_48b8_add9_df8324a5e5361_VIS_FEAT_TYPE WorkspaceRunner_Succeeded$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME WorkspaceRunner_Succeeded_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(WorkspaceRunner_Succeeded_e3ebbce3_bc10_48b8_add9_df8324a5e5361_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA path_unix,varchar255,path_windows,varchar255,path_csvspec,varchar255,path_rootname,varchar255,path_filename,varchar255,path_extension,varchar255,path_filesize,varchar255,path_ownername,varchar255,path_readonly,varchar255,path_modified_date,varchar255,path_created_date,varchar255,path_accessed_date,varchar255,path_directory_unix,varchar255,path_directory_windows,varchar255,path_type,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" INPUT FEATURE_TYPE * OUTPUT ROUTED FEATURE_TYPE * @FeatureType(ENCODED,@Value(__wb_out_feat_type__)) @RemoveAttributes(__wb_out_feat_type__) OUTPUT NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__ + +# ------------------------------------------------------------------------- + +FACTORY_DEF * CreationFactory CREATE_AT_END OUTPUT FEATURE_TYPE __NUKEME__ @TCL("if [file exists {$(WORKSPACE_TEMP_DIR)}] {set files [glob -nocomplain -directory {$(WORKSPACE_TEMP_DIR)} -tails *.ffs]; if {[llength $files] == 1} { set theFile {$(WORKSPACE_TEMP_DIR)/}; append theFile [lindex $files 0]; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -f FFS $theFile & \175; } elseif { [llength $files] == 0 } { catch { file delete -force {$(WORKSPACE_TEMP_DIR)} }; } else { set filesNoExt {}; set lastfile {}; foreach {fileName} [lsort $files] { set fileNoExt [string trimright $fileName {.ffs}]; if [regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] { if { $fileNoExtBase == $lastfile } { continue } }; set lastfile $fileNoExt; lappend filesNoExt $fileNoExt }; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -d {$(WORKSPACE_TEMP_DIR)} -a ffs -f FFS $filesNoExt & \175; }; }; ") +FACTORY_DEF * TeeFactory INPUT FEATURE_TYPE __NUKEME__ diff --git a/DataFileParsing/DHS_DAT_Splitter.ipynb b/DataFileParsing/DHS_DAT_Splitter.ipynb new file mode 100644 index 0000000..96a8660 --- /dev/null +++ b/DataFileParsing/DHS_DAT_Splitter.ipynb @@ -0,0 +1,194 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:29916d52230db3c73fa58a7e6d047bcd7438b52a6345cad9550ad2064123dfb9" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import csv\n", + "import glob\n", + "from operator import itemgetter\n", + "import os" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "inSpecDir = r'C:\\Users\\zool1301\\Documents\\DHS\\Acquisition\\20150626_FullSiteScrape\\ParsedSpecs'\n", + "inDataDir = r'C:\\Users\\zool1301\\Documents\\DHS\\Acquisition\\20150626_FullSiteScrape\\downloads\\358'\n", + "outputCSVTableDir = r'C:\\Users\\zool1301\\Documents\\DHS\\Acquisition\\20150626_FullSiteScrape\\ProcessedTables'" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "allDatFiles = glob.glob(os.path.join(inDataDir, '*.dat'))\n", + "nColsPerRecType = {}\n", + "# rtFieldInfoAllFiles = {}\n", + "# resGlobal = {}" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Parses all DAT files based on their record specifications, generated separately, into individual CSVs: one per file and per record type" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "for datFN in allDatFiles:\n", + " # get the corresponding spec file\n", + " #filecode = os.path.basename(datFN).split(os.extsep)[0]\n", + " filecode = os.path.extsep.join(os.path.basename(datFN).split(os.path.extsep)[:-1])\n", + " specFileName = os.path.join(inSpecDir, '{0!s}.FlatRecordSpec.csv'.format(filecode))\n", + " outTestFN = os.path.join(outputCSVTableDir, \n", + " '{0!s}.{1!s}.csv'.format(filecode,'REC01'))\n", + " if os.path.exists(outTestFN):\n", + " print \"Already did \"+filecode\n", + " continue\n", + " print \"Parsing \"+filecode\n", + " # read the variables of this survey\n", + " with open(specFileName,'r') as dictFile:\n", + " dictFileReader = csv.DictReader(dictFile)\n", + " # the record type position info must be in the first line\n", + " recordTypeInfo = dictFileReader.next()\n", + " rtStart = int(recordTypeInfo['Start'])-1\n", + " rtEnd = int(recordTypeInfo['Len']) + rtStart\n", + " allVarsThisFile = [row for row in dictFileReader]\n", + " for fieldInfo in allVarsThisFile:\n", + " fieldInfo['Start'] = int(fieldInfo['Start'])\n", + " fieldInfo['Len'] = int(fieldInfo['Len'])\n", + " # sort them by record type then position in the row\n", + " allVarsThisFileSorted = sorted(allVarsThisFile, \n", + " key=(itemgetter('RecordTypeValue','Start')))\n", + " \n", + " # build dictionary of record type : list of its fields\n", + " rtFieldInfoThisFile = {}\n", + " for fieldInfo in allVarsThisFileSorted:\n", + " recordTag = fieldInfo['RecordTypeValue']\n", + " # do it for this file specifically\n", + " if recordTag not in rtFieldInfoThisFile:\n", + " rtFieldInfoThisFile[recordTag] = []\n", + " rtFieldInfoThisFile[recordTag].append(fieldInfo)\n", + " \n", + "# # build one across all files that contain this record type\n", + "# requires lotsa memory!\n", + "# if recordTag not in rtFieldInfoAllFiles:\n", + "# rtFieldInfoAllFiles[recordTag] = {}\n", + "# fieldName = fieldInfo['Name']\n", + "# if fieldName not in rtFieldInfoAllFiles[recordTag]:\n", + "# rtFieldInfoAllFiles[recordTag][fieldName] = fieldInfo\n", + "# else:\n", + "# # the position of a given field in the line has to be the same each time\n", + "# assert rtFieldInfoAllFiles[recordTag][fieldName]['Start'] == fieldInfo['Start']\n", + "# assert rtFieldInfoAllFiles[recordTag][fieldName]['Len'] == fieldInfo['Len']\n", + " \n", + " # read the data and put everything into a list in a dictionary keyed by record type\n", + " res = {}\n", + " colsPerRecTypeThisFile = {}\n", + " with open(datFN, 'r') as data:\n", + " for line in data:\n", + " recordtype = line[rtStart:rtEnd]\n", + " # get the spec for this type of row\n", + " if recordtype not in rtFieldInfoThisFile:\n", + " print \"Specification for recordtype '{0!s}' not found in file for {1!s}\".format(\n", + " recordtype, filecode)\n", + " continue\n", + " recordSpec = rtFieldInfoThisFile[recordtype]\n", + " if recordtype not in res:\n", + " res[recordtype] = []\n", + " # split the column-aligned text according to the row specification\n", + " rowParts = []\n", + " # this is the part that is inefficient in FME (lots of list items)\n", + " rowParts = [(line[i['Start']-1 : i['Start']+i['Len']-1]).strip() for i in recordSpec]\n", + " if recordtype not in colsPerRecTypeThisFile:\n", + " colsPerRecTypeThisFile[recordtype] = len(rowParts)\n", + " else:\n", + " assert len(rowParts) == colsPerRecTypeThisFile[recordtype]\n", + " # add as a list to the list of rows for this record type\n", + " res[recordtype].append(rowParts)#(\",\".join(rowParts))\n", + " #resGlobal[filecode] = res\n", + "\n", + " # write a csv for each record type\n", + " for recordtype,fields in rtFieldInfoThisFile.iteritems():\n", + " if not recordtype in res:\n", + " print \"No rows found for record type {0!s} in file {1!s} despite DCF specification\".format(\n", + " recordtype, filecode)\n", + " continue\n", + " fieldHeader = [i['Name'] for i in fields]\n", + " fieldRecords = set([i['RecordName'] for i in fields])\n", + " assert len(fieldRecords) == 1\n", + " recName = fieldRecords.pop()\n", + " outFN = os.path.join(outputCSVTableDir, '{0!s}.{1!s}.csv'.format(filecode,recName))\n", + " with open(outFN, 'wb') as outcsv:\n", + " csvwriter = csv.writer(outcsv)\n", + " csvwriter.writerow(fieldHeader)\n", + " csvwriter.writerows(res[recordtype])\n", + "\n", + "#for filecode, fileres in resGlobal.iteritems():\n", + "# for recordtype,fields in rtFieldInfoAllFiles.iteritems():\n", + "# allFieldsThisRecordSorted = sorted(fields, key=(itemgetter('Start')))\n", + "# groupFieldHeader = [i['Name'] for i in allFieldsThisRecordSorted]\n", + "# fieldRecords = set([i['RecordName'] for i in fields])\n", + "# assert len(fieldRecords) == 1\n", + "# recName = fieldRecords.pop()\n", + "\n", + "# outGroupFN = r'C:\\Users\\zool1301\\Documents\\DHS\\Phase6\\ExtractedSurveyRecords_Python\\Grouped\\{0!s}_All.csv'.format(recName)\n", + "# if not os.path.exists(outGroupFN):\n", + "# with open(outGroupFN,'wb') as outcsv:\n", + "# csvwriter = csv.writer(outcsv)\n", + "# groupFieldHeader.insert(0,'FileCode')\n", + "# groupFieldHeader = [i.lower() for i in groupFieldHeader]\n", + "# csvwriter.writerow(groupFieldHeader)\n", + "# colsPerRecType[recordtype]=len(groupFieldHeader)\n", + "# #print fieldHeader\n", + "\n", + "# [i.insert(0,filecode) for i in fileres[recordtype]]\n", + "# with open(outGroupFN,'ab') as outcsv:\n", + "# csvwriter = csv.writer(outcsv)\n", + "# resThisFileThisRecord = fileres[recordtype]\n", + "# allSameLength = True\n", + "# for i in resThisFileThisRecord:\n", + "# if len(i) != groupFieldHeader\n", + "# allSameLength = False\n", + "# break\n", + "# if allSameLength:\n", + "# csvwriter.writerows(resThisFileThisRecord)\n", + "# else:\n", + "# for i in res\n", + " \n", + "# if len(res[recordtype][0]) != colsPerRecType[recordtype]:\n", + "# print (\"Warning! File {0!s} record type {1!s} has more cols than were defined in an earlier file\"\n", + "# .format(filecode, recordtype))\n", + " \n" + ], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/DataFileParsing/Global_File_Compare_DEV.ipynb b/DataFileParsing/Global_File_Compare_DEV.ipynb new file mode 100644 index 0000000..9c52f3d --- /dev/null +++ b/DataFileParsing/Global_File_Compare_DEV.ipynb @@ -0,0 +1,88 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:d987d0d9195e831e9d47bd1907df070bdf7d74eb1b6469a39da8187e8ed9cb84" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "allVarsSorted = sorted(allVars, key=(itemgetter('RecordTypeValue','Start')))" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'allVars' is not defined", + "output_type": "pyerr", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mallVarsSorted\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msorted\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mallVars\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitemgetter\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'RecordTypeValue'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'Start'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mNameError\u001b[0m: name 'allVars' is not defined" + ] + } + ], + "prompt_number": 1 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "d = {}\n", + "for i in allVarsSorted:\n", + " if i['RecordTypeValue'] not in d:\n", + " d[i['RecordTypeValue']] = []\n", + " d[i['RecordTypeValue']].append(i)\n", + "#{(allVars[i]['RecordName'],[f for f in allVars if f['RecordName']==allVars[i]['RecordName']]) for i in range (len(allVars))}" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "res = {}\n", + "for line in data:\n", + " recordType = line[15:18]\n", + " recordSpec = d[recordType]\n", + " if recordType not in res:\n", + " res[recordType] = []\n", + " rowParts = [(line[i['Start']-1 : i['Start']+i['Len']-1]).strip() for i in recordSpec]\n", + " res[recordType].append(rowParts)#(\",\".join(rowParts))" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "for recordtype,fields in d.iteritems():\n", + " fieldHeader = [i['Name'] for i in fields]\n", + " fieldRecords = set([i['RecordName'] for i in fields])\n", + " assert len(fieldRecords) == 1\n", + " outFN = r'C:\\Users\\zool1301\\Documents\\DHS\\Phase6\\ExtractedSurveyRecords_Python\\{0!s}.{1!s}.csv'.format(\n", + " 'BDIR61',fieldRecords.pop())\n", + " with open(outFN, 'wb') as outcsv:\n", + " csvwriter = csv.writer(outcsv)\n", + " csvwriter.writerow(fieldHeader)\n", + " csvwriter.writerows(res[recordtype])" + ], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/DataFileParsing/README.md b/DataFileParsing/README.md new file mode 100644 index 0000000..cc3f190 --- /dev/null +++ b/DataFileParsing/README.md @@ -0,0 +1,10 @@ +DHS hierarchical data file parser +--------------------------------- + +This folder contains code in an IPython notebook (DHS_DAT_Splitter.ipynb) to parse data files in the CSPro .DAT format which is used by DHS for distribution of hierarchical (structured relational) data. + +The code relies on a schema definition in a CSV format to figure out how each line of the data should be read. This schema is generated by the code in the MetadataManagement folder which produces it from the DCF (CSPro dictionary specification) file. + +The output is one CSV file for each record type (table) in each data file. + +Also included are some FME workbenches which were created earlier to do the same task; they broadly worked but were quite slow so are not fully developed. \ No newline at end of file diff --git a/DataFileParsing/translate_all_recordtypes_to_mdb.fmw b/DataFileParsing/translate_all_recordtypes_to_mdb.fmw new file mode 100644 index 0000000..f8faa29 --- /dev/null +++ b/DataFileParsing/translate_all_recordtypes_to_mdb.fmw @@ -0,0 +1,10244 @@ +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +GUI IGNORE SourceDataset_CSV_1,CSV_IN_NETWORK_AUTHENTICATION_CSV_1,_SKIP_LINES_CSV_1,_SKIP_FOOTER_CSV_1,_STRIP_QUOTES_CSV_1,_DUPLICATE_DELIMS_CSV_1,SORT_GROUP_CSV_1,_SORT_PARAMS_CSV_1,FILTER_GROUP_CSV_1,_FILTER_PARAMS_CSV_1,_ENCODING_CSV_1,DestDataset_MDB_ADO_1,MDB_ADO_OUT_PASSWORD_MDB_ADO_1,MDB_ADO_OUT_VERSION_MDB_ADO_1,MDB_ADO_OUT_OVERWRITE_FILE_MDB_ADO_1,MDB_ADO_OUT_COMPRESS_AT_END_MDB_ADO_1,MDB_ADO_OUT_WRITER_MODE_MDB_ADO_1,MDB_ADO_OUT_START_TRANSACTION_MDB_ADO_1,MDB_ADO_OUT_TRANSACTION_INTERVAL_MDB_ADO_1,MDB_ADO_OUT_BEGIN_SQL_MDB_ADO_1,MDB_ADO_OUT_END_SQL_MDB_ADO_1 +DEFAULT_MACRO SourceDataset_CSV C:\Users\zool1301\Documents\DHS\Phase6\ExtractedSurveyRecords_Python\*.All.csv +GUI MULTIFILE SourceDataset_CSV CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +DEFAULT_MACRO DestDataset_MDB_ADO C:\Users\zool1301\Documents\DHS\Phase6\fmetest\db\test_joined_files.mdb +GUI FILENAME DestDataset_MDB_ADO Access_Database_Files(*.mdb;*.accdb)|*.mdb;*.accdb|All_files(*)|* Destination Microsoft Access Database File: +INCLUDE [ if {{$(SourceDataset_CSV)} == {}} { puts_real {Parameter 'SourceDataset_CSV' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(DestDataset_MDB_ADO)} == {}} { puts_real {Parameter 'DestDataset_MDB_ADO' must be given a value.}; exit 1; }; ] +#! START_HEADER +#! START_WB_HEADER +READER_TYPE CSV +READER_KEYWORD CSV_1 +READER_GEN_DIRECTIVES _SCHEMA_WITH_COL_NAMES,FileCodechar7CASEIDchar9V000char4V001number30V002number40V003number30V004number30V005number70V006number30V007number50V008number50V009number30V010number50V011number50V012number30V013number20V014number20V015number20V016number30V017number50V018number30V019number30V019Anumber20V020number20V021number30V022number30V023number30V024number20V025number20V026number20V027number20V028number40V029number20V030number30V031number30V032number20V034number30V040number30V042number20V044char1,_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_FILTER_PARAMS,,_SORT_PARAMS,,_DUPLICATE_DELIMS,no,_FIELD_NAMES_AFTER_HEADER,no,groupBox_2,,_IN_SEPARATOR,,groupBox_4,,_GROUP_BY_DATASET,yes,groupBox_5,,_SKIP_LINES,1,groupBox_6,,FILTER_GROUP,NO,_SORT_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending,_ENCODING,,SCAN_MAX_FEATURES,1000,SORT_GROUP,NO,_IN_FIELD_NAMES,YES,groupBox,,_SKIP_FOOTER,0,_FILTER_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no,_MERGE_SCHEMAS,YES,_SCHEMA,char7char9char4number30number40number30number30number70number30number50number50number30number50number50number30number20number20number20number30number50number30number30number20number20number30number30number30number20number20number20number20number40number20number30number30number20number30number30number20char1,_STRIP_QUOTES,yes +WRITER_TYPE MULTI_WRITER +MULTI_WRITER_DATASET_ORDER BY_ID +MULTI_WRITER_FIRST_WRITER_ID 0 +MULTI_WRITER_TYPE{0} MDB_ADO +MULTI_WRITER_KEYWORD{0} MDB_ADO_1 +#! END_WB_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_1 +# ============================================================================ +# The following GUI line prompts for a folder to be used as the +# source of the CSV files. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_CSV_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_1 +DEFAULT_MACRO SourceDataset_CSV_1 $(SourceDataset_CSV) +GUI MULTIFILE SourceDataset_CSV_1 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +# ============================================================================ +# Hardcode the settings that were used to generate this mapping file +# +DEFAULT_MACRO _SCHEMA_CSV_1 char,7,,char,9,,char,4,,number,3,0,number,4,0,number,3,0,number,3,0,number,7,0,number,3,0,number,5,0,number,5,0,number,3,0,number,5,0,number,5,0,number,3,0,number,2,0,number,2,0,number,2,0,number,3,0,number,5,0,number,3,0,number,3,0,number,2,0,number,2,0,number,3,0,number,3,0,number,3,0,number,2,0,number,2,0,number,2,0,number,2,0,number,4,0,number,2,0,number,3,0,number,3,0,number,2,0,number,3,0,number,3,0,number,2,0,char,1, +DEFAULT_MACRO _IN_FIELD_NAMES_CSV_1 YES +DEFAULT_MACRO _FIELD_NAMES_AFTER_HEADER_CSV_1 no +DEFAULT_MACRO _EXTENSION_CSV_1 CSV +DEFAULT_MACRO _ALLOW_SPACES_IN_COLUMN_NAMES_CSV_1 yes +DEFAULT_MACRO _GROUP_BY_DATASET_CSV_1 yes +CSV_1_SCHEMA char,7,,char,9,,char,4,,number,3,0,number,4,0,number,3,0,number,3,0,number,7,0,number,3,0,number,5,0,number,5,0,number,3,0,number,5,0,number,5,0,number,3,0,number,2,0,number,2,0,number,2,0,number,3,0,number,5,0,number,3,0,number,3,0,number,2,0,number,2,0,number,3,0,number,3,0,number,3,0,number,2,0,number,2,0,number,2,0,number,2,0,number,4,0,number,2,0,number,3,0,number,3,0,number,2,0,number,3,0,number,3,0,number,2,0,char,1, +DEFAULT_MACRO _SKIP_LINES_CSV_1 1 +CSV_1_SKIP_LINES $(_SKIP_LINES_CSV_1) +DEFAULT_MACRO _SKIP_FOOTER_CSV_1 0 +CSV_1_SKIP_FOOTER $(_SKIP_FOOTER_CSV_1) +CSV_1_FIELD_NAMES $(_IN_FIELD_NAMES_CSV_1) +CSV_1_FIELD_NAMES_AFTER_HEADER $(_FIELD_NAMES_AFTER_HEADER_CSV_1) +DEFAULT_MACRO _STRIP_QUOTES_CSV_1 yes +CSV_1_STRIP_QUOTES $(_STRIP_QUOTES_CSV_1) +CSV_1_SEPARATOR (",") +CSV_1_EXTENSION CSV +DEFAULT_MACRO _DUPLICATE_DELIMS_CSV_1 no +CSV_1_DUPLICATE_DELIMS $(_DUPLICATE_DELIMS_CSV_1) +CSV_1_SEQUENCED no +CSV_1_ALLOW_SPACES_IN_COLUMN_NAMES $(_ALLOW_SPACES_IN_COLUMN_NAMES_CSV_1) +CSV_1_GROUP_BY_DATASET $(_GROUP_BY_DATASET_CSV_1) +DEFAULT_MACRO SORT_GROUP_CSV_1 NO +CSV_1_SORT_GROUP $(SORT_GROUP_CSV_1) +DEFAULT_MACRO _SORT_PARAMS_CSV_1 +CSV_1_SORT_PARAMS $(_SORT_PARAMS_CSV_1) +DEFAULT_MACRO FILTER_GROUP_CSV_1 NO +CSV_1_FILTER_GROUP $(FILTER_GROUP_CSV_1) +DEFAULT_MACRO _FILTER_PARAMS_CSV_1 +CSV_1_FILTER_PARAMS $(_FILTER_PARAMS_CSV_1) +# ===================================================================== +# Provide some control over what attributes have the user-selected +# encoding applied. Normally all attributes are updated after being +# read, but the following lines exclude from this treatment all +# attributes whose names start with fme_ or csv_. +CSV_1_UNENCODED_ATTR_PREFIX fme_ csv_ +# =========================================================================== +DEFAULT_MACRO CSV_IN_NETWORK_AUTHENTICATION_CSV_1 +CSV_1_NETWORK_AUTHENTICATION "$(CSV_IN_NETWORK_AUTHENTICATION_CSV_1)" +GUI OPTIONAL AUTHENTICATOR CSV_IN_NETWORK_AUTHENTICATION_CSV_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI INTEGER _SKIP_LINES_CSV_1 Number of Lines to Skip: +GUI INTEGER _SKIP_FOOTER_CSV_1 Number of Footer Lines to Skip: +# GUI CHOICE _IN_FIELD_NAMES yes%no Field Names in File: +# GUI CHOICE _FIELD_NAMES_AFTER_HEADER yes%no Field After Header: +GUI CHOICE _STRIP_QUOTES_CSV_1 yes%no Strip Quotes From Fields: +# GUI TEXT _IN_SEPARATOR Field Delimiter: +# GUI TEXT _EXTENSION Default File Extension: +GUI CHOICE _DUPLICATE_DELIMS_CSV_1 yes%no Skip Duplicate Delimiters: +GUI CHOICE SORT_GROUP_CSV_1 yes%no Sorting Enabled: +GUI OPTIONAL GUI_LINE_TABLE _SORT_PARAMS_CSV_1 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Attribute"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044"%%"Alpha/Num"%"LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric"%alphabetic%"Order"%"LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending"%ascending Sorting Parameters: +GUI CHOICE FILTER_GROUP_CSV_1 yes%no Filter Enabled: +GUI OPTIONAL GUI_LINE_TABLE _FILTER_PARAMS_CSV_1 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Field Name"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044"%%"Filter"%"STRING_ENCODED _FILTER_REGEX "%%"Invert Filter"%"CHECKBOX _FILTER_UNMATCHED yes%no"%no Filter Parameters: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO _ENCODING_CSV_1 +GUI OPTIONAL STRING_OR_ENCODING _ENCODING_CSV_1 SYSTEM%* Character Encoding: +CSV_1_ENCODING $(_ENCODING_CSV_1) +CSV_1_DATASET "$(SourceDataset_CSV_1)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "MDB_ADO_1" +#! END_WB_HEADER +#! START_DEST_HEADER MDB_ADO MDB_ADO_1 +# ============================================================================ +# First get the dataset for the database. For Access, it's the database file. +# For now we'll use whatever they had when they generated this mapping file, +# and not reprompt +#! END_DEST_HEADER +#! START_WB_HEADER +DEFAULT_MACRO DestDataset +INCLUDE [ if {"$(DestDataset)" != ""} { \ + puts {DEFAULT_MACRO DestDataset_MDB_ADO_1 $(DestDataset)} \ + } ] +#! END_WB_HEADER +#! START_DEST_HEADER MDB_ADO MDB_ADO_1 +DEFAULT_MACRO DestDataset_MDB_ADO_1 $(DestDataset_MDB_ADO) +GUI FILENAME DestDataset_MDB_ADO_1 Access_Database_Files(*.mdb;*.accdb)|*.mdb;*.accdb|All_files(*)|* Destination Microsoft Access Database File: +# =========================================================================== +# Optional Password +DEFAULT_MACRO MDB_ADO_OUT_PASSWORD_MDB_ADO_1 +MDB_ADO_1_PASSWORD "$(MDB_ADO_OUT_PASSWORD_MDB_ADO_1)" +GUI OPTIONAL PASSWORD MDB_ADO_OUT_PASSWORD_MDB_ADO_1 Password: +# =========================================================================== +# Optional Version (defaultsto2000/2002/2003) +DEFAULT_MACRO MDB_ADO_OUT_VERSION_MDB_ADO_1 2000/2002/2003 +MDB_ADO_1_VERSION "$(MDB_ADO_OUT_VERSION_MDB_ADO_1)" +GUI CHOICE MDB_ADO_OUT_VERSION_MDB_ADO_1 2007%2000/2002/2003%95/97%2.0 Version: +# ============================================================================ +# Whether or not to overwrite the file +DEFAULT_MACRO MDB_ADO_OUT_OVERWRITE_FILE_MDB_ADO_1 Yes +MDB_ADO_1_OVERWRITE_FILE "$(MDB_ADO_OUT_OVERWRITE_FILE_MDB_ADO_1)" +GUI CHOICE MDB_ADO_OUT_OVERWRITE_FILE_MDB_ADO_1 Yes%No Overwrite Existing Database: +# ============================================================================ +# Opt in for destination dataset type vs format type validation +DEFAULT_MACRO MDB_ADO_OUT_DESTINATION_DATASETTYPE_VALIDATION_MDB_ADO_1 Yes +MDB_ADO_1_DESTINATION_DATASETTYPE_VALIDATION "$(MDB_ADO_OUT_DESTINATION_DATASETTYPE_VALIDATION_MDB_ADO_1)" +# ============================================================================ +# For database compression +DEFAULT_MACRO MDB_ADO_OUT_COMPRESS_AT_END_MDB_ADO_1 no +GUI CHOICE MDB_ADO_OUT_COMPRESS_AT_END_MDB_ADO_1 yes%no Compress Database When Done: +MDB_ADO_1_COMPRESS_AT_END $(MDB_ADO_OUT_COMPRESS_AT_END_MDB_ADO_1) +# ============================================================================ +# This keyword sets the mode of the writer +DEFAULT_MACRO MDB_ADO_OUT_WRITER_MODE_MDB_ADO_1 INSERT +GUI CHOICE MDB_ADO_OUT_WRITER_MODE_MDB_ADO_1 INSERT%UPDATE%DELETE Writer Mode: +MDB_ADO_1_WRITER_MODE $(MDB_ADO_OUT_WRITER_MODE_MDB_ADO_1) +# ============================================================================ +# This keyword sets the starting transaction +DEFAULT_MACRO MDB_ADO_OUT_START_TRANSACTION_MDB_ADO_1 0 +GUI OPTIONAL TEXT MDB_ADO_OUT_START_TRANSACTION_MDB_ADO_1 Start transaction at: +MDB_ADO_1_START_TRANSACTION $(MDB_ADO_OUT_START_TRANSACTION_MDB_ADO_1) +# ============================================================================ +# This keyword sets the number of features between transaction commits +DEFAULT_MACRO MDB_ADO_OUT_TRANSACTION_INTERVAL_MDB_ADO_1 500 +GUI OPTIONAL TEXT MDB_ADO_OUT_TRANSACTION_INTERVAL_MDB_ADO_1 Transaction interval: +MDB_ADO_1_TRANSACTION_INTERVAL $(MDB_ADO_OUT_TRANSACTION_INTERVAL_MDB_ADO_1) +# ============================================================================ +# The following specifies an SQL command to execute before opening the first +# table. +DEFAULT_MACRO MDB_ADO_OUT_BEGIN_SQL_MDB_ADO_1 +GUI OPTIONAL TEXT_EDIT_SQL MDB_ADO_OUT_BEGIN_SQL_MDB_ADO_1 SQL Statement to Execute Before Translation: +MDB_ADO_1_BEGIN_SQL{0} "$(MDB_ADO_OUT_BEGIN_SQL_MDB_ADO_1)" +# ============================================================================ +# The following specifies an SQL command to execute after closing all the +# tables. +DEFAULT_MACRO MDB_ADO_OUT_END_SQL_MDB_ADO_1 +GUI OPTIONAL TEXT_EDIT_SQL MDB_ADO_OUT_END_SQL_MDB_ADO_1 SQL Statement to Execute After Translation: +MDB_ADO_1_END_SQL{0} "$(MDB_ADO_OUT_END_SQL_MDB_ADO_1)" +MDB_ADO_1_DATASET "$(DestDataset_MDB_ADO_1)" +#! END_DEST_HEADER +#! END_HEADER + +LOG_FILENAME "$(FME_MF_DIR)translate_all_recordtypes_to_mdb.log" +LOG_APPEND NO +LOG_MAX_FEATURES 200 +LOG_MAX_RECORDED_FEATURES 200 +LOG_MAX_PRECISION Yes +FME_REPROJECTION_ENGINE FME +FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto +FME_GEOMETRY_HANDLING Enhanced +FME_STROKE_MAX_DEVIATION 0 +LOG_FILTER_MASK -1 +DEFAULT_MACRO DATASET_KEYWORD_CSV_1 CSV_1 +DEFAULT_MACRO DATASET_KEYWORD_MDB_ADO_1 MDB_ADO_1 +# ------------------------------------------------------------------------- + +CSV_1_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +MULTI_READER_CONTINUE_ON_READER_FAILURE No + +# ------------------------------------------------------------------------- + +MACRO WORKSPACE_NAME translate_all_recordtypes_to_mdb +MACRO FME_VIEWER_APP fmedatainspector +# ------------------------------------------------------------------------- +CSV_1_DEF RECH6.All FileCode char(7) HHID char(6) HC0 number(3,0) HC1 number(3,0) HC2 number(5,0) HC3 number(5,0) HC4 number(5,0) HC5 number(5,0) HC6 number(6,0) HC7 number(5,0) HC8 number(5,0) HC9 number(6,0) HC10 number(5,0) HC11 number(5,0) HC12 number(6,0) HC13 number(2,0) HC15 number(2,0) HC16 number(3,0) HC17 number(3,0) HC18 number(3,0) HC19 number(5,0) HC27 number(2,0) HC30 number(3,0) HC31 number(5,0) HC32 number(5,0) HC33 number(2,0) HC51 number(3,0) HC52 number(2,0) HC53 number(4,0) HC55 number(2,0) HC56 number(4,0) HC57 number(2,0) HC58 char(1) HC60 number(4,0) HC61 number(2,0) HC62 number(3,0) HC63 number(4,0) HC64 number(3,0) SHB13 char(1) HC68 number(2,0) HC70 number(5,0) HC71 number(5,0) HC72 number(5,0) HC73 number(5,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC92.All FileCode char(7) CASEID char(12) IDX92 number(3,0) S222 number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC11.All FileCode char(7) CASEID char(9) V101 number(2,0) V102 number(2,0) V103 char(1) V104 char(1) V105 char(1) V106 number(2,0) V107 number(2,0) V113 number(3,0) V115 number(4,0) V116 number(3,0) V119 number(2,0) V120 number(2,0) V121 number(2,0) V122 number(2,0) V123 number(2,0) V124 number(2,0) V125 char(1) V127 number(3,0) V128 number(3,0) V129 number(3,0) V130 number(2,0) V131 char(1) V133 number(3,0) V134 number(2,0) V135 number(2,0) V136 number(3,0) V137 number(2,0) V138 number(2,0) V139 number(3,0) V140 number(2,0) V141 number(2,0) V149 number(2,0) V150 number(3,0) V151 number(2,0) V152 number(3,0) V153 number(2,0) AWFACTT number(5,0) AWFACTU number(5,0) AWFACTR number(5,0) AWFACTE number(5,0) AWFACTW number(5,0) V155 number(2,0) V156 char(1) V157 number(2,0) V158 number(2,0) V159 number(2,0) V160 number(2,0) V161 number(3,0) V166 char(1) V167 char(1) V168 char(1) V190 number(2,0) V191 number(8,0) ML101 char(1) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHI.All FileCode char(7) HHID char(7) SHCOLB number(2,0) SH61 number(3,0) SH62 number(2,0) SH63 number(3,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC84.All FileCode char(7) CASEID char(9) MMC1 number(3,0) MMC2 number(3,0) MMC3 char(1) REC84_GROUP char(1) MMC4 char(1) MMC5 number(3,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC51.All FileCode char(7) CASEID char(9) V501 number(2,0) V502 number(2,0) V503 number(2,0) V504 number(2,0) V505 char(1) V506 char(1) V507 number(3,0) V508 number(5,0) V509 number(5,0) V510 number(2,0) V511 number(3,0) V512 number(3,0) V513 number(2,0) V525 number(3,0) V527 number(4,0) V528 number(3,0) V529 number(4,0) V530 number(2,0) V531 number(3,0) V532 number(2,0) V535 number(2,0) V536 number(2,0) V537 number(3,0) V538 char(1) V539 char(1) V540 char(1) V541 char(1) +# ------------------------------------------------------------------------- +CSV_1_DEF REC43.All FileCode char(7) CASEID char(9) HIDX number(2,0) H1 number(2,0) H2 number(2,0) H2D number(3,0) H2M number(3,0) H2Y number(5,0) H3 number(2,0) H3D number(3,0) H3M number(3,0) H3Y number(5,0) H4 number(2,0) H4D number(3,0) H4M number(3,0) H4Y number(5,0) H5 number(2,0) H5D number(3,0) H5M number(3,0) H5Y number(5,0) H6 number(2,0) H6D number(3,0) H6M number(3,0) H6Y number(5,0) H7 number(2,0) H7D number(3,0) H7M number(3,0) H7Y number(5,0) H8 number(2,0) H8D number(3,0) H8M number(3,0) H8Y number(5,0) H9 number(2,0) H9D number(3,0) H9M number(3,0) H9Y number(5,0) H0 number(2,0) H0D number(3,0) H0M number(3,0) H0Y number(5,0) H10 number(2,0) H11 number(2,0) H11B number(2,0) H12A number(2,0) H12B number(2,0) H12C number(2,0) H12D number(2,0) H12E number(2,0) H12F number(2,0) H12G number(2,0) H12H number(2,0) H12I number(2,0) H12J number(2,0) H12K number(2,0) H12L number(2,0) H12M number(2,0) H12N number(2,0) H12O number(2,0) H12P number(2,0) H12Q char(1) H12R char(1) H12S number(2,0) H12T number(2,0) H12U number(2,0) H12V number(2,0) H12W char(1) H12X number(2,0) H12Y number(2,0) H12Z number(2,0) H13 number(2,0) H13B char(1) H14 number(2,0) H15 char(1) H15A char(1) H15B char(1) H15C char(1) H15D char(1) H15E char(1) H15F char(1) H15G char(1) H15H char(1) H15I char(1) H15J char(1) H15K char(1) H15L char(1) H15M char(1) H20 char(1) H21A char(1) H21 char(1) H22 number(2,0) H31 number(2,0) H31B number(2,0) H31C number(2,0) H31D number(2,0) H31E number(2,0) H32A number(2,0) H32B number(2,0) H32C number(2,0) H32D number(2,0) H32E number(2,0) H32F number(2,0) H32G number(2,0) H32H number(2,0) H32I number(2,0) H32J number(2,0) H32K number(2,0) H32L number(2,0) H32M number(2,0) H32N number(2,0) H32O number(2,0) H32P number(2,0) H32Q char(1) H32R char(1) H32S number(2,0) H32T number(2,0) H32U number(2,0) H32V number(2,0) H32W number(2,0) H32X number(2,0) H32Y number(2,0) H32Z number(2,0) H33 number(2,0) H33D number(3,0) H33M number(3,0) H33Y number(5,0) H34 number(2,0) H35 char(1) H36A number(2,0) H36B number(2,0) H36C number(2,0) H36D number(2,0) H36E char(1) H36F char(1) H37A number(2,0) H37B number(2,0) H37C char(1) H37D number(2,0) H37E number(2,0) H37F char(1) H37G char(1) H37H number(2,0) H37I number(2,0) H37J number(2,0) H37K number(2,0) H37L number(2,0) H37M number(2,0) H37N number(2,0) H37O number(2,0) H37P number(2,0) H37X number(2,0) H37Y number(2,0) H37Z number(2,0) H38 number(2,0) H39 number(2,0) H40 char(1) H40D char(1) H40M char(1) H40Y char(1) H41A char(1) H41B char(1) H42 number(2,0) H43 number(2,0) H44A char(1) H44B char(1) H44C char(1) H45 char(1) H46A number(3,0) H46B char(1) H47 char(1) +# ------------------------------------------------------------------------- +CSV_1_DEF RECH5.All FileCode char(7) HHID char(6) HA0 number(3,0) HA1 number(3,0) HA2 number(5,0) HA3 number(5,0) HA4 number(5,0) HA5 number(5,0) HA6 number(6,0) HA11 number(5,0) HA12 number(6,0) HA12A number(6,0) HA12B number(6,0) HA13 number(2,0) HA32 number(5,0) HA33 number(2,0) HA35 char(1) HA40 number(5,0) HA41 number(5,0) HA50 char(1) HA51 char(1) HA52 number(2,0) HA53 number(4,0) HA54 number(2,0) HA55 number(2,0) HA56 number(4,0) HA57 number(2,0) HA58 char(1) HA60 char(1) HA61 char(1) HA62 char(1) HA63 char(1) HA64 char(1) HA65 number(2,0) HA66 number(2,0) HA67 number(3,0) HA68 number(2,0) HA69 char(1) HA70 char(1) +# ------------------------------------------------------------------------- +CSV_1_DEF REC91.All FileCode char(7) CASEID char(9) S28DAYS number(2,0) S5YEARS number(2,0) S103A number(2,0) S104A number(2,0) S112A number(2,0) S112B number(2,0) S114A number(2,0) S114B number(2,0) S114C number(2,0) S114D number(2,0) S114E number(2,0) S114F number(2,0) S114G number(2,0) S114GX number(3,0) S223A number(2,0) S223B number(2,0) S229A number(2,0) S229B number(2,0) S229C number(2,0) S229D number(3,0) S306A number(2,0) S325J number(2,0) S325M number(2,0) S325N number(2,0) S325O number(2,0) S325A number(2,0) S325B number(2,0) S325CA number(2,0) S325CB number(2,0) S325CC number(2,0) S325CD number(2,0) S325CE number(2,0) S325CF number(2,0) S325CG number(2,0) S325CH number(2,0) S325CX number(2,0) S325CZ number(2,0) S325D number(2,0) S325E number(2,0) S325FA number(2,0) S325FB number(2,0) S325FC number(2,0) S325FD number(2,0) S325FE number(2,0) S325FF number(2,0) S325FH number(2,0) S325FX number(2,0) S325FZ number(2,0) S326 number(2,0) S326AA number(2,0) S326AB number(2,0) S326AC number(2,0) S326AX number(2,0) S326B number(3,0) S326C number(2,0) S506A char(1) S604A number(3,0) S616 number(3,0) S714AA number(2,0) S714BA number(2,0) S714BB number(2,0) S714BC number(2,0) S714D number(2,0) S714E number(2,0) S803A number(2,0) S823 number(2,0) S823A number(2,0) S823B number(2,0) S906A number(2,0) S906B number(2,0) S937A number(2,0) S937B number(2,0) S945O number(2,0) S945A number(2,0) S1001 number(2,0) S1002 number(2,0) S1003 number(2,0) S1004 number(2,0) S1005 number(2,0) SCORE number(3,0) AWFACTE2 number(5,0) AWFACTE3 number(5,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHDP2.All FileCode char(7) HHID char(6) HDPIDX2 number(2,0) SH197B number(3,0) SH197C number(2,0) SH197D number(2,0) SH197E number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC83.All FileCode char(7) CASEID char(9) MMIDX number(3,0) MM1 number(2,0) MM2 number(2,0) MM3 number(3,0) MM4 number(5,0) MM5 char(1) MM6 number(3,0) MM7 number(3,0) MM8 number(5,0) MM9 number(3,0) MM10 char(1) MM11 char(1) MM12 char(1) MM13 char(1) MM14 number(3,0) MM15 char(1) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHMC.All FileCode char(7) HHID number(6,0) IDXHML number(2,0) SH123A number(2,0) SH123B number(3,0) SH123C number(2,0) SH123D number(2,0) SH125A number(2,0) SH127A number(2,0) SH127B number(5,0) SH128 number(3,0) SH128A number(2,0) SH128B number(5,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC75.All FileCode char(7) CASEID char(9) V750 number(2,0) V751 number(2,0) V754BP char(1) V754CP number(2,0) V754DP number(2,0) V754JP number(2,0) V754WP number(2,0) V756 number(2,0) V761 char(1) V761B char(1) V761C char(1) V762AA char(1) V762AB char(1) V762AC char(1) V762AD char(1) V762AE char(1) V762AF char(1) V762AG char(1) V762AH char(1) V762AI char(1) V762AJ char(1) V762AK char(1) V762AL char(1) V762AM char(1) V762AN char(1) V762AO char(1) V762AP char(1) V762AQ char(1) V762AR char(1) V762AS char(1) V762AT char(1) V762AU char(1) V762AV char(1) V762AW char(1) V762AX char(1) V762AZ char(1) V762BA char(1) V762BB char(1) V762BC char(1) V762BD char(1) V762BE char(1) V762BF char(1) V762BG char(1) V762BH char(1) V762BI char(1) V762BJ char(1) V762BK char(1) V762BL char(1) V762BM char(1) V762BN char(1) V762BO char(1) V762BP char(1) V762BQ char(1) V762BR char(1) V762BS char(1) V762BT char(1) V762BU char(1) V762BV char(1) V762BW char(1) V762BX char(1) V762BZ char(1) V763A number(2,0) V763B number(2,0) V763C number(2,0) V763D char(1) V763E char(1) V763F char(1) V763G char(1) V766A char(1) V766B char(1) V767A char(1) V767B char(1) V767C char(1) V768A char(1) V768B char(1) V768C char(1) V769 char(1) V769A char(1) V770 number(2,0) V770A number(2,0) V770B number(2,0) V770C number(2,0) V770D number(2,0) V770E number(2,0) V770F number(2,0) V770G number(2,0) V770H number(2,0) V770I number(2,0) V770J number(2,0) V770K char(1) V770L number(2,0) V770M number(2,0) V770N number(2,0) V770O number(2,0) V770P number(2,0) V770Q number(2,0) V770R number(2,0) V770S number(2,0) V770T number(2,0) V770U number(2,0) V770V number(2,0) V770W number(2,0) V770X number(2,0) V774A number(2,0) V774B number(2,0) V774C number(2,0) V775 char(1) V777 char(1) V778 char(1) V779 char(1) V780 char(1) V781 char(1) V783 char(1) V784A char(1) V784B char(1) V784C char(1) V784D char(1) V784E char(1) V784F char(1) V784G char(1) V784H char(1) V784I char(1) V784J char(1) V784K char(1) V784L char(1) V784M char(1) V784N char(1) V784O char(1) V784P char(1) V784Q char(1) V784R char(1) V784S char(1) V784T char(1) V784U char(1) V784V char(1) V784X char(1) V785 number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC42.All FileCode char(7) CASEID char(9) V401 number(2,0) V404 number(2,0) V405 number(2,0) V406 number(2,0) V407 char(1) V408 char(1) V409 number(2,0) V409A char(1) V410 number(2,0) V410A char(1) V411 number(2,0) V411A number(2,0) V412 char(1) V412A number(2,0) V412B char(1) V412C char(1) V413 number(2,0) V413A char(1) V413B char(1) V413C char(1) V413D char(1) V414A char(1) V414B char(1) V414C char(1) V414D char(1) V414E number(2,0) V414F number(2,0) V414G number(2,0) V414H number(2,0) V414I number(2,0) V414J number(2,0) V414K number(2,0) V414L number(2,0) V414M number(2,0) V414N number(2,0) V414O number(2,0) V414P number(2,0) V414Q char(1) V414R char(1) V414S number(2,0) V414T char(1) V414U char(1) V414V number(2,0) V414W char(1) V415 number(2,0) V416 char(1) V417 number(2,0) V418 number(2,0) V419 number(2,0) V420 char(1) V421 char(1) V426 number(4,0) V437 number(5,0) V438 number(5,0) V439 number(5,0) V440 number(5,0) V441 number(6,0) V442 number(6,0) V443 number(6,0) V444 number(6,0) V444A number(5,0) V445 number(5,0) V446 number(5,0) V447 number(2,0) V447A number(3,0) V452A char(1) V452B char(1) V452C number(2,0) V453 number(4,0) V454 number(2,0) V455 number(2,0) V456 number(4,0) V457 number(2,0) V458 char(1) V459 char(1) V460 char(1) V461 char(1) V462 char(1) V463A char(1) V463B char(1) V463C char(1) V463D char(1) V463E char(1) V463F char(1) V463G char(1) V463X char(1) V463Z char(1) V464 char(1) V465 char(1) V466 char(1) V467A char(1) V467B char(1) V467C char(1) V467D char(1) V467E char(1) V467F char(1) V467G char(1) V467H char(1) V467I char(1) V467J char(1) V467K char(1) V467L char(1) V467M char(1) V468 number(2,0) V469E number(2,0) V469F number(2,0) V469X number(2,0) V471A char(1) V471B char(1) V471C char(1) V471D char(1) V471E char(1) V471F char(1) V471G char(1) V472A char(1) V472B char(1) V472C char(1) V472D char(1) V472E char(1) V472F char(1) V472G char(1) V472H char(1) V472I char(1) V472J char(1) V472K char(1) V472L char(1) V472M char(1) V472N char(1) V472O char(1) V472P char(1) V472Q char(1) V472R char(1) V472S char(1) V472T char(1) V472U char(1) V473A char(1) V473B char(1) V474 char(1) V474A char(1) V474B char(1) V474C char(1) V474D char(1) V474E char(1) V474F char(1) V474G char(1) V474H char(1) V474I char(1) V474J char(1) V474X char(1) V474Z char(1) V475 char(1) V476 char(1) V477 char(1) V478 char(1) V479 char(1) V480 char(1) V481 char(1) V481A char(1) V481B char(1) V481C char(1) V481D char(1) V481E char(1) V481F char(1) V481G char(1) V481H char(1) V481X char(1) V482A char(1) V482B char(1) V482C char(1) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHCHL.All FileCode char(7) HHID char(9) IDXCHL number(3,0) CHL1 number(2,0) CHL2 number(3,0) CHL3 number(2,0) CHL4 number(3,0) CHL5 number(2,0) CHL6 number(3,0) CHL7 number(2,0) CHL8 number(3,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHML.All FileCode char(7) HHID char(6) HMLIDX number(2,0) HML3 number(2,0) HML4 number(3,0) HML5 number(2,0) HML6 number(2,0) HML7 number(3,0) HML8 number(2,0) HML9 number(3,0) HML10 number(2,0) HML11 number(2,0) HML21 number(2,0) HMLA number(3,0) HMLB number(3,0) HMLC number(3,0) HMLD number(3,0) HMLE char(1) +# ------------------------------------------------------------------------- +CSV_1_DEF RECH4.All FileCode char(7) HHID char(5) IDXH4 number(3,0) SH08 number(2,0) SH13 number(2,0) SH18 number(2,0) SH19 number(2,0) SH20 number(2,0) SH21 number(2,0) SH22 number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC82.All FileCode char(7) CASEID char(9) VCOL number(2,0) VCAL char(73) +# ------------------------------------------------------------------------- +CSV_1_DEF REC01.All FileCode char(7) CASEID char(9) V000 char(4) V001 number(3,0) V002 number(4,0) V003 number(3,0) V004 number(3,0) V005 number(7,0) V006 number(3,0) V007 number(5,0) V008 number(5,0) V009 number(3,0) V010 number(5,0) V011 number(5,0) V012 number(3,0) V013 number(2,0) V014 number(2,0) V015 number(2,0) V016 number(3,0) V017 number(5,0) V018 number(3,0) V019 number(3,0) V019A number(2,0) V020 number(2,0) V021 number(3,0) V022 number(3,0) V023 number(3,0) V024 number(2,0) V025 number(2,0) V026 number(2,0) V027 number(2,0) V028 number(4,0) V029 number(2,0) V030 number(3,0) V031 number(3,0) V032 number(2,0) V034 number(3,0) V040 number(3,0) V042 number(2,0) V044 char(1) +# ------------------------------------------------------------------------- +CSV_1_DEF REC41.All FileCode char(7) CASEID char(9) MIDX number(2,0) M1 number(2,0) M1A number(2,0) M1B char(1) M1C char(1) M1D number(3,0) M1E number(5,0) M2A number(2,0) M2B number(2,0) M2C number(2,0) M2D number(2,0) M2E number(2,0) M2F number(2,0) M2G number(2,0) M2H number(2,0) M2I number(2,0) M2J char(1) M2K number(2,0) M2L number(2,0) M2M number(2,0) M2N number(2,0) M3A number(2,0) M3B number(2,0) M3C number(2,0) M3D number(2,0) M3E number(2,0) M3F number(2,0) M3G number(2,0) M3H number(2,0) M3I number(2,0) M3J number(2,0) M3K number(2,0) M3L number(2,0) M3M number(2,0) M3N number(2,0) M4 number(3,0) M5 number(3,0) M6 number(3,0) M7 number(3,0) M8 number(3,0) M9 number(3,0) M10 number(2,0) M11 number(4,0) M13 char(1) M14 number(3,0) M15 number(3,0) M17 number(2,0) M18 number(2,0) M19 char(1) M19A char(1) M27 number(2,0) M28 number(2,0) M29 number(2,0) M34 number(4,0) M35 char(1) M36 char(1) M38 number(2,0) M39A number(2,0) M39 number(2,0) M42A char(1) M42B char(1) M42C char(1) M42D char(1) M42E char(1) M43 number(2,0) M44 char(1) M45 char(1) M46 char(1) M47 char(1) M48 char(1) M49A char(1) M49B char(1) M49C char(1) M49D char(1) M49E char(1) M49F char(1) M49G char(1) M49X char(1) M49Z char(1) M49Y char(1) M50 number(2,0) M51 number(4,0) M52 number(3,0) M54 number(2,0) M55A number(2,0) M55B number(2,0) M55C number(2,0) M55D number(2,0) M55E number(2,0) M55F number(2,0) M55G number(2,0) M55H number(2,0) M55I number(2,0) M55J number(2,0) M55K number(2,0) M55L char(1) M55M char(1) M55N char(1) M55O char(1) M55X number(2,0) M55Z number(2,0) M57A number(2,0) M57B char(1) M57C char(1) M57D char(1) M57E number(2,0) M57F number(2,0) M57G number(2,0) M57H number(2,0) M57I number(2,0) M57J number(2,0) M57K number(2,0) M57L number(2,0) M57M number(2,0) M57N number(2,0) M57O number(2,0) M57P number(2,0) M57Q number(2,0) M57R number(2,0) M57S number(2,0) M57T number(2,0) M57U char(1) M57V char(1) M57X number(2,0) M60 char(1) M61 number(4,0) M62 number(2,0) M65A char(1) M65B char(1) M65C char(1) M65D char(1) M65E char(1) M65F char(1) M65G char(1) M65H char(1) M65I char(1) M65J char(1) M65K char(1) M65L char(1) M65X char(1) M66 number(2,0) M70 number(2,0) M71 number(4,0) M72 number(3,0) M73 number(3,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECH3.All FileCode char(7) HHID char(6) SHDISTRICT number(2,0) SHUPAZILA number(3,0) SHADULT35 number(2,0) SHHTEC number(4,0) SH104A number(2,0) SH104B number(3,0) SH110G number(2,0) SH110H number(2,0) SH110I number(2,0) SH110J number(2,0) SH110K number(2,0) SH110L number(2,0) SH118A number(2,0) SH118B number(2,0) SH122A number(2,0) SH122C number(5,2) +# ------------------------------------------------------------------------- +CSV_1_DEF RECH4A.All FileCode char(7) HHID char(6) IDXH4A number(3,0) SH6XA number(2,0) SH6XB number(2,0) SH6XC number(2,0) SH6XX number(2,0) SH6XY number(2,0) SH6XZ number(2,0) SH62A number(2,0) SH62B number(6,0) SH63 number(2,0) SH63B number(2,0) SH68A number(2,0) SH68B number(3,0) SH68C number(3,0) SH6YA number(2,0) SH6YB number(2,0) SH6YC number(2,0) SH6YD number(2,0) SH6YE number(2,0) SH6YF number(2,0) SH6YG number(2,0) SH6YH number(2,0) SH6YI number(2,0) SH6YJ number(2,0) SH6YX number(2,0) SH6YZ number(2,0) SH69A number(2,0) SH70 number(6,0) SH71 number(3,0) SH72 number(6,0) SH73 number(6,0) SH74 number(6,0) SH75 number(2,0) SH76 number(6,0) SH77A number(6,0) SH77B number(6,0) SH77C number(6,0) SH78 number(2,0) SH78A number(5,0) SH90 number(2,0) SH91 number(2,0) SH92 number(3,0) SH93 number(4,0) SH94 number(6,0) SH94A number(2,0) SH95 number(6,0) SH96A number(6,0) SH96B number(6,0) SH96C number(6,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC81.All FileCode char(7) CASEID char(9) V801 number(5,0) V802 number(5,0) V803 number(3,0) V804 number(2,0) V805 number(4,0) V806 number(2,0) V811 number(2,0) V812 number(2,0) V813 number(2,0) V814 number(2,0) V815A char(1) V815B char(1) V815C char(1) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHG2.All FileCode char(7) HHID char(7) SG101 number(3,0) SG103 number(3,0) SG104 number(2,0) SG105 number(2,0) SG106 number(2,0) SG107 number(2,0) SG108 number(3,0) SG109 number(2,0) SG110 number(4,0) SG111 number(3,0) SG112A number(7,0) SG112B number(2,0) SG113A number(6,0) SG113B number(6,0) SG113C number(6,0) SG113D number(6,0) SG114A number(7,0) SG114B number(7,0) SG115 number(2,0) SG116A number(3,0) SG116B number(3,0) SG116C number(3,0) SG116D number(3,0) SG117A number(7,0) SG117B number(2,0) SG118A number(7,0) SG118B number(2,0) SG119A number(7,0) SG119B number(2,0) SG120A char(1) SG120B char(1) SG121 number(2,0) SG122 number(2,0) SG123A number(2,0) SG123B number(2,0) SG123C number(2,0) SG123D number(2,0) SG123E number(2,0) SG123F number(2,0) SG123G number(2,0) SG123H number(2,0) SG123I number(2,0) SG123J number(2,0) SG123X number(2,0) SG124 number(2,0) SG125 number(2,0) SG126 number(7,0) SG127 number(3,0) SG128 number(2,0) SG129 number(2,0) SG201A number(2,0) SG201B number(2,0) SG201C number(2,0) SG201D number(2,0) SG201E number(2,0) SG201F number(2,0) SG201G number(2,0) SG201H number(2,0) SG201I number(2,0) SG201J number(2,0) SG201K number(2,0) SG201L number(2,0) SG201M number(2,0) SG201N number(2,0) SG201X number(2,0) SG202A number(2,0) SG202B number(2,0) SG202C number(2,0) SG202D number(2,0) SG202E number(2,0) SG202F number(2,0) SG202G number(2,0) SG202H number(2,0) SG202I number(2,0) SG202J number(2,0) SG202K number(2,0) SG202L number(2,0) SG202M char(1) SG202N char(1) SG202X number(2,0) SG203A number(2,0) SG203B number(3,0) SG204M number(3,0) SG204A number(5,0) SG205 number(3,0) SG206A number(2,0) SG206B number(6,0) SG207 number(3,0) SG207B number(2,0) SG208A number(2,0) SG208B number(7,0) SG209 number(2,0) SG210 number(2,0) SG211 number(2,0) SG213A number(2,0) SG213B number(7,0) SG214 number(2,0) SG215 number(2,0) SG216A number(2,0) SG216B number(2,0) SG216C number(2,0) SG216D number(2,0) SG216E number(2,0) SG216F number(2,0) SG216G number(2,0) SG216H number(2,0) SG216I number(2,0) SG216X number(2,0) SG216Z number(2,0) SG217A number(2,0) SG217B number(2,0) SG217C number(2,0) SG217D number(2,0) SG217E number(2,0) SG217F number(2,0) SG217G number(2,0) SG217H number(2,0) SG217I number(2,0) SG217X number(2,0) SG217Y number(2,0) SG217Z number(2,0) SG218 number(2,0) SG219A number(2,0) SG219B number(7,0) SG220 number(2,0) SG221 number(2,0) SG222A number(2,0) SG222B number(2,0) SG222C number(2,0) SG222D number(2,0) SG222E number(2,0) SG222F number(2,0) SG222G number(2,0) SG222H number(2,0) SG222I number(2,0) SG222J number(2,0) SG222K number(2,0) SG222X number(2,0) SG222Z number(2,0) SG223A number(2,0) SG223B number(2,0) SG223C number(2,0) SG223D number(2,0) SG223E number(2,0) SG223F number(2,0) SG223G number(2,0) SG223H number(2,0) SG223I number(2,0) SG223J number(2,0) SG223K number(2,0) SG223X number(2,0) SG223Y number(2,0) SG223Z number(2,0) SG224 number(2,0) SG225A number(2,0) SG225B number(7,0) SG226 number(2,0) SG227 number(6,0) SG228A number(2,0) SG228B number(2,0) SG228C number(2,0) SG228D number(2,0) SG228E number(2,0) SG228F number(2,0) SG228G number(2,0) SG228H number(2,0) SG228I number(2,0) SG228J number(2,0) SG228X number(2,0) SG228Y number(2,0) SG228Z number(2,0) SG229 number(3,0) SG230M number(3,0) SG230A number(5,0) SG231 number(3,0) SG232A number(2,0) SG232B number(6,0) SG233 number(2,0) SG234 number(2,0) SG235 number(2,0) SG237A number(2,0) SG237B number(6,0) SG238 number(2,0) SG239 number(2,0) SG240A number(2,0) SG240B number(2,0) SG240C number(2,0) SG240D number(2,0) SG240E number(2,0) SG240F number(2,0) SG240G number(2,0) SG240H number(2,0) SG240I number(2,0) SG240X number(2,0) SG240Z number(2,0) SG241A number(2,0) SG241B number(2,0) SG241C number(2,0) SG241D number(2,0) SG241E number(2,0) SG241F number(2,0) SG241G number(2,0) SG241H number(2,0) SG241I number(2,0) SG241X number(2,0) SG241Y number(2,0) SG241Z number(2,0) SG242 number(2,0) SG243A number(2,0) SG243B number(7,0) SG244 number(2,0) SG245 number(2,0) SG246A number(2,0) SG246B number(2,0) SG246C number(2,0) SG246D number(2,0) SG246E number(2,0) SG246X number(2,0) SG246Z number(2,0) SG247A number(2,0) SG247B number(2,0) SG247C number(2,0) SG247D number(2,0) SG247E number(2,0) SG247X number(2,0) SG247Y number(2,0) SG247Z number(2,0) SG248 number(2,0) SG249A number(2,0) SG249B char(1) SG250 number(2,0) SG251 number(6,0) SG252 number(2,0) SG253A number(4,0) SG253B number(4,0) SG253C number(4,0) SG253 number(4,0) SG254 number(3,0) SG255 number(3,0) SG256A number(2,0) SG256B number(6,0) SG257 number(3,0) SG258A number(2,0) SG258B number(7,0) SG259 number(2,0) SG260 number(2,0) SG261 number(2,0) SG262A number(2,0) SG262B number(6,0) SG263 number(2,0) SG264 number(2,0) SG265A number(2,0) SG265B number(2,0) SG265C number(2,0) SG265D number(2,0) SG265E number(2,0) SG265F number(2,0) SG265G number(2,0) SG265H number(2,0) SG265I number(2,0) SG265X number(2,0) SG265Z number(2,0) SG265AA number(2,0) SG265AB number(2,0) SG265AC number(2,0) SG265AD number(2,0) SG265AE number(2,0) SG265AF number(2,0) SG265AG number(2,0) SG265AH number(2,0) SG265AI number(2,0) SG265AX number(2,0) SG265AY number(2,0) SG265AZ number(2,0) SG265BB number(2,0) SG266A number(2,0) SG266B number(5,0) SG267 number(2,0) SG268 number(2,0) SG269A number(2,0) SG269B number(2,0) SG269C number(2,0) SG269D number(2,0) SG269E number(2,0) SG269F number(2,0) SG269G number(2,0) SG269H number(2,0) SG269I number(2,0) SG269J number(2,0) SG269K number(2,0) SG269X number(2,0) SG269Z number(2,0) SG270A number(2,0) SG270B number(2,0) SG270C number(2,0) SG270D number(2,0) SG270E number(2,0) SG270F number(2,0) SG270G number(2,0) SG270H number(2,0) SG270I number(2,0) SG270J number(2,0) SG270K number(2,0) SG270X number(2,0) SG270Y number(2,0) SG270Z number(2,0) SG271 number(2,0) SG272A number(2,0) SG272B number(7,0) SG273 number(2,0) SG274 number(6,0) SG275 number(2,0) SG276 number(4,0) SG277 number(2,0) SG278 number(2,0) SG279U number(2,0) SG279N number(2,0) SG280A number(2,0) SG280B number(7,0) SG281 number(2,0) SG282A number(2,0) SG282B number(2,0) SG282C number(2,0) SG283 number(6,0) SG284 number(2,0) SG285 number(2,0) SG286 number(6,0) SG287 number(2,0) SG288 number(2,0) SG289 number(7,0) SG290 number(2,0) SG291 number(3,0) SG292 number(6,0) SG292A number(7,0) SG301A number(2,0) SG301B number(2,0) SG301C number(2,0) SG301D number(2,0) SG301E number(2,0) SG301F number(2,0) SG301G number(2,0) SG301H number(2,0) SG301X number(2,0) SG302 number(2,0) SG303A number(2,0) SG303B number(2,0) SG303C number(2,0) SG304A number(2,0) SG304B number(2,0) SG304C number(2,0) SG304D number(2,0) SG304E number(2,0) SG304X number(2,0) SG305 number(3,0) SG306 number(2,0) SG307 number(2,0) SG308 number(2,0) SG309 number(2,0) SG310 number(2,0) SG311 number(3,0) SINGRESOO number(8,0) SINGRESOE number(7,0) SREGALIAP number(7,0) SBONIFICA number(7,0) SIFUENTE1 number(8,0) SIFUENTE2 number(7,0) SIFUENTE3 number(7,0) SIFUENTE4 char(1) SINGRESOTP number(8,0) SINGRESOIP number(2,0) SINGRESOIB number(3,0) SGASTOTI char(1) SINGRESOIPA number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHMA.All FileCode char(7) HHID char(7) HB0 number(3,0) HB1 number(3,0) HB2 number(5,0) HB3 number(5,0) HB4 number(5,0) HB5 number(5,0) HB6 number(6,0) HB11 number(5,0) HB12 number(6,0) HB12A number(6,0) HB12B number(6,0) HB13 number(2,0) HB32 number(5,0) HB33 number(2,0) HB35 char(1) HB40 number(5,0) HB41 number(5,0) HB50 char(1) HB51 char(1) HB52 char(1) HB53 char(1) HB55 char(1) HB56 char(1) HB57 char(1) HB58 char(1) HB60 char(1) HB61 char(1) HB62 char(1) HB63 char(1) HB64 char(1) HB65 number(2,0) HB66 number(2,0) HB67 number(3,0) HB68 number(2,0) HB69 char(1) HB70 char(1) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHMT.All FileCode char(7) HHID char(7) SHMTX number(2,0) SH78 number(2,0) SH79 number(3,0) SH80M number(3,0) SH80A number(5,0) SH81 number(2,0) SH80MI number(3,0) SH80AI number(5,0) SH80C number(3,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC98.All FileCode char(7) CASEID char(11) IDX98 number(2,0) S570 number(3,0) S571 number(3,0) S572 number(3,0) S573A number(2,0) S573B number(9,0) S573C number(3,0) S573D number(3,0) S573E number(5,0) S575 number(9,0) S576A number(3,0) S576B number(3,0) S576C number(5,0) S576D number(9,0) S576E number(3,0) S576F number(3,0) S576G number(5,0) S576H number(9,0) S576I number(3,0) S576J number(3,0) S577A number(5,0) S577B number(9,0) S577C number(3,0) S577D number(3,0) S577E number(5,0) S577F number(9,0) S577G number(3,0) S577G1 number(3,0) S577G2 number(5,0) S577H number(9,0) S577I number(3,0) S577J number(3,0) S577K number(5,0) S577L number(9,0) S577M number(3,0) S577N number(3,0) S577O number(5,0) S577P number(9,0) S577Q number(3,0) S577R number(3,0) S578A number(5,0) S578B number(9,0) S578C number(3,0) S578D number(3,0) S578E number(5,0) S578F number(9,0) S578G number(3,0) S578H number(3,0) S578I number(5,0) S578J number(9,0) S578K number(3,0) S578L number(3,0) S578M number(5,0) S578N number(9,0) S578O number(3,0) S578P number(3,0) S578P1 number(5,0) S578P2 number(9,0) S578Q number(3,0) S578R number(3,0) S578S number(5,0) S578T number(9,0) S578U number(3,0) S578V number(3,0) S578W number(5,0) S578X number(9,0) S578Y number(3,0) S579A number(3,0) S579B number(5,0) S579C number(9,0) S579D number(3,0) S579E number(3,0) S579F number(5,0) S579G number(2,0) S580 number(2,0) S581A number(2,0) S581B number(2,0) S581C number(2,0) S581D number(2,0) S581E number(2,0) S581F number(2,0) S581G number(2,0) S581H number(2,0) S581I number(2,0) S581J number(2,0) S581X number(2,0) S582 number(2,0) S583 number(3,0) S583B number(3,0) S584 number(3,0) S584B number(3,0) S585 number(2,0) S586 number(2,0) S587 number(3,0) S588 number(2,0) S589 number(3,0) S591 number(3,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECH2.All FileCode char(7) HHID char(6) HV201 number(3,0) HV202 char(1) HV204 number(4,0) HV205 number(3,0) HV206 number(2,0) HV207 number(2,0) HV208 number(2,0) HV209 number(2,0) HV210 number(2,0) HV211 number(2,0) HV212 char(1) HV213 number(3,0) HV214 number(3,0) HV215 number(3,0) HV216 number(3,0) HV217 number(2,0) HV218 number(2,0) HV219 number(2,0) HV220 number(3,0) HV221 number(2,0) HV225 number(2,0) HV226 number(3,0) HV227 char(1) HV228 char(1) HV230A number(2,0) HV230B number(2,0) HV232 number(2,0) HV232B number(2,0) HV232C number(2,0) HV232D number(2,0) HV232E char(1) HV232Y number(2,0) HV234 char(1) HV234A number(2,0) HV235 number(2,0) HV236 char(1) HV237 number(2,0) HV237A number(2,0) HV237B number(2,0) HV237C number(2,0) HV237D number(2,0) HV237E number(2,0) HV237F number(2,0) HV237G number(2,0) HV237H char(1) HV237I char(1) HV237J char(1) HV237K char(1) HV237X number(2,0) HV237Z number(2,0) HV238 number(3,0) HV239 char(1) HV240 char(1) HV241 number(2,0) HV242 number(2,0) HV243A number(2,0) HV243B char(1) HV243C char(1) HV243D char(1) HV244 number(2,0) HV245 number(4,0) HV246 number(2,0) HV246A char(1) HV246B number(2,0) HV246C char(1) HV246D char(1) HV246E char(1) HV246F char(1) HV246G number(3,0) HV246H number(3,0) HV246I number(3,0) HV246J char(1) HV246K char(1) HV247 number(2,0) HV252 number(2,0) HV253 char(1) HV253A char(1) HV253B char(1) HV253C char(1) HV253D char(1) HV253E char(1) HV253F char(1) HV253G char(1) HV253H char(1) HV253X char(1) HV253Z char(1) HV270 number(2,0) HV271 number(8,0) HML1 char(1) HML1A char(1) HML2 char(1) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHPC.All FileCode char(7) HHID char(6) HPCIDX number(3,0) SH198C number(2,0) SH198D number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC32.All FileCode char(7) CASEID char(9) V310 char(1) V311 char(1) V312 number(3,0) V313 number(2,0) V315 number(3,0) V316 number(5,0) V317 number(5,0) V318 number(2,0) V319 number(2,0) V320 number(2,0) V321 number(2,0) V322 number(2,0) V323 number(3,0) V323A number(3,0) V325A char(1) V326 number(3,0) V327 number(2,0) V337 number(3,0) V359 number(3,0) V360 number(3,0) V361 number(2,0) V362 number(2,0) V363 number(3,0) V364 number(2,0) V367 number(2,0) V372 number(2,0) V372A number(2,0) V375A char(1) V376 number(3,0) V376A char(1) V379 char(1) V380 char(1) V384A number(2,0) V384B number(2,0) V384C number(2,0) V393 char(1) V394 char(1) V395 char(1) V3A00A number(2,0) V3A00B number(2,0) V3A00C number(2,0) V3A00D number(2,0) V3A00E number(2,0) V3A00F number(2,0) V3A00G number(2,0) V3A00H number(2,0) V3A00I number(2,0) V3A00J number(2,0) V3A00K number(2,0) V3A00L number(2,0) V3A00M number(2,0) V3A00N number(2,0) V3A00O number(2,0) V3A00P char(1) V3A00Q char(1) V3A00R char(1) V3A00S number(2,0) V3A00T char(1) V3A00U number(2,0) V3A00V number(2,0) V3A00W number(2,0) V3A00X number(2,0) V3A00Y number(2,0) V3A00Z number(2,0) V3A01 char(1) V3A02 char(1) V3A03 char(1) V3A04 char(1) V3A05 char(1) V3A06 char(1) V3A07 number(3,0) V3A08A char(1) V3A08B number(2,0) V3A08C number(2,0) V3A08D number(2,0) V3A08E number(2,0) V3A08F number(2,0) V3A08G number(2,0) V3A08H number(2,0) V3A08I number(2,0) V3A08J number(2,0) V3A08K number(2,0) V3A08L number(2,0) V3A08M number(2,0) V3A08N number(2,0) V3A08O char(1) V3A08P number(2,0) V3A08Q number(2,0) V3A08R number(2,0) V3A08S number(2,0) V3A08T number(2,0) V3A08U number(2,0) V3A08V number(2,0) V3A08W char(1) V3A08AA char(1) V3A08AB char(1) V3A08AC char(1) V3A08AD char(1) V3A08X number(2,0) V3A08Z number(2,0) V3A09A char(1) V3A09B char(1) +# ------------------------------------------------------------------------- +CSV_1_DEF REC80.All FileCode char(7) CASEID char(9) V820 char(1) V821A char(1) V821B char(1) V821C char(1) V822 char(1) V823 number(2,0) V824 char(1) V825 char(1) V826 char(1) V826A char(1) V827 char(1) V828 char(1) V829 char(1) V830 char(1) V831 char(1) V832B char(1) V832C char(1) V833A char(1) V833B char(1) V833C char(1) V834A char(1) V834B char(1) V834C char(1) V835A char(1) V835B char(1) V835C char(1) V836 char(1) V837 char(1) V838A char(1) V838B char(1) V838C char(1) V839 char(1) V839A char(1) V840 char(1) V840A char(1) V841 char(1) V841A char(1) V842 char(1) V843 char(1) V844 char(1) V845 char(1) V846 char(1) V847 char(1) V848 char(1) V849 char(1) V850A char(1) V850B char(1) V851A char(1) V851B char(1) V851C char(1) V851D char(1) V851E char(1) V851F char(1) V851G char(1) V851H char(1) V851I char(1) V851J char(1) V851K char(1) V851L char(1) V852A char(1) V852B char(1) V852C char(1) V853A char(1) V853B char(1) V853C char(1) V854A char(1) V854B char(1) V855 char(1) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHG1.All FileCode char(7) HHID char(7) SGCONGL number(5,0) SGHOGAR number(3,0) SGESTR char(1) SGPROVIN number(2,0) SGMUNIC char(1) SGZONA number(2,0) SGRESP number(3,0) SGINT number(9,0) SGINTD number(3,0) SGINTM number(3,0) SGINTA number(5,0) SGINTNUM number(4,0) SGRESULT number(2,0) SGVISITS number(2,0) SGSUPERV number(4,0) SGEDITC number(4,0) SGEDITO number(2,0) SGDIGIT number(3,0) SGHORAI number(3,0) SGMINUTI number(3,0) SGHORAF number(3,0) SGMINUTF number(3,0) SGWEIGHT number(9,0) SINGRTH number(8,0) SINGRTHP number(9,0) SINGRHI number(2,0) SVIVIG1 number(2,0) SVIVIG2 number(2,0) SVALPRO number(6,0) SQUINTIP number(2,0) SALLINCI number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC97.All FileCode char(7) CASEID char(12) S902 number(2,0) S903A number(2,0) S903B number(2,0) S903C number(2,0) S903D number(2,0) S903E number(2,0) S903F number(2,0) S903G number(2,0) S903H number(2,0) S903X number(2,0) S903Z number(2,0) S904 number(2,0) S905M number(3,0) S905Y number(5,0) S906 number(2,0) S907 number(2,0) S908 number(3,0) S909 number(2,0) S910 number(2,0) S911 number(2,0) S912 number(2,0) S913 number(3,0) S914 number(2,0) S915 number(3,0) S916 number(2,0) S917 number(3,0) S918 number(2,0) S919 number(3,0) S920 number(2,0) S921 number(2,0) S922 number(2,0) S923 number(2,0) S924 number(3,0) S926 number(2,0) S927 number(2,0) S928 number(2,0) S929 number(2,0) S930 number(3,0) S931 number(2,0) S932 number(2,0) S933 number(2,0) S934 number(2,0) S936 number(2,0) S937A number(2,0) S937B number(2,0) S937C number(2,0) S937D number(2,0) S937E number(2,0) S937F number(2,0) S937G number(2,0) S937H number(2,0) S937X number(2,0) S937Z number(2,0) S938 number(2,0) S939 number(2,0) S940M number(3,0) S940Y number(5,0) S941 number(2,0) S942 number(3,0) S943 number(2,0) S944 number(2,0) S945 number(2,0) S946 number(2,0) S947 number(2,0) S948 number(3,0) S949 number(2,0) S950 number(3,0) S951 number(3,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHLB.All FileCode char(7) HHID char(6) SHCOL21A number(2,0) SH21 number(3,0) SH22 number(2,0) SH23 number(3,0) SH24 number(2,0) SH25 number(2,0) SH26 number(3,0) SH27 number(2,0) SH28 number(3,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECML.All FileCode char(7) CASEID char(9) IDXML number(2,0) ML0 number(2,0) ML1 number(3,0) ML2 number(2,0) ML11 char(1) ML12 char(1) ML13A number(2,0) ML13B number(2,0) ML13C number(2,0) ML13D number(2,0) ML13E number(2,0) ML13F char(1) ML13G char(1) ML13H number(2,0) ML13I number(2,0) ML13J number(2,0) ML13K number(2,0) ML13L number(2,0) ML13M number(2,0) ML13N char(1) ML13O char(1) ML13P char(1) ML13X number(2,0) ML13Y number(2,0) ML13Z number(2,0) ML14A char(1) ML14B char(1) ML14Y char(1) ML14Z char(1) ML15A char(1) ML15B char(1) ML15C char(1) ML16A number(2,0) ML16B char(1) ML16C char(1) ML17A number(2,0) ML17B char(1) ML17C char(1) ML18A char(1) ML18B char(1) ML18C char(1) ML19A char(1) ML19B char(1) ML19C char(1) ML19D char(1) ML19E char(1) ML19F char(1) ML19X char(1) ML19Y char(1) ML19Z char(1) ML20A number(2,0) ML20B char(1) ML20C char(1) ML21A char(1) ML21B char(1) ML21C char(1) ML22A char(1) ML22B char(1) ML22C char(1) ML23A number(2,0) ML23B char(1) ML23C char(1) ML24C char(1) +# ------------------------------------------------------------------------- +CSV_1_DEF RECH1.All FileCode char(7) HHID char(5) HVIDX number(3,0) HV101 number(3,0) HV102 number(2,0) HV103 number(2,0) HV104 number(2,0) HV105 number(3,0) HV106 number(2,0) HV107 number(2,0) HV108 number(3,0) HV109 number(2,0) HV110 char(1) HV111 char(1) HV112 char(1) HV113 char(1) HV114 char(1) HV115 char(1) HV116 number(2,0) HV117 number(2,0) HV118 number(2,0) HV120 number(2,0) HV121 number(2,0) HV122 number(2,0) HV123 number(2,0) HV124 number(3,0) HV125 char(1) HV126 char(1) HV127 char(1) HV128 char(1) HV129 char(1) HV140 number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC31.All FileCode char(7) CASEID char(9) V301 char(1) V302 char(1) V302A number(2,0) REC31_GROUP number(2,0) V304A char(1) V304 char(1) V305 char(1) V307 number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHW.All FileCode char(7) HHID char(6) SHCOLD number(2,0) SH215 number(3,0) SH216 number(6,0) SH217 number(5,0) SH240 number(4,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC96.All FileCode char(7) CASEID char(12) IDX96 number(2,0) S566 number(2,0) S567 number(3,0) S568A number(2,0) S568B number(2,0) S568C number(2,0) S568D number(2,0) S568E number(2,0) S569A number(2,0) S569B number(2,0) S569C number(2,0) S569D number(2,0) S569E number(2,0) S570A number(2,0) S570B number(2,0) S570C number(2,0) S570D number(2,0) S570X number(2,0) S571 number(2,0) S572A number(2,0) S572B number(2,0) S572C number(2,0) S572D number(2,0) S572X number(2,0) S572Y number(2,0) S573 number(3,0) S574 number(3,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC71.All FileCode char(7) CASEID char(9) V701 number(2,0) V702 number(2,0) V704 number(3,0) V705 char(1) V714 number(2,0) V714A number(2,0) V715 number(3,0) V716 number(3,0) V717 char(1) V719 number(2,0) V721 char(1) V729 number(2,0) V730 number(3,0) V731 number(2,0) V732 number(2,0) V739 number(2,0) V740 char(1) V741 number(2,0) V743A number(2,0) V743B number(2,0) V743C char(1) V743D number(2,0) V743E char(1) V743F char(1) V744A number(2,0) V744B number(2,0) V744C number(2,0) V744D number(2,0) V744E number(2,0) V745A char(1) V745B char(1) V746 char(1) +# ------------------------------------------------------------------------- +CSV_1_DEF RECDV.All FileCode char(7) CASEID char(9) D005 number(8,0) D101A number(2,0) D101B number(2,0) D101C number(2,0) D101D number(2,0) D101E number(2,0) D101F number(2,0) D101G number(2,0) D101H char(1) D101I char(1) D101J char(1) D102 number(2,0) D103A number(2,0) D103B number(2,0) D103C char(1) D103D char(1) D103E char(1) D103F char(1) D104 number(2,0) D105A number(2,0) D105B number(2,0) D105C number(2,0) D105D number(2,0) D105E number(2,0) D105F number(2,0) D105G number(2,0) D105H number(2,0) D105I number(2,0) D105J char(1) D105K char(1) D105L char(1) D105M char(1) D105N char(1) D106 number(2,0) D107 number(2,0) D108 number(2,0) D109 number(3,0) D110A number(2,0) D110B number(2,0) D110C number(2,0) D110D char(1) D110E char(1) D110F char(1) D110G char(1) D110H char(1) D111 number(2,0) D112 number(2,0) D112A number(2,0) D113 number(2,0) D114 number(2,0) D115B number(2,0) D115C number(2,0) D115D number(2,0) D115E number(2,0) D115F number(2,0) D115G number(2,0) D115H char(1) D115I char(1) D115J number(2,0) D115K number(2,0) D115L number(2,0) D115M number(2,0) D115N number(2,0) D115O number(2,0) D115P number(2,0) D115Q number(2,0) D115R number(2,0) D115S number(2,0) D115T number(2,0) D115U char(1) D115V number(2,0) D115W number(2,0) D115X number(2,0) D115Y number(2,0) D115XA number(2,0) D115XB char(1) D115XC char(1) D115XD char(1) D115XE char(1) D115XF char(1) D115XG char(1) D115XH char(1) D115XI char(1) D115XJ char(1) D115XK char(1) D116 number(3,0) D117A number(2,0) D118A char(1) D118B number(2,0) D118C number(2,0) D118D number(2,0) D118E number(2,0) D118F number(2,0) D118G number(2,0) D118H char(1) D118I char(1) D118J number(2,0) D118K number(2,0) D118L number(2,0) D118M number(2,0) D118N number(2,0) D118O number(2,0) D118P number(2,0) D118Q number(2,0) D118R number(2,0) D118S number(2,0) D118T number(2,0) D118U char(1) D118V number(2,0) D118W number(2,0) D118X number(2,0) D118Y number(2,0) D118XA number(2,0) D118XB char(1) D118XC char(1) D118XD char(1) D118XE char(1) D118XF char(1) D118XG char(1) D118XH char(1) D118XI char(1) D118XJ char(1) D118XK char(1) D119A char(1) D119B number(2,0) D119C number(2,0) D119D number(2,0) D119E number(2,0) D119F number(2,0) D119G number(2,0) D119H char(1) D119I char(1) D119J number(2,0) D119K number(2,0) D119L number(2,0) D119M number(2,0) D119N number(2,0) D119O number(2,0) D119P number(2,0) D119Q number(2,0) D119R number(2,0) D119S number(2,0) D119T number(2,0) D119U char(1) D119V number(2,0) D119W number(2,0) D119X number(2,0) D119Y number(2,0) D119XA number(2,0) D119XB char(1) D119XC char(1) D119XD char(1) D119XE char(1) D119XF char(1) D119XG char(1) D119XH char(1) D119XI char(1) D119XJ char(1) D119XK char(1) D120 number(3,0) D121 number(2,0) D122A number(2,0) D122B number(2,0) D122C number(2,0) D123 char(1) D124 char(1) D125 char(1) D126 char(1) D127 char(1) D128 char(1) D129 char(1) D130A char(1) D130B char(1) D100A number(2,0) D100B number(2,0) D100C number(2,0) D100D number(2,0) D112N char(1) D117 char(1) D121A number(2,0) D1310A number(2,0) D1310B number(3,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHMH.All FileCode char(7) HHID char(6) HMHIDX number(3,0) HML12 number(2,0) HML13 number(2,0) HML14 number(2,0) HML15 char(1) HML16 number(3,0) HML16A number(3,0) HML17 number(2,0) HML18 number(2,0) HML19 number(2,0) HML20 number(2,0) HML30 number(2,0) HML31 number(2,0) HML32 number(2,0) HML32A char(1) HML32B char(1) HML32C char(1) HML32D char(1) HML32E char(1) HML32F char(1) HML32G char(1) HML33 char(1) HML34 char(6) HML35 number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECH0.All FileCode char(7) HHID char(6) HV000 char(4) HV001 number(3,0) HV002 number(4,0) HV003 number(2,0) HV004 number(3,0) HV005 number(7,0) HV006 number(3,0) HV007 number(5,0) HV008 number(5,0) HV009 number(3,0) HV010 number(2,0) HV011 number(2,0) HV012 number(3,0) HV013 number(3,0) HV014 number(2,0) HV015 number(2,0) HV016 number(3,0) HV017 number(2,0) HV018 number(4,0) HV019 number(2,0) HV020 number(2,0) HV021 number(3,0) HV022 number(3,0) HV023 number(3,0) HV024 number(2,0) HV025 number(2,0) HV026 number(2,0) HV027 number(2,0) HV028 number(7,0) HV030 number(3,0) HV031 number(3,0) HV032 number(2,0) HV035 number(2,0) HV040 number(3,0) HV041 number(2,0) HV042 number(2,0) HV044 char(1) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHC.All FileCode char(7) HHID char(7) SHCOLC number(2,0) SH202 number(3,0) SH205 number(5,0) SH206 number(5,0) SH212 number(4,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECG2.All FileCode char(7) CASEID char(9) GIDX number(2,0) G121 number(2,0) G122 number(3,0) G123 number(2,0) G124 number(3,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC22.All FileCode char(7) CASEID char(9) V201 number(3,0) V202 number(2,0) V203 number(2,0) V204 number(2,0) V205 number(2,0) V206 number(2,0) V207 number(2,0) V208 number(2,0) V209 number(2,0) V210 number(2,0) V211 number(5,0) V212 number(3,0) V213 number(2,0) V214 number(2,0) V215 number(4,0) V216 number(2,0) V217 char(1) V218 number(2,0) V219 number(2,0) V220 number(2,0) V221 number(4,0) V222 number(4,0) V223 number(2,0) V224 number(3,0) V225 number(2,0) V226 number(4,0) V227 number(2,0) V228 number(2,0) V229 number(3,0) V230 number(5,0) V231 number(5,0) V232 number(2,0) V233 number(2,0) V234 number(2,0) V235 number(2,0) V237 number(2,0) V238 number(2,0) V239 number(2,0) V240 number(3,0) V241 number(5,0) V242 number(5,0) V243 number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHOV.All FileCode char(7) HHID char(7) HOVIDX number(3,0) HO100 number(3,0) HO101 number(2,0) HO102 number(2,0) HO103 number(2,0) HO104 number(2,0) HO105 number(2,0) HO106 number(2,0) HO107 number(2,0) HO108 number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC95.All FileCode char(7) CASEID char(9) IDX95 number(2,0) S506AD number(3,0) S506AM number(3,0) S506AY number(5,0) SHB1 number(2,0) SHB1D number(3,0) SHB1M number(3,0) SHB1Y number(5,0) SHB2 number(2,0) SHB2D number(3,0) SHB2M number(3,0) SHB2Y number(5,0) SHB3 number(2,0) SHB3D number(3,0) SHB3M number(3,0) SHB3Y number(5,0) S510J number(2,0) S519J number(2,0) S522C number(2,0) S522D number(2,0) S523A number(2,0) S523B number(2,0) S523C number(2,0) S523D number(2,0) S523E number(2,0) S523F number(2,0) S523G number(2,0) S523H number(2,0) S523I number(2,0) S523J number(2,0) S523K number(2,0) S523L number(2,0) S523M number(2,0) S523N number(2,0) S523O number(2,0) S523P number(2,0) S523Q number(2,0) S523R number(2,0) S523S number(2,0) S523T number(2,0) S523U number(2,0) S523V number(2,0) S523W number(2,0) S523X number(2,0) S536A number(2,0) S536K number(2,0) S536B number(3,0) S536C number(3,0) S536D char(1) S538O number(2,0) S538P number(2,0) S539 number(2,0) S540A number(2,0) S540B number(2,0) S540C number(2,0) S540D number(2,0) S540E number(2,0) S540F number(2,0) S540G number(2,0) S540H number(2,0) S540I number(2,0) S540J number(2,0) S540K number(2,0) S540L number(2,0) S540W number(2,0) S540X number(2,0) S541A number(2,0) S541B number(2,0) S541C number(2,0) S541D number(2,0) S541E number(2,0) S541F number(2,0) S541G number(2,0) S541H number(2,0) S541I number(2,0) S541J number(2,0) S541K number(2,0) S541L number(2,0) S541M number(2,0) S541N number(2,0) S541O number(2,0) S541P number(2,0) S541Q number(2,0) S541R number(2,0) S541S number(2,0) S541T number(2,0) S541U number(2,0) S541V number(2,0) S541W number(2,0) S541X number(2,0) S541Y number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECH9.All FileCode char(7) HHID number(9,0) SHIDX9 number(2,0) SH78O number(3,0) SH79 number(3,0) SH80 number(4,0) SH81 number(3,0) SH82 number(2,0) SH83 number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECG1.All FileCode char(7) CASEID char(9) G100 number(2,0) G101 number(2,0) G102 number(2,0) G103 number(2,0) G104 number(2,0) G105 number(2,0) G106 number(3,0) G107 number(3,0) G108 number(3,0) G109 char(1) G110 char(1) G111 char(1) G112 char(1) G113 char(1) G114 char(1) G115 char(1) G116 char(1) G117A char(1) G117B char(1) G117C char(1) G117D char(1) G117E char(1) G117F char(1) G117G char(1) G117H char(1) G117I char(1) G117J char(1) G117X char(1) G117Y char(1) G118 number(2,0) G119 number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC21.All FileCode char(7) CASEID char(9) BIDX number(2,0) BORD number(2,0) B0 number(2,0) B1 number(3,0) B2 number(5,0) B3 number(5,0) B4 number(2,0) B5 number(2,0) B6 number(4,0) B7 number(4,0) B8 number(3,0) B9 number(2,0) B10 number(2,0) B11 number(4,0) B12 number(4,0) B13 number(2,0) B15 number(2,0) B16 number(3,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC94.All FileCode char(7) CASEID char(9) IDX94 number(2,0) S410J number(2,0) S433L number(2,0) S435C number(2,0) S435D number(2,0) S435E number(2,0) S435F number(2,0) S435GA number(2,0) S435GB number(2,0) S435GC number(2,0) S435GD number(2,0) S435GE number(2,0) S435GF number(2,0) S435GG number(2,0) S435GH number(2,0) S435GI number(2,0) S435GJ number(2,0) S435GK number(2,0) S435GL number(2,0) S435GM number(2,0) S435GN number(2,0) S435GX number(2,0) S435GZ number(2,0) S435H number(4,0) S435I number(2,0) S435J number(2,0) S439A number(3,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECH8.All FileCode char(7) HHID char(5) SHCOL3B number(2,0) SH223 number(3,0) SH225 number(3,0) SH226 number(3,0) SH227 number(6,0) SH227AA number(6,0) SH227AB number(6,0) SH227AC number(6,0) SH227AD number(6,0) SH227AE number(6,0) SH227AF number(6,0) SH227AG number(6,0) SH228 number(2,0) SH229 number(3,0) SH230 number(3,0) SH231 number(6,0) SH231AA number(6,0) SH231AB number(6,0) SH231AC number(6,0) SH231AD number(6,0) SH231AE number(6,0) SH231AF number(6,0) SH231AG number(6,0) SH232 number(2,0) SH233 number(3,0) SH234 number(2,0) SH235 number(6,0) SH235AA number(6,0) SH235AB number(6,0) SH235AC number(6,0) SH235AD number(6,0) SH235AE number(6,0) SH235AF number(6,0) SH235AG number(6,0) SH236 number(2,0) SH237 char(1) SH238 char(1) SH239 number(2,0) SH240 number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC61.All FileCode char(7) CASEID char(9) V602 number(2,0) V603 number(4,0) V604 number(2,0) V605 number(2,0) V613 number(3,0) V614 number(2,0) V616 number(4,0) V621 number(2,0) V623 number(2,0) V624 number(2,0) V625 number(2,0) V626 number(2,0) V625A number(2,0) V626A number(2,0) V627 number(3,0) V628 number(3,0) V629 number(3,0) V631 char(1) V632 number(2,0) V633A char(1) V633B char(1) V633C char(1) V633D char(1) V633E char(1) V633F char(1) V633G char(1) V634 char(1) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHA.All FileCode char(7) HHID char(7) SHCOLA number(2,0) SH53 number(3,0) SH54 number(2,0) SH55 number(2,0) SH56 number(2,0) SH57 number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHSK.All FileCode char(7) HHID char(7) HSKIDX number(3,0) HS100 number(2,0) HS101 number(2,0) HS102 number(2,0) HS103 number(2,0) HS104 number(2,0) HS105 number(2,0) HS106 number(2,0) HS107 number(2,0) HS108 number(2,0) HS109 number(2,0) HS110 number(2,0) HS111 number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECH7.All FileCode char(7) HHID char(6) SH230 number(3,0) SH231 number(2,0) SH232 number(2,0) SH234 number(3,0) SH234C number(3,0) SH235 number(2,0) SH237 number(2,0) SH238 number(2,0) SH239 number(3,0) SH241 number(2,0) SH242A number(2,0) SH242B number(2,0) SH242C number(2,0) SH243 number(3,0) SH244 number(2,0) SH245 number(5,0) SH246S number(4,0) SH246D number(4,0) SH248 number(2,0) SH249 number(2,0) SH250 number(2,0) SH253 number(5,0) SH254 number(2,0) SH255S number(4,0) SH255D number(4,0) SH257 number(2,0) SH258 number(2,0) SH259 number(2,0) SH260 number(2,0) SH262 number(5,0) SH263 number(2,0) SH264S number(4,0) SH264D number(4,0) FSYSTO number(4,0) FDYSTO number(4,0) SH271 number(5,0) SH273 number(5,0) SH276 number(2,0) SHWH number(2,0) SH1 number(14,0) SH1D number(3,0) SH1MO number(3,0) SH1Y number(5,0) SH1H number(3,0) SH1M number(3,0) SH1X number(2,0) SH2 number(14,0) SH2D number(3,0) SH2MO number(3,0) SH2Y number(5,0) SH2H number(3,0) SH2M number(3,0) SH2X number(2,0) SH3 number(14,0) SH3D number(3,0) SH3MO number(3,0) SH3Y number(5,0) SH3H number(3,0) SH3M number(3,0) SH3X number(2,0) SH279 number(2,0) SH280 number(5,0) SH281 number(5,0) SH283 number(9,0) SH283D number(3,0) SH283M number(3,0) SH283Y number(5,0) SH283T number(5,0) SH284 number(4,0) SH284A number(4,0) SH284G number(4,0) SH284B number(4,0) SHPC1 number(5,0) SHSD1 number(5,0) SHRM1 number(6,0) SHRM3 number(6,0) SHRM4 number(6,0) SHRM5 number(6,0) SHSD3 number(5,0) SHBM number(5,0) SHRI number(5,0) SHCMC number(4,0) SHFLG number(2,0) SHSMK char(1) SHRESI number(2,0) SHED1 number(2,0) SHED2 number(3,0) SHED3 number(2,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHDP.All FileCode char(7) HHID char(6) HDPIDX number(2,0) HD100 number(2,0) HD101 number(4,0) +# ------------------------------------------------------------------------- +CSV_1_DEF RECHS.All FileCode char(7) HHID char(6) SH67 number(3,0) SH68 number(2,0) SH69 number(2,0) SH70 number(3,0) SH71U number(2,0) SH71N number(7,0) SH72U number(2,0) SH72N number(7,0) SH73 number(2,0) SH74 number(3,0) SH75U number(2,0) SH75N number(7,0) SH76U number(2,0) SH76N number(7,0) SH77 number(2,0) SH78 number(3,0) SH79U number(2,0) SH79N number(7,0) SH80U number(2,0) SH80N number(7,0) +# ------------------------------------------------------------------------- +CSV_1_DEF REC44.All FileCode char(7) CASEID char(9) HWIDX number(2,0) HW1 number(3,0) HW2 number(5,0) HW3 number(5,0) HW4 number(5,0) HW5 number(5,0) HW6 number(6,0) HW7 number(5,0) HW8 number(5,0) HW9 number(6,0) HW10 number(5,0) HW11 number(5,0) HW12 number(6,0) HW13 number(2,0) HW15 number(2,0) HW16 number(3,0) HW17 number(3,0) HW18 number(3,0) HW19 number(5,0) HW51 number(3,0) HW52 number(2,0) HW53 number(4,0) HW55 number(2,0) HW56 number(5,0) HW57 number(2,0) HW58 char(1) HW70 number(5,0) HW71 number(5,0) HW72 number(5,0) HW73 number(5,0) +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" INPUT FEATURE_TYPE * @SupplyAttributes(multi_reader_keyword,CSV_1) ROUTE CSV CSV_1::RECH6.All TO FME_GENERIC ::RECH6.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC92.All TO FME_GENERIC ::REC92.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC11.All TO FME_GENERIC ::REC11.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHI.All TO FME_GENERIC ::RECHI.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC84.All TO FME_GENERIC ::REC84.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC51.All TO FME_GENERIC ::REC51.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC43.All TO FME_GENERIC ::REC43.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECH5.All TO FME_GENERIC ::RECH5.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC91.All TO FME_GENERIC ::REC91.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHDP2.All TO FME_GENERIC ::RECHDP2.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC83.All TO FME_GENERIC ::REC83.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHMC.All TO FME_GENERIC ::RECHMC.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC75.All TO FME_GENERIC ::REC75.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC42.All TO FME_GENERIC ::REC42.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHCHL.All TO FME_GENERIC ::RECHCHL.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHML.All TO FME_GENERIC ::RECHML.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECH4.All TO FME_GENERIC ::RECH4.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC82.All TO FME_GENERIC ::REC82.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC01.All TO FME_GENERIC ::REC01.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC41.All TO FME_GENERIC ::REC41.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECH3.All TO FME_GENERIC ::RECH3.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECH4A.All TO FME_GENERIC ::RECH4A.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC81.All TO FME_GENERIC ::REC81.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHG2.All TO FME_GENERIC ::RECHG2.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHMA.All TO FME_GENERIC ::RECHMA.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHMT.All TO FME_GENERIC ::RECHMT.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC98.All TO FME_GENERIC ::REC98.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECH2.All TO FME_GENERIC ::RECH2.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHPC.All TO FME_GENERIC ::RECHPC.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC32.All TO FME_GENERIC ::REC32.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC80.All TO FME_GENERIC ::REC80.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHG1.All TO FME_GENERIC ::RECHG1.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC97.All TO FME_GENERIC ::REC97.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHLB.All TO FME_GENERIC ::RECHLB.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECML.All TO FME_GENERIC ::RECML.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECH1.All TO FME_GENERIC ::RECH1.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC31.All TO FME_GENERIC ::REC31.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHW.All TO FME_GENERIC ::RECHW.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC96.All TO FME_GENERIC ::REC96.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC71.All TO FME_GENERIC ::REC71.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECDV.All TO FME_GENERIC ::RECDV.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHMH.All TO FME_GENERIC ::RECHMH.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECH0.All TO FME_GENERIC ::RECH0.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHC.All TO FME_GENERIC ::RECHC.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECG2.All TO FME_GENERIC ::RECG2.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC22.All TO FME_GENERIC ::REC22.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHOV.All TO FME_GENERIC ::RECHOV.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC95.All TO FME_GENERIC ::REC95.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECH9.All TO FME_GENERIC ::RECH9.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECG1.All TO FME_GENERIC ::RECG1.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC21.All TO FME_GENERIC ::REC21.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC94.All TO FME_GENERIC ::REC94.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECH8.All TO FME_GENERIC ::RECH8.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC61.All TO FME_GENERIC ::REC61.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHA.All TO FME_GENERIC ::RECHA.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHSK.All TO FME_GENERIC ::RECHSK.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECH7.All TO FME_GENERIC ::RECH7.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHDP.All TO FME_GENERIC ::RECHDP.All ALIAS_GEOMETRY ROUTE CSV CSV_1::RECHS.All TO FME_GENERIC ::RECHS.All ALIAS_GEOMETRY ROUTE CSV CSV_1::REC44.All TO FME_GENERIC ::REC44.All ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * +CSV_1_MERGE_DEF CSV_1::RECH6.All EXACT RECH6.All DEFLINE FileCode,char7,HHID,char6,HC0,number30,HC1,number30,HC2,number50,HC3,number50,HC4,number50,HC5,number50,HC6,number60,HC7,number50,HC8,number50,HC9,number60,HC10,number50,HC11,number50,HC12,number60,HC13,number20,HC15,number20,HC16,number30,HC17,number30,HC18,number30,HC19,number50,HC27,number20,HC30,number30,HC31,number50,HC32,number50,HC33,number20,HC51,number30,HC52,number20,HC53,number40,HC55,number20,HC56,number40,HC57,number20,HC58,char1,HC60,number40,HC61,number20,HC62,number30,HC63,number40,HC64,number30,SHB13,char1,HC68,number20,HC70,number50,HC71,number50,HC72,number50,HC73,number50 +CSV_1_MERGE_DEF CSV_1::REC92.All EXACT REC92.All DEFLINE FileCode,char7,CASEID,char12,IDX92,number30,S222,number20 +CSV_1_MERGE_DEF CSV_1::REC11.All EXACT REC11.All DEFLINE FileCode,char7,CASEID,char9,V101,number20,V102,number20,V103,char1,V104,char1,V105,char1,V106,number20,V107,number20,V113,number30,V115,number40,V116,number30,V119,number20,V120,number20,V121,number20,V122,number20,V123,number20,V124,number20,V125,char1,V127,number30,V128,number30,V129,number30,V130,number20,V131,char1,V133,number30,V134,number20,V135,number20,V136,number30,V137,number20,V138,number20,V139,number30,V140,number20,V141,number20,V149,number20,V150,number30,V151,number20,V152,number30,V153,number20,AWFACTT,number50,AWFACTU,number50,AWFACTR,number50,AWFACTE,number50,AWFACTW,number50,V155,number20,V156,char1,V157,number20,V158,number20,V159,number20,V160,number20,V161,number30,V166,char1,V167,char1,V168,char1,V190,number20,V191,number80,ML101,char1 +CSV_1_MERGE_DEF CSV_1::RECHI.All EXACT RECHI.All DEFLINE FileCode,char7,HHID,char7,SHCOLB,number20,SH61,number30,SH62,number20,SH63,number30 +CSV_1_MERGE_DEF CSV_1::REC84.All EXACT REC84.All DEFLINE FileCode,char7,CASEID,char9,MMC1,number30,MMC2,number30,MMC3,char1,REC84_GROUP,char1,MMC4,char1,MMC5,number30 +CSV_1_MERGE_DEF CSV_1::REC51.All EXACT REC51.All DEFLINE FileCode,char7,CASEID,char9,V501,number20,V502,number20,V503,number20,V504,number20,V505,char1,V506,char1,V507,number30,V508,number50,V509,number50,V510,number20,V511,number30,V512,number30,V513,number20,V525,number30,V527,number40,V528,number30,V529,number40,V530,number20,V531,number30,V532,number20,V535,number20,V536,number20,V537,number30,V538,char1,V539,char1,V540,char1,V541,char1 +CSV_1_MERGE_DEF CSV_1::REC43.All EXACT REC43.All DEFLINE FileCode,char7,CASEID,char9,HIDX,number20,H1,number20,H2,number20,H2D,number30,H2M,number30,H2Y,number50,H3,number20,H3D,number30,H3M,number30,H3Y,number50,H4,number20,H4D,number30,H4M,number30,H4Y,number50,H5,number20,H5D,number30,H5M,number30,H5Y,number50,H6,number20,H6D,number30,H6M,number30,H6Y,number50,H7,number20,H7D,number30,H7M,number30,H7Y,number50,H8,number20,H8D,number30,H8M,number30,H8Y,number50,H9,number20,H9D,number30,H9M,number30,H9Y,number50,H0,number20,H0D,number30,H0M,number30,H0Y,number50,H10,number20,H11,number20,H11B,number20,H12A,number20,H12B,number20,H12C,number20,H12D,number20,H12E,number20,H12F,number20,H12G,number20,H12H,number20,H12I,number20,H12J,number20,H12K,number20,H12L,number20,H12M,number20,H12N,number20,H12O,number20,H12P,number20,H12Q,char1,H12R,char1,H12S,number20,H12T,number20,H12U,number20,H12V,number20,H12W,char1,H12X,number20,H12Y,number20,H12Z,number20,H13,number20,H13B,char1,H14,number20,H15,char1,H15A,char1,H15B,char1,H15C,char1,H15D,char1,H15E,char1,H15F,char1,H15G,char1,H15H,char1,H15I,char1,H15J,char1,H15K,char1,H15L,char1,H15M,char1,H20,char1,H21A,char1,H21,char1,H22,number20,H31,number20,H31B,number20,H31C,number20,H31D,number20,H31E,number20,H32A,number20,H32B,number20,H32C,number20,H32D,number20,H32E,number20,H32F,number20,H32G,number20,H32H,number20,H32I,number20,H32J,number20,H32K,number20,H32L,number20,H32M,number20,H32N,number20,H32O,number20,H32P,number20,H32Q,char1,H32R,char1,H32S,number20,H32T,number20,H32U,number20,H32V,number20,H32W,number20,H32X,number20,H32Y,number20,H32Z,number20,H33,number20,H33D,number30,H33M,number30,H33Y,number50,H34,number20,H35,char1,H36A,number20,H36B,number20,H36C,number20,H36D,number20,H36E,char1,H36F,char1,H37A,number20,H37B,number20,H37C,char1,H37D,number20,H37E,number20,H37F,char1,H37G,char1,H37H,number20,H37I,number20,H37J,number20,H37K,number20,H37L,number20,H37M,number20,H37N,number20,H37O,number20,H37P,number20,H37X,number20,H37Y,number20,H37Z,number20,H38,number20,H39,number20,H40,char1,H40D,char1,H40M,char1,H40Y,char1,H41A,char1,H41B,char1,H42,number20,H43,number20,H44A,char1,H44B,char1,H44C,char1,H45,char1,H46A,number30,H46B,char1,H47,char1 +CSV_1_MERGE_DEF CSV_1::RECH5.All EXACT RECH5.All DEFLINE FileCode,char7,HHID,char6,HA0,number30,HA1,number30,HA2,number50,HA3,number50,HA4,number50,HA5,number50,HA6,number60,HA11,number50,HA12,number60,HA12A,number60,HA12B,number60,HA13,number20,HA32,number50,HA33,number20,HA35,char1,HA40,number50,HA41,number50,HA50,char1,HA51,char1,HA52,number20,HA53,number40,HA54,number20,HA55,number20,HA56,number40,HA57,number20,HA58,char1,HA60,char1,HA61,char1,HA62,char1,HA63,char1,HA64,char1,HA65,number20,HA66,number20,HA67,number30,HA68,number20,HA69,char1,HA70,char1 +CSV_1_MERGE_DEF CSV_1::REC91.All EXACT REC91.All DEFLINE FileCode,char7,CASEID,char9,S28DAYS,number20,S5YEARS,number20,S103A,number20,S104A,number20,S112A,number20,S112B,number20,S114A,number20,S114B,number20,S114C,number20,S114D,number20,S114E,number20,S114F,number20,S114G,number20,S114GX,number30,S223A,number20,S223B,number20,S229A,number20,S229B,number20,S229C,number20,S229D,number30,S306A,number20,S325J,number20,S325M,number20,S325N,number20,S325O,number20,S325A,number20,S325B,number20,S325CA,number20,S325CB,number20,S325CC,number20,S325CD,number20,S325CE,number20,S325CF,number20,S325CG,number20,S325CH,number20,S325CX,number20,S325CZ,number20,S325D,number20,S325E,number20,S325FA,number20,S325FB,number20,S325FC,number20,S325FD,number20,S325FE,number20,S325FF,number20,S325FH,number20,S325FX,number20,S325FZ,number20,S326,number20,S326AA,number20,S326AB,number20,S326AC,number20,S326AX,number20,S326B,number30,S326C,number20,S506A,char1,S604A,number30,S616,number30,S714AA,number20,S714BA,number20,S714BB,number20,S714BC,number20,S714D,number20,S714E,number20,S803A,number20,S823,number20,S823A,number20,S823B,number20,S906A,number20,S906B,number20,S937A,number20,S937B,number20,S945O,number20,S945A,number20,S1001,number20,S1002,number20,S1003,number20,S1004,number20,S1005,number20,SCORE,number30,AWFACTE2,number50,AWFACTE3,number50 +CSV_1_MERGE_DEF CSV_1::RECHDP2.All EXACT RECHDP2.All DEFLINE FileCode,char7,HHID,char6,HDPIDX2,number20,SH197B,number30,SH197C,number20,SH197D,number20,SH197E,number20 +CSV_1_MERGE_DEF CSV_1::REC83.All EXACT REC83.All DEFLINE FileCode,char7,CASEID,char9,MMIDX,number30,MM1,number20,MM2,number20,MM3,number30,MM4,number50,MM5,char1,MM6,number30,MM7,number30,MM8,number50,MM9,number30,MM10,char1,MM11,char1,MM12,char1,MM13,char1,MM14,number30,MM15,char1 +CSV_1_MERGE_DEF CSV_1::RECHMC.All EXACT RECHMC.All DEFLINE FileCode,char7,HHID,number60,IDXHML,number20,SH123A,number20,SH123B,number30,SH123C,number20,SH123D,number20,SH125A,number20,SH127A,number20,SH127B,number50,SH128,number30,SH128A,number20,SH128B,number50 +CSV_1_MERGE_DEF CSV_1::REC75.All EXACT REC75.All DEFLINE FileCode,char7,CASEID,char9,V750,number20,V751,number20,V754BP,char1,V754CP,number20,V754DP,number20,V754JP,number20,V754WP,number20,V756,number20,V761,char1,V761B,char1,V761C,char1,V762AA,char1,V762AB,char1,V762AC,char1,V762AD,char1,V762AE,char1,V762AF,char1,V762AG,char1,V762AH,char1,V762AI,char1,V762AJ,char1,V762AK,char1,V762AL,char1,V762AM,char1,V762AN,char1,V762AO,char1,V762AP,char1,V762AQ,char1,V762AR,char1,V762AS,char1,V762AT,char1,V762AU,char1,V762AV,char1,V762AW,char1,V762AX,char1,V762AZ,char1,V762BA,char1,V762BB,char1,V762BC,char1,V762BD,char1,V762BE,char1,V762BF,char1,V762BG,char1,V762BH,char1,V762BI,char1,V762BJ,char1,V762BK,char1,V762BL,char1,V762BM,char1,V762BN,char1,V762BO,char1,V762BP,char1,V762BQ,char1,V762BR,char1,V762BS,char1,V762BT,char1,V762BU,char1,V762BV,char1,V762BW,char1,V762BX,char1,V762BZ,char1,V763A,number20,V763B,number20,V763C,number20,V763D,char1,V763E,char1,V763F,char1,V763G,char1,V766A,char1,V766B,char1,V767A,char1,V767B,char1,V767C,char1,V768A,char1,V768B,char1,V768C,char1,V769,char1,V769A,char1,V770,number20,V770A,number20,V770B,number20,V770C,number20,V770D,number20,V770E,number20,V770F,number20,V770G,number20,V770H,number20,V770I,number20,V770J,number20,V770K,char1,V770L,number20,V770M,number20,V770N,number20,V770O,number20,V770P,number20,V770Q,number20,V770R,number20,V770S,number20,V770T,number20,V770U,number20,V770V,number20,V770W,number20,V770X,number20,V774A,number20,V774B,number20,V774C,number20,V775,char1,V777,char1,V778,char1,V779,char1,V780,char1,V781,char1,V783,char1,V784A,char1,V784B,char1,V784C,char1,V784D,char1,V784E,char1,V784F,char1,V784G,char1,V784H,char1,V784I,char1,V784J,char1,V784K,char1,V784L,char1,V784M,char1,V784N,char1,V784O,char1,V784P,char1,V784Q,char1,V784R,char1,V784S,char1,V784T,char1,V784U,char1,V784V,char1,V784X,char1,V785,number20 +CSV_1_MERGE_DEF CSV_1::REC42.All EXACT REC42.All DEFLINE FileCode,char7,CASEID,char9,V401,number20,V404,number20,V405,number20,V406,number20,V407,char1,V408,char1,V409,number20,V409A,char1,V410,number20,V410A,char1,V411,number20,V411A,number20,V412,char1,V412A,number20,V412B,char1,V412C,char1,V413,number20,V413A,char1,V413B,char1,V413C,char1,V413D,char1,V414A,char1,V414B,char1,V414C,char1,V414D,char1,V414E,number20,V414F,number20,V414G,number20,V414H,number20,V414I,number20,V414J,number20,V414K,number20,V414L,number20,V414M,number20,V414N,number20,V414O,number20,V414P,number20,V414Q,char1,V414R,char1,V414S,number20,V414T,char1,V414U,char1,V414V,number20,V414W,char1,V415,number20,V416,char1,V417,number20,V418,number20,V419,number20,V420,char1,V421,char1,V426,number40,V437,number50,V438,number50,V439,number50,V440,number50,V441,number60,V442,number60,V443,number60,V444,number60,V444A,number50,V445,number50,V446,number50,V447,number20,V447A,number30,V452A,char1,V452B,char1,V452C,number20,V453,number40,V454,number20,V455,number20,V456,number40,V457,number20,V458,char1,V459,char1,V460,char1,V461,char1,V462,char1,V463A,char1,V463B,char1,V463C,char1,V463D,char1,V463E,char1,V463F,char1,V463G,char1,V463X,char1,V463Z,char1,V464,char1,V465,char1,V466,char1,V467A,char1,V467B,char1,V467C,char1,V467D,char1,V467E,char1,V467F,char1,V467G,char1,V467H,char1,V467I,char1,V467J,char1,V467K,char1,V467L,char1,V467M,char1,V468,number20,V469E,number20,V469F,number20,V469X,number20,V471A,char1,V471B,char1,V471C,char1,V471D,char1,V471E,char1,V471F,char1,V471G,char1,V472A,char1,V472B,char1,V472C,char1,V472D,char1,V472E,char1,V472F,char1,V472G,char1,V472H,char1,V472I,char1,V472J,char1,V472K,char1,V472L,char1,V472M,char1,V472N,char1,V472O,char1,V472P,char1,V472Q,char1,V472R,char1,V472S,char1,V472T,char1,V472U,char1,V473A,char1,V473B,char1,V474,char1,V474A,char1,V474B,char1,V474C,char1,V474D,char1,V474E,char1,V474F,char1,V474G,char1,V474H,char1,V474I,char1,V474J,char1,V474X,char1,V474Z,char1,V475,char1,V476,char1,V477,char1,V478,char1,V479,char1,V480,char1,V481,char1,V481A,char1,V481B,char1,V481C,char1,V481D,char1,V481E,char1,V481F,char1,V481G,char1,V481H,char1,V481X,char1,V482A,char1,V482B,char1,V482C,char1 +CSV_1_MERGE_DEF CSV_1::RECHCHL.All EXACT RECHCHL.All DEFLINE FileCode,char7,HHID,char9,IDXCHL,number30,CHL1,number20,CHL2,number30,CHL3,number20,CHL4,number30,CHL5,number20,CHL6,number30,CHL7,number20,CHL8,number30 +CSV_1_MERGE_DEF CSV_1::RECHML.All EXACT RECHML.All DEFLINE FileCode,char7,HHID,char6,HMLIDX,number20,HML3,number20,HML4,number30,HML5,number20,HML6,number20,HML7,number30,HML8,number20,HML9,number30,HML10,number20,HML11,number20,HML21,number20,HMLA,number30,HMLB,number30,HMLC,number30,HMLD,number30,HMLE,char1 +CSV_1_MERGE_DEF CSV_1::RECH4.All EXACT RECH4.All DEFLINE FileCode,char7,HHID,char5,IDXH4,number30,SH08,number20,SH13,number20,SH18,number20,SH19,number20,SH20,number20,SH21,number20,SH22,number20 +CSV_1_MERGE_DEF CSV_1::REC82.All EXACT REC82.All DEFLINE FileCode,char7,CASEID,char9,VCOL,number20,VCAL,char73 +CSV_1_MERGE_DEF CSV_1::REC01.All EXACT REC01.All DEFLINE FileCode,char7,CASEID,char9,V000,char4,V001,number30,V002,number40,V003,number30,V004,number30,V005,number70,V006,number30,V007,number50,V008,number50,V009,number30,V010,number50,V011,number50,V012,number30,V013,number20,V014,number20,V015,number20,V016,number30,V017,number50,V018,number30,V019,number30,V019A,number20,V020,number20,V021,number30,V022,number30,V023,number30,V024,number20,V025,number20,V026,number20,V027,number20,V028,number40,V029,number20,V030,number30,V031,number30,V032,number20,V034,number30,V040,number30,V042,number20,V044,char1 +CSV_1_MERGE_DEF CSV_1::REC41.All EXACT REC41.All DEFLINE FileCode,char7,CASEID,char9,MIDX,number20,M1,number20,M1A,number20,M1B,char1,M1C,char1,M1D,number30,M1E,number50,M2A,number20,M2B,number20,M2C,number20,M2D,number20,M2E,number20,M2F,number20,M2G,number20,M2H,number20,M2I,number20,M2J,char1,M2K,number20,M2L,number20,M2M,number20,M2N,number20,M3A,number20,M3B,number20,M3C,number20,M3D,number20,M3E,number20,M3F,number20,M3G,number20,M3H,number20,M3I,number20,M3J,number20,M3K,number20,M3L,number20,M3M,number20,M3N,number20,M4,number30,M5,number30,M6,number30,M7,number30,M8,number30,M9,number30,M10,number20,M11,number40,M13,char1,M14,number30,M15,number30,M17,number20,M18,number20,M19,char1,M19A,char1,M27,number20,M28,number20,M29,number20,M34,number40,M35,char1,M36,char1,M38,number20,M39A,number20,M39,number20,M42A,char1,M42B,char1,M42C,char1,M42D,char1,M42E,char1,M43,number20,M44,char1,M45,char1,M46,char1,M47,char1,M48,char1,M49A,char1,M49B,char1,M49C,char1,M49D,char1,M49E,char1,M49F,char1,M49G,char1,M49X,char1,M49Z,char1,M49Y,char1,M50,number20,M51,number40,M52,number30,M54,number20,M55A,number20,M55B,number20,M55C,number20,M55D,number20,M55E,number20,M55F,number20,M55G,number20,M55H,number20,M55I,number20,M55J,number20,M55K,number20,M55L,char1,M55M,char1,M55N,char1,M55O,char1,M55X,number20,M55Z,number20,M57A,number20,M57B,char1,M57C,char1,M57D,char1,M57E,number20,M57F,number20,M57G,number20,M57H,number20,M57I,number20,M57J,number20,M57K,number20,M57L,number20,M57M,number20,M57N,number20,M57O,number20,M57P,number20,M57Q,number20,M57R,number20,M57S,number20,M57T,number20,M57U,char1,M57V,char1,M57X,number20,M60,char1,M61,number40,M62,number20,M65A,char1,M65B,char1,M65C,char1,M65D,char1,M65E,char1,M65F,char1,M65G,char1,M65H,char1,M65I,char1,M65J,char1,M65K,char1,M65L,char1,M65X,char1,M66,number20,M70,number20,M71,number40,M72,number30,M73,number30 +CSV_1_MERGE_DEF CSV_1::RECH3.All EXACT RECH3.All DEFLINE FileCode,char7,HHID,char6,SHDISTRICT,number20,SHUPAZILA,number30,SHADULT35,number20,SHHTEC,number40,SH104A,number20,SH104B,number30,SH110G,number20,SH110H,number20,SH110I,number20,SH110J,number20,SH110K,number20,SH110L,number20,SH118A,number20,SH118B,number20,SH122A,number20,SH122C,number52 +CSV_1_MERGE_DEF CSV_1::RECH4A.All EXACT RECH4A.All DEFLINE FileCode,char7,HHID,char6,IDXH4A,number30,SH6XA,number20,SH6XB,number20,SH6XC,number20,SH6XX,number20,SH6XY,number20,SH6XZ,number20,SH62A,number20,SH62B,number60,SH63,number20,SH63B,number20,SH68A,number20,SH68B,number30,SH68C,number30,SH6YA,number20,SH6YB,number20,SH6YC,number20,SH6YD,number20,SH6YE,number20,SH6YF,number20,SH6YG,number20,SH6YH,number20,SH6YI,number20,SH6YJ,number20,SH6YX,number20,SH6YZ,number20,SH69A,number20,SH70,number60,SH71,number30,SH72,number60,SH73,number60,SH74,number60,SH75,number20,SH76,number60,SH77A,number60,SH77B,number60,SH77C,number60,SH78,number20,SH78A,number50,SH90,number20,SH91,number20,SH92,number30,SH93,number40,SH94,number60,SH94A,number20,SH95,number60,SH96A,number60,SH96B,number60,SH96C,number60 +CSV_1_MERGE_DEF CSV_1::REC81.All EXACT REC81.All DEFLINE FileCode,char7,CASEID,char9,V801,number50,V802,number50,V803,number30,V804,number20,V805,number40,V806,number20,V811,number20,V812,number20,V813,number20,V814,number20,V815A,char1,V815B,char1,V815C,char1 +CSV_1_MERGE_DEF CSV_1::RECHG2.All EXACT RECHG2.All DEFLINE FileCode,char7,HHID,char7,SG101,number30,SG103,number30,SG104,number20,SG105,number20,SG106,number20,SG107,number20,SG108,number30,SG109,number20,SG110,number40,SG111,number30,SG112A,number70,SG112B,number20,SG113A,number60,SG113B,number60,SG113C,number60,SG113D,number60,SG114A,number70,SG114B,number70,SG115,number20,SG116A,number30,SG116B,number30,SG116C,number30,SG116D,number30,SG117A,number70,SG117B,number20,SG118A,number70,SG118B,number20,SG119A,number70,SG119B,number20,SG120A,char1,SG120B,char1,SG121,number20,SG122,number20,SG123A,number20,SG123B,number20,SG123C,number20,SG123D,number20,SG123E,number20,SG123F,number20,SG123G,number20,SG123H,number20,SG123I,number20,SG123J,number20,SG123X,number20,SG124,number20,SG125,number20,SG126,number70,SG127,number30,SG128,number20,SG129,number20,SG201A,number20,SG201B,number20,SG201C,number20,SG201D,number20,SG201E,number20,SG201F,number20,SG201G,number20,SG201H,number20,SG201I,number20,SG201J,number20,SG201K,number20,SG201L,number20,SG201M,number20,SG201N,number20,SG201X,number20,SG202A,number20,SG202B,number20,SG202C,number20,SG202D,number20,SG202E,number20,SG202F,number20,SG202G,number20,SG202H,number20,SG202I,number20,SG202J,number20,SG202K,number20,SG202L,number20,SG202M,char1,SG202N,char1,SG202X,number20,SG203A,number20,SG203B,number30,SG204M,number30,SG204A,number50,SG205,number30,SG206A,number20,SG206B,number60,SG207,number30,SG207B,number20,SG208A,number20,SG208B,number70,SG209,number20,SG210,number20,SG211,number20,SG213A,number20,SG213B,number70,SG214,number20,SG215,number20,SG216A,number20,SG216B,number20,SG216C,number20,SG216D,number20,SG216E,number20,SG216F,number20,SG216G,number20,SG216H,number20,SG216I,number20,SG216X,number20,SG216Z,number20,SG217A,number20,SG217B,number20,SG217C,number20,SG217D,number20,SG217E,number20,SG217F,number20,SG217G,number20,SG217H,number20,SG217I,number20,SG217X,number20,SG217Y,number20,SG217Z,number20,SG218,number20,SG219A,number20,SG219B,number70,SG220,number20,SG221,number20,SG222A,number20,SG222B,number20,SG222C,number20,SG222D,number20,SG222E,number20,SG222F,number20,SG222G,number20,SG222H,number20,SG222I,number20,SG222J,number20,SG222K,number20,SG222X,number20,SG222Z,number20,SG223A,number20,SG223B,number20,SG223C,number20,SG223D,number20,SG223E,number20,SG223F,number20,SG223G,number20,SG223H,number20,SG223I,number20,SG223J,number20,SG223K,number20,SG223X,number20,SG223Y,number20,SG223Z,number20,SG224,number20,SG225A,number20,SG225B,number70,SG226,number20,SG227,number60,SG228A,number20,SG228B,number20,SG228C,number20,SG228D,number20,SG228E,number20,SG228F,number20,SG228G,number20,SG228H,number20,SG228I,number20,SG228J,number20,SG228X,number20,SG228Y,number20,SG228Z,number20,SG229,number30,SG230M,number30,SG230A,number50,SG231,number30,SG232A,number20,SG232B,number60,SG233,number20,SG234,number20,SG235,number20,SG237A,number20,SG237B,number60,SG238,number20,SG239,number20,SG240A,number20,SG240B,number20,SG240C,number20,SG240D,number20,SG240E,number20,SG240F,number20,SG240G,number20,SG240H,number20,SG240I,number20,SG240X,number20,SG240Z,number20,SG241A,number20,SG241B,number20,SG241C,number20,SG241D,number20,SG241E,number20,SG241F,number20,SG241G,number20,SG241H,number20,SG241I,number20,SG241X,number20,SG241Y,number20,SG241Z,number20,SG242,number20,SG243A,number20,SG243B,number70,SG244,number20,SG245,number20,SG246A,number20,SG246B,number20,SG246C,number20,SG246D,number20,SG246E,number20,SG246X,number20,SG246Z,number20,SG247A,number20,SG247B,number20,SG247C,number20,SG247D,number20,SG247E,number20,SG247X,number20,SG247Y,number20,SG247Z,number20,SG248,number20,SG249A,number20,SG249B,char1,SG250,number20,SG251,number60,SG252,number20,SG253A,number40,SG253B,number40,SG253C,number40,SG253,number40,SG254,number30,SG255,number30,SG256A,number20,SG256B,number60,SG257,number30,SG258A,number20,SG258B,number70,SG259,number20,SG260,number20,SG261,number20,SG262A,number20,SG262B,number60,SG263,number20,SG264,number20,SG265A,number20,SG265B,number20,SG265C,number20,SG265D,number20,SG265E,number20,SG265F,number20,SG265G,number20,SG265H,number20,SG265I,number20,SG265X,number20,SG265Z,number20,SG265AA,number20,SG265AB,number20,SG265AC,number20,SG265AD,number20,SG265AE,number20,SG265AF,number20,SG265AG,number20,SG265AH,number20,SG265AI,number20,SG265AX,number20,SG265AY,number20,SG265AZ,number20,SG265BB,number20,SG266A,number20,SG266B,number50,SG267,number20,SG268,number20,SG269A,number20,SG269B,number20,SG269C,number20,SG269D,number20,SG269E,number20,SG269F,number20,SG269G,number20,SG269H,number20,SG269I,number20,SG269J,number20,SG269K,number20,SG269X,number20,SG269Z,number20,SG270A,number20,SG270B,number20,SG270C,number20,SG270D,number20,SG270E,number20,SG270F,number20,SG270G,number20,SG270H,number20,SG270I,number20,SG270J,number20,SG270K,number20,SG270X,number20,SG270Y,number20,SG270Z,number20,SG271,number20,SG272A,number20,SG272B,number70,SG273,number20,SG274,number60,SG275,number20,SG276,number40,SG277,number20,SG278,number20,SG279U,number20,SG279N,number20,SG280A,number20,SG280B,number70,SG281,number20,SG282A,number20,SG282B,number20,SG282C,number20,SG283,number60,SG284,number20,SG285,number20,SG286,number60,SG287,number20,SG288,number20,SG289,number70,SG290,number20,SG291,number30,SG292,number60,SG292A,number70,SG301A,number20,SG301B,number20,SG301C,number20,SG301D,number20,SG301E,number20,SG301F,number20,SG301G,number20,SG301H,number20,SG301X,number20,SG302,number20,SG303A,number20,SG303B,number20,SG303C,number20,SG304A,number20,SG304B,number20,SG304C,number20,SG304D,number20,SG304E,number20,SG304X,number20,SG305,number30,SG306,number20,SG307,number20,SG308,number20,SG309,number20,SG310,number20,SG311,number30,SINGRESOO,number80,SINGRESOE,number70,SREGALIAP,number70,SBONIFICA,number70,SIFUENTE1,number80,SIFUENTE2,number70,SIFUENTE3,number70,SIFUENTE4,char1,SINGRESOTP,number80,SINGRESOIP,number20,SINGRESOIB,number30,SGASTOTI,char1,SINGRESOIPA,number20 +CSV_1_MERGE_DEF CSV_1::RECHMA.All EXACT RECHMA.All DEFLINE FileCode,char7,HHID,char7,HB0,number30,HB1,number30,HB2,number50,HB3,number50,HB4,number50,HB5,number50,HB6,number60,HB11,number50,HB12,number60,HB12A,number60,HB12B,number60,HB13,number20,HB32,number50,HB33,number20,HB35,char1,HB40,number50,HB41,number50,HB50,char1,HB51,char1,HB52,char1,HB53,char1,HB55,char1,HB56,char1,HB57,char1,HB58,char1,HB60,char1,HB61,char1,HB62,char1,HB63,char1,HB64,char1,HB65,number20,HB66,number20,HB67,number30,HB68,number20,HB69,char1,HB70,char1 +CSV_1_MERGE_DEF CSV_1::RECHMT.All EXACT RECHMT.All DEFLINE FileCode,char7,HHID,char7,SHMTX,number20,SH78,number20,SH79,number30,SH80M,number30,SH80A,number50,SH81,number20,SH80MI,number30,SH80AI,number50,SH80C,number30 +CSV_1_MERGE_DEF CSV_1::REC98.All EXACT REC98.All DEFLINE FileCode,char7,CASEID,char11,IDX98,number20,S570,number30,S571,number30,S572,number30,S573A,number20,S573B,number90,S573C,number30,S573D,number30,S573E,number50,S575,number90,S576A,number30,S576B,number30,S576C,number50,S576D,number90,S576E,number30,S576F,number30,S576G,number50,S576H,number90,S576I,number30,S576J,number30,S577A,number50,S577B,number90,S577C,number30,S577D,number30,S577E,number50,S577F,number90,S577G,number30,S577G1,number30,S577G2,number50,S577H,number90,S577I,number30,S577J,number30,S577K,number50,S577L,number90,S577M,number30,S577N,number30,S577O,number50,S577P,number90,S577Q,number30,S577R,number30,S578A,number50,S578B,number90,S578C,number30,S578D,number30,S578E,number50,S578F,number90,S578G,number30,S578H,number30,S578I,number50,S578J,number90,S578K,number30,S578L,number30,S578M,number50,S578N,number90,S578O,number30,S578P,number30,S578P1,number50,S578P2,number90,S578Q,number30,S578R,number30,S578S,number50,S578T,number90,S578U,number30,S578V,number30,S578W,number50,S578X,number90,S578Y,number30,S579A,number30,S579B,number50,S579C,number90,S579D,number30,S579E,number30,S579F,number50,S579G,number20,S580,number20,S581A,number20,S581B,number20,S581C,number20,S581D,number20,S581E,number20,S581F,number20,S581G,number20,S581H,number20,S581I,number20,S581J,number20,S581X,number20,S582,number20,S583,number30,S583B,number30,S584,number30,S584B,number30,S585,number20,S586,number20,S587,number30,S588,number20,S589,number30,S591,number30 +CSV_1_MERGE_DEF CSV_1::RECH2.All EXACT RECH2.All DEFLINE FileCode,char7,HHID,char6,HV201,number30,HV202,char1,HV204,number40,HV205,number30,HV206,number20,HV207,number20,HV208,number20,HV209,number20,HV210,number20,HV211,number20,HV212,char1,HV213,number30,HV214,number30,HV215,number30,HV216,number30,HV217,number20,HV218,number20,HV219,number20,HV220,number30,HV221,number20,HV225,number20,HV226,number30,HV227,char1,HV228,char1,HV230A,number20,HV230B,number20,HV232,number20,HV232B,number20,HV232C,number20,HV232D,number20,HV232E,char1,HV232Y,number20,HV234,char1,HV234A,number20,HV235,number20,HV236,char1,HV237,number20,HV237A,number20,HV237B,number20,HV237C,number20,HV237D,number20,HV237E,number20,HV237F,number20,HV237G,number20,HV237H,char1,HV237I,char1,HV237J,char1,HV237K,char1,HV237X,number20,HV237Z,number20,HV238,number30,HV239,char1,HV240,char1,HV241,number20,HV242,number20,HV243A,number20,HV243B,char1,HV243C,char1,HV243D,char1,HV244,number20,HV245,number40,HV246,number20,HV246A,char1,HV246B,number20,HV246C,char1,HV246D,char1,HV246E,char1,HV246F,char1,HV246G,number30,HV246H,number30,HV246I,number30,HV246J,char1,HV246K,char1,HV247,number20,HV252,number20,HV253,char1,HV253A,char1,HV253B,char1,HV253C,char1,HV253D,char1,HV253E,char1,HV253F,char1,HV253G,char1,HV253H,char1,HV253X,char1,HV253Z,char1,HV270,number20,HV271,number80,HML1,char1,HML1A,char1,HML2,char1 +CSV_1_MERGE_DEF CSV_1::RECHPC.All EXACT RECHPC.All DEFLINE FileCode,char7,HHID,char6,HPCIDX,number30,SH198C,number20,SH198D,number20 +CSV_1_MERGE_DEF CSV_1::REC32.All EXACT REC32.All DEFLINE FileCode,char7,CASEID,char9,V310,char1,V311,char1,V312,number30,V313,number20,V315,number30,V316,number50,V317,number50,V318,number20,V319,number20,V320,number20,V321,number20,V322,number20,V323,number30,V323A,number30,V325A,char1,V326,number30,V327,number20,V337,number30,V359,number30,V360,number30,V361,number20,V362,number20,V363,number30,V364,number20,V367,number20,V372,number20,V372A,number20,V375A,char1,V376,number30,V376A,char1,V379,char1,V380,char1,V384A,number20,V384B,number20,V384C,number20,V393,char1,V394,char1,V395,char1,V3A00A,number20,V3A00B,number20,V3A00C,number20,V3A00D,number20,V3A00E,number20,V3A00F,number20,V3A00G,number20,V3A00H,number20,V3A00I,number20,V3A00J,number20,V3A00K,number20,V3A00L,number20,V3A00M,number20,V3A00N,number20,V3A00O,number20,V3A00P,char1,V3A00Q,char1,V3A00R,char1,V3A00S,number20,V3A00T,char1,V3A00U,number20,V3A00V,number20,V3A00W,number20,V3A00X,number20,V3A00Y,number20,V3A00Z,number20,V3A01,char1,V3A02,char1,V3A03,char1,V3A04,char1,V3A05,char1,V3A06,char1,V3A07,number30,V3A08A,char1,V3A08B,number20,V3A08C,number20,V3A08D,number20,V3A08E,number20,V3A08F,number20,V3A08G,number20,V3A08H,number20,V3A08I,number20,V3A08J,number20,V3A08K,number20,V3A08L,number20,V3A08M,number20,V3A08N,number20,V3A08O,char1,V3A08P,number20,V3A08Q,number20,V3A08R,number20,V3A08S,number20,V3A08T,number20,V3A08U,number20,V3A08V,number20,V3A08W,char1,V3A08AA,char1,V3A08AB,char1,V3A08AC,char1,V3A08AD,char1,V3A08X,number20,V3A08Z,number20,V3A09A,char1,V3A09B,char1 +CSV_1_MERGE_DEF CSV_1::REC80.All EXACT REC80.All DEFLINE FileCode,char7,CASEID,char9,V820,char1,V821A,char1,V821B,char1,V821C,char1,V822,char1,V823,number20,V824,char1,V825,char1,V826,char1,V826A,char1,V827,char1,V828,char1,V829,char1,V830,char1,V831,char1,V832B,char1,V832C,char1,V833A,char1,V833B,char1,V833C,char1,V834A,char1,V834B,char1,V834C,char1,V835A,char1,V835B,char1,V835C,char1,V836,char1,V837,char1,V838A,char1,V838B,char1,V838C,char1,V839,char1,V839A,char1,V840,char1,V840A,char1,V841,char1,V841A,char1,V842,char1,V843,char1,V844,char1,V845,char1,V846,char1,V847,char1,V848,char1,V849,char1,V850A,char1,V850B,char1,V851A,char1,V851B,char1,V851C,char1,V851D,char1,V851E,char1,V851F,char1,V851G,char1,V851H,char1,V851I,char1,V851J,char1,V851K,char1,V851L,char1,V852A,char1,V852B,char1,V852C,char1,V853A,char1,V853B,char1,V853C,char1,V854A,char1,V854B,char1,V855,char1 +CSV_1_MERGE_DEF CSV_1::RECHG1.All EXACT RECHG1.All DEFLINE FileCode,char7,HHID,char7,SGCONGL,number50,SGHOGAR,number30,SGESTR,char1,SGPROVIN,number20,SGMUNIC,char1,SGZONA,number20,SGRESP,number30,SGINT,number90,SGINTD,number30,SGINTM,number30,SGINTA,number50,SGINTNUM,number40,SGRESULT,number20,SGVISITS,number20,SGSUPERV,number40,SGEDITC,number40,SGEDITO,number20,SGDIGIT,number30,SGHORAI,number30,SGMINUTI,number30,SGHORAF,number30,SGMINUTF,number30,SGWEIGHT,number90,SINGRTH,number80,SINGRTHP,number90,SINGRHI,number20,SVIVIG1,number20,SVIVIG2,number20,SVALPRO,number60,SQUINTIP,number20,SALLINCI,number20 +CSV_1_MERGE_DEF CSV_1::REC97.All EXACT REC97.All DEFLINE FileCode,char7,CASEID,char12,S902,number20,S903A,number20,S903B,number20,S903C,number20,S903D,number20,S903E,number20,S903F,number20,S903G,number20,S903H,number20,S903X,number20,S903Z,number20,S904,number20,S905M,number30,S905Y,number50,S906,number20,S907,number20,S908,number30,S909,number20,S910,number20,S911,number20,S912,number20,S913,number30,S914,number20,S915,number30,S916,number20,S917,number30,S918,number20,S919,number30,S920,number20,S921,number20,S922,number20,S923,number20,S924,number30,S926,number20,S927,number20,S928,number20,S929,number20,S930,number30,S931,number20,S932,number20,S933,number20,S934,number20,S936,number20,S937A,number20,S937B,number20,S937C,number20,S937D,number20,S937E,number20,S937F,number20,S937G,number20,S937H,number20,S937X,number20,S937Z,number20,S938,number20,S939,number20,S940M,number30,S940Y,number50,S941,number20,S942,number30,S943,number20,S944,number20,S945,number20,S946,number20,S947,number20,S948,number30,S949,number20,S950,number30,S951,number30 +CSV_1_MERGE_DEF CSV_1::RECHLB.All EXACT RECHLB.All DEFLINE FileCode,char7,HHID,char6,SHCOL21A,number20,SH21,number30,SH22,number20,SH23,number30,SH24,number20,SH25,number20,SH26,number30,SH27,number20,SH28,number30 +CSV_1_MERGE_DEF CSV_1::RECML.All EXACT RECML.All DEFLINE FileCode,char7,CASEID,char9,IDXML,number20,ML0,number20,ML1,number30,ML2,number20,ML11,char1,ML12,char1,ML13A,number20,ML13B,number20,ML13C,number20,ML13D,number20,ML13E,number20,ML13F,char1,ML13G,char1,ML13H,number20,ML13I,number20,ML13J,number20,ML13K,number20,ML13L,number20,ML13M,number20,ML13N,char1,ML13O,char1,ML13P,char1,ML13X,number20,ML13Y,number20,ML13Z,number20,ML14A,char1,ML14B,char1,ML14Y,char1,ML14Z,char1,ML15A,char1,ML15B,char1,ML15C,char1,ML16A,number20,ML16B,char1,ML16C,char1,ML17A,number20,ML17B,char1,ML17C,char1,ML18A,char1,ML18B,char1,ML18C,char1,ML19A,char1,ML19B,char1,ML19C,char1,ML19D,char1,ML19E,char1,ML19F,char1,ML19X,char1,ML19Y,char1,ML19Z,char1,ML20A,number20,ML20B,char1,ML20C,char1,ML21A,char1,ML21B,char1,ML21C,char1,ML22A,char1,ML22B,char1,ML22C,char1,ML23A,number20,ML23B,char1,ML23C,char1,ML24C,char1 +CSV_1_MERGE_DEF CSV_1::RECH1.All EXACT RECH1.All DEFLINE FileCode,char7,HHID,char5,HVIDX,number30,HV101,number30,HV102,number20,HV103,number20,HV104,number20,HV105,number30,HV106,number20,HV107,number20,HV108,number30,HV109,number20,HV110,char1,HV111,char1,HV112,char1,HV113,char1,HV114,char1,HV115,char1,HV116,number20,HV117,number20,HV118,number20,HV120,number20,HV121,number20,HV122,number20,HV123,number20,HV124,number30,HV125,char1,HV126,char1,HV127,char1,HV128,char1,HV129,char1,HV140,number20 +CSV_1_MERGE_DEF CSV_1::REC31.All EXACT REC31.All DEFLINE FileCode,char7,CASEID,char9,V301,char1,V302,char1,V302A,number20,REC31_GROUP,number20,V304A,char1,V304,char1,V305,char1,V307,number20 +CSV_1_MERGE_DEF CSV_1::RECHW.All EXACT RECHW.All DEFLINE FileCode,char7,HHID,char6,SHCOLD,number20,SH215,number30,SH216,number60,SH217,number50,SH240,number40 +CSV_1_MERGE_DEF CSV_1::REC96.All EXACT REC96.All DEFLINE FileCode,char7,CASEID,char12,IDX96,number20,S566,number20,S567,number30,S568A,number20,S568B,number20,S568C,number20,S568D,number20,S568E,number20,S569A,number20,S569B,number20,S569C,number20,S569D,number20,S569E,number20,S570A,number20,S570B,number20,S570C,number20,S570D,number20,S570X,number20,S571,number20,S572A,number20,S572B,number20,S572C,number20,S572D,number20,S572X,number20,S572Y,number20,S573,number30,S574,number30 +CSV_1_MERGE_DEF CSV_1::REC71.All EXACT REC71.All DEFLINE FileCode,char7,CASEID,char9,V701,number20,V702,number20,V704,number30,V705,char1,V714,number20,V714A,number20,V715,number30,V716,number30,V717,char1,V719,number20,V721,char1,V729,number20,V730,number30,V731,number20,V732,number20,V739,number20,V740,char1,V741,number20,V743A,number20,V743B,number20,V743C,char1,V743D,number20,V743E,char1,V743F,char1,V744A,number20,V744B,number20,V744C,number20,V744D,number20,V744E,number20,V745A,char1,V745B,char1,V746,char1 +CSV_1_MERGE_DEF CSV_1::RECDV.All EXACT RECDV.All DEFLINE FileCode,char7,CASEID,char9,D005,number80,D101A,number20,D101B,number20,D101C,number20,D101D,number20,D101E,number20,D101F,number20,D101G,number20,D101H,char1,D101I,char1,D101J,char1,D102,number20,D103A,number20,D103B,number20,D103C,char1,D103D,char1,D103E,char1,D103F,char1,D104,number20,D105A,number20,D105B,number20,D105C,number20,D105D,number20,D105E,number20,D105F,number20,D105G,number20,D105H,number20,D105I,number20,D105J,char1,D105K,char1,D105L,char1,D105M,char1,D105N,char1,D106,number20,D107,number20,D108,number20,D109,number30,D110A,number20,D110B,number20,D110C,number20,D110D,char1,D110E,char1,D110F,char1,D110G,char1,D110H,char1,D111,number20,D112,number20,D112A,number20,D113,number20,D114,number20,D115B,number20,D115C,number20,D115D,number20,D115E,number20,D115F,number20,D115G,number20,D115H,char1,D115I,char1,D115J,number20,D115K,number20,D115L,number20,D115M,number20,D115N,number20,D115O,number20,D115P,number20,D115Q,number20,D115R,number20,D115S,number20,D115T,number20,D115U,char1,D115V,number20,D115W,number20,D115X,number20,D115Y,number20,D115XA,number20,D115XB,char1,D115XC,char1,D115XD,char1,D115XE,char1,D115XF,char1,D115XG,char1,D115XH,char1,D115XI,char1,D115XJ,char1,D115XK,char1,D116,number30,D117A,number20,D118A,char1,D118B,number20,D118C,number20,D118D,number20,D118E,number20,D118F,number20,D118G,number20,D118H,char1,D118I,char1,D118J,number20,D118K,number20,D118L,number20,D118M,number20,D118N,number20,D118O,number20,D118P,number20,D118Q,number20,D118R,number20,D118S,number20,D118T,number20,D118U,char1,D118V,number20,D118W,number20,D118X,number20,D118Y,number20,D118XA,number20,D118XB,char1,D118XC,char1,D118XD,char1,D118XE,char1,D118XF,char1,D118XG,char1,D118XH,char1,D118XI,char1,D118XJ,char1,D118XK,char1,D119A,char1,D119B,number20,D119C,number20,D119D,number20,D119E,number20,D119F,number20,D119G,number20,D119H,char1,D119I,char1,D119J,number20,D119K,number20,D119L,number20,D119M,number20,D119N,number20,D119O,number20,D119P,number20,D119Q,number20,D119R,number20,D119S,number20,D119T,number20,D119U,char1,D119V,number20,D119W,number20,D119X,number20,D119Y,number20,D119XA,number20,D119XB,char1,D119XC,char1,D119XD,char1,D119XE,char1,D119XF,char1,D119XG,char1,D119XH,char1,D119XI,char1,D119XJ,char1,D119XK,char1,D120,number30,D121,number20,D122A,number20,D122B,number20,D122C,number20,D123,char1,D124,char1,D125,char1,D126,char1,D127,char1,D128,char1,D129,char1,D130A,char1,D130B,char1,D100A,number20,D100B,number20,D100C,number20,D100D,number20,D112N,char1,D117,char1,D121A,number20,D1310A,number20,D1310B,number30 +CSV_1_MERGE_DEF CSV_1::RECHMH.All EXACT RECHMH.All DEFLINE FileCode,char7,HHID,char6,HMHIDX,number30,HML12,number20,HML13,number20,HML14,number20,HML15,char1,HML16,number30,HML16A,number30,HML17,number20,HML18,number20,HML19,number20,HML20,number20,HML30,number20,HML31,number20,HML32,number20,HML32A,char1,HML32B,char1,HML32C,char1,HML32D,char1,HML32E,char1,HML32F,char1,HML32G,char1,HML33,char1,HML34,char6,HML35,number20 +CSV_1_MERGE_DEF CSV_1::RECH0.All EXACT RECH0.All DEFLINE FileCode,char7,HHID,char6,HV000,char4,HV001,number30,HV002,number40,HV003,number20,HV004,number30,HV005,number70,HV006,number30,HV007,number50,HV008,number50,HV009,number30,HV010,number20,HV011,number20,HV012,number30,HV013,number30,HV014,number20,HV015,number20,HV016,number30,HV017,number20,HV018,number40,HV019,number20,HV020,number20,HV021,number30,HV022,number30,HV023,number30,HV024,number20,HV025,number20,HV026,number20,HV027,number20,HV028,number70,HV030,number30,HV031,number30,HV032,number20,HV035,number20,HV040,number30,HV041,number20,HV042,number20,HV044,char1 +CSV_1_MERGE_DEF CSV_1::RECHC.All EXACT RECHC.All DEFLINE FileCode,char7,HHID,char7,SHCOLC,number20,SH202,number30,SH205,number50,SH206,number50,SH212,number40 +CSV_1_MERGE_DEF CSV_1::RECG2.All EXACT RECG2.All DEFLINE FileCode,char7,CASEID,char9,GIDX,number20,G121,number20,G122,number30,G123,number20,G124,number30 +CSV_1_MERGE_DEF CSV_1::REC22.All EXACT REC22.All DEFLINE FileCode,char7,CASEID,char9,V201,number30,V202,number20,V203,number20,V204,number20,V205,number20,V206,number20,V207,number20,V208,number20,V209,number20,V210,number20,V211,number50,V212,number30,V213,number20,V214,number20,V215,number40,V216,number20,V217,char1,V218,number20,V219,number20,V220,number20,V221,number40,V222,number40,V223,number20,V224,number30,V225,number20,V226,number40,V227,number20,V228,number20,V229,number30,V230,number50,V231,number50,V232,number20,V233,number20,V234,number20,V235,number20,V237,number20,V238,number20,V239,number20,V240,number30,V241,number50,V242,number50,V243,number20 +CSV_1_MERGE_DEF CSV_1::RECHOV.All EXACT RECHOV.All DEFLINE FileCode,char7,HHID,char7,HOVIDX,number30,HO100,number30,HO101,number20,HO102,number20,HO103,number20,HO104,number20,HO105,number20,HO106,number20,HO107,number20,HO108,number20 +CSV_1_MERGE_DEF CSV_1::REC95.All EXACT REC95.All DEFLINE FileCode,char7,CASEID,char9,IDX95,number20,S506AD,number30,S506AM,number30,S506AY,number50,SHB1,number20,SHB1D,number30,SHB1M,number30,SHB1Y,number50,SHB2,number20,SHB2D,number30,SHB2M,number30,SHB2Y,number50,SHB3,number20,SHB3D,number30,SHB3M,number30,SHB3Y,number50,S510J,number20,S519J,number20,S522C,number20,S522D,number20,S523A,number20,S523B,number20,S523C,number20,S523D,number20,S523E,number20,S523F,number20,S523G,number20,S523H,number20,S523I,number20,S523J,number20,S523K,number20,S523L,number20,S523M,number20,S523N,number20,S523O,number20,S523P,number20,S523Q,number20,S523R,number20,S523S,number20,S523T,number20,S523U,number20,S523V,number20,S523W,number20,S523X,number20,S536A,number20,S536K,number20,S536B,number30,S536C,number30,S536D,char1,S538O,number20,S538P,number20,S539,number20,S540A,number20,S540B,number20,S540C,number20,S540D,number20,S540E,number20,S540F,number20,S540G,number20,S540H,number20,S540I,number20,S540J,number20,S540K,number20,S540L,number20,S540W,number20,S540X,number20,S541A,number20,S541B,number20,S541C,number20,S541D,number20,S541E,number20,S541F,number20,S541G,number20,S541H,number20,S541I,number20,S541J,number20,S541K,number20,S541L,number20,S541M,number20,S541N,number20,S541O,number20,S541P,number20,S541Q,number20,S541R,number20,S541S,number20,S541T,number20,S541U,number20,S541V,number20,S541W,number20,S541X,number20,S541Y,number20 +CSV_1_MERGE_DEF CSV_1::RECH9.All EXACT RECH9.All DEFLINE FileCode,char7,HHID,number90,SHIDX9,number20,SH78O,number30,SH79,number30,SH80,number40,SH81,number30,SH82,number20,SH83,number20 +CSV_1_MERGE_DEF CSV_1::RECG1.All EXACT RECG1.All DEFLINE FileCode,char7,CASEID,char9,G100,number20,G101,number20,G102,number20,G103,number20,G104,number20,G105,number20,G106,number30,G107,number30,G108,number30,G109,char1,G110,char1,G111,char1,G112,char1,G113,char1,G114,char1,G115,char1,G116,char1,G117A,char1,G117B,char1,G117C,char1,G117D,char1,G117E,char1,G117F,char1,G117G,char1,G117H,char1,G117I,char1,G117J,char1,G117X,char1,G117Y,char1,G118,number20,G119,number20 +CSV_1_MERGE_DEF CSV_1::REC21.All EXACT REC21.All DEFLINE FileCode,char7,CASEID,char9,BIDX,number20,BORD,number20,B0,number20,B1,number30,B2,number50,B3,number50,B4,number20,B5,number20,B6,number40,B7,number40,B8,number30,B9,number20,B10,number20,B11,number40,B12,number40,B13,number20,B15,number20,B16,number30 +CSV_1_MERGE_DEF CSV_1::REC94.All EXACT REC94.All DEFLINE FileCode,char7,CASEID,char9,IDX94,number20,S410J,number20,S433L,number20,S435C,number20,S435D,number20,S435E,number20,S435F,number20,S435GA,number20,S435GB,number20,S435GC,number20,S435GD,number20,S435GE,number20,S435GF,number20,S435GG,number20,S435GH,number20,S435GI,number20,S435GJ,number20,S435GK,number20,S435GL,number20,S435GM,number20,S435GN,number20,S435GX,number20,S435GZ,number20,S435H,number40,S435I,number20,S435J,number20,S439A,number30 +CSV_1_MERGE_DEF CSV_1::RECH8.All EXACT RECH8.All DEFLINE FileCode,char7,HHID,char5,SHCOL3B,number20,SH223,number30,SH225,number30,SH226,number30,SH227,number60,SH227AA,number60,SH227AB,number60,SH227AC,number60,SH227AD,number60,SH227AE,number60,SH227AF,number60,SH227AG,number60,SH228,number20,SH229,number30,SH230,number30,SH231,number60,SH231AA,number60,SH231AB,number60,SH231AC,number60,SH231AD,number60,SH231AE,number60,SH231AF,number60,SH231AG,number60,SH232,number20,SH233,number30,SH234,number20,SH235,number60,SH235AA,number60,SH235AB,number60,SH235AC,number60,SH235AD,number60,SH235AE,number60,SH235AF,number60,SH235AG,number60,SH236,number20,SH237,char1,SH238,char1,SH239,number20,SH240,number20 +CSV_1_MERGE_DEF CSV_1::REC61.All EXACT REC61.All DEFLINE FileCode,char7,CASEID,char9,V602,number20,V603,number40,V604,number20,V605,number20,V613,number30,V614,number20,V616,number40,V621,number20,V623,number20,V624,number20,V625,number20,V626,number20,V625A,number20,V626A,number20,V627,number30,V628,number30,V629,number30,V631,char1,V632,number20,V633A,char1,V633B,char1,V633C,char1,V633D,char1,V633E,char1,V633F,char1,V633G,char1,V634,char1 +CSV_1_MERGE_DEF CSV_1::RECHA.All EXACT RECHA.All DEFLINE FileCode,char7,HHID,char7,SHCOLA,number20,SH53,number30,SH54,number20,SH55,number20,SH56,number20,SH57,number20 +CSV_1_MERGE_DEF CSV_1::RECHSK.All EXACT RECHSK.All DEFLINE FileCode,char7,HHID,char7,HSKIDX,number30,HS100,number20,HS101,number20,HS102,number20,HS103,number20,HS104,number20,HS105,number20,HS106,number20,HS107,number20,HS108,number20,HS109,number20,HS110,number20,HS111,number20 +CSV_1_MERGE_DEF CSV_1::RECH7.All EXACT RECH7.All DEFLINE FileCode,char7,HHID,char6,SH230,number30,SH231,number20,SH232,number20,SH234,number30,SH234C,number30,SH235,number20,SH237,number20,SH238,number20,SH239,number30,SH241,number20,SH242A,number20,SH242B,number20,SH242C,number20,SH243,number30,SH244,number20,SH245,number50,SH246S,number40,SH246D,number40,SH248,number20,SH249,number20,SH250,number20,SH253,number50,SH254,number20,SH255S,number40,SH255D,number40,SH257,number20,SH258,number20,SH259,number20,SH260,number20,SH262,number50,SH263,number20,SH264S,number40,SH264D,number40,FSYSTO,number40,FDYSTO,number40,SH271,number50,SH273,number50,SH276,number20,SHWH,number20,SH1,number140,SH1D,number30,SH1MO,number30,SH1Y,number50,SH1H,number30,SH1M,number30,SH1X,number20,SH2,number140,SH2D,number30,SH2MO,number30,SH2Y,number50,SH2H,number30,SH2M,number30,SH2X,number20,SH3,number140,SH3D,number30,SH3MO,number30,SH3Y,number50,SH3H,number30,SH3M,number30,SH3X,number20,SH279,number20,SH280,number50,SH281,number50,SH283,number90,SH283D,number30,SH283M,number30,SH283Y,number50,SH283T,number50,SH284,number40,SH284A,number40,SH284G,number40,SH284B,number40,SHPC1,number50,SHSD1,number50,SHRM1,number60,SHRM3,number60,SHRM4,number60,SHRM5,number60,SHSD3,number50,SHBM,number50,SHRI,number50,SHCMC,number40,SHFLG,number20,SHSMK,char1,SHRESI,number20,SHED1,number20,SHED2,number30,SHED3,number20 +CSV_1_MERGE_DEF CSV_1::RECHDP.All EXACT RECHDP.All DEFLINE FileCode,char7,HHID,char6,HDPIDX,number20,HD100,number20,HD101,number40 +CSV_1_MERGE_DEF CSV_1::RECHS.All EXACT RECHS.All DEFLINE FileCode,char7,HHID,char6,SH67,number30,SH68,number20,SH69,number20,SH70,number30,SH71U,number20,SH71N,number70,SH72U,number20,SH72N,number70,SH73,number20,SH74,number30,SH75U,number20,SH75N,number70,SH76U,number20,SH76N,number70,SH77,number20,SH78,number30,SH79U,number20,SH79N,number70,SH80U,number20,SH80N,number70 +CSV_1_MERGE_DEF CSV_1::REC44.All EXACT REC44.All DEFLINE FileCode,char7,CASEID,char9,HWIDX,number20,HW1,number30,HW2,number50,HW3,number50,HW4,number50,HW5,number50,HW6,number60,HW7,number50,HW8,number50,HW9,number60,HW10,number50,HW11,number50,HW12,number60,HW13,number20,HW15,number20,HW16,number30,HW17,number30,HW18,number30,HW19,number50,HW51,number30,HW52,number20,HW53,number40,HW55,number20,HW56,number50,HW57,number20,HW58,char1,HW70,number50,HW71,number50,HW72,number50,HW73,number50 +DEFAULT_MACRO WB_CURRENT_CONTEXT +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" INPUT FEATURE_TYPE * ROUTE FME_GENERIC RECHW.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHW_All GEOMETRY ROUTE FME_GENERIC REC96.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC96_All GEOMETRY ROUTE FME_GENERIC REC71.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC71_All GEOMETRY ROUTE FME_GENERIC RECDV.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECDV_All GEOMETRY ROUTE FME_GENERIC RECHMH.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHMH_All GEOMETRY ROUTE FME_GENERIC RECH0.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH0_All GEOMETRY ROUTE FME_GENERIC RECHC.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHC_All GEOMETRY ROUTE FME_GENERIC RECG2.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECG2_All GEOMETRY ROUTE FME_GENERIC REC22.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC22_All GEOMETRY ROUTE FME_GENERIC RECHOV.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHOV_All GEOMETRY ROUTE FME_GENERIC REC95.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC95_All GEOMETRY ROUTE FME_GENERIC RECH9.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH9_All GEOMETRY ROUTE FME_GENERIC RECG1.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECG1_All GEOMETRY ROUTE FME_GENERIC REC21.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC21_All GEOMETRY ROUTE FME_GENERIC REC94.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC94_All GEOMETRY ROUTE FME_GENERIC RECH8.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH8_All GEOMETRY ROUTE FME_GENERIC REC61.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC61_All GEOMETRY ROUTE FME_GENERIC RECHA.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHA_All GEOMETRY ROUTE FME_GENERIC RECHSK.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHSK_All GEOMETRY ROUTE FME_GENERIC RECH7.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH7_All GEOMETRY ROUTE FME_GENERIC RECHDP.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHDP_All GEOMETRY ROUTE FME_GENERIC RECHS.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHS_All GEOMETRY ROUTE FME_GENERIC REC44.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC44_All GEOMETRY ROUTE FME_GENERIC RECH6.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH6_All GEOMETRY ROUTE FME_GENERIC REC92.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC92_All GEOMETRY ROUTE FME_GENERIC RECHI.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHI_All GEOMETRY ROUTE FME_GENERIC REC11.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC11_All GEOMETRY ROUTE FME_GENERIC REC84.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC84_All GEOMETRY ROUTE FME_GENERIC REC51.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC51_All GEOMETRY ROUTE FME_GENERIC REC43.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC43_All GEOMETRY ROUTE FME_GENERIC RECHDP2.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHDP2_All GEOMETRY ROUTE FME_GENERIC RECH5.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH5_All GEOMETRY ROUTE FME_GENERIC REC91.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC91_All GEOMETRY ROUTE FME_GENERIC REC83.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC83_All GEOMETRY ROUTE FME_GENERIC RECHMC.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHMC_All GEOMETRY ROUTE FME_GENERIC REC75.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC75_All GEOMETRY ROUTE FME_GENERIC REC42.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC42_All GEOMETRY ROUTE FME_GENERIC RECHCHL.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHCHL_All GEOMETRY ROUTE FME_GENERIC RECHML.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHML_All GEOMETRY ROUTE FME_GENERIC RECH4.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH4_All GEOMETRY ROUTE FME_GENERIC REC82.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC82_All GEOMETRY ROUTE FME_GENERIC REC01.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC01_All GEOMETRY ROUTE FME_GENERIC REC41.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC41_All GEOMETRY ROUTE FME_GENERIC RECH3.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH3_All GEOMETRY ROUTE FME_GENERIC RECH4A.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH4A_All GEOMETRY ROUTE FME_GENERIC REC81.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC81_All GEOMETRY ROUTE FME_GENERIC RECHG2.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHG2_All GEOMETRY ROUTE FME_GENERIC RECHMA.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHMA_All GEOMETRY ROUTE FME_GENERIC RECHMT.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHMT_All GEOMETRY ROUTE FME_GENERIC REC98.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC98_All GEOMETRY ROUTE FME_GENERIC RECH2.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH2_All GEOMETRY ROUTE FME_GENERIC RECHPC.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHPC_All GEOMETRY ROUTE FME_GENERIC REC32.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC32_All GEOMETRY ROUTE FME_GENERIC REC80.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC80_All GEOMETRY ROUTE FME_GENERIC RECHG1.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHG1_All GEOMETRY ROUTE FME_GENERIC REC97.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC97_All GEOMETRY ROUTE FME_GENERIC RECHLB.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHLB_All GEOMETRY ROUTE FME_GENERIC RECML.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECML_All GEOMETRY ROUTE FME_GENERIC RECH1.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH1_All GEOMETRY ROUTE FME_GENERIC REC31.All TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC31_All GEOMETRY OUTPUT ROUTED FEATURE_TYPE * @FeatureType(ENCODED,@Value(__wb_out_feat_type__)) @RemoveAttributes(__wb_out_feat_type__) OUTPUT NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__ + +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHW_All mdb_update_key_columns FileCode,HHID mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(6) SHCOLD decimal(2,0) SH215 decimal(3,0) SH216 decimal(6,0) SH217 decimal(5,0) SH240 decimal(4,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC96_All mdb_update_key_columns CASEID,FileCode,IDX96 mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(12) IDX96 decimal(2,0) S566 decimal(2,0) S567 decimal(3,0) S568A decimal(2,0) S568B decimal(2,0) S568C decimal(2,0) S568D decimal(2,0) S568E decimal(2,0) S569A decimal(2,0) S569B decimal(2,0) S569C decimal(2,0) S569D decimal(2,0) S569E decimal(2,0) S570A decimal(2,0) S570B decimal(2,0) S570C decimal(2,0) S570D decimal(2,0) S570X decimal(2,0) S571 decimal(2,0) S572A decimal(2,0) S572B decimal(2,0) S572C decimal(2,0) S572D decimal(2,0) S572X decimal(2,0) S572Y decimal(2,0) S573 decimal(3,0) S574 decimal(3,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC71_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) V701 decimal(2,0) V702 decimal(2,0) V704 decimal(3,0) V705 text(1) V714 decimal(2,0) V714A decimal(2,0) V715 decimal(3,0) V716 decimal(3,0) V717 text(1) V719 decimal(2,0) V721 text(1) V729 decimal(2,0) V730 decimal(3,0) V731 decimal(2,0) V732 decimal(2,0) V739 decimal(2,0) V740 text(1) V741 decimal(2,0) V743A decimal(2,0) V743B decimal(2,0) V743C text(1) V743D decimal(2,0) V743E text(1) V743F text(1) V744A decimal(2,0) V744B decimal(2,0) V744C decimal(2,0) V744D decimal(2,0) V744E decimal(2,0) V745A text(1) V745B text(1) V746 text(1) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECDV_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) D005 decimal(8,0) D101A decimal(2,0) D101B decimal(2,0) D101C decimal(2,0) D101D decimal(2,0) D101E decimal(2,0) D101F decimal(2,0) D101G decimal(2,0) D101H text(1) D101I text(1) D101J text(1) D102 decimal(2,0) D103A decimal(2,0) D103B decimal(2,0) D103C text(1) D103D text(1) D103E text(1) D103F text(1) D104 decimal(2,0) D105A decimal(2,0) D105B decimal(2,0) D105C decimal(2,0) D105D decimal(2,0) D105E decimal(2,0) D105F decimal(2,0) D105G decimal(2,0) D105H decimal(2,0) D105I decimal(2,0) D105J text(1) D105K text(1) D105L text(1) D105M text(1) D105N text(1) D106 decimal(2,0) D107 decimal(2,0) D108 decimal(2,0) D109 decimal(3,0) D110A decimal(2,0) D110B decimal(2,0) D110C decimal(2,0) D110D text(1) D110E text(1) D110F text(1) D110G text(1) D110H text(1) D111 decimal(2,0) D112 decimal(2,0) D112A decimal(2,0) D113 decimal(2,0) D114 decimal(2,0) D115B decimal(2,0) D115C decimal(2,0) D115D decimal(2,0) D115E decimal(2,0) D115F decimal(2,0) D115G decimal(2,0) D115H text(1) D115I text(1) D115J decimal(2,0) D115K decimal(2,0) D115L decimal(2,0) D115M decimal(2,0) D115N decimal(2,0) D115O decimal(2,0) D115P decimal(2,0) D115Q decimal(2,0) D115R decimal(2,0) D115S decimal(2,0) D115T decimal(2,0) D115U text(1) D115V decimal(2,0) D115W decimal(2,0) D115X decimal(2,0) D115Y decimal(2,0) D115XA decimal(2,0) D115XB text(1) D115XC text(1) D115XD text(1) D115XE text(1) D115XF text(1) D115XG text(1) D115XH text(1) D115XI text(1) D115XJ text(1) D115XK text(1) D116 decimal(3,0) D117A decimal(2,0) D118A text(1) D118B decimal(2,0) D118C decimal(2,0) D118D decimal(2,0) D118E decimal(2,0) D118F decimal(2,0) D118G decimal(2,0) D118H text(1) D118I text(1) D118J decimal(2,0) D118K decimal(2,0) D118L decimal(2,0) D118M decimal(2,0) D118N decimal(2,0) D118O decimal(2,0) D118P decimal(2,0) D118Q decimal(2,0) D118R decimal(2,0) D118S decimal(2,0) D118T decimal(2,0) D118U text(1) D118V decimal(2,0) D118W decimal(2,0) D118X decimal(2,0) D118Y decimal(2,0) D118XA decimal(2,0) D118XB text(1) D118XC text(1) D118XD text(1) D118XE text(1) D118XF text(1) D118XG text(1) D118XH text(1) D118XI text(1) D118XJ text(1) D118XK text(1) D119A text(1) D119B decimal(2,0) D119C decimal(2,0) D119D decimal(2,0) D119E decimal(2,0) D119F decimal(2,0) D119G decimal(2,0) D119H text(1) D119I text(1) D119J decimal(2,0) D119K decimal(2,0) D119L decimal(2,0) D119M decimal(2,0) D119N decimal(2,0) D119O decimal(2,0) D119P decimal(2,0) D119Q decimal(2,0) D119R decimal(2,0) D119S decimal(2,0) D119T decimal(2,0) D119U text(1) D119V decimal(2,0) D119W decimal(2,0) D119X decimal(2,0) D119Y decimal(2,0) D119XA decimal(2,0) D119XB text(1) D119XC text(1) D119XD text(1) D119XE text(1) D119XF text(1) D119XG text(1) D119XH text(1) D119XI text(1) D119XJ text(1) D119XK text(1) D120 decimal(3,0) D121 decimal(2,0) D122A decimal(2,0) D122B decimal(2,0) D122C decimal(2,0) D123 text(1) D124 text(1) D125 text(1) D126 text(1) D127 text(1) D128 text(1) D129 text(1) D130A text(1) D130B text(1) D100A decimal(2,0) D100B decimal(2,0) D100C decimal(2,0) D100D decimal(2,0) D112N text(1) D117 text(1) D121A decimal(2,0) D1310A decimal(2,0) D1310B decimal(3,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHMH_All mdb_update_key_columns FileCode,HHID,HMHIDX mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(6) HMHIDX decimal(3,0) HML12 decimal(2,0) HML13 decimal(2,0) HML14 decimal(2,0) HML15 text(1) HML16 decimal(3,0) HML16A decimal(3,0) HML17 decimal(2,0) HML18 decimal(2,0) HML19 decimal(2,0) HML20 decimal(2,0) HML30 decimal(2,0) HML31 decimal(2,0) HML32 decimal(2,0) HML32A text(1) HML32B text(1) HML32C text(1) HML32D text(1) HML32E text(1) HML32F text(1) HML32G text(1) HML33 text(1) HML34 text(6) HML35 decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECH0_All mdb_update_key_columns FileCode,HHID mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(6) HV000 text(4) HV001 decimal(3,0) HV002 decimal(4,0) HV003 decimal(2,0) HV004 decimal(3,0) HV005 decimal(7,0) HV006 decimal(3,0) HV007 decimal(5,0) HV008 decimal(5,0) HV009 decimal(3,0) HV010 decimal(2,0) HV011 decimal(2,0) HV012 decimal(3,0) HV013 decimal(3,0) HV014 decimal(2,0) HV015 decimal(2,0) HV016 decimal(3,0) HV017 decimal(2,0) HV018 decimal(4,0) HV019 decimal(2,0) HV020 decimal(2,0) HV021 decimal(3,0) HV022 decimal(3,0) HV023 decimal(3,0) HV024 decimal(2,0) HV025 decimal(2,0) HV026 decimal(2,0) HV027 decimal(2,0) HV028 decimal(7,0) HV030 decimal(3,0) HV031 decimal(3,0) HV032 decimal(2,0) HV035 decimal(2,0) HV040 decimal(3,0) HV041 decimal(2,0) HV042 decimal(2,0) HV044 text(1) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHC_All mdb_update_key_columns FileCode,HHID mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(7) SHCOLC decimal(2,0) SH202 decimal(3,0) SH205 decimal(5,0) SH206 decimal(5,0) SH212 decimal(4,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECG2_All mdb_update_key_columns CASEID,FileCode,GIDX mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) GIDX decimal(2,0) G121 decimal(2,0) G122 decimal(3,0) G123 decimal(2,0) G124 decimal(3,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC22_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) V201 decimal(3,0) V202 decimal(2,0) V203 decimal(2,0) V204 decimal(2,0) V205 decimal(2,0) V206 decimal(2,0) V207 decimal(2,0) V208 decimal(2,0) V209 decimal(2,0) V210 decimal(2,0) V211 decimal(5,0) V212 decimal(3,0) V213 decimal(2,0) V214 decimal(2,0) V215 decimal(4,0) V216 decimal(2,0) V217 text(1) V218 decimal(2,0) V219 decimal(2,0) V220 decimal(2,0) V221 decimal(4,0) V222 decimal(4,0) V223 decimal(2,0) V224 decimal(3,0) V225 decimal(2,0) V226 decimal(4,0) V227 decimal(2,0) V228 decimal(2,0) V229 decimal(3,0) V230 decimal(5,0) V231 decimal(5,0) V232 decimal(2,0) V233 decimal(2,0) V234 decimal(2,0) V235 decimal(2,0) V237 decimal(2,0) V238 decimal(2,0) V239 decimal(2,0) V240 decimal(3,0) V241 decimal(5,0) V242 decimal(5,0) V243 decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHOV_All mdb_update_key_columns FileCode,HHID,HOVIDX mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(7) HOVIDX decimal(3,0) HO100 decimal(3,0) HO101 decimal(2,0) HO102 decimal(2,0) HO103 decimal(2,0) HO104 decimal(2,0) HO105 decimal(2,0) HO106 decimal(2,0) HO107 decimal(2,0) HO108 decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC95_All mdb_update_key_columns CASEID,FileCode,IDX95 mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) IDX95 decimal(2,0) S506AD decimal(3,0) S506AM decimal(3,0) S506AY decimal(5,0) SHB1 decimal(2,0) SHB1D decimal(3,0) SHB1M decimal(3,0) SHB1Y decimal(5,0) SHB2 decimal(2,0) SHB2D decimal(3,0) SHB2M decimal(3,0) SHB2Y decimal(5,0) SHB3 decimal(2,0) SHB3D decimal(3,0) SHB3M decimal(3,0) SHB3Y decimal(5,0) S510J decimal(2,0) S519J decimal(2,0) S522C decimal(2,0) S522D decimal(2,0) S523A decimal(2,0) S523B decimal(2,0) S523C decimal(2,0) S523D decimal(2,0) S523E decimal(2,0) S523F decimal(2,0) S523G decimal(2,0) S523H decimal(2,0) S523I decimal(2,0) S523J decimal(2,0) S523K decimal(2,0) S523L decimal(2,0) S523M decimal(2,0) S523N decimal(2,0) S523O decimal(2,0) S523P decimal(2,0) S523Q decimal(2,0) S523R decimal(2,0) S523S decimal(2,0) S523T decimal(2,0) S523U decimal(2,0) S523V decimal(2,0) S523W decimal(2,0) S523X decimal(2,0) S536A decimal(2,0) S536K decimal(2,0) S536B decimal(3,0) S536C decimal(3,0) S536D text(1) S538O decimal(2,0) S538P decimal(2,0) S539 decimal(2,0) S540A decimal(2,0) S540B decimal(2,0) S540C decimal(2,0) S540D decimal(2,0) S540E decimal(2,0) S540F decimal(2,0) S540G decimal(2,0) S540H decimal(2,0) S540I decimal(2,0) S540J decimal(2,0) S540K decimal(2,0) S540L decimal(2,0) S540W decimal(2,0) S540X decimal(2,0) S541A decimal(2,0) S541B decimal(2,0) S541C decimal(2,0) S541D decimal(2,0) S541E decimal(2,0) S541F decimal(2,0) S541G decimal(2,0) S541H decimal(2,0) S541I decimal(2,0) S541J decimal(2,0) S541K decimal(2,0) S541L decimal(2,0) S541M decimal(2,0) S541N decimal(2,0) S541O decimal(2,0) S541P decimal(2,0) S541Q decimal(2,0) S541R decimal(2,0) S541S decimal(2,0) S541T decimal(2,0) S541U decimal(2,0) S541V decimal(2,0) S541W decimal(2,0) S541X decimal(2,0) S541Y decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECH9_All mdb_update_key_columns FileCode,HHID,SHIDX9 mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID decimal(9,0) SHIDX9 decimal(2,0) SH78O decimal(3,0) SH79 decimal(3,0) SH80 decimal(4,0) SH81 decimal(3,0) SH82 decimal(2,0) SH83 decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECG1_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) G100 decimal(2,0) G101 decimal(2,0) G102 decimal(2,0) G103 decimal(2,0) G104 decimal(2,0) G105 decimal(2,0) G106 decimal(3,0) G107 decimal(3,0) G108 decimal(3,0) G109 text(1) G110 text(1) G111 text(1) G112 text(1) G113 text(1) G114 text(1) G115 text(1) G116 text(1) G117A text(1) G117B text(1) G117C text(1) G117D text(1) G117E text(1) G117F text(1) G117G text(1) G117H text(1) G117I text(1) G117J text(1) G117X text(1) G117Y text(1) G118 decimal(2,0) G119 decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC21_All mdb_update_key_columns BIDX,CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) BIDX decimal(2,0) BORD decimal(2,0) B0 decimal(2,0) B1 decimal(3,0) B2 decimal(5,0) B3 decimal(5,0) B4 decimal(2,0) B5 decimal(2,0) B6 decimal(4,0) B7 decimal(4,0) B8 decimal(3,0) B9 decimal(2,0) B10 decimal(2,0) B11 decimal(4,0) B12 decimal(4,0) B13 decimal(2,0) B15 decimal(2,0) B16 decimal(3,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC94_All mdb_update_key_columns CASEID,FileCode,IDX94 mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) IDX94 decimal(2,0) S410J decimal(2,0) S433L decimal(2,0) S435C decimal(2,0) S435D decimal(2,0) S435E decimal(2,0) S435F decimal(2,0) S435GA decimal(2,0) S435GB decimal(2,0) S435GC decimal(2,0) S435GD decimal(2,0) S435GE decimal(2,0) S435GF decimal(2,0) S435GG decimal(2,0) S435GH decimal(2,0) S435GI decimal(2,0) S435GJ decimal(2,0) S435GK decimal(2,0) S435GL decimal(2,0) S435GM decimal(2,0) S435GN decimal(2,0) S435GX decimal(2,0) S435GZ decimal(2,0) S435H decimal(4,0) S435I decimal(2,0) S435J decimal(2,0) S439A decimal(3,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECH8_All mdb_update_key_columns FileCode,HHID mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INSERT FileCode text(7) HHID text(5) SHCOL3B decimal(2,0) SH223 decimal(3,0) SH225 decimal(3,0) SH226 decimal(3,0) SH227 decimal(6,0) SH227AA decimal(6,0) SH227AB decimal(6,0) SH227AC decimal(6,0) SH227AD decimal(6,0) SH227AE decimal(6,0) SH227AF decimal(6,0) SH227AG decimal(6,0) SH228 decimal(2,0) SH229 decimal(3,0) SH230 decimal(3,0) SH231 decimal(6,0) SH231AA decimal(6,0) SH231AB decimal(6,0) SH231AC decimal(6,0) SH231AD decimal(6,0) SH231AE decimal(6,0) SH231AF decimal(6,0) SH231AG decimal(6,0) SH232 decimal(2,0) SH233 decimal(3,0) SH234 decimal(2,0) SH235 decimal(6,0) SH235AA decimal(6,0) SH235AB decimal(6,0) SH235AC decimal(6,0) SH235AD decimal(6,0) SH235AE decimal(6,0) SH235AF decimal(6,0) SH235AG decimal(6,0) SH236 decimal(2,0) SH237 text(1) SH238 text(1) SH239 decimal(2,0) SH240 decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC61_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) V602 decimal(2,0) V603 decimal(4,0) V604 decimal(2,0) V605 decimal(2,0) V613 decimal(3,0) V614 decimal(2,0) V616 decimal(4,0) V621 decimal(2,0) V623 decimal(2,0) V624 decimal(2,0) V625 decimal(2,0) V626 decimal(2,0) V625A decimal(2,0) V626A decimal(2,0) V627 decimal(3,0) V628 decimal(3,0) V629 decimal(3,0) V631 text(1) V632 decimal(2,0) V633A text(1) V633B text(1) V633C text(1) V633D text(1) V633E text(1) V633F text(1) V633G text(1) V634 text(1) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHA_All mdb_update_key_columns FileCode,HHID mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(7) SHCOLA decimal(2,0) SH53 decimal(3,0) SH54 decimal(2,0) SH55 decimal(2,0) SH56 decimal(2,0) SH57 decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHSK_All mdb_update_key_columns FileCode,HHID,HSKIDX mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(7) HSKIDX decimal(3,0) HS100 decimal(2,0) HS101 decimal(2,0) HS102 decimal(2,0) HS103 decimal(2,0) HS104 decimal(2,0) HS105 decimal(2,0) HS106 decimal(2,0) HS107 decimal(2,0) HS108 decimal(2,0) HS109 decimal(2,0) HS110 decimal(2,0) HS111 decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECH7_All mdb_update_key_columns FileCode,HHID mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(6) SH230 decimal(3,0) SH231 decimal(2,0) SH232 decimal(2,0) SH234 decimal(3,0) SH234C decimal(3,0) SH235 decimal(2,0) SH237 decimal(2,0) SH238 decimal(2,0) SH239 decimal(3,0) SH241 decimal(2,0) SH242A decimal(2,0) SH242B decimal(2,0) SH242C decimal(2,0) SH243 decimal(3,0) SH244 decimal(2,0) SH245 decimal(5,0) SH246S decimal(4,0) SH246D decimal(4,0) SH248 decimal(2,0) SH249 decimal(2,0) SH250 decimal(2,0) SH253 decimal(5,0) SH254 decimal(2,0) SH255S decimal(4,0) SH255D decimal(4,0) SH257 decimal(2,0) SH258 decimal(2,0) SH259 decimal(2,0) SH260 decimal(2,0) SH262 decimal(5,0) SH263 decimal(2,0) SH264S decimal(4,0) SH264D decimal(4,0) FSYSTO decimal(4,0) FDYSTO decimal(4,0) SH271 decimal(5,0) SH273 decimal(5,0) SH276 decimal(2,0) SHWH decimal(2,0) SH1 decimal(14,0) SH1D decimal(3,0) SH1MO decimal(3,0) SH1Y decimal(5,0) SH1H decimal(3,0) SH1M decimal(3,0) SH1X decimal(2,0) SH2 decimal(14,0) SH2D decimal(3,0) SH2MO decimal(3,0) SH2Y decimal(5,0) SH2H decimal(3,0) SH2M decimal(3,0) SH2X decimal(2,0) SH3 decimal(14,0) SH3D decimal(3,0) SH3MO decimal(3,0) SH3Y decimal(5,0) SH3H decimal(3,0) SH3M decimal(3,0) SH3X decimal(2,0) SH279 decimal(2,0) SH280 decimal(5,0) SH281 decimal(5,0) SH283 decimal(9,0) SH283D decimal(3,0) SH283M decimal(3,0) SH283Y decimal(5,0) SH283T decimal(5,0) SH284 decimal(4,0) SH284A decimal(4,0) SH284G decimal(4,0) SH284B decimal(4,0) SHPC1 decimal(5,0) SHSD1 decimal(5,0) SHRM1 decimal(6,0) SHRM3 decimal(6,0) SHRM4 decimal(6,0) SHRM5 decimal(6,0) SHSD3 decimal(5,0) SHBM decimal(5,0) SHRI decimal(5,0) SHCMC decimal(4,0) SHFLG decimal(2,0) SHSMK text(1) SHRESI decimal(2,0) SHED1 decimal(2,0) SHED2 decimal(3,0) SHED3 decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHDP_All mdb_update_key_columns FileCode,HDPIDX,HHID mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(6) HDPIDX decimal(2,0) HD100 decimal(2,0) HD101 decimal(4,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHS_All mdb_update_key_columns FileCode,HHID mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(6) SH67 decimal(3,0) SH68 decimal(2,0) SH69 decimal(2,0) SH70 decimal(3,0) SH71U decimal(2,0) SH71N decimal(7,0) SH72U decimal(2,0) SH72N decimal(7,0) SH73 decimal(2,0) SH74 decimal(3,0) SH75U decimal(2,0) SH75N decimal(7,0) SH76U decimal(2,0) SH76N decimal(7,0) SH77 decimal(2,0) SH78 decimal(3,0) SH79U decimal(2,0) SH79N decimal(7,0) SH80U decimal(2,0) SH80N decimal(7,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC44_All mdb_update_key_columns CASEID,FileCode,HWIDX mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) HWIDX decimal(2,0) HW1 decimal(3,0) HW2 decimal(5,0) HW3 decimal(5,0) HW4 decimal(5,0) HW5 decimal(5,0) HW6 decimal(6,0) HW7 decimal(5,0) HW8 decimal(5,0) HW9 decimal(6,0) HW10 decimal(5,0) HW11 decimal(5,0) HW12 decimal(6,0) HW13 decimal(2,0) HW15 decimal(2,0) HW16 decimal(3,0) HW17 decimal(3,0) HW18 decimal(3,0) HW19 decimal(5,0) HW51 decimal(3,0) HW52 decimal(2,0) HW53 decimal(4,0) HW55 decimal(2,0) HW56 decimal(5,0) HW57 decimal(2,0) HW58 text(1) HW70 decimal(5,0) HW71 decimal(5,0) HW72 decimal(5,0) HW73 decimal(5,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECH6_All mdb_update_key_columns FileCode,HC0,HHID mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(6) HC0 decimal(3,0) HC1 decimal(3,0) HC2 decimal(5,0) HC3 decimal(5,0) HC4 decimal(5,0) HC5 decimal(5,0) HC6 decimal(6,0) HC7 decimal(5,0) HC8 decimal(5,0) HC9 decimal(6,0) HC10 decimal(5,0) HC11 decimal(5,0) HC12 decimal(6,0) HC13 decimal(2,0) HC15 decimal(2,0) HC16 decimal(3,0) HC17 decimal(3,0) HC18 decimal(3,0) HC19 decimal(5,0) HC27 decimal(2,0) HC30 decimal(3,0) HC31 decimal(5,0) HC32 decimal(5,0) HC33 decimal(2,0) HC51 decimal(3,0) HC52 decimal(2,0) HC53 decimal(4,0) HC55 decimal(2,0) HC56 decimal(4,0) HC57 decimal(2,0) HC58 text(1) HC60 decimal(4,0) HC61 decimal(2,0) HC62 decimal(3,0) HC63 decimal(4,0) HC64 decimal(3,0) SHB13 text(1) HC68 decimal(2,0) HC70 decimal(5,0) HC71 decimal(5,0) HC72 decimal(5,0) HC73 decimal(5,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC92_All mdb_update_key_columns CASEID,FileCode,IDX92 mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(12) IDX92 decimal(3,0) S222 decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHI_All mdb_update_key_columns "" mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(7) SHCOLB decimal(2,0) SH61 decimal(3,0) SH62 decimal(2,0) SH63 decimal(3,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC11_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) V101 decimal(2,0) V102 decimal(2,0) V103 text(1) V104 text(1) V105 text(1) V106 decimal(2,0) V107 decimal(2,0) V113 decimal(3,0) V115 decimal(4,0) V116 decimal(3,0) V119 decimal(2,0) V120 decimal(2,0) V121 decimal(2,0) V122 decimal(2,0) V123 decimal(2,0) V124 decimal(2,0) V125 text(1) V127 decimal(3,0) V128 decimal(3,0) V129 decimal(3,0) V130 decimal(2,0) V131 text(1) V133 decimal(3,0) V134 decimal(2,0) V135 decimal(2,0) V136 decimal(3,0) V137 decimal(2,0) V138 decimal(2,0) V139 decimal(3,0) V140 decimal(2,0) V141 decimal(2,0) V149 decimal(2,0) V150 decimal(3,0) V151 decimal(2,0) V152 decimal(3,0) V153 decimal(2,0) AWFACTT decimal(5,0) AWFACTU decimal(5,0) AWFACTR decimal(5,0) AWFACTE decimal(5,0) AWFACTW decimal(5,0) V155 decimal(2,0) V156 text(1) V157 decimal(2,0) V158 decimal(2,0) V159 decimal(2,0) V160 decimal(2,0) V161 decimal(3,0) V166 text(1) V167 text(1) V168 text(1) V190 decimal(2,0) V191 decimal(8,0) ML101 text(1) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC84_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) MMC1 decimal(3,0) MMC2 decimal(3,0) MMC3 text(1) REC84_GROUP text(1) MMC4 text(1) MMC5 decimal(3,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC51_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) V501 decimal(2,0) V502 decimal(2,0) V503 decimal(2,0) V504 decimal(2,0) V505 text(1) V506 text(1) V507 decimal(3,0) V508 decimal(5,0) V509 decimal(5,0) V510 decimal(2,0) V511 decimal(3,0) V512 decimal(3,0) V513 decimal(2,0) V525 decimal(3,0) V527 decimal(4,0) V528 decimal(3,0) V529 decimal(4,0) V530 decimal(2,0) V531 decimal(3,0) V532 decimal(2,0) V535 decimal(2,0) V536 decimal(2,0) V537 decimal(3,0) V538 text(1) V539 text(1) V540 text(1) V541 text(1) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC43_All mdb_update_key_columns CASEID,FileCode,HIDX mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) HIDX decimal(2,0) H1 decimal(2,0) H2 decimal(2,0) H2D decimal(3,0) H2M decimal(3,0) H2Y decimal(5,0) H3 decimal(2,0) H3D decimal(3,0) H3M decimal(3,0) H3Y decimal(5,0) H4 decimal(2,0) H4D decimal(3,0) H4M decimal(3,0) H4Y decimal(5,0) H5 decimal(2,0) H5D decimal(3,0) H5M decimal(3,0) H5Y decimal(5,0) H6 decimal(2,0) H6D decimal(3,0) H6M decimal(3,0) H6Y decimal(5,0) H7 decimal(2,0) H7D decimal(3,0) H7M decimal(3,0) H7Y decimal(5,0) H8 decimal(2,0) H8D decimal(3,0) H8M decimal(3,0) H8Y decimal(5,0) H9 decimal(2,0) H9D decimal(3,0) H9M decimal(3,0) H9Y decimal(5,0) H0 decimal(2,0) H0D decimal(3,0) H0M decimal(3,0) H0Y decimal(5,0) H10 decimal(2,0) H11 decimal(2,0) H11B decimal(2,0) H12A decimal(2,0) H12B decimal(2,0) H12C decimal(2,0) H12D decimal(2,0) H12E decimal(2,0) H12F decimal(2,0) H12G decimal(2,0) H12H decimal(2,0) H12I decimal(2,0) H12J decimal(2,0) H12K decimal(2,0) H12L decimal(2,0) H12M decimal(2,0) H12N decimal(2,0) H12O decimal(2,0) H12P decimal(2,0) H12Q text(1) H12R text(1) H12S decimal(2,0) H12T decimal(2,0) H12U decimal(2,0) H12V decimal(2,0) H12W text(1) H12X decimal(2,0) H12Y decimal(2,0) H12Z decimal(2,0) H13 decimal(2,0) H13B text(1) H14 decimal(2,0) H15 text(1) H15A text(1) H15B text(1) H15C text(1) H15D text(1) H15E text(1) H15F text(1) H15G text(1) H15H text(1) H15I text(1) H15J text(1) H15K text(1) H15L text(1) H15M text(1) H20 text(1) H21A text(1) H21 text(1) H22 decimal(2,0) H31 decimal(2,0) H31B decimal(2,0) H31C decimal(2,0) H31D decimal(2,0) H31E decimal(2,0) H32A decimal(2,0) H32B decimal(2,0) H32C decimal(2,0) H32D decimal(2,0) H32E decimal(2,0) H32F decimal(2,0) H32G decimal(2,0) H32H decimal(2,0) H32I decimal(2,0) H32J decimal(2,0) H32K decimal(2,0) H32L decimal(2,0) H32M decimal(2,0) H32N decimal(2,0) H32O decimal(2,0) H32P decimal(2,0) H32Q text(1) H32R text(1) H32S decimal(2,0) H32T decimal(2,0) H32U decimal(2,0) H32V decimal(2,0) H32W decimal(2,0) H32X decimal(2,0) H32Y decimal(2,0) H32Z decimal(2,0) H33 decimal(2,0) H33D decimal(3,0) H33M decimal(3,0) H33Y decimal(5,0) H34 decimal(2,0) H35 text(1) H36A decimal(2,0) H36B decimal(2,0) H36C decimal(2,0) H36D decimal(2,0) H36E text(1) H36F text(1) H37A decimal(2,0) H37B decimal(2,0) H37C text(1) H37D decimal(2,0) H37E decimal(2,0) H37F text(1) H37G text(1) H37H decimal(2,0) H37I decimal(2,0) H37J decimal(2,0) H37K decimal(2,0) H37L decimal(2,0) H37M decimal(2,0) H37N decimal(2,0) H37O decimal(2,0) H37P decimal(2,0) H37X decimal(2,0) H37Y decimal(2,0) H37Z decimal(2,0) H38 decimal(2,0) H39 decimal(2,0) H40 text(1) H40D text(1) H40M text(1) H40Y text(1) H41A text(1) H41B text(1) H42 decimal(2,0) H43 decimal(2,0) H44A text(1) H44B text(1) H44C text(1) H45 text(1) H46A decimal(3,0) H46B text(1) H47 text(1) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHDP2_All mdb_update_key_columns "" mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(6) HDPIDX2 decimal(2,0) SH197B decimal(3,0) SH197C decimal(2,0) SH197D decimal(2,0) SH197E decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECH5_All mdb_update_key_columns FileCode,HA0,HHID mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(6) HA0 decimal(3,0) HA1 decimal(3,0) HA2 decimal(5,0) HA3 decimal(5,0) HA4 decimal(5,0) HA5 decimal(5,0) HA6 decimal(6,0) HA11 decimal(5,0) HA12 decimal(6,0) HA12A decimal(6,0) HA12B decimal(6,0) HA13 decimal(2,0) HA32 decimal(5,0) HA33 decimal(2,0) HA35 text(1) HA40 decimal(5,0) HA41 decimal(5,0) HA50 text(1) HA51 text(1) HA52 decimal(2,0) HA53 decimal(4,0) HA54 decimal(2,0) HA55 decimal(2,0) HA56 decimal(4,0) HA57 decimal(2,0) HA58 text(1) HA60 text(1) HA61 text(1) HA62 text(1) HA63 text(1) HA64 text(1) HA65 decimal(2,0) HA66 decimal(2,0) HA67 decimal(3,0) HA68 decimal(2,0) HA69 text(1) HA70 text(1) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC91_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) S28DAYS decimal(2,0) S5YEARS decimal(2,0) S103A decimal(2,0) S104A decimal(2,0) S112A decimal(2,0) S112B decimal(2,0) S114A decimal(2,0) S114B decimal(2,0) S114C decimal(2,0) S114D decimal(2,0) S114E decimal(2,0) S114F decimal(2,0) S114G decimal(2,0) S114GX decimal(3,0) S223A decimal(2,0) S223B decimal(2,0) S229A decimal(2,0) S229B decimal(2,0) S229C decimal(2,0) S229D decimal(3,0) S306A decimal(2,0) S325J decimal(2,0) S325M decimal(2,0) S325N decimal(2,0) S325O decimal(2,0) S325A decimal(2,0) S325B decimal(2,0) S325CA decimal(2,0) S325CB decimal(2,0) S325CC decimal(2,0) S325CD decimal(2,0) S325CE decimal(2,0) S325CF decimal(2,0) S325CG decimal(2,0) S325CH decimal(2,0) S325CX decimal(2,0) S325CZ decimal(2,0) S325D decimal(2,0) S325E decimal(2,0) S325FA decimal(2,0) S325FB decimal(2,0) S325FC decimal(2,0) S325FD decimal(2,0) S325FE decimal(2,0) S325FF decimal(2,0) S325FH decimal(2,0) S325FX decimal(2,0) S325FZ decimal(2,0) S326 decimal(2,0) S326AA decimal(2,0) S326AB decimal(2,0) S326AC decimal(2,0) S326AX decimal(2,0) S326B decimal(3,0) S326C decimal(2,0) S506A text(1) S604A decimal(3,0) S616 decimal(3,0) S714AA decimal(2,0) S714BA decimal(2,0) S714BB decimal(2,0) S714BC decimal(2,0) S714D decimal(2,0) S714E decimal(2,0) S803A decimal(2,0) S823 decimal(2,0) S823A decimal(2,0) S823B decimal(2,0) S906A decimal(2,0) S906B decimal(2,0) S937A decimal(2,0) S937B decimal(2,0) S945O decimal(2,0) S945A decimal(2,0) S1001 decimal(2,0) S1002 decimal(2,0) S1003 decimal(2,0) S1004 decimal(2,0) S1005 decimal(2,0) SCORE decimal(3,0) AWFACTE2 decimal(5,0) AWFACTE3 decimal(5,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC83_All mdb_update_key_columns CASEID,FileCode,MMIDX mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) MMIDX decimal(3,0) MM1 decimal(2,0) MM2 decimal(2,0) MM3 decimal(3,0) MM4 decimal(5,0) MM5 text(1) MM6 decimal(3,0) MM7 decimal(3,0) MM8 decimal(5,0) MM9 decimal(3,0) MM10 text(1) MM11 text(1) MM12 text(1) MM13 text(1) MM14 decimal(3,0) MM15 text(1) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHMC_All mdb_update_key_columns FileCode,HHID mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID decimal(6,0) IDXHML decimal(2,0) SH123A decimal(2,0) SH123B decimal(3,0) SH123C decimal(2,0) SH123D decimal(2,0) SH125A decimal(2,0) SH127A decimal(2,0) SH127B decimal(5,0) SH128 decimal(3,0) SH128A decimal(2,0) SH128B decimal(5,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC75_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) V750 decimal(2,0) V751 decimal(2,0) V754BP text(1) V754CP decimal(2,0) V754DP decimal(2,0) V754JP decimal(2,0) V754WP decimal(2,0) V756 decimal(2,0) V761 text(1) V761B text(1) V761C text(1) V762AA text(1) V762AB text(1) V762AC text(1) V762AD text(1) V762AE text(1) V762AF text(1) V762AG text(1) V762AH text(1) V762AI text(1) V762AJ text(1) V762AK text(1) V762AL text(1) V762AM text(1) V762AN text(1) V762AO text(1) V762AP text(1) V762AQ text(1) V762AR text(1) V762AS text(1) V762AT text(1) V762AU text(1) V762AV text(1) V762AW text(1) V762AX text(1) V762AZ text(1) V762BA text(1) V762BB text(1) V762BC text(1) V762BD text(1) V762BE text(1) V762BF text(1) V762BG text(1) V762BH text(1) V762BI text(1) V762BJ text(1) V762BK text(1) V762BL text(1) V762BM text(1) V762BN text(1) V762BO text(1) V762BP text(1) V762BQ text(1) V762BR text(1) V762BS text(1) V762BT text(1) V762BU text(1) V762BV text(1) V762BW text(1) V762BX text(1) V762BZ text(1) V763A decimal(2,0) V763B decimal(2,0) V763C decimal(2,0) V763D text(1) V763E text(1) V763F text(1) V763G text(1) V766A text(1) V766B text(1) V767A text(1) V767B text(1) V767C text(1) V768A text(1) V768B text(1) V768C text(1) V769 text(1) V769A text(1) V770 decimal(2,0) V770A decimal(2,0) V770B decimal(2,0) V770C decimal(2,0) V770D decimal(2,0) V770E decimal(2,0) V770F decimal(2,0) V770G decimal(2,0) V770H decimal(2,0) V770I decimal(2,0) V770J decimal(2,0) V770K text(1) V770L decimal(2,0) V770M decimal(2,0) V770N decimal(2,0) V770O decimal(2,0) V770P decimal(2,0) V770Q decimal(2,0) V770R decimal(2,0) V770S decimal(2,0) V770T decimal(2,0) V770U decimal(2,0) V770V decimal(2,0) V770W decimal(2,0) V770X decimal(2,0) V774A decimal(2,0) V774B decimal(2,0) V774C decimal(2,0) V775 text(1) V777 text(1) V778 text(1) V779 text(1) V780 text(1) V781 text(1) V783 text(1) V784A text(1) V784B text(1) V784C text(1) V784D text(1) V784E text(1) V784F text(1) V784G text(1) V784H text(1) V784I text(1) V784J text(1) V784K text(1) V784L text(1) V784M text(1) V784N text(1) V784O text(1) V784P text(1) V784Q text(1) V784R text(1) V784S text(1) V784T text(1) V784U text(1) V784V text(1) V784X text(1) V785 decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC42_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) V401 decimal(2,0) V404 decimal(2,0) V405 decimal(2,0) V406 decimal(2,0) V407 text(1) V408 text(1) V409 decimal(2,0) V409A text(1) V410 decimal(2,0) V410A text(1) V411 decimal(2,0) V411A decimal(2,0) V412 text(1) V412A decimal(2,0) V412B text(1) V412C text(1) V413 decimal(2,0) V413A text(1) V413B text(1) V413C text(1) V413D text(1) V414A text(1) V414B text(1) V414C text(1) V414D text(1) V414E decimal(2,0) V414F decimal(2,0) V414G decimal(2,0) V414H decimal(2,0) V414I decimal(2,0) V414J decimal(2,0) V414K decimal(2,0) V414L decimal(2,0) V414M decimal(2,0) V414N decimal(2,0) V414O decimal(2,0) V414P decimal(2,0) V414Q text(1) V414R text(1) V414S decimal(2,0) V414T text(1) V414U text(1) V414V decimal(2,0) V414W text(1) V415 decimal(2,0) V416 text(1) V417 decimal(2,0) V418 decimal(2,0) V419 decimal(2,0) V420 text(1) V421 text(1) V426 decimal(4,0) V437 decimal(5,0) V438 decimal(5,0) V439 decimal(5,0) V440 decimal(5,0) V441 decimal(6,0) V442 decimal(6,0) V443 decimal(6,0) V444 decimal(6,0) V444A decimal(5,0) V445 decimal(5,0) V446 decimal(5,0) V447 decimal(2,0) V447A decimal(3,0) V452A text(1) V452B text(1) V452C decimal(2,0) V453 decimal(4,0) V454 decimal(2,0) V455 decimal(2,0) V456 decimal(4,0) V457 decimal(2,0) V458 text(1) V459 text(1) V460 text(1) V461 text(1) V462 text(1) V463A text(1) V463B text(1) V463C text(1) V463D text(1) V463E text(1) V463F text(1) V463G text(1) V463X text(1) V463Z text(1) V464 text(1) V465 text(1) V466 text(1) V467A text(1) V467B text(1) V467C text(1) V467D text(1) V467E text(1) V467F text(1) V467G text(1) V467H text(1) V467I text(1) V467J text(1) V467K text(1) V467L text(1) V467M text(1) V468 decimal(2,0) V469E decimal(2,0) V469F decimal(2,0) V469X decimal(2,0) V471A text(1) V471B text(1) V471C text(1) V471D text(1) V471E text(1) V471F text(1) V471G text(1) V472A text(1) V472B text(1) V472C text(1) V472D text(1) V472E text(1) V472F text(1) V472G text(1) V472H text(1) V472I text(1) V472J text(1) V472K text(1) V472L text(1) V472M text(1) V472N text(1) V472O text(1) V472P text(1) V472Q text(1) V472R text(1) V472S text(1) V472T text(1) V472U text(1) V473A text(1) V473B text(1) V474 text(1) V474A text(1) V474B text(1) V474C text(1) V474D text(1) V474E text(1) V474F text(1) V474G text(1) V474H text(1) V474I text(1) V474J text(1) V474X text(1) V474Z text(1) V475 text(1) V476 text(1) V477 text(1) V478 text(1) V479 text(1) V480 text(1) V481 text(1) V481A text(1) V481B text(1) V481C text(1) V481D text(1) V481E text(1) V481F text(1) V481G text(1) V481H text(1) V481X text(1) V482A text(1) V482B text(1) V482C text(1) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHCHL_All mdb_update_key_columns FileCode,HHID,IDXCHL mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(9) IDXCHL decimal(3,0) CHL1 decimal(2,0) CHL2 decimal(3,0) CHL3 decimal(2,0) CHL4 decimal(3,0) CHL5 decimal(2,0) CHL6 decimal(3,0) CHL7 decimal(2,0) CHL8 decimal(3,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHML_All mdb_update_key_columns FileCode,HHID,HMLIDX mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(6) HMLIDX decimal(2,0) HML3 decimal(2,0) HML4 decimal(3,0) HML5 decimal(2,0) HML6 decimal(2,0) HML7 decimal(3,0) HML8 decimal(2,0) HML9 decimal(3,0) HML10 decimal(2,0) HML11 decimal(2,0) HML21 decimal(2,0) HMLA decimal(3,0) HMLB decimal(3,0) HMLC decimal(3,0) HMLD decimal(3,0) HMLE text(1) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECH4_All mdb_update_key_columns FileCode,HHID,IDXH4 mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(5) IDXH4 decimal(3,0) SH08 decimal(2,0) SH13 decimal(2,0) SH18 decimal(2,0) SH19 decimal(2,0) SH20 decimal(2,0) SH21 decimal(2,0) SH22 decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC82_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) VCOL decimal(2,0) VCAL text(73) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC01_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) V000 text(4) V001 decimal(3,0) V002 decimal(4,0) V003 decimal(3,0) V004 decimal(3,0) V005 decimal(7,0) V006 decimal(3,0) V007 decimal(5,0) V008 decimal(5,0) V009 decimal(3,0) V010 decimal(5,0) V011 decimal(5,0) V012 decimal(3,0) V013 decimal(2,0) V014 decimal(2,0) V015 decimal(2,0) V016 decimal(3,0) V017 decimal(5,0) V018 decimal(3,0) V019 decimal(3,0) V019A decimal(2,0) V020 decimal(2,0) V021 decimal(3,0) V022 decimal(3,0) V023 decimal(3,0) V024 decimal(2,0) V025 decimal(2,0) V026 decimal(2,0) V027 decimal(2,0) V028 decimal(4,0) V029 decimal(2,0) V030 decimal(3,0) V031 decimal(3,0) V032 decimal(2,0) V034 decimal(3,0) V040 decimal(3,0) V042 decimal(2,0) V044 text(1) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC41_All mdb_update_key_columns CASEID,FileCode,MIDX mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) MIDX decimal(2,0) M1 decimal(2,0) M1A decimal(2,0) M1B text(1) M1C text(1) M1D decimal(3,0) M1E decimal(5,0) M2A decimal(2,0) M2B decimal(2,0) M2C decimal(2,0) M2D decimal(2,0) M2E decimal(2,0) M2F decimal(2,0) M2G decimal(2,0) M2H decimal(2,0) M2I decimal(2,0) M2J text(1) M2K decimal(2,0) M2L decimal(2,0) M2M decimal(2,0) M2N decimal(2,0) M3A decimal(2,0) M3B decimal(2,0) M3C decimal(2,0) M3D decimal(2,0) M3E decimal(2,0) M3F decimal(2,0) M3G decimal(2,0) M3H decimal(2,0) M3I decimal(2,0) M3J decimal(2,0) M3K decimal(2,0) M3L decimal(2,0) M3M decimal(2,0) M3N decimal(2,0) M4 decimal(3,0) M5 decimal(3,0) M6 decimal(3,0) M7 decimal(3,0) M8 decimal(3,0) M9 decimal(3,0) M10 decimal(2,0) M11 decimal(4,0) M13 text(1) M14 decimal(3,0) M15 decimal(3,0) M17 decimal(2,0) M18 decimal(2,0) M19 text(1) M19A text(1) M27 decimal(2,0) M28 decimal(2,0) M29 decimal(2,0) M34 decimal(4,0) M35 text(1) M36 text(1) M38 decimal(2,0) M39A decimal(2,0) M39 decimal(2,0) M42A text(1) M42B text(1) M42C text(1) M42D text(1) M42E text(1) M43 decimal(2,0) M44 text(1) M45 text(1) M46 text(1) M47 text(1) M48 text(1) M49A text(1) M49B text(1) M49C text(1) M49D text(1) M49E text(1) M49F text(1) M49G text(1) M49X text(1) M49Z text(1) M49Y text(1) M50 decimal(2,0) M51 decimal(4,0) M52 decimal(3,0) M54 decimal(2,0) M55A decimal(2,0) M55B decimal(2,0) M55C decimal(2,0) M55D decimal(2,0) M55E decimal(2,0) M55F decimal(2,0) M55G decimal(2,0) M55H decimal(2,0) M55I decimal(2,0) M55J decimal(2,0) M55K decimal(2,0) M55L text(1) M55M text(1) M55N text(1) M55O text(1) M55X decimal(2,0) M55Z decimal(2,0) M57A decimal(2,0) M57B text(1) M57C text(1) M57D text(1) M57E decimal(2,0) M57F decimal(2,0) M57G decimal(2,0) M57H decimal(2,0) M57I decimal(2,0) M57J decimal(2,0) M57K decimal(2,0) M57L decimal(2,0) M57M decimal(2,0) M57N decimal(2,0) M57O decimal(2,0) M57P decimal(2,0) M57Q decimal(2,0) M57R decimal(2,0) M57S decimal(2,0) M57T decimal(2,0) M57U text(1) M57V text(1) M57X decimal(2,0) M60 text(1) M61 decimal(4,0) M62 decimal(2,0) M65A text(1) M65B text(1) M65C text(1) M65D text(1) M65E text(1) M65F text(1) M65G text(1) M65H text(1) M65I text(1) M65J text(1) M65K text(1) M65L text(1) M65X text(1) M66 decimal(2,0) M70 decimal(2,0) M71 decimal(4,0) M72 decimal(3,0) M73 decimal(3,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECH3_All mdb_update_key_columns FileCode,HHID mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(6) SHDISTRICT decimal(2,0) SHUPAZILA decimal(3,0) SHADULT35 decimal(2,0) SHHTEC decimal(4,0) SH104A decimal(2,0) SH104B decimal(3,0) SH110G decimal(2,0) SH110H decimal(2,0) SH110I decimal(2,0) SH110J decimal(2,0) SH110K decimal(2,0) SH110L decimal(2,0) SH118A decimal(2,0) SH118B decimal(2,0) SH122A decimal(2,0) SH122C decimal(5,2) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECH4A_All mdb_update_key_columns FileCode,HHID,IDXH4A mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(6) IDXH4A decimal(3,0) SH6XA decimal(2,0) SH6XB decimal(2,0) SH6XC decimal(2,0) SH6XX decimal(2,0) SH6XY decimal(2,0) SH6XZ decimal(2,0) SH62A decimal(2,0) SH62B decimal(6,0) SH63 decimal(2,0) SH63B decimal(2,0) SH68A decimal(2,0) SH68B decimal(3,0) SH68C decimal(3,0) SH6YA decimal(2,0) SH6YB decimal(2,0) SH6YC decimal(2,0) SH6YD decimal(2,0) SH6YE decimal(2,0) SH6YF decimal(2,0) SH6YG decimal(2,0) SH6YH decimal(2,0) SH6YI decimal(2,0) SH6YJ decimal(2,0) SH6YX decimal(2,0) SH6YZ decimal(2,0) SH69A decimal(2,0) SH70 decimal(6,0) SH71 decimal(3,0) SH72 decimal(6,0) SH73 decimal(6,0) SH74 decimal(6,0) SH75 decimal(2,0) SH76 decimal(6,0) SH77A decimal(6,0) SH77B decimal(6,0) SH77C decimal(6,0) SH78 decimal(2,0) SH78A decimal(5,0) SH90 decimal(2,0) SH91 decimal(2,0) SH92 decimal(3,0) SH93 decimal(4,0) SH94 decimal(6,0) SH94A decimal(2,0) SH95 decimal(6,0) SH96A decimal(6,0) SH96B decimal(6,0) SH96C decimal(6,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC81_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) V801 decimal(5,0) V802 decimal(5,0) V803 decimal(3,0) V804 decimal(2,0) V805 decimal(4,0) V806 decimal(2,0) V811 decimal(2,0) V812 decimal(2,0) V813 decimal(2,0) V814 decimal(2,0) V815A text(1) V815B text(1) V815C text(1) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHG2_All mdb_update_key_columns FileCode,HHID mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(7) SG101 decimal(3,0) SG103 decimal(3,0) SG104 decimal(2,0) SG105 decimal(2,0) SG106 decimal(2,0) SG107 decimal(2,0) SG108 decimal(3,0) SG109 decimal(2,0) SG110 decimal(4,0) SG111 decimal(3,0) SG112A decimal(7,0) SG112B decimal(2,0) SG113A decimal(6,0) SG113B decimal(6,0) SG113C decimal(6,0) SG113D decimal(6,0) SG114A decimal(7,0) SG114B decimal(7,0) SG115 decimal(2,0) SG116A decimal(3,0) SG116B decimal(3,0) SG116C decimal(3,0) SG116D decimal(3,0) SG117A decimal(7,0) SG117B decimal(2,0) SG118A decimal(7,0) SG118B decimal(2,0) SG119A decimal(7,0) SG119B decimal(2,0) SG120A text(1) SG120B text(1) SG121 decimal(2,0) SG122 decimal(2,0) SG123A decimal(2,0) SG123B decimal(2,0) SG123C decimal(2,0) SG123D decimal(2,0) SG123E decimal(2,0) SG123F decimal(2,0) SG123G decimal(2,0) SG123H decimal(2,0) SG123I decimal(2,0) SG123J decimal(2,0) SG123X decimal(2,0) SG124 decimal(2,0) SG125 decimal(2,0) SG126 decimal(7,0) SG127 decimal(3,0) SG128 decimal(2,0) SG129 decimal(2,0) SG201A decimal(2,0) SG201B decimal(2,0) SG201C decimal(2,0) SG201D decimal(2,0) SG201E decimal(2,0) SG201F decimal(2,0) SG201G decimal(2,0) SG201H decimal(2,0) SG201I decimal(2,0) SG201J decimal(2,0) SG201K decimal(2,0) SG201L decimal(2,0) SG201M decimal(2,0) SG201N decimal(2,0) SG201X decimal(2,0) SG202A decimal(2,0) SG202B decimal(2,0) SG202C decimal(2,0) SG202D decimal(2,0) SG202E decimal(2,0) SG202F decimal(2,0) SG202G decimal(2,0) SG202H decimal(2,0) SG202I decimal(2,0) SG202J decimal(2,0) SG202K decimal(2,0) SG202L decimal(2,0) SG202M text(1) SG202N text(1) SG202X decimal(2,0) SG203A decimal(2,0) SG203B decimal(3,0) SG204M decimal(3,0) SG204A decimal(5,0) SG205 decimal(3,0) SG206A decimal(2,0) SG206B decimal(6,0) SG207 decimal(3,0) SG207B decimal(2,0) SG208A decimal(2,0) SG208B decimal(7,0) SG209 decimal(2,0) SG210 decimal(2,0) SG211 decimal(2,0) SG213A decimal(2,0) SG213B decimal(7,0) SG214 decimal(2,0) SG215 decimal(2,0) SG216A decimal(2,0) SG216B decimal(2,0) SG216C decimal(2,0) SG216D decimal(2,0) SG216E decimal(2,0) SG216F decimal(2,0) SG216G decimal(2,0) SG216H decimal(2,0) SG216I decimal(2,0) SG216X decimal(2,0) SG216Z decimal(2,0) SG217A decimal(2,0) SG217B decimal(2,0) SG217C decimal(2,0) SG217D decimal(2,0) SG217E decimal(2,0) SG217F decimal(2,0) SG217G decimal(2,0) SG217H decimal(2,0) SG217I decimal(2,0) SG217X decimal(2,0) SG217Y decimal(2,0) SG217Z decimal(2,0) SG218 decimal(2,0) SG219A decimal(2,0) SG219B decimal(7,0) SG220 decimal(2,0) SG221 decimal(2,0) SG222A decimal(2,0) SG222B decimal(2,0) SG222C decimal(2,0) SG222D decimal(2,0) SG222E decimal(2,0) SG222F decimal(2,0) SG222G decimal(2,0) SG222H decimal(2,0) SG222I decimal(2,0) SG222J decimal(2,0) SG222K decimal(2,0) SG222X decimal(2,0) SG222Z decimal(2,0) SG223A decimal(2,0) SG223B decimal(2,0) SG223C decimal(2,0) SG223D decimal(2,0) SG223E decimal(2,0) SG223F decimal(2,0) SG223G decimal(2,0) SG223H decimal(2,0) SG223I decimal(2,0) SG223J decimal(2,0) SG223K decimal(2,0) SG223X decimal(2,0) SG223Y decimal(2,0) SG223Z decimal(2,0) SG224 decimal(2,0) SG225A decimal(2,0) SG225B decimal(7,0) SG226 decimal(2,0) SG227 decimal(6,0) SG228A decimal(2,0) SG228B decimal(2,0) SG228C decimal(2,0) SG228D decimal(2,0) SG228E decimal(2,0) SG228F decimal(2,0) SG228G decimal(2,0) SG228H decimal(2,0) SG228I decimal(2,0) SG228J decimal(2,0) SG228X decimal(2,0) SG228Y decimal(2,0) SG228Z decimal(2,0) SG229 decimal(3,0) SG230M decimal(3,0) SG230A decimal(5,0) SG231 decimal(3,0) SG232A decimal(2,0) SG232B decimal(6,0) SG233 decimal(2,0) SG234 decimal(2,0) SG235 decimal(2,0) SG237A decimal(2,0) SG237B decimal(6,0) SG238 decimal(2,0) SG239 decimal(2,0) SG240A decimal(2,0) SG240B decimal(2,0) SG240C decimal(2,0) SG240D decimal(2,0) SG240E decimal(2,0) SG240F decimal(2,0) SG240G decimal(2,0) SG240H decimal(2,0) SG240I decimal(2,0) SG240X decimal(2,0) SG240Z decimal(2,0) SG241A decimal(2,0) SG241B decimal(2,0) SG241C decimal(2,0) SG241D decimal(2,0) SG241E decimal(2,0) SG241F decimal(2,0) SG241G decimal(2,0) SG241H decimal(2,0) SG241I decimal(2,0) SG241X decimal(2,0) SG241Y decimal(2,0) SG241Z decimal(2,0) SG242 decimal(2,0) SG243A decimal(2,0) SG243B decimal(7,0) SG244 decimal(2,0) SG245 decimal(2,0) SG246A decimal(2,0) SG246B decimal(2,0) SG246C decimal(2,0) SG246D decimal(2,0) SG246E decimal(2,0) SG246X decimal(2,0) SG246Z decimal(2,0) SG247A decimal(2,0) SG247B decimal(2,0) SG247C decimal(2,0) SG247D decimal(2,0) SG247E decimal(2,0) SG247X decimal(2,0) SG247Y decimal(2,0) SG247Z decimal(2,0) SG248 decimal(2,0) SG249A decimal(2,0) SG249B text(1) SG250 decimal(2,0) SG251 decimal(6,0) SG252 decimal(2,0) SG253A decimal(4,0) SG253B decimal(4,0) SG253C decimal(4,0) SG253 decimal(4,0) SG254 decimal(3,0) SG255 decimal(3,0) SG256A decimal(2,0) SG256B decimal(6,0) SG257 decimal(3,0) SG258A decimal(2,0) SG258B decimal(7,0) SG259 decimal(2,0) SG260 decimal(2,0) SG261 decimal(2,0) SG262A decimal(2,0) SG262B decimal(6,0) SG263 decimal(2,0) SG264 decimal(2,0) SG265A decimal(2,0) SG265B decimal(2,0) SG265C decimal(2,0) SG265D decimal(2,0) SG265E decimal(2,0) SG265F decimal(2,0) SG265G decimal(2,0) SG265H decimal(2,0) SG265I decimal(2,0) SG265X decimal(2,0) SG265Z decimal(2,0) SG265AA decimal(2,0) SG265AB decimal(2,0) SG265AC decimal(2,0) SG265AD decimal(2,0) SG265AE decimal(2,0) SG265AF decimal(2,0) SG265AG decimal(2,0) SG265AH decimal(2,0) SG265AI decimal(2,0) SG265AX decimal(2,0) SG265AY decimal(2,0) SG265AZ decimal(2,0) SG265BB decimal(2,0) SG266A decimal(2,0) SG266B decimal(5,0) SG267 decimal(2,0) SG268 decimal(2,0) SG269A decimal(2,0) SG269B decimal(2,0) SG269C decimal(2,0) SG269D decimal(2,0) SG269E decimal(2,0) SG269F decimal(2,0) SG269G decimal(2,0) SG269H decimal(2,0) SG269I decimal(2,0) SG269J decimal(2,0) SG269K decimal(2,0) SG269X decimal(2,0) SG269Z decimal(2,0) SG270A decimal(2,0) SG270B decimal(2,0) SG270C decimal(2,0) SG270D decimal(2,0) SG270E decimal(2,0) SG270F decimal(2,0) SG270G decimal(2,0) SG270H decimal(2,0) SG270I decimal(2,0) SG270J decimal(2,0) SG270K decimal(2,0) SG270X decimal(2,0) SG270Y decimal(2,0) SG270Z decimal(2,0) SG271 decimal(2,0) SG272A decimal(2,0) SG272B decimal(7,0) SG273 decimal(2,0) SG274 decimal(6,0) SG275 decimal(2,0) SG276 decimal(4,0) SG277 decimal(2,0) SG278 decimal(2,0) SG279U decimal(2,0) SG279N decimal(2,0) SG280A decimal(2,0) SG280B decimal(7,0) SG281 decimal(2,0) SG282A decimal(2,0) SG282B decimal(2,0) SG282C decimal(2,0) SG283 decimal(6,0) SG284 decimal(2,0) SG285 decimal(2,0) SG286 decimal(6,0) SG287 decimal(2,0) SG288 decimal(2,0) SG289 decimal(7,0) SG290 decimal(2,0) SG291 decimal(3,0) SG292 decimal(6,0) SG292A decimal(7,0) SG301A decimal(2,0) SG301B decimal(2,0) SG301C decimal(2,0) SG301D decimal(2,0) SG301E decimal(2,0) SG301F decimal(2,0) SG301G decimal(2,0) SG301H decimal(2,0) SG301X decimal(2,0) SG302 decimal(2,0) SG303A decimal(2,0) SG303B decimal(2,0) SG303C decimal(2,0) SG304A decimal(2,0) SG304B decimal(2,0) SG304C decimal(2,0) SG304D decimal(2,0) SG304E decimal(2,0) SG304X decimal(2,0) SG305 decimal(3,0) SG306 decimal(2,0) SG307 decimal(2,0) SG308 decimal(2,0) SG309 decimal(2,0) SG310 decimal(2,0) SG311 decimal(3,0) SINGRESOO decimal(8,0) SINGRESOE decimal(7,0) SREGALIAP decimal(7,0) SBONIFICA decimal(7,0) SIFUENTE1 decimal(8,0) SIFUENTE2 decimal(7,0) SIFUENTE3 decimal(7,0) SIFUENTE4 text(1) SINGRESOTP decimal(8,0) SINGRESOIP decimal(2,0) SINGRESOIB decimal(3,0) SGASTOTI text(1) SINGRESOIPA decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHMA_All mdb_update_key_columns FileCode,HB0,HHID mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(7) HB0 decimal(3,0) HB1 decimal(3,0) HB2 decimal(5,0) HB3 decimal(5,0) HB4 decimal(5,0) HB5 decimal(5,0) HB6 decimal(6,0) HB11 decimal(5,0) HB12 decimal(6,0) HB12A decimal(6,0) HB12B decimal(6,0) HB13 decimal(2,0) HB32 decimal(5,0) HB33 decimal(2,0) HB35 text(1) HB40 decimal(5,0) HB41 decimal(5,0) HB50 text(1) HB51 text(1) HB52 text(1) HB53 text(1) HB55 text(1) HB56 text(1) HB57 text(1) HB58 text(1) HB60 text(1) HB61 text(1) HB62 text(1) HB63 text(1) HB64 text(1) HB65 decimal(2,0) HB66 decimal(2,0) HB67 decimal(3,0) HB68 decimal(2,0) HB69 text(1) HB70 text(1) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHMT_All mdb_update_key_columns FileCode,HHID,SHMTX mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(7) SHMTX decimal(2,0) SH78 decimal(2,0) SH79 decimal(3,0) SH80M decimal(3,0) SH80A decimal(5,0) SH81 decimal(2,0) SH80MI decimal(3,0) SH80AI decimal(5,0) SH80C decimal(3,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC98_All mdb_update_key_columns CASEID,FileCode,IDX98 mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(11) IDX98 decimal(2,0) S570 decimal(3,0) S571 decimal(3,0) S572 decimal(3,0) S573A decimal(2,0) S573B decimal(9,0) S573C decimal(3,0) S573D decimal(3,0) S573E decimal(5,0) S575 decimal(9,0) S576A decimal(3,0) S576B decimal(3,0) S576C decimal(5,0) S576D decimal(9,0) S576E decimal(3,0) S576F decimal(3,0) S576G decimal(5,0) S576H decimal(9,0) S576I decimal(3,0) S576J decimal(3,0) S577A decimal(5,0) S577B decimal(9,0) S577C decimal(3,0) S577D decimal(3,0) S577E decimal(5,0) S577F decimal(9,0) S577G decimal(3,0) S577G1 decimal(3,0) S577G2 decimal(5,0) S577H decimal(9,0) S577I decimal(3,0) S577J decimal(3,0) S577K decimal(5,0) S577L decimal(9,0) S577M decimal(3,0) S577N decimal(3,0) S577O decimal(5,0) S577P decimal(9,0) S577Q decimal(3,0) S577R decimal(3,0) S578A decimal(5,0) S578B decimal(9,0) S578C decimal(3,0) S578D decimal(3,0) S578E decimal(5,0) S578F decimal(9,0) S578G decimal(3,0) S578H decimal(3,0) S578I decimal(5,0) S578J decimal(9,0) S578K decimal(3,0) S578L decimal(3,0) S578M decimal(5,0) S578N decimal(9,0) S578O decimal(3,0) S578P decimal(3,0) S578P1 decimal(5,0) S578P2 decimal(9,0) S578Q decimal(3,0) S578R decimal(3,0) S578S decimal(5,0) S578T decimal(9,0) S578U decimal(3,0) S578V decimal(3,0) S578W decimal(5,0) S578X decimal(9,0) S578Y decimal(3,0) S579A decimal(3,0) S579B decimal(5,0) S579C decimal(9,0) S579D decimal(3,0) S579E decimal(3,0) S579F decimal(5,0) S579G decimal(2,0) S580 decimal(2,0) S581A decimal(2,0) S581B decimal(2,0) S581C decimal(2,0) S581D decimal(2,0) S581E decimal(2,0) S581F decimal(2,0) S581G decimal(2,0) S581H decimal(2,0) S581I decimal(2,0) S581J decimal(2,0) S581X decimal(2,0) S582 decimal(2,0) S583 decimal(3,0) S583B decimal(3,0) S584 decimal(3,0) S584B decimal(3,0) S585 decimal(2,0) S586 decimal(2,0) S587 decimal(3,0) S588 decimal(2,0) S589 decimal(3,0) S591 decimal(3,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECH2_All mdb_update_key_columns FileCode,HHID mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(6) HV201 decimal(3,0) HV202 text(1) HV204 decimal(4,0) HV205 decimal(3,0) HV206 decimal(2,0) HV207 decimal(2,0) HV208 decimal(2,0) HV209 decimal(2,0) HV210 decimal(2,0) HV211 decimal(2,0) HV212 text(1) HV213 decimal(3,0) HV214 decimal(3,0) HV215 decimal(3,0) HV216 decimal(3,0) HV217 decimal(2,0) HV218 decimal(2,0) HV219 decimal(2,0) HV220 decimal(3,0) HV221 decimal(2,0) HV225 decimal(2,0) HV226 decimal(3,0) HV227 text(1) HV228 text(1) HV230A decimal(2,0) HV230B decimal(2,0) HV232 decimal(2,0) HV232B decimal(2,0) HV232C decimal(2,0) HV232D decimal(2,0) HV232E text(1) HV232Y decimal(2,0) HV234 text(1) HV234A decimal(2,0) HV235 decimal(2,0) HV236 text(1) HV237 decimal(2,0) HV237A decimal(2,0) HV237B decimal(2,0) HV237C decimal(2,0) HV237D decimal(2,0) HV237E decimal(2,0) HV237F decimal(2,0) HV237G decimal(2,0) HV237H text(1) HV237I text(1) HV237J text(1) HV237K text(1) HV237X decimal(2,0) HV237Z decimal(2,0) HV238 decimal(3,0) HV239 text(1) HV240 text(1) HV241 decimal(2,0) HV242 decimal(2,0) HV243A decimal(2,0) HV243B text(1) HV243C text(1) HV243D text(1) HV244 decimal(2,0) HV245 decimal(4,0) HV246 decimal(2,0) HV246A text(1) HV246B decimal(2,0) HV246C text(1) HV246D text(1) HV246E text(1) HV246F text(1) HV246G decimal(3,0) HV246H decimal(3,0) HV246I decimal(3,0) HV246J text(1) HV246K text(1) HV247 decimal(2,0) HV252 decimal(2,0) HV253 text(1) HV253A text(1) HV253B text(1) HV253C text(1) HV253D text(1) HV253E text(1) HV253F text(1) HV253G text(1) HV253H text(1) HV253X text(1) HV253Z text(1) HV270 decimal(2,0) HV271 decimal(8,0) HML1 text(1) HML1A text(1) HML2 text(1) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHPC_All mdb_update_key_columns FileCode,HHID,HPCIDX mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(6) HPCIDX decimal(3,0) SH198C decimal(2,0) SH198D decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC32_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) V310 text(1) V311 text(1) V312 decimal(3,0) V313 decimal(2,0) V315 decimal(3,0) V316 decimal(5,0) V317 decimal(5,0) V318 decimal(2,0) V319 decimal(2,0) V320 decimal(2,0) V321 decimal(2,0) V322 decimal(2,0) V323 decimal(3,0) V323A decimal(3,0) V325A text(1) V326 decimal(3,0) V327 decimal(2,0) V337 decimal(3,0) V359 decimal(3,0) V360 decimal(3,0) V361 decimal(2,0) V362 decimal(2,0) V363 decimal(3,0) V364 decimal(2,0) V367 decimal(2,0) V372 decimal(2,0) V372A decimal(2,0) V375A text(1) V376 decimal(3,0) V376A text(1) V379 text(1) V380 text(1) V384A decimal(2,0) V384B decimal(2,0) V384C decimal(2,0) V393 text(1) V394 text(1) V395 text(1) V3A00A decimal(2,0) V3A00B decimal(2,0) V3A00C decimal(2,0) V3A00D decimal(2,0) V3A00E decimal(2,0) V3A00F decimal(2,0) V3A00G decimal(2,0) V3A00H decimal(2,0) V3A00I decimal(2,0) V3A00J decimal(2,0) V3A00K decimal(2,0) V3A00L decimal(2,0) V3A00M decimal(2,0) V3A00N decimal(2,0) V3A00O decimal(2,0) V3A00P text(1) V3A00Q text(1) V3A00R text(1) V3A00S decimal(2,0) V3A00T text(1) V3A00U decimal(2,0) V3A00V decimal(2,0) V3A00W decimal(2,0) V3A00X decimal(2,0) V3A00Y decimal(2,0) V3A00Z decimal(2,0) V3A01 text(1) V3A02 text(1) V3A03 text(1) V3A04 text(1) V3A05 text(1) V3A06 text(1) V3A07 decimal(3,0) V3A08A text(1) V3A08B decimal(2,0) V3A08C decimal(2,0) V3A08D decimal(2,0) V3A08E decimal(2,0) V3A08F decimal(2,0) V3A08G decimal(2,0) V3A08H decimal(2,0) V3A08I decimal(2,0) V3A08J decimal(2,0) V3A08K decimal(2,0) V3A08L decimal(2,0) V3A08M decimal(2,0) V3A08N decimal(2,0) V3A08O text(1) V3A08P decimal(2,0) V3A08Q decimal(2,0) V3A08R decimal(2,0) V3A08S decimal(2,0) V3A08T decimal(2,0) V3A08U decimal(2,0) V3A08V decimal(2,0) V3A08W text(1) V3A08AA text(1) V3A08AB text(1) V3A08AC text(1) V3A08AD text(1) V3A08X decimal(2,0) V3A08Z decimal(2,0) V3A09A text(1) V3A09B text(1) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC80_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) V820 text(1) V821A text(1) V821B text(1) V821C text(1) V822 text(1) V823 decimal(2,0) V824 text(1) V825 text(1) V826 text(1) V826A text(1) V827 text(1) V828 text(1) V829 text(1) V830 text(1) V831 text(1) V832B text(1) V832C text(1) V833A text(1) V833B text(1) V833C text(1) V834A text(1) V834B text(1) V834C text(1) V835A text(1) V835B text(1) V835C text(1) V836 text(1) V837 text(1) V838A text(1) V838B text(1) V838C text(1) V839 text(1) V839A text(1) V840 text(1) V840A text(1) V841 text(1) V841A text(1) V842 text(1) V843 text(1) V844 text(1) V845 text(1) V846 text(1) V847 text(1) V848 text(1) V849 text(1) V850A text(1) V850B text(1) V851A text(1) V851B text(1) V851C text(1) V851D text(1) V851E text(1) V851F text(1) V851G text(1) V851H text(1) V851I text(1) V851J text(1) V851K text(1) V851L text(1) V852A text(1) V852B text(1) V852C text(1) V853A text(1) V853B text(1) V853C text(1) V854A text(1) V854B text(1) V855 text(1) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHG1_All mdb_update_key_columns FileCode,HHID mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(7) SGCONGL decimal(5,0) SGHOGAR decimal(3,0) SGESTR text(1) SGPROVIN decimal(2,0) SGMUNIC text(1) SGZONA decimal(2,0) SGRESP decimal(3,0) SGINT decimal(9,0) SGINTD decimal(3,0) SGINTM decimal(3,0) SGINTA decimal(5,0) SGINTNUM decimal(4,0) SGRESULT decimal(2,0) SGVISITS decimal(2,0) SGSUPERV decimal(4,0) SGEDITC decimal(4,0) SGEDITO decimal(2,0) SGDIGIT decimal(3,0) SGHORAI decimal(3,0) SGMINUTI decimal(3,0) SGHORAF decimal(3,0) SGMINUTF decimal(3,0) SGWEIGHT decimal(9,0) SINGRTH decimal(8,0) SINGRTHP decimal(9,0) SINGRHI decimal(2,0) SVIVIG1 decimal(2,0) SVIVIG2 decimal(2,0) SVALPRO decimal(6,0) SQUINTIP decimal(2,0) SALLINCI decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC97_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(12) S902 decimal(2,0) S903A decimal(2,0) S903B decimal(2,0) S903C decimal(2,0) S903D decimal(2,0) S903E decimal(2,0) S903F decimal(2,0) S903G decimal(2,0) S903H decimal(2,0) S903X decimal(2,0) S903Z decimal(2,0) S904 decimal(2,0) S905M decimal(3,0) S905Y decimal(5,0) S906 decimal(2,0) S907 decimal(2,0) S908 decimal(3,0) S909 decimal(2,0) S910 decimal(2,0) S911 decimal(2,0) S912 decimal(2,0) S913 decimal(3,0) S914 decimal(2,0) S915 decimal(3,0) S916 decimal(2,0) S917 decimal(3,0) S918 decimal(2,0) S919 decimal(3,0) S920 decimal(2,0) S921 decimal(2,0) S922 decimal(2,0) S923 decimal(2,0) S924 decimal(3,0) S926 decimal(2,0) S927 decimal(2,0) S928 decimal(2,0) S929 decimal(2,0) S930 decimal(3,0) S931 decimal(2,0) S932 decimal(2,0) S933 decimal(2,0) S934 decimal(2,0) S936 decimal(2,0) S937A decimal(2,0) S937B decimal(2,0) S937C decimal(2,0) S937D decimal(2,0) S937E decimal(2,0) S937F decimal(2,0) S937G decimal(2,0) S937H decimal(2,0) S937X decimal(2,0) S937Z decimal(2,0) S938 decimal(2,0) S939 decimal(2,0) S940M decimal(3,0) S940Y decimal(5,0) S941 decimal(2,0) S942 decimal(3,0) S943 decimal(2,0) S944 decimal(2,0) S945 decimal(2,0) S946 decimal(2,0) S947 decimal(2,0) S948 decimal(3,0) S949 decimal(2,0) S950 decimal(3,0) S951 decimal(3,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECHLB_All mdb_update_key_columns FileCode,HHID mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(6) SHCOL21A decimal(2,0) SH21 decimal(3,0) SH22 decimal(2,0) SH23 decimal(3,0) SH24 decimal(2,0) SH25 decimal(2,0) SH26 decimal(3,0) SH27 decimal(2,0) SH28 decimal(3,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECML_All mdb_update_key_columns CASEID,FileCode,IDXML mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) IDXML decimal(2,0) ML0 decimal(2,0) ML1 decimal(3,0) ML2 decimal(2,0) ML11 text(1) ML12 text(1) ML13A decimal(2,0) ML13B decimal(2,0) ML13C decimal(2,0) ML13D decimal(2,0) ML13E decimal(2,0) ML13F text(1) ML13G text(1) ML13H decimal(2,0) ML13I decimal(2,0) ML13J decimal(2,0) ML13K decimal(2,0) ML13L decimal(2,0) ML13M decimal(2,0) ML13N text(1) ML13O text(1) ML13P text(1) ML13X decimal(2,0) ML13Y decimal(2,0) ML13Z decimal(2,0) ML14A text(1) ML14B text(1) ML14Y text(1) ML14Z text(1) ML15A text(1) ML15B text(1) ML15C text(1) ML16A decimal(2,0) ML16B text(1) ML16C text(1) ML17A decimal(2,0) ML17B text(1) ML17C text(1) ML18A text(1) ML18B text(1) ML18C text(1) ML19A text(1) ML19B text(1) ML19C text(1) ML19D text(1) ML19E text(1) ML19F text(1) ML19X text(1) ML19Y text(1) ML19Z text(1) ML20A decimal(2,0) ML20B text(1) ML20C text(1) ML21A text(1) ML21B text(1) ML21C text(1) ML22A text(1) ML22B text(1) ML22C text(1) ML23A decimal(2,0) ML23B text(1) ML23C text(1) ML24C text(1) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF RECH1_All mdb_update_key_columns FileCode,HHID,HVIDX mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) HHID text(5) HVIDX decimal(3,0) HV101 decimal(3,0) HV102 decimal(2,0) HV103 decimal(2,0) HV104 decimal(2,0) HV105 decimal(3,0) HV106 decimal(2,0) HV107 decimal(2,0) HV108 decimal(3,0) HV109 decimal(2,0) HV110 text(1) HV111 text(1) HV112 text(1) HV113 text(1) HV114 text(1) HV115 text(1) HV116 decimal(2,0) HV117 decimal(2,0) HV118 decimal(2,0) HV120 decimal(2,0) HV121 decimal(2,0) HV122 decimal(2,0) HV123 decimal(2,0) HV124 decimal(3,0) HV125 text(1) HV126 text(1) HV127 text(1) HV128 text(1) HV129 text(1) HV140 decimal(2,0) +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF REC31_All mdb_update_key_columns CASEID,FileCode mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER FileCode text(7) CASEID text(9) V301 text(1) V302 text(1) V302A decimal(2,0) REC31_GROUP decimal(2,0) V304A text(1) V304 text(1) V305 text(1) V307 decimal(2,0) diff --git a/DataFileParsing/translate_all_recordtypes_to_mdb_dynamic.fmw b/DataFileParsing/translate_all_recordtypes_to_mdb_dynamic.fmw new file mode 100644 index 0000000..af8ccdd --- /dev/null +++ b/DataFileParsing/translate_all_recordtypes_to_mdb_dynamic.fmw @@ -0,0 +1,14962 @@ +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +GUI IGNORE SourceDataset_CSV_4,CSV_IN_NETWORK_AUTHENTICATION_CSV_4,_SKIP_LINES_CSV_4,_SKIP_FOOTER_CSV_4,_STRIP_QUOTES_CSV_4,_DUPLICATE_DELIMS_CSV_4,SORT_GROUP_CSV_4,_SORT_PARAMS_CSV_4,FILTER_GROUP_CSV_4,_FILTER_PARAMS_CSV_4,_ENCODING_CSV_4,SourceDataset_SCHEMA_FROM_TABLE_1,SCHEMA_FROM_TABLE_IN_NETWORK_AUTHENTICATION_SCHEMA_FROM_TABLE_1,SCHEMA_TABLE_NAME_SCHEMA_FROM_TABLE_1,FEATURE_TYPE_COLUMN_SCHEMA_FROM_TABLE_1,ATTRIBUTE_NAME_COLUMN_SCHEMA_FROM_TABLE_1,ATTRIBUTE_TYPE_COLUMN_SCHEMA_FROM_TABLE_1,GEOMETRY_TYPE_COLUMN_SCHEMA_FROM_TABLE_1,ATTRIBUTE_NAME_SEQUENCE_COLUMN_SCHEMA_FROM_TABLE_1,DestDataset_MDB_ADO_1,MDB_ADO_OUT_PASSWORD_MDB_ADO_1,MDB_ADO_OUT_VERSION_MDB_ADO_1,MDB_ADO_OUT_OVERWRITE_FILE_MDB_ADO_1,MDB_ADO_OUT_COMPRESS_AT_END_MDB_ADO_1,MDB_ADO_OUT_WRITER_MODE_MDB_ADO_1,MDB_ADO_OUT_START_TRANSACTION_MDB_ADO_1,MDB_ADO_OUT_TRANSACTION_INTERVAL_MDB_ADO_1,MDB_ADO_OUT_BEGIN_SQL_MDB_ADO_1,MDB_ADO_OUT_END_SQL_MDB_ADO_1 +DEFAULT_MACRO SourceDataset_CSV_6 C:\Users\zool1301\Documents\DHS\Phase6\fmetest\*.csv +GUI MULTIFILE SourceDataset_CSV_6 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +DEFAULT_MACRO FEATURE_TYPES +GUI OPTIONAL FEATURE_TYPES FEATURE_TYPES "C:Userszool1301DocumentsDHSPhase6fmetest*.csv,_FORMAT_OVERRIDE_,CSV,_DATASET_OVERRIDE_,SourceDataset_CSV_6,_SKIP_LINES,1,_SKIP_FOOTER,0,_STRIP_QUOTES,yes,_DUPLICATE_DELIMS,no,SORT_GROUP,NO,FILTER_GROUP,NO,MAX_FEATURES,50000,_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_FIELD_NAMES_AFTER_HEADER,no,_GROUP_BY_DATASET,no,_IN_SEPARATOR,\",\",SCAN_MAX_FEATURES,1000,_SCHEMA,\"char,9,,char,4,,number,3,0,number,4,0,number,3,0,number,3,0,number,7,0,number,3,0,number,5,0,number,5,0,number,3,0,number,5,0,number,5,0,number,3,0,number,2,0,number,2,0,number,2,0,number,3,0,number,5,0,number,3,0,number,3,0,number,2,0,number,2,0,number,3,0,number,3,0,number,3,0,number,2,0,number,2,0,number,2,0,number,2,0,number,4,0,number,2,0,number,3,0,number,3,0,number,2,0,number,3,0,number,3,0,number,2,0,char,1,\",_FILTER_TABLE_CONFIG,\"""NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%\""Field Name\""%\""STRING_OR_CHOICE_ENCODED ATTRIBUTES CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044\""%%\""Filter\""%\""STRING_ENCODED _FILTER_REGEX \""%%\""Invert Filter\""%\""CHECKBOX _FILTER_UNMATCHED yes%no\""%no""\",DYNAMIC_WORKFLOW,yes,_IN_FIELD_NAMES,YES,_SCHEMA_WITH_COL_NAMES,\"CASEID,char,9,,V000,char,4,,V001,number,3,0,V002,number,4,0,V003,number,3,0,V004,number,3,0,V005,number,7,0,V006,number,3,0,V007,number,5,0,V008,number,5,0,V009,number,3,0,V010,number,5,0,V011,number,5,0,V012,number,3,0,V013,number,2,0,V014,number,2,0,V015,number,2,0,V016,number,3,0,V017,number,5,0,V018,number,3,0,V019,number,3,0,V019A,number,2,0,V020,number,2,0,V021,number,3,0,V022,number,3,0,V023,number,3,0,V024,number,2,0,V025,number,2,0,V026,number,2,0,V027,number,2,0,V028,number,4,0,V029,number,2,0,V030,number,3,0,V031,number,3,0,V032,number,2,0,V034,number,3,0,V040,number,3,0,V042,number,2,0,V044,char,1,\",_SORT_TABLE_CONFIG,\"""NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%\""Attribute\""%\""STRING_OR_CHOICE_ENCODED ATTRIBUTES CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044\""%%\""Alpha/Num\""%\""LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric\""%alphabetic%\""Order\""%\""LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending\""%ascending""\",_MERGE_SCHEMAS,YES,_MERGE_SCHEMAS,YES" Feature Types to Read: +DEFAULT_MACRO DestDataset_MDB_ADO C:\Users\zool1301\Documents\DHS\Phase6\fmetest\db\testsomefiles.mdb +GUI FILENAME DestDataset_MDB_ADO Access_Database_Files(*.mdb;*.accdb)|*.mdb;*.accdb|All_files(*)|* Destination Microsoft Access Database File: +DEFAULT_MACRO SourceDataset_SCHEMA_FROM_TABLE C:\Users\zool1301\Documents\DHS\Phase6\SurveySpecs\*.csv +GUI FILE_OR_URL SourceDataset_SCHEMA_FROM_TABLE All_files|* Source Dataset: +INCLUDE [ if {{$(SourceDataset_CSV_6)} == {}} { puts_real {Parameter 'SourceDataset_CSV_6' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(DestDataset_MDB_ADO)} == {}} { puts_real {Parameter 'DestDataset_MDB_ADO' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(SourceDataset_SCHEMA_FROM_TABLE)} == {}} { puts_real {Parameter 'SourceDataset_SCHEMA_FROM_TABLE' must be given a value.}; exit 1; }; ] +#! START_HEADER +#! START_WB_HEADER +READER_TYPE MULTI_READER +MULTI_READER_TYPE{0} CSV +MULTI_READER_KEYWORD{0} CSV_4 +MULTI_READER_GEN_DIRECTIVES{0} _ALLOW_SPACES_IN_COLUMN_NAMES,yes,_SKIP_LINES,1,_SKIP_FOOTER,0,_FIELD_NAMES_AFTER_HEADER,no,groupBox,,_GROUP_BY_DATASET,no,_FILTER_PARAMS,,_IN_SEPARATOR,,SCAN_MAX_FEATURES,1000,groupBox_2,,groupBox_4,,groupBox_5,,_ENCODING,,_SCHEMA,char9char4number30number40number30number30number70number30number50number50number30number50number50number30number20number20number20number30number50number30number30number20number20number30number30number30number20number20number20number20number40number20number30number30number20number30number30number20char1,_SORT_PARAMS,,groupBox_6,,_FILTER_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTESCASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no,DYNAMIC_WORKFLOW,yes,_IN_FIELD_NAMES,YES,_SCHEMA_WITH_COL_NAMES,CASEIDchar9V000char4V001number30V002number40V003number30V004number30V005number70V006number30V007number50V008number50V009number30V010number50V011number50V012number30V013number20V014number20V015number20V016number30V017number50V018number30V019number30V019Anumber20V020number20V021number30V022number30V023number30V024number20V025number20V026number20V027number20V028number40V029number20V030number30V031number30V032number20V034number30V040number30V042number20V044char1,_SORT_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTESCASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending,SORT_GROUP,NO,FILTER_GROUP,NO,_DUPLICATE_DELIMS,no,_MERGE_SCHEMAS,YES,_STRIP_QUOTES,yes +MULTI_READER_TYPE{1} SCHEMA_FROM_TABLE +MULTI_READER_KEYWORD{1} SCHEMA_FROM_TABLE_1 +MULTI_READER_GEN_DIRECTIVES{1} ATTRIBUTE_NAME_COLUMN,Name,READER_PARAMETERS,METAFILECSVDATASETC:backslashUsersbackslashzool1301backslashDocumentsbackslashDHSbackslashPhase6backslashSurveySpecsbackslash*.csvCOORDSYSRUNTIME_MACROSgroupBox_2commacomma_IN_SEPARATORcommaquotecommaquotecomma_DUPLICATE_DELIMScommanocomma_STRIP_QUOTEScommayescomma_IN_FIELD_NAMEScommaYEScomma_FIELD_NAMES_AFTER_HEADERcommanocommagroupBoxcommacomma_SKIP_LINEScomma1comma_SKIP_FOOTERcomma0commagroupBox_6commacomma_ENCODINGcommacomma_ALLOW_SPACES_IN_COLUMN_NAMEScommayescommagroupBox_4commacomma_GROUP_BY_DATASETcommanocommagroupBox_5commacomma_SCHEMAcommaquotecharcomma7commacommacharcomma7commacommacharcomma4commacommacharcomma12commacommacharcomma87commacommanumbercomma4comma0commanumbercomma3comma0commanumbercomma3comma0commacharcomma13commaquotecomma_SCHEMA_WITH_COL_NAMEScommaquoteFileCodecommacharcomma7commacommaRecordNamecommacharcomma7commacommaRecordTypeValuecommacharcomma4commacommaNamecommacharcomma12commacommaLabelcommacharcomma87commacommaStartcommanumbercomma4comma0commaLencommanumbercomma3comma0commaOccurrencescommanumbercomma3comma0commaFMETYPEcommacharcomma13commaquotecommaSCAN_MAX_FEATUREScomma1000commaSORT_GROUPcommaNOcommaFILTER_GROUPcommaNOcomma_SORT_PARAMScommacomma_SORT_TABLE_CONFIGcommaquotequotequoteNOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:semicolon%COL_DELIM:comma%HAS_DEFAULTS%START_NUM_ROWS:3%backslashquotequoteAttributebackslashquotequote%backslashquotequoteSTRING_OR_CHOICE_ENCODEDspaceATTRIBUTESspaceFileCode%RecordName%RecordTypeValue%Name%Label%Start%Len%Occurrences%FMETYPEbackslashquotequote%%backslashquotequoteAlphasolidusNumbackslashquotequote%backslashquotequoteLOOKUP_CHOICEspaceSORT_CHOICEspaceAlphabeticcommaalphabetic%Numericcommanumericbackslashquotequote%alphabetic%backslashquotequoteOrderbackslashquotequote%backslashquotequoteLOOKUP_CHOICEspaceSORT_ORDERspaceAscendingcommaascending%Descendingcommadescendingbackslashquotequote%ascendingquotequotequotecomma_FILTER_PARAMScommacomma_FILTER_TABLE_CONFIGcommaquotequotequoteNOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:semicolon%COL_DELIM:comma%HAS_DEFAULTS%START_NUM_ROWS:3%backslashquotequoteFieldspaceNamebackslashquotequote%backslashquotequoteSTRING_OR_CHOICE_ENCODEDspaceATTRIBUTESspaceFileCode%RecordName%RecordTypeValue%Name%Label%Start%Len%Occurrences%FMETYPEbackslashquotequote%%backslashquotequoteFilterbackslashquotequote%backslashquotequoteSTRING_ENCODEDspace_FILTER_REGEXspacebackslashquotequote%%backslashquotequoteInvertspaceFilterbackslashquotequote%backslashquotequoteCHECKBOXspace_FILTER_UNMATCHEDspaceyes%nobackslashquotequote%noquotequotequotecomma_MERGE_SCHEMAScommaYESIDLIST,ATTRIBUTE_NAME_SEQUENCE_COLUMN,,_MERGE_SCHEMAS,YES,FEATURE_TYPE_COLUMN,RecordName,SCHEMA_TABLE_NAME,CSV,GEOMETRY_TYPE_COLUMN,,ATTRIBUTE_TYPE_COLUMN,FMETYPE,MULTI_VALUE_SEPARATOR, +WRITER_TYPE MULTI_WRITER +MULTI_WRITER_DATASET_ORDER BY_ID +MULTI_WRITER_FIRST_WRITER_ID 0 +MULTI_WRITER_TYPE{0} MDB_ADO +MULTI_WRITER_KEYWORD{0} MDB_ADO_1 +#! END_WB_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_4" +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_4 +CSV_4_DYNAMIC_WORKFLOW YES +# ============================================================================ +# The following GUI line prompts for a folder to be used as the +# source of the CSV files. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_CSV_4 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_4 +DEFAULT_MACRO SourceDataset_CSV_4 $(SourceDataset_CSV_6) +GUI MULTIFILE SourceDataset_CSV_4 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +# ============================================================================ +# Hardcode the settings that were used to generate this mapping file +# +DEFAULT_MACRO _SCHEMA_CSV_4 char,9,,char,4,,number,3,0,number,4,0,number,3,0,number,3,0,number,7,0,number,3,0,number,5,0,number,5,0,number,3,0,number,5,0,number,5,0,number,3,0,number,2,0,number,2,0,number,2,0,number,3,0,number,5,0,number,3,0,number,3,0,number,2,0,number,2,0,number,3,0,number,3,0,number,3,0,number,2,0,number,2,0,number,2,0,number,2,0,number,4,0,number,2,0,number,3,0,number,3,0,number,2,0,number,3,0,number,3,0,number,2,0,char,1, +DEFAULT_MACRO _IN_FIELD_NAMES_CSV_4 YES +DEFAULT_MACRO _FIELD_NAMES_AFTER_HEADER_CSV_4 no +DEFAULT_MACRO _EXTENSION_CSV_4 CSV +DEFAULT_MACRO _ALLOW_SPACES_IN_COLUMN_NAMES_CSV_4 yes +DEFAULT_MACRO _GROUP_BY_DATASET_CSV_4 no +CSV_4_SCHEMA char,9,,char,4,,number,3,0,number,4,0,number,3,0,number,3,0,number,7,0,number,3,0,number,5,0,number,5,0,number,3,0,number,5,0,number,5,0,number,3,0,number,2,0,number,2,0,number,2,0,number,3,0,number,5,0,number,3,0,number,3,0,number,2,0,number,2,0,number,3,0,number,3,0,number,3,0,number,2,0,number,2,0,number,2,0,number,2,0,number,4,0,number,2,0,number,3,0,number,3,0,number,2,0,number,3,0,number,3,0,number,2,0,char,1, +DEFAULT_MACRO _SKIP_LINES_CSV_4 1 +CSV_4_SKIP_LINES $(_SKIP_LINES_CSV_4) +DEFAULT_MACRO _SKIP_FOOTER_CSV_4 0 +CSV_4_SKIP_FOOTER $(_SKIP_FOOTER_CSV_4) +CSV_4_FIELD_NAMES $(_IN_FIELD_NAMES_CSV_4) +CSV_4_FIELD_NAMES_AFTER_HEADER $(_FIELD_NAMES_AFTER_HEADER_CSV_4) +DEFAULT_MACRO _STRIP_QUOTES_CSV_4 yes +CSV_4_STRIP_QUOTES $(_STRIP_QUOTES_CSV_4) +CSV_4_SEPARATOR (",") +CSV_4_EXTENSION CSV +DEFAULT_MACRO _DUPLICATE_DELIMS_CSV_4 no +CSV_4_DUPLICATE_DELIMS $(_DUPLICATE_DELIMS_CSV_4) +CSV_4_SEQUENCED no +CSV_4_ALLOW_SPACES_IN_COLUMN_NAMES $(_ALLOW_SPACES_IN_COLUMN_NAMES_CSV_4) +CSV_4_GROUP_BY_DATASET $(_GROUP_BY_DATASET_CSV_4) +DEFAULT_MACRO SORT_GROUP_CSV_4 NO +CSV_4_SORT_GROUP $(SORT_GROUP_CSV_4) +DEFAULT_MACRO _SORT_PARAMS_CSV_4 +CSV_4_SORT_PARAMS $(_SORT_PARAMS_CSV_4) +DEFAULT_MACRO FILTER_GROUP_CSV_4 NO +CSV_4_FILTER_GROUP $(FILTER_GROUP_CSV_4) +DEFAULT_MACRO _FILTER_PARAMS_CSV_4 +CSV_4_FILTER_PARAMS $(_FILTER_PARAMS_CSV_4) +# ===================================================================== +# Provide some control over what attributes have the user-selected +# encoding applied. Normally all attributes are updated after being +# read, but the following lines exclude from this treatment all +# attributes whose names start with fme_ or csv_. +CSV_4_UNENCODED_ATTR_PREFIX fme_ csv_ +# =========================================================================== +DEFAULT_MACRO CSV_IN_NETWORK_AUTHENTICATION_CSV_4 +CSV_4_NETWORK_AUTHENTICATION "$(CSV_IN_NETWORK_AUTHENTICATION_CSV_4)" +GUI OPTIONAL AUTHENTICATOR CSV_IN_NETWORK_AUTHENTICATION_CSV_4 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI INTEGER _SKIP_LINES_CSV_4 Number of Lines to Skip: +GUI INTEGER _SKIP_FOOTER_CSV_4 Number of Footer Lines to Skip: +# GUI CHOICE _IN_FIELD_NAMES yes%no Field Names in File: +# GUI CHOICE _FIELD_NAMES_AFTER_HEADER yes%no Field After Header: +GUI CHOICE _STRIP_QUOTES_CSV_4 yes%no Strip Quotes From Fields: +# GUI TEXT _IN_SEPARATOR Field Delimiter: +# GUI TEXT _EXTENSION Default File Extension: +GUI CHOICE _DUPLICATE_DELIMS_CSV_4 yes%no Skip Duplicate Delimiters: +GUI CHOICE SORT_GROUP_CSV_4 yes%no Sorting Enabled: +GUI OPTIONAL GUI_LINE_TABLE _SORT_PARAMS_CSV_4 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Attribute"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044"%%"Alpha/Num"%"LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric"%alphabetic%"Order"%"LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending"%ascending Sorting Parameters: +GUI CHOICE FILTER_GROUP_CSV_4 yes%no Filter Enabled: +GUI OPTIONAL GUI_LINE_TABLE _FILTER_PARAMS_CSV_4 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Field Name"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044"%%"Filter"%"STRING_ENCODED _FILTER_REGEX "%%"Invert Filter"%"CHECKBOX _FILTER_UNMATCHED yes%no"%no Filter Parameters: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO _ENCODING_CSV_4 +GUI OPTIONAL STRING_OR_ENCODING _ENCODING_CSV_4 SYSTEM%* Character Encoding: +CSV_4_ENCODING $(_ENCODING_CSV_4) +CSV_4_DATASET "$(SourceDataset_CSV_4)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "SCHEMA_FROM_TABLE_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER SCHEMA_FROM_TABLE SCHEMA_FROM_TABLE_1 +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_SCHEMA_FROM_TABLE_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER SCHEMA_FROM_TABLE SCHEMA_FROM_TABLE_1 +DEFAULT_MACRO SourceDataset_SCHEMA_FROM_TABLE_1 $(SourceDataset_SCHEMA_FROM_TABLE) +GUI FILE_OR_URL SourceDataset_SCHEMA_FROM_TABLE_1 All_files|* Source Dataset: +DEFAULT_MACRO READER_PARAMETERS_SCHEMA_FROM_TABLE_1 METAFILE,CSV,DATASET,C:Userszool1301DocumentsDHSPhase6SurveySpecs*.csv,COORDSYS,,RUNTIME_MACROS,groupBox_2_IN_SEPARATOR_DUPLICATE_DELIMSno_STRIP_QUOTESyes_IN_FIELD_NAMESYES_FIELD_NAMES_AFTER_HEADERnogroupBox_SKIP_LINES1_SKIP_FOOTER0groupBox_6_ENCODING_ALLOW_SPACES_IN_COLUMN_NAMESyesgroupBox_4_GROUP_BY_DATASETnogroupBox_5_SCHEMAchar7char7char4char12char87number40number30number30char13_SCHEMA_WITH_COL_NAMESFileCodechar7RecordNamechar7RecordTypeValuechar4Namechar12Labelchar87Startnumber40Lennumber30Occurrencesnumber30FMETYPEchar13SCAN_MAX_FEATURES1000SORT_GROUPNOFILTER_GROUPNO_SORT_PARAMS_SORT_TABLE_CONFIGNOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%RecordName%RecordTypeValue%Name%Label%Start%Len%Occurrences%FMETYPE%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending_FILTER_PARAMS_FILTER_TABLE_CONFIGNOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%RecordName%RecordTypeValue%Name%Label%Start%Len%Occurrences%FMETYPE%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no_MERGE_SCHEMASYES,IDLIST, +DEFAULT_MACRO MULTI_VALUE_SEPARATOR_SCHEMA_FROM_TABLE_1 ; +SCHEMA_FROM_TABLE_1_READER_PARAMETERS "$(READER_PARAMETERS_SCHEMA_FROM_TABLE_1)" +DEFAULT_MACRO SCHEMA_TABLE_NAME_SCHEMA_FROM_TABLE_1 CSV +SCHEMA_FROM_TABLE_1_SCHEMA_TABLE_NAME "$(SCHEMA_TABLE_NAME_SCHEMA_FROM_TABLE_1)" +DEFAULT_MACRO FEATURE_TYPE_COLUMN_SCHEMA_FROM_TABLE_1 RecordName +SCHEMA_FROM_TABLE_1_FEATURE_TYPE_COLUMN "$(FEATURE_TYPE_COLUMN_SCHEMA_FROM_TABLE_1)" +DEFAULT_MACRO ATTRIBUTE_NAME_COLUMN_SCHEMA_FROM_TABLE_1 Name +SCHEMA_FROM_TABLE_1_ATTRIBUTE_NAME_COLUMN "$(ATTRIBUTE_NAME_COLUMN_SCHEMA_FROM_TABLE_1)" +DEFAULT_MACRO ATTRIBUTE_TYPE_COLUMN_SCHEMA_FROM_TABLE_1 FMETYPE +SCHEMA_FROM_TABLE_1_ATTRIBUTE_TYPE_COLUMN "$(ATTRIBUTE_TYPE_COLUMN_SCHEMA_FROM_TABLE_1)" +DEFAULT_MACRO GEOMETRY_TYPE_COLUMN_SCHEMA_FROM_TABLE_1 +SCHEMA_FROM_TABLE_1_GEOMETRY_TYPE_COLUMN "$(GEOMETRY_TYPE_COLUMN_SCHEMA_FROM_TABLE_1)" +SCHEMA_FROM_TABLE_1_MULTI_VALUE_SEPARATOR "$(MULTI_VALUE_SEPARATOR_SCHEMA_FROM_TABLE_1)" +DEFAULT_MACRO ATTRIBUTE_NAME_SEQUENCE_COLUMN_SCHEMA_FROM_TABLE_1 +SCHEMA_FROM_TABLE_1_ATTRIBUTE_NAME_SEQUENCE_COLUMN "$(ATTRIBUTE_NAME_SEQUENCE_COLUMN_SCHEMA_FROM_TABLE_1)" +# =========================================================================== +DEFAULT_MACRO SCHEMA_FROM_TABLE_IN_NETWORK_AUTHENTICATION_SCHEMA_FROM_TABLE_1 +SCHEMA_FROM_TABLE_1_NETWORK_AUTHENTICATION "$(SCHEMA_FROM_TABLE_IN_NETWORK_AUTHENTICATION_SCHEMA_FROM_TABLE_1)" +GUI OPTIONAL AUTHENTICATOR SCHEMA_FROM_TABLE_IN_NETWORK_AUTHENTICATION_SCHEMA_FROM_TABLE_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI TEXT SCHEMA_TABLE_NAME_SCHEMA_FROM_TABLE_1 Schema Table +GUI TEXT FEATURE_TYPE_COLUMN_SCHEMA_FROM_TABLE_1 Feature Type Column +GUI TEXT ATTRIBUTE_NAME_COLUMN_SCHEMA_FROM_TABLE_1 Attribute Name Column +GUI TEXT ATTRIBUTE_TYPE_COLUMN_SCHEMA_FROM_TABLE_1 Attribute Type Column +GUI OPTIONAL TEXT GEOMETRY_TYPE_COLUMN_SCHEMA_FROM_TABLE_1 Geometry Type Column +GUI OPTIONAL TEXT ATTRIBUTE_NAME_SEQUENCE_COLUMN_SCHEMA_FROM_TABLE_1 Attribute Name Sequence Column +SCHEMA_FROM_TABLE_1_DATASET "$(SourceDataset_SCHEMA_FROM_TABLE_1)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "MDB_ADO_1" +#! END_WB_HEADER +#! START_DEST_HEADER MDB_ADO MDB_ADO_1 +# ============================================================================ +# First get the dataset for the database. For Access, it's the database file. +# For now we'll use whatever they had when they generated this mapping file, +# and not reprompt +#! END_DEST_HEADER +#! START_WB_HEADER +DEFAULT_MACRO DestDataset +INCLUDE [ if {"$(DestDataset)" != ""} { \ + puts {DEFAULT_MACRO DestDataset_MDB_ADO_1 $(DestDataset)} \ + } ] +#! END_WB_HEADER +#! START_DEST_HEADER MDB_ADO MDB_ADO_1 +DEFAULT_MACRO DestDataset_MDB_ADO_1 $(DestDataset_MDB_ADO) +GUI FILENAME DestDataset_MDB_ADO_1 Access_Database_Files(*.mdb;*.accdb)|*.mdb;*.accdb|All_files(*)|* Destination Microsoft Access Database File: +# =========================================================================== +# Optional Password +DEFAULT_MACRO MDB_ADO_OUT_PASSWORD_MDB_ADO_1 +MDB_ADO_1_PASSWORD "$(MDB_ADO_OUT_PASSWORD_MDB_ADO_1)" +GUI OPTIONAL PASSWORD MDB_ADO_OUT_PASSWORD_MDB_ADO_1 Password: +# =========================================================================== +# Optional Version (defaultsto2000/2002/2003) +DEFAULT_MACRO MDB_ADO_OUT_VERSION_MDB_ADO_1 2000/2002/2003 +MDB_ADO_1_VERSION "$(MDB_ADO_OUT_VERSION_MDB_ADO_1)" +GUI CHOICE MDB_ADO_OUT_VERSION_MDB_ADO_1 2007%2000/2002/2003%95/97%2.0 Version: +# ============================================================================ +# Whether or not to overwrite the file +DEFAULT_MACRO MDB_ADO_OUT_OVERWRITE_FILE_MDB_ADO_1 Yes +MDB_ADO_1_OVERWRITE_FILE "$(MDB_ADO_OUT_OVERWRITE_FILE_MDB_ADO_1)" +GUI CHOICE MDB_ADO_OUT_OVERWRITE_FILE_MDB_ADO_1 Yes%No Overwrite Existing Database: +# ============================================================================ +# Opt in for destination dataset type vs format type validation +DEFAULT_MACRO MDB_ADO_OUT_DESTINATION_DATASETTYPE_VALIDATION_MDB_ADO_1 Yes +MDB_ADO_1_DESTINATION_DATASETTYPE_VALIDATION "$(MDB_ADO_OUT_DESTINATION_DATASETTYPE_VALIDATION_MDB_ADO_1)" +# ============================================================================ +# For database compression +DEFAULT_MACRO MDB_ADO_OUT_COMPRESS_AT_END_MDB_ADO_1 no +GUI CHOICE MDB_ADO_OUT_COMPRESS_AT_END_MDB_ADO_1 yes%no Compress Database When Done: +MDB_ADO_1_COMPRESS_AT_END $(MDB_ADO_OUT_COMPRESS_AT_END_MDB_ADO_1) +# ============================================================================ +# This keyword sets the mode of the writer +DEFAULT_MACRO MDB_ADO_OUT_WRITER_MODE_MDB_ADO_1 INSERT +GUI CHOICE MDB_ADO_OUT_WRITER_MODE_MDB_ADO_1 INSERT%UPDATE%DELETE Writer Mode: +MDB_ADO_1_WRITER_MODE $(MDB_ADO_OUT_WRITER_MODE_MDB_ADO_1) +# ============================================================================ +# This keyword sets the starting transaction +DEFAULT_MACRO MDB_ADO_OUT_START_TRANSACTION_MDB_ADO_1 0 +GUI OPTIONAL TEXT MDB_ADO_OUT_START_TRANSACTION_MDB_ADO_1 Start transaction at: +MDB_ADO_1_START_TRANSACTION $(MDB_ADO_OUT_START_TRANSACTION_MDB_ADO_1) +# ============================================================================ +# This keyword sets the number of features between transaction commits +DEFAULT_MACRO MDB_ADO_OUT_TRANSACTION_INTERVAL_MDB_ADO_1 500 +GUI OPTIONAL TEXT MDB_ADO_OUT_TRANSACTION_INTERVAL_MDB_ADO_1 Transaction interval: +MDB_ADO_1_TRANSACTION_INTERVAL $(MDB_ADO_OUT_TRANSACTION_INTERVAL_MDB_ADO_1) +# ============================================================================ +# The following specifies an SQL command to execute before opening the first +# table. +DEFAULT_MACRO MDB_ADO_OUT_BEGIN_SQL_MDB_ADO_1 +GUI OPTIONAL TEXT_EDIT_SQL MDB_ADO_OUT_BEGIN_SQL_MDB_ADO_1 SQL Statement to Execute Before Translation: +MDB_ADO_1_BEGIN_SQL{0} "$(MDB_ADO_OUT_BEGIN_SQL_MDB_ADO_1)" +# ============================================================================ +# The following specifies an SQL command to execute after closing all the +# tables. +DEFAULT_MACRO MDB_ADO_OUT_END_SQL_MDB_ADO_1 +GUI OPTIONAL TEXT_EDIT_SQL MDB_ADO_OUT_END_SQL_MDB_ADO_1 SQL Statement to Execute After Translation: +MDB_ADO_1_END_SQL{0} "$(MDB_ADO_OUT_END_SQL_MDB_ADO_1)" +MDB_ADO_1_DATASET "$(DestDataset_MDB_ADO_1)" +#! END_DEST_HEADER +#! END_HEADER + +LOG_FILENAME "$(FME_MF_DIR)translate_all_recordtypes_to_mdb_dynamic.log" +LOG_APPEND NO +LOG_MAX_FEATURES 200 +LOG_MAX_RECORDED_FEATURES 200 +LOG_MAX_PRECISION Yes +FME_REPROJECTION_ENGINE FME +FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto +FME_GEOMETRY_HANDLING Enhanced +FME_STROKE_MAX_DEVIATION 0 +LOG_FILTER_MASK -1 +DEFAULT_MACRO DATASET_KEYWORD_CSV_4 CSV_4 +DEFAULT_MACRO DATASET_KEYWORD_SCHEMA_FROM_TABLE_1 SCHEMA_FROM_TABLE_1 +DEFAULT_MACRO DATASET_KEYWORD_MDB_ADO_1 MDB_ADO_1 +# ------------------------------------------------------------------------- + +CSV_4_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +SCHEMA_FROM_TABLE_1_READER_META_ATTRIBUTES fme_basename fme_feature_type + +# ------------------------------------------------------------------------- + +CSV_4_MAX_FEATURES 50000 +CSV_4_FEATURE_TYPES $(FEATURE_TYPES) +MULTI_READER_CONTINUE_ON_READER_FAILURE No + +# ------------------------------------------------------------------------- + +MACRO WORKSPACE_NAME translate_all_recordtypes_to_mdb_dynamic +MACRO FME_VIEWER_APP fmedatainspector +# ------------------------------------------------------------------------- + +INCLUDE [ if {[info exists env(FME_TEMP)] && [file isdirectory $env(FME_TEMP)]} {set gVisualizerTemp $env(FME_TEMP)} elseif {[info exists env(TEMP)] && [file isdirectory $env(TEMP)]} {set gVisualizerTemp $env(TEMP)} elseif { $tcl_platform(platform) == "unix" } {set gVisualizerTemp "/tmp"} else {set gVisualizerTemp c:}; regsub -all {[ ,&]} {$(WORKSPACE_NAME)} {_} wsname; set gVisualizerTemp $gVisualizerTemp/${wsname}_[clock format [clock seconds] -format %H%M%S]; puts "MACRO WORKSPACE_TEMP_DIR $gVisualizerTemp"; +MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/inspector.ffs +MACRO VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector.fsc +MACRO VISUALIZER_CREATE_SPATIAL_INDEX YES +# ------------------------------------------------------------------------- +CSV_4_DEF CSV CASEID text V000 char(4) V001 number(3,0) V002 number(4,0) V003 number(3,0) V004 number(3,0) V005 number(7,0) V006 number(3,0) V007 number(5,0) V008 number(5,0) V009 number(3,0) V010 number(5,0) V011 number(5,0) V012 number(3,0) V013 number(2,0) V014 number(2,0) V015 number(2,0) V016 number(3,0) V017 number(5,0) V018 number(3,0) V019 number(3,0) V019A number(2,0) V020 number(2,0) V021 number(3,0) V022 number(3,0) V023 number(3,0) V024 number(2,0) V025 number(2,0) V026 number(2,0) V027 number(2,0) V028 number(4,0) V029 number(2,0) V030 number(3,0) V031 number(3,0) V032 number(2,0) V034 number(3,0) V040 number(3,0) V042 number(2,0) V044 char(1) G117B char(1) V784X text S326AB number(2,0) V763A number(2,0) S114E number(2,0) ML13F text V504 number(2,0) SH263 number(2,0) V851E char(1) V3A08R number(2,0) SH130CB number(2,0) V851A char(1) M65L char(1) S715D number(2,0) D118T number(2,0) D119K number(2,0) D118XC char(1) V784L text B7 text S539 number(2,0) V845 char(1) HV003 text S715ABC number(2,0) S1209C number(2,0) ML22A char(1) V704 text M57M text V767A text S715ABF number(2,0) MMC3 char(1) D103F char(1) V472E char(1) SQLANG number(2,0) D105H number(2,0) V414J text HV208 number(2,0) H11B text S114 number(3,0) V474G char(1) SH284 number(4,0) S715F number(2,0) V471C char(1) HW53 text V414Q char(1) S112H number(2,0) S1203 number(2,0) D112N char(1) M42E text SH1X number(2,0) HC60 number(4,0) V481A text V326 number(3,0) V802 number(5,0) HV212 text S507D number(2,0) SH246D number(4,0) HV001 text H12I text H32Q char(1) S523U number(2,0) H33Y text V224 text M42A char(1) S506A text V218 text SH130CA number(2,0) S325J number(2,0) V161 number(3,0) SH244 number(2,0) V215 text V509 number(5,0) V510 number(2,0) S435GE number(2,0) M57C char(1) V414B char(1) SH284A number(4,0) HB5 text S325M number(2,0) HML3 number(2,0) HC13 text H40M char(1) HC61 number(2,0) V231 text HW3 text V768B char(1) SH17B number(3,0) H6 text S538P number(2,0) S540G number(2,0) ML13Y number(2,0) MM1 number(2,0) S540D number(2,0) HV246F text HV105 number(3,0) V474J char(1) HA52 number(2,0) S325FH number(2,0) V743A number(2,0) S435E number(2,0) HB2 text V302 char(1) ML18C char(1) M2A number(2,0) M38 text S433L number(2,0) V3A08O char(1) H32C number(2,0) V232 text SH230 number(3,0) SH20K number(3,0) ML19F char(1) S540K number(2,0) S541B number(2,0) HV031 text S325FD number(2,0) V843 text S506YM number(3,0) SH20D number(2,0) H6Y text V461 text HV129 char(1) V3A08P number(2,0) V714 number(2,0) HV243D text B1 number(3,0) S325D number(2,0) SPROV number(2,0) D118E number(2,0) HB13 text SH110J number(2,0) HV121 text SH111A number(3,0) M1C char(1) M8 text ML14Z char(1) D115O number(2,0) S1016 number(2,0) D100A number(2,0) S541D number(2,0) M55Z text M57H text M2I text M47 char(1) G117J char(1) V414A char(1) HC33 number(2,0) M3G text S111E number(2,0) V225 text HC7 text MM3 number(3,0) M2M text M3D text M52 text S112A number(2,0) S541V number(2,0) SH19 number(2,0) SH20 number(2,0) D119XH char(1) HV247 number(2,0) HML12 text V538 char(1) S714BB number(2,0) S325FZ number(2,0) HML32A text S1015 number(2,0) V467E char(1) M57D char(1) V770P text V472Q char(1) S715ABI number(2,0) V778 text V478 text V754CP number(2,0) SH232 number(2,0) S540J number(2,0) M42C text S541A number(2,0) HB41 text V166 text V744A number(2,0) V463B text V770X number(2,0) SH110H number(2,0) S523P number(2,0) SH110G number(2,0) V762AJ text V762BA text S501 number(2,0) HV041 text D103E char(1) SHRM4 number(6,0) S435GB number(2,0) HV204 number(4,0) V121 number(2,0) AWFACTW text M6 text SH2M number(3,0) V472S char(1) V474A char(1) SH3D number(3,0) HV253D char(1) G103 number(2,0) ML16C char(1) H32D number(2,0) S523F number(2,0) HML32F text D120 number(3,0) V228 text HV115 text D123 char(1) M19A text D119XE char(1) SH17A number(2,0) S906A number(2,0) V233 text V3A00L number(2,0) V537 number(3,0) HB12A text D118XI char(1) G124 number(3,0) SH283T number(5,0) HV232B text S523T number(2,0) HV243B text SH118F number(2,0) D115H char(1) V784Q char(1) M49E text D118XD char(1) M2G number(2,0) M45 text HB1 number(3,0) D115R number(2,0) HV012 number(3,0) V104 char(1) SH20I number(3,0) HV017 number(2,0) S538O number(2,0) S540F number(2,0) HV235 number(2,0) V379 char(1) V380 char(1) V413A char(1) HV027 text V3A00Z number(2,0) V762AK text V762BB text S804 number(2,0) H4M text H5D text V851B char(1) HW72 text H37K text S229C number(2,0) V844 char(1) HV019 text HV020 number(2,0) S509B number(2,0) S510B number(2,0) V770I text D119XI char(1) S502C number(2,0) H0M text D118XH char(1) ML13G char(1) D118W number(2,0) D119N number(2,0) M49X text V212 text HV226 number(3,0) HA57 number(2,0) SHHTEC number(4,0) V784K text V474 char(1) H12H text V412A text M15 text ML13H number(2,0) ML15C char(1) V481C text V614 number(2,0) V3A08Z number(2,0) H37O text S504C number(2,0) HC62 text HB55 text HB66 number(2,0) HA53 number(4,0) S540X number(2,0) S541O number(2,0) SHB2M number(3,0) V119 number(2,0) V120 number(2,0) SHB3D number(3,0) SHB1Y number(5,0) S1309C2 number(2,0) V158 text S541M number(2,0) SH218F number(2,0) V853C char(1) V316 number(5,0) S906B number(2,0) V204 number(2,0) M57U char(1) D103B number(2,0) HV014 number(2,0) H32L number(2,0) D117 char(1) M3K text M60 text HW18 number(3,0) S326 number(2,0) HC5 text V375A char(1) V851K char(1) M65K char(1) V852B text D101C number(2,0) ML19E char(1) HV228 text HA11 number(5,0) V633G char(1) H2Y text ML19Z char(1) V471D char(1) V465 text V376 text V471E char(1) V775 char(1) HMLIDX number(2,0) S540H number(2,0) S541S number(2,0) D110H char(1) HC73 text S523I number(2,0) HV242 text S540L number(2,0) S541C number(2,0) V627 number(3,0) D110F char(1) SH221 number(3,0) HA12A number(6,0) D118H char(1) ML13C text H7Y text ML0 number(2,0) V770C number(2,0) G113 char(1) V472A char(1) S945O number(2,0) V625A number(2,0) V762AI char(1) V762AR char(1) V307 number(2,0) V762BI char(1) HV238 number(3,0) D115XE char(1) V322 number(2,0) G117D char(1) V743F text HV253A text SHSMK char(1) S435GM number(2,0) H12C text HB4 text HA3 number(5,0) M65E char(1) M71 text B12 text SH283Y number(5,0) SH1H number(3,0) D115XI char(1) H12D text S407B number(2,0) V237 number(2,0) V855 text HV227 text V770J text V219 text V220 number(2,0) ML2 number(2,0) V438 text V815C text M57J text S502E number(2,0) SH2011 char(1) V616 number(4,0) H37J text D118A char(1) V820 char(1) H12U text MM12 char(1) S1202 number(2,0) S541G number(2,0) V414I text V367 number(2,0) SH218B number(2,0) HV113 text V761C char(1) V774C number(2,0) SH231 number(2,0) D105K char(1) V762AX text V762BO char(1) V238 number(2,0) D116 number(3,0) S229B number(2,0) V3A00R char(1) HV237B text SH242C number(2,0) V3A08S number(2,0) SHPC1 number(5,0) H32E number(2,0) S111 number(2,0) V131 text M49B text H15I text ML13A number(2,0) SHPROV number(2,0) G114 char(1) V603 number(4,0) S223B number(2,0) HV253Z text V812 text V412C text G123 number(2,0) V321 number(2,0) HW58 char(1) HV253E char(1) SHSD1 number(5,0) SHRM1 number(6,0) HV237F text V304 text M57P text V3A08AB char(1) HV008 number(5,0) H3M text H4D text SHB1M number(3,0) V604 number(2,0) SHB2D number(3,0) D124 char(1) ML13K number(2,0) ML14B char(1) D119XJ char(1) V3A08AD char(1) S506B number(2,0) V784I char(1) S937A number(2,0) V129 number(3,0) V130 text D118M number(2,0) V472T char(1) M55E text V474B char(1) H38 text HV030 number(3,0) S1401E number(2,0) S715ABJ number(2,0) D119D number(2,0) V471B char(1) V629 number(3,0) V838B text S326AC number(2,0) MM10 char(1) V770R text V3A08X number(2,0) V784V char(1) HV230A text S523L number(2,0) D119V number(2,0) S210 number(2,0) V203 number(2,0) V784A text SH249 number(2,0) SH250 number(2,0) SH248 number(2,0) H31 text V152 number(3,0) IDX95 number(2,0) V841 text D115I char(1) FDYSTO number(4,0) SH130CZ number(2,0) H41B char(1) H15L char(1) H2D text H42 text V414T char(1) HV246C text SH21 number(2,0) ML13J number(2,0) ML14A char(1) HW6 text S502B number(2,0) MM7 number(3,0) HML14 text B8 text H8M text H9D text S435D number(2,0) H37F char(1) S715ABH number(2,0) M1B char(1) M29 text D119XD char(1) SH08A number(2,0) V3A08Q number(2,0) V827 char(1) H9M text HW12 text S325CH number(2,0) S507A number(2,0) V477 text V625 number(2,0) H15M char(1) M4 text M13 text V463F char(1) HV216 number(3,0) HB0 number(3,0) V103 char(1) S1001 number(2,0) S506I1Y number(5,0) V825 text S506I2M number(3,0) D101B number(2,0) V847 char(1) SH14 number(2,0) H32G text V714A number(2,0) S112F number(2,0) SH3M number(3,0) HV244 number(2,0) V472D char(1) V822 text ML21C char(1) H2M text H3D text M1 text S504E number(2,0) HV246I text H15G text H9 text HV102 number(2,0) V739 number(2,0) V740 char(1) SH110O number(2,0) HV009 number(3,0) HV010 number(2,0) HML18 text V839A text V840A text IDXML number(2,0) V235 text ML13L number(2,0) V762AS text M57I text M49G char(1) V762BJ text HV219 number(2,0) HV220 number(3,0) SH110L number(2,0) SH218E number(4,0) HV253B text HV253 text M55J text D110E char(1) V3A05 text D101G number(2,0) V823 number(2,0) HML7 number(3,0) V842 text D110A number(2,0) V408 char(1) S937B number(2,0) HV140 text D115Y number(2,0) V784U char(1) S506F number(2,0) S504X number(2,0) M10 text V838C text V409 text V410 text HV011 text D118XG char(1) HA67 text V467K char(1) V743B number(2,0) HVIDX number(3,0) HML1 text S506AY number(5,0) V835B char(1) SH118A number(2,0) S714E number(2,0) D115N number(2,0) D105F number(2,0) D129 char(1) S114GX number(3,0) V824 text V395 text V405 text V851C char(1) HML33A number(3,0) D121 number(2,0) S111A number(2,0) SH130B number(2,0) SH130CX number(2,0) V535 number(2,0) V216 text HB11 text V850A text S325O number(2,0) D118I char(1) S326AX number(2,0) D119S number(2,0) D122A number(2,0) SHB3 number(2,0) V829 text H14 text H12P text V830 char(1) H32I text SH273 number(5,0) AWFACTU text HMLC number(3,0) HV237K char(1) M39A text V633A char(1) S523B number(2,0) SH118B number(2,0) HA50 text V3A08AC char(1) V536 number(2,0) S541R number(2,0) V762AN text V762BE text HV116 text HML32G text M55K text V3A08B number(2,0) M65D char(1) MMC4 char(1) S105 number(2,0) HV236 char(1) H8Y text H12J text S435GK number(2,0) SH284G number(4,0) S111D number(2,0) G106 number(3,0) B10 number(2,0) V217 text V472N char(1) D118P number(2,0) V527 number(4,0) D119G number(2,0) V784B text SINTERP number(2,0) D101J char(1) V784C text HA35 text SHBM number(5,0) SH3 number(14,0) H12Z text D125 char(1) V472U char(1) V474C char(1) S523S number(2,0) HC32 number(5,0) V376A char(1) HV013 number(3,0) HV237E text SHDISTRICT number(2,0) V414F text H4Y text S502A number(2,0) HV209 number(2,0) HV210 number(2,0) HB58 char(1) S715B number(2,0) D101H char(1) SH1Y number(5,0) ML13P char(1) V472R char(1) BORD text SH238 number(2,0) V631 char(1) S714D number(2,0) S28DAYS number(2,0) H37G char(1) D105C number(2,0) ML15B char(1) S508 number(2,0) V762BU text S540E number(2,0) H37A text HV218 number(2,0) SH234C number(3,0) MM14 number(3,0) S503A number(2,0) HC52 number(2,0) HB3 text V624 text V762AC text MMC1 number(3,0) S114B number(2,0) SH2X number(2,0) H5Y text G117H char(1) M27 text M65X char(1) HC12 text V472G char(1) V415 text S1401F number(2,0) S1205 number(2,0) H43 text S435H number(4,0) V719 number(2,0) V454 text B2 number(5,0) S435GF number(2,0) ML24C char(1) H3Y text V761B text S111B number(2,0) H12G text HV118 text ML13Z number(2,0) S1004 number(2,0) H7 text HW51 text H32J number(2,0) SHB13 char(1) V3A08L number(2,0) V613 number(3,0) V414W text ML19A char(1) ML20A number(2,0) SHRM3 number(6,0) SHSD3 number(5,0) V468 number(2,0) V234 text V836 text HB32 number(5,0) G119 number(2,0) V3A01 char(1) HC11 text M55C text HA33 number(2,0) MM11 char(1) V412B char(1) HA6 number(6,0) HA41 number(5,0) H2 text V3A08G number(2,0) D107 number(2,0) V472H char(1) V784S char(1) V528 number(3,0) V325A char(1) V832C char(1) V853B text MM8 number(5,0) D110C number(2,0) SH20H number(2,0) V467M char(1) V732 number(2,0) HV253G char(1) B4 number(2,0) HV230B text HB40 text D118XK char(1) V763C number(2,0) SH215A number(2,0) V767C char(1) V419 number(2,0) V420 char(1) ML101 text S326AA number(2,0) HV246J char(1) HB63 text S541X number(2,0) M70 text S509C number(2,0) S510C number(2,0) S502F number(2,0) G112 char(1) M36 char(1) D115K number(2,0) M42B char(1) V762AF char(1) V744D number(2,0) SH127A number(2,0) B5 number(2,0) S522D number(2,0) V467L char(1) V851F char(1) HW17 number(3,0) H20 text S503D number(2,0) M3M text M62 text V157 text V359 number(3,0) V360 number(3,0) V834C char(1) HV000 char(4) H36A text HV246H text HC8 text V762AP char(1) V762BG char(1) HA62 text D105E number(2,0) V481F char(1) D127 char(1) S506E number(2,0) H12S text V469E text V851D char(1) S715ABG number(2,0) V815A text V762AH char(1) SH130A number(2,0) V302A number(2,0) H12Y text M55I text V414P text S507X char(1) M57N text S509F number(2,0) S510F number(2,0) M49Z text V446 text V3A00K number(2,0) HV239 char(1) HV240 char(1) HB35 text V413D char(1) V784O text M57L text H6M text H7D text V418 number(2,0) S506AD number(3,0) HV213 number(3,0) V211 text V311 char(1) V784F text V472K char(1) V473B text S325CB number(2,0) HA5 number(5,0) M55L char(1) S507C number(2,0) V848 char(1) ML23A text V122 number(2,0) D101E number(2,0) HW52 text HML31 text ML13X number(2,0) V414H text VCAL text S540I number(2,0) V805 text M2B number(2,0) M39 text G117Y char(1) HMLD number(3,0) D119T number(2,0) D122B number(2,0) H15C text V750 number(2,0) D118C number(2,0) V754JP number(2,0) SH1M number(3,0) SH2D number(3,0) H37M text V849 char(1) HB51 text V754BP char(1) M1D text M57T text V846 char(1) D118XJ char(1) M57A text V770D number(2,0) V134 text SH3H number(3,0) G109 char(1) G110 char(1) HML32B text S523R number(2,0) D118Y number(2,0) D119P number(2,0) S325FX number(2,0) SH3X number(2,0) H32T number(2,0) S510J number(2,0) V3A00F text S504B number(2,0) HA69 text HA70 text V853A text G111 char(1) D119XG char(1) H41A char(1) D119W number(2,0) V409A char(1) V410A char(1) MMC5 number(3,0) D115B number(2,0) V471F char(1) V437 text H32F text HV023 text HV101 number(3,0) ML19D char(1) SH279 number(2,0) SH280 number(5,0) S509A number(2,0) V242 text D110D char(1) S510A number(2,0) S523D number(2,0) HV040 text HML30 text V414V text V463X text V472C char(1) S509E number(2,0) S510E number(2,0) H37N text S435F number(2,0) G117X char(1) M55X text M57F text V769 text V770 number(2,0) V3A02 text S715AA number(2,0) V3A00H text V202 number(2,0) M2K number(2,0) M55M char(1) V141 text M3B text M50 text V323A number(3,0) V414E text S439A number(3,0) SH259 number(2,0) V462 char(1) SH260 number(2,0) HA1 number(3,0) V837 char(1) V213 number(2,0) V458 char(1) ML22B char(1) S435GG number(2,0) H37Z text S509D number(2,0) S510D number(2,0) HV106 number(2,0) V701 number(2,0) V633B text V439 text V440 text V602 number(2,0) HB53 text D103D char(1) V634 char(1) V784D text HV232D text HV237 text V312 number(3,0) S506I1M number(3,0) S1209H number(2,0) HA56 number(4,0) S506I2D number(3,0) ML22C char(1) D118L number(2,0) D119C number(2,0) ML13D number(2,0) H36F char(1) HML17 text MMIDX number(3,0) V774B number(2,0) HML2 text D100D number(2,0) H31C text S715C number(2,0) V502 number(2,0) SH1MO number(3,0) D105A number(2,0) B11 text V833B text M49Y text HC51 number(3,0) M55G text H10 text ML13M number(2,0) V803 number(3,0) M57R text HC19 number(5,0) D115XJ char(1) ML16A number(2,0) V384A number(2,0) S1401A number(2,0) V756 number(2,0) M73 text S114C number(2,0) D115G number(2,0) M65H char(1) V413B char(1) HML11 number(2,0) V754DP number(2,0) V768C char(1) HV109 number(2,0) HW10 text HV110 char(1) SHED3 number(2,0) V745A text G117C char(1) S505 number(2,0) V3A00P char(1) V337 number(3,0) V784H char(1) V761 text V784J char(1) V762AE text HV246 number(2,0) HV237X text V411A text V839 text V840 text M3H text V457 text V472O char(1) V762AV text V762BM text HV122 text HV225 number(2,0) HW70 text HV127 char(1) M5 text SH1 number(14,0) V153 number(2,0) V472L char(1) HB52 text MM5 char(1) V814 text H0D text H22 number(2,0) SHCMC number(4,0) S435GL number(2,0) V159 text V160 number(2,0) ML13E number(2,0) S306A number(2,0) M2F text M44 char(1) HV007 number(5,0) SH3Y number(5,0) V633E char(1) V762AO char(1) M57V char(1) V762BF char(1) SH15 number(2,0) V414C char(1) D118V number(2,0) D119M number(2,0) HML32D text HA65 number(2,0) S715AD number(2,0) V102 number(2,0) V762BZ text SH258 number(2,0) S114G number(2,0) H37L text S509Z number(2,0) S510Z number(2,0) V762AQ char(1) V762BH char(1) SH271 number(5,0) V3A00N number(2,0) H32X number(2,0) D118X number(2,0) S823B number(2,0) HC17 number(3,0) S1209G number(2,0) SH122C number(5,2) S506I1D number(3,0) D119O number(2,0) V124 number(2,0) V482B char(1) HV207 number(2,0) D130A char(1) HV044 text H37D text V467G char(1) V414D char(1) V3A00J number(2,0) V731 number(2,0) V3A08N number(2,0) HW8 text ML1 text HB56 text BIDX text H12K text H13B text V762AW char(1) V762BN text V763E char(1) V137 number(2,0) S325A number(2,0) S541Y number(2,0) V138 number(2,0) HV246G text D119XA number(2,0) V128 number(3,0) S536K number(2,0) HML5 text V476 char(1) V207 number(2,0) REC84_GROUP char(1) G121 number(2,0) G107 number(3,0) HC58 char(1) S502Z number(2,0) D115S number(2,0) D117A number(2,0) HIDX number(2,0) HMLB number(3,0) S325CX number(2,0) HV103 number(2,0) M49A text H12L text HV246A text HV221 number(2,0) HV246E text HV237C text V784T text V744B number(2,0) S5YEARS number(2,0) V3A08A text S325CE number(2,0) HC53 number(4,0) HMLA number(3,0) V447A text V3A04 text V414R char(1) S541E number(2,0) V784E text V3A08F number(2,0) S103A number(2,0) H32A number(2,0) V227 text H32P text V768A char(1) V481B text V813 text SH2MO number(3,0) S616 number(3,0) M49C text HML34 text G101 number(2,0) B13 text V762AM text V762BD text V541 char(1) V481D text V762AA text SHB1D number(3,0) HC3 text SH255D number(4,0) SH257 number(2,0) FSYSTO number(4,0) HB60 text HB68 number(2,0) S502G number(2,0) V832B text S507B number(2,0) S540W number(2,0) S541N number(2,0) S506C number(2,0) V811 text V406 text HML16A number(3,0) S714BC number(2,0) G118 number(2,0) D119X number(2,0) D118Q number(2,0) D119H char(1) S1209E number(2,0) V474D char(1) M55O char(1) S504Z number(2,0) S506H number(2,0) S541L number(2,0) V466 char(1) V784P char(1) H12R char(1) M3J text HML16 text HV128 char(1) HW5 text V414K text V715 number(3,0) V770V text S506Z number(2,0) S504D number(2,0) MIDX number(2,0) D130B char(1) V444A text D103C char(1) H31E text S715ABE number(2,0) D115E number(2,0) SH110K number(2,0) SH111B number(2,0) S509X number(2,0) S510X number(2,0) V3A00C number(2,0) S325FA number(2,0) ML19X char(1) SH242B number(2,0) SHADULT35 number(2,0) SH20E number(3,0) D114 number(2,0) SHED1 number(2,0) V529 number(4,0) V530 number(2,0) V511 number(3,0) SH16 number(3,0) V770L number(2,0) SH218G number(3,0) V413C char(1) SH255S number(4,0) S523G number(2,0) V503 number(2,0) S325CG number(2,0) H15H text SHUPAZILA number(3,0) V3A00Q char(1) V763G char(1) D101D number(2,0) M57Q text V774A number(2,0) V3A06 text V481E char(1) H12V text D115XF char(1) SCONCES number(4,0) AWFACTT text H32U number(2,0) V834B text S541Q number(2,0) SH2 number(14,0) M42D text S506D number(2,0) HC1 number(3,0) V826A text H3 text S541K number(2,0) V463G char(1) V3A00D number(2,0) D118S number(2,0) D119J number(2,0) D121A number(2,0) S522C number(2,0) SH209A number(2,0) AWFACTE2 number(5,0) HV206 number(2,0) SH123A number(2,0) D005 number(8,0) D119XK char(1) H7M text V3A00S number(2,0) M57X text H8D text V741 number(2,0) M17 text V779 text V780 text MM15 char(1) D105D number(2,0) V464 text MMC2 number(3,0) REC31_GROUP text V414N text V3A03 text SH234 number(3,0) HML15 text ML13O char(1) V507 number(3,0) SH283 number(9,0) H15B text G117A char(1) G104 number(2,0) D110G char(1) H31D text SH283D number(3,0) D108 number(2,0) V3A00W text V762AB text HV245 number(4,0) S604A number(3,0) D101I char(1) S504A number(2,0) V838A text HV237Z text D115W number(2,0) H37E text V482A char(1) H13 text HA13 number(2,0) SH264D number(4,0) SH242A number(2,0) SH130CE number(2,0) V762AT text V762BK text M55H text G108 number(3,0) H0 text V474E char(1) HV026 text SH20J number(2,0) SH228 number(2,0) M55B text SHB2Y number(5,0) D115L number(2,0) V481H char(1) V455 text G115 char(1) G122 number(3,0) HV004 text S715AC number(2,0) D118D number(2,0) V763F char(1) SCOMM number(3,0) V190 number(2,0) S506G number(2,0) D105I number(2,0) D118B number(2,0) S435GA number(2,0) S325CC number(2,0) SHB3M number(3,0) M55N char(1) V744E number(2,0) HA12 number(6,0) HB57 text V3A00V number(2,0) S106 number(3,0) S541I number(2,0) V372A text V106 number(2,0) H0Y text H45 char(1) HV202 char(1) S714F number(2,0) M2D text SHB1 number(2,0) V363 text M2N number(2,0) M3E text D118XB char(1) HML32E text M49F text SH253 number(5,0) D100B number(2,0) HV234A text HA54 number(2,0) HV107 number(2,0) V3A08J number(2,0) V3A09A char(1) HV246D text ML11 char(1) V474H char(1) V208 number(2,0) S435C number(2,0) S1206 number(2,0) HW13 number(2,0) HV018 text V763D char(1) AWFACTE text V632 number(2,0) V412 char(1) ML14Y char(1) V467H char(1) SH241 number(2,0) V472P char(1) HV032 number(2,0) HV237I char(1) HA55 number(2,0) V3A08V number(2,0) V3A00A number(2,0) D119XB char(1) V3A08D number(2,0) HA0 number(3,0) V243 text D115J number(2,0) SH104A number(2,0) HW56 text HV016 number(3,0) ML16B char(1) H37H text V414U char(1) S1209A number(2,0) S541P number(2,0) D1310A number(2,0) HC68 number(2,0) SHB3Y number(5,0) S506YY number(5,0) ML19C char(1) ML20C char(1) H5M text H6D text S1013 number(2,0) HV253X text H32Y number(2,0) M65G char(1) D115U char(1) V3A08E number(2,0) ML19Y char(1) HW71 text HMHIDX text S325CZ number(2,0) S540A number(2,0) S435J number(2,0) S229A number(2,0) S325CA number(2,0) S503C number(2,0) V3A07 number(3,0) V469X text V472F char(1) AWFACTR text V702 number(2,0) HC10 text V417 number(2,0) V834A text HV006 number(3,0) H44C char(1) D119Q number(2,0) V474F char(1) SH2H number(3,0) V851I char(1) V626 text HA63 text S523J number(2,0) D105M char(1) HV243C text SCORE number(3,0) D115T number(2,0) B16 number(3,0) H12M text S506AM number(3,0) D115XD char(1) HV246B text SHFLG number(2,0) D118N number(2,0) HV270 number(2,0) D119E number(2,0) S410J number(2,0) M57B text V362 number(2,0) V3A08T number(2,0) M2H number(2,0) M46 text V319 number(2,0) V705 text V320 number(2,0) HW2 text V826 char(1) S823A number(2,0) M3F text M54 text V301 text M49D text S714BA number(2,0) V762BS text V717 text V785 number(2,0) HB33 number(2,0) S1208 number(2,0) M9 text SH110N number(2,0) S715ABK number(2,0) H34 text HML21 number(2,0) V472I char(1) D115XA number(2,0) HW57 text V770F number(2,0) M19 text SH212A number(4,0) S503Z number(2,0) D115XB char(1) V721 char(1) V421 char(1) V318 number(2,0) D119U char(1) D122C number(2,0) SH239 number(3,0) MM6 number(3,0) V766A text HML6 number(2,0) D104 number(2,0) HA32 number(5,0) ML15A char(1) SH20A number(2,0) V467A char(1) SH19A number(2,0) ML23B char(1) HA60 text S435GZ number(2,0) HV042 text V828 text HV124 text V445 text MM2 number(2,0) H36C text HC27 number(2,0) HV237D text V113 number(3,0) S1401G number(2,0) S714C number(2,0) D115XH char(1) V123 number(2,0) HML8 number(2,0) V393 text HMLE text S714AA number(2,0) V136 number(3,0) S435GH number(2,0) S1002 number(2,0) V532 number(2,0) S325B number(2,0) V833A text HHID text MM4 number(5,0) S523O number(2,0) V447 text V475 char(1) S523A number(2,0) D118XE char(1) HC15 text ML13B number(2,0) M1A text M28 text HC0 number(3,0) V115 number(4,0) S523N number(2,0) D115M number(2,0) H21A text V139 number(3,0) V140 number(2,0) H32V text H33M text H40D char(1) V501 number(2,0) S523C number(2,0) HV237A text B15 number(2,0) S1209F number(2,0) M1E text HML32 number(2,0) SHCOLL number(3,0) S540B number(2,0) HA66 number(2,0) H32N number(2,0) S541J number(2,0) V471G char(1) V443 text S223A number(2,0) S326B number(3,0) HC2 text V801 number(5,0) AWFACTE3 number(5,0) HB65 number(2,0) V474I char(1) S541T number(2,0) D119R number(2,0) S506X number(2,0) V777 text V411 text ML21A text HV123 text HV237G text D128 char(1) H40Y char(1) H37Y text S435I number(2,0) S325CD number(2,0) MLWEIGHT char(1) D119XF char(1) SH276 number(2,0) V467B text V831 char(1) HV217 number(2,0) D112A number(2,0) S823 number(2,0) HV025 number(2,0) S523E number(2,0) H32R char(1) V414G text HWIDX number(2,0) V762BR char(1) D101A number(2,0) V463Z text V101 number(2,0) HML35 text V414L text D115V number(2,0) H31B text HW15 text V626A text V394 text V404 text V384C number(2,0) S503F number(2,0) SHB2 number(2,0) V531 number(3,0) V317 number(5,0) V471A char(1) HA40 number(5,0) M57G text S325FE number(2,0) SH254 number(2,0) H44A text HV232 text S111C number(2,0) S503B number(2,0) V416 text S1207 number(3,0) V456 text HML32C text V815B text M2J char(1) M3A text M48 char(1) HW4 text S1003 number(2,0) HV126 char(1) HV253C text V467D text HV205 number(3,0) S805 number(2,0) V444 text HA68 number(2,0) HV246K char(1) S803A number(2,0) S715ABX number(2,0) V472B char(1) ML23C char(1) V835C char(1) SH264S number(4,0) V762AU text V762BL text SH20F number(2,0) HV120 number(2,0) V525 number(3,0) H32S number(2,0) B0 number(2,0) V762BT text V770K text V3A00X number(2,0) V223 number(2,0) V770U number(2,0) V767B text SHED2 number(3,0) V3A08I number(2,0) D115X number(2,0) S307 number(3,0) V743C char(1) HML33 text S114F number(2,0) S715A number(2,0) S1211 char(1) V513 number(2,0) S1014 number(2,0) V442 text HW11 text SH13 number(2,0) V804 number(2,0) D115D number(2,0) H37P text S523Q number(2,0) V441 text HV232E char(1) V3A00B number(2,0) HB69 text HB70 text HV237J char(1) H32M number(2,0) H33D text D115F number(2,0) D100C number(2,0) G105 number(2,0) M65F char(1) MM9 number(3,0) V229 text V230 text HC30 number(3,0) D118O number(2,0) D119F number(2,0) D112 number(2,0) S519J number(2,0) HML4 number(3,0) HB12B text V762AZ text V762BQ char(1) V770M number(2,0) S112E number(2,0) V226 text V481X text H15F text D118XA number(2,0) V784M text HA12B number(6,0) V835A char(1) HW1 number(3,0) V3A00U number(2,0) M57E text M57K text B6 text M55F text G117G char(1) HC9 text S114A number(2,0) H12A text HML13 text V754WP number(2,0) M66 text S112C number(2,0) ML13I number(2,0) V806 text V221 text V770E number(2,0) SILANG number(2,0) V3A00O text S503E number(2,0) H47 text V851J char(1) V852A text V821C char(1) V168 text V133 number(3,0) V191 text V201 number(3,0) V3A08U number(2,0) H46A number(3,0) V414O text H11 text V304A text V762AL text V762BC text SH235 number(2,0) HV112 text S715ABB number(2,0) V214 number(2,0) V729 number(2,0) V730 number(3,0) H12N text V467F text D119XC char(1) H32W text V474Z char(1) HC64 number(3,0) V426 text HW73 text S536A number(2,0) V327 number(2,0) V784G char(1) S325E number(2,0) D118K number(2,0) S1209X number(2,0) S523X number(2,0) V361 number(2,0) SH2Y number(5,0) D118G number(2,0) D119B number(2,0) HV271 text V481G char(1) V222 text D115XK char(1) SH22 number(2,0) HC57 number(2,0) S502D number(2,0) S523H number(2,0) V467J char(1) SH218A number(2,0) V770H text V467I char(1) S945A number(2,0) V459 text V460 text S325FC number(2,0) HC4 text H33 text HW19 number(5,0) S541U number(2,0) H15J char(1) S229D number(3,0) V481 text V633C char(1) H12Q char(1) V850B text SH3MO number(3,0) V633D char(1) V762BP char(1) S1401B number(2,0) V3A00M number(2,0) HA51 text M3N text M3I text S1012 number(2,0) H37B text D126 char(1) HV243A number(2,0) V769A text V770A number(2,0) S502H number(2,0) V156 char(1) SHWH number(2,0) HC63 number(4,0) D103A number(2,0) V763B number(2,0) S325FB number(2,0) MM13 char(1) M65B char(1) V716 text D118XF char(1) ML18B char(1) SH246S number(4,0) D105N char(1) V167 text S507Z char(1) D111 number(2,0) V743D number(2,0) V770O number(2,0) D1310B number(3,0) H1 text H21 text SH110M number(2,0) V746 text S309A number(2,0) S1201 number(2,0) V770S text V463E char(1) IDXH4 number(3,0) S435GC number(2,0) HML19 text H44B char(1) S541H number(2,0) S715ABA number(2,0) HML20 text HV201 number(3,0) H32B number(2,0) V323 number(3,0) S435GN number(2,0) D106 number(2,0) M65A char(1) V851L char(1) V852C char(1) V474X char(1) HV104 number(2,0) ML19B char(1) ML20B char(1) S540C number(2,0) HW9 text SCOLL number(3,0) V851H char(1) D105L char(1) V851G char(1) H37X text V781 text HA2 number(5,0) M65C char(1) HV015 number(2,0) M2E text H12O text M43 text HV241 text V751 number(2,0) SH218D number(2,0) M65I char(1) S104A number(2,0) HV237H char(1) HC18 number(3,0) V305 char(1) HML9 text V463A text V384B number(2,0) H46B char(1) HB50 text HV232Y text HV253F char(1) V623 number(2,0) V452A text V833C char(1) V452C text HB61 text V770W text B9 number(2,0) V506 text HV214 number(3,0) HA4 number(5,0) V762BV text V3A08M number(2,0) SH1D number(3,0) HB12 text SH12 number(2,0) S325CF number(2,0) V479 char(1) V480 text V3A00G text HV111 text S112D number(2,0) S114D number(2,0) SH110I number(2,0) H12W char(1) HML1A text SH262 number(5,0) H32K number(2,0) S1209D number(2,0) V3A00T text V821B char(1) V155 number(2,0) HV215 number(3,0) D115XC char(1) SH20G number(3,0) SH225 number(3,0) HB62 text S506YD number(3,0) HC70 text S112B number(2,0) S435GI number(2,0) H39 text H40 char(1) SH281 number(5,0) V854B text V413 text SH130CD number(2,0) V372 text HC72 text V467C text HV022 text S1005 number(2,0) H4 text V453 text HC16 number(3,0) D115C number(2,0) G117F char(1) S536C number(3,0) VCOL number(2,0) D118U char(1) D119L number(2,0) HC56 number(4,0) D118F number(2,0) M55D text D115Q number(2,0) D105G number(2,0) G100 number(2,0) M3L text M61 text ML13N char(1) V315 number(3,0) H37I text H15A text V770G text V762AD text V633F char(1) ML17B char(1) V239 text V240 text V3A08AA char(1) HA61 text HW55 text V508 number(5,0) M72 text V841A char(1) HV108 number(3,0) H32O text SHRM5 number(6,0) SH243 number(3,0) S326C number(2,0) S435GX number(2,0) HV035 number(2,0) D115XG char(1) S1204 number(2,0) S325FF number(2,0) HC6 text HW16 number(3,0) SH13A number(2,0) SH13B number(2,0) V743E char(1) H32H text S536B number(3,0) ML12 char(1) H35 char(1) H12F text D110B number(2,0) M2L text M3C text M51 text V472J char(1) V463C text V473A text H36B text V414S text V3A08C number(2,0) S325N number(2,0) S541F number(2,0) HA58 char(1) S523M number(2,0) ML17A text SH19B number(3,0) SH219 number(2,0) HV021 text HV211 number(2,0) SHCOMM number(3,0) S112G number(2,0) V105 char(1) HW7 text V762BW char(1) HV028 text V463D text HML10 number(2,0) M11 text S435GD number(2,0) V621 number(2,0) H12X text SH08 number(2,0) M65J char(1) HV125 char(1) V469F text V766B text V206 number(2,0) M7 text V539 char(1) V540 char(1) V770N number(2,0) S715ABD number(2,0) V762BX text H15 text M57O text S305A number(3,0) H15K char(1) V3A00I text V3A08K number(2,0) V3A09B char(1) D105B number(2,0) HV234 char(1) SH283M number(3,0) S541W number(2,0) V770T number(2,0) H37C char(1) D119Y number(2,0) G117E char(1) M35 char(1) ML21B char(1) V452B text G102 number(2,0) SHRESI number(2,0) G117I char(1) V407 char(1) S113 number(2,0) V3A08W char(1) S715E number(2,0) V205 number(2,0) HB67 text M57S text HV024 number(2,0) D118J number(2,0) M34 text V116 number(3,0) D119A char(1) HV005 text V310 char(1) SH130CC number(2,0) V107 text SH237 number(2,0) V744C number(2,0) SHRI number(5,0) M14 text HC71 text SHCONCES number(4,0) ML17C char(1) HC31 number(5,0) V770Q text S536D char(1) H15D text D118R number(2,0) V209 number(2,0) V210 number(2,0) D119I char(1) IDX94 number(2,0) V3A00Y number(2,0) V783 text HC55 number(2,0) V241 text H8 text SH245 number(5,0) V505 text H5 text D101F number(2,0) S1309B2 number(2,0) H36D text S523V number(2,0) V784R char(1) H32Z number(2,0) D102 number(2,0) H9Y text S1401D number(2,0) V745B text H36E char(1) SH104B number(3,0) S506I number(2,0) S435GJ number(2,0) V821A char(1) V151 number(2,0) SH284B number(4,0) V512 number(3,0) S506I2Y number(5,0) SH18 number(2,0) HV002 text HA64 char(1) S1309A2 number(2,0) V3A00E number(2,0) M18 text V125 text V605 number(2,0) V3A08H number(2,0) D109 number(3,0) HB6 text SH218C number(2,0) S523K number(2,0) M55A text SH122A number(2,0) SH218H number(3,0) HV253H char(1) S1401C number(2,0) H12E text ML18A text V313 number(2,0) H12T text V364 number(2,0) V472M char(1) H15E text HV252 text H12B text V762AG char(1) D115P number(2,0) V482C char(1) V149 number(2,0) V150 number(3,0) V628 number(3,0) D113 number(2,0) V135 number(2,0) V127 number(3,0) V770B number(2,0) V401 text D105J char(1) V854A text M2C number(2,0) S1209B number(2,0) HV232C text S1210 char(1) V784N text S502X number(2,0) HB64 char(1) GIDX number(2,0) HV117 number(2,0) S523W number(2,0) G116 char(1) V414M text HV114 text B3 number(5,0) +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" INPUT FEATURE_TYPE * ROUTE CSV CSV_4::CSV multi_reader_keyword,$(DATASET_KEYWORD_CSV_4) TO FME_GENERIC ::CSV ALIAS_GEOMETRY ROUTE SCHEMA_FROM_TABLE SCHEMA_FROM_TABLE_1::schema multi_reader_keyword,$(DATASET_KEYWORD_SCHEMA_FROM_TABLE_1) TO FME_GENERIC ::schema ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * +$(DATASET_KEYWORD_CSV_4)_MERGE_DEF CSV_4::CSV GLOB * DEFLINE CASEID,text,V000,char4,V001,number30,V002,number40,V003,number30,V004,number30,V005,number70,V006,number30,V007,number50,V008,number50,V009,number30,V010,number50,V011,number50,V012,number30,V013,number20,V014,number20,V015,number20,V016,number30,V017,number50,V018,number30,V019,number30,V019A,number20,V020,number20,V021,number30,V022,number30,V023,number30,V024,number20,V025,number20,V026,number20,V027,number20,V028,number40,V029,number20,V030,number30,V031,number30,V032,number20,V034,number30,V040,number30,V042,number20,V044,char1,G117B,char1,V784X,text,S326AB,number20,V763A,number20,S114E,number20,ML13F,text,V504,number20,SH263,number20,V851E,char1,V3A08R,number20,SH130CB,number20,V851A,char1,M65L,char1,S715D,number20,D118T,number20,D119K,number20,D118XC,char1,V784L,text,B7,text,S539,number20,V845,char1,HV003,text,S715ABC,number20,S1209C,number20,ML22A,char1,V704,text,M57M,text,V767A,text,S715ABF,number20,MMC3,char1,D103F,char1,V472E,char1,SQLANG,number20,D105H,number20,V414J,text,HV208,number20,H11B,text,S114,number30,V474G,char1,SH284,number40,S715F,number20,V471C,char1,HW53,text,V414Q,char1,S112H,number20,S1203,number20,D112N,char1,M42E,text,SH1X,number20,HC60,number40,V481A,text,V326,number30,V802,number50,HV212,text,S507D,number20,SH246D,number40,HV001,text,H12I,text,H32Q,char1,S523U,number20,H33Y,text,V224,text,M42A,char1,S506A,text,V218,text,SH130CA,number20,S325J,number20,V161,number30,SH244,number20,V215,text,V509,number50,V510,number20,S435GE,number20,M57C,char1,V414B,char1,SH284A,number40,HB5,text,S325M,number20,HML3,number20,HC13,text,H40M,char1,HC61,number20,V231,text,HW3,text,V768B,char1,SH17B,number30,H6,text,S538P,number20,S540G,number20,ML13Y,number20,MM1,number20,S540D,number20,HV246F,text,HV105,number30,V474J,char1,HA52,number20,S325FH,number20,V743A,number20,S435E,number20,HB2,text,V302,char1,ML18C,char1,M2A,number20,M38,text,S433L,number20,V3A08O,char1,H32C,number20,V232,text,SH230,number30,SH20K,number30,ML19F,char1,S540K,number20,S541B,number20,HV031,text,S325FD,number20,V843,text,S506YM,number30,SH20D,number20,H6Y,text,V461,text,HV129,char1,V3A08P,number20,V714,number20,HV243D,text,B1,number30,S325D,number20,SPROV,number20,D118E,number20,HB13,text,SH110J,number20,HV121,text,SH111A,number30,M1C,char1,M8,text,ML14Z,char1,D115O,number20,S1016,number20,D100A,number20,S541D,number20,M55Z,text,M57H,text,M2I,text,M47,char1,G117J,char1,V414A,char1,HC33,number20,M3G,text,S111E,number20,V225,text,HC7,text,MM3,number30,M2M,text,M3D,text,M52,text,S112A,number20,S541V,number20,SH19,number20,SH20,number20,D119XH,char1,HV247,number20,HML12,text,V538,char1,S714BB,number20,S325FZ,number20,HML32A,text,S1015,number20,V467E,char1,M57D,char1,V770P,text,V472Q,char1,S715ABI,number20,V778,text,V478,text,V754CP,number20,SH232,number20,S540J,number20,M42C,text,S541A,number20,HB41,text,V166,text,V744A,number20,V463B,text,V770X,number20,SH110H,number20,S523P,number20,SH110G,number20,V762AJ,text,V762BA,text,S501,number20,HV041,text,D103E,char1,SHRM4,number60,S435GB,number20,HV204,number40,V121,number20,AWFACTW,text,M6,text,SH2M,number30,V472S,char1,V474A,char1,SH3D,number30,HV253D,char1,G103,number20,ML16C,char1,H32D,number20,S523F,number20,HML32F,text,D120,number30,V228,text,HV115,text,D123,char1,M19A,text,D119XE,char1,SH17A,number20,S906A,number20,V233,text,V3A00L,number20,V537,number30,HB12A,text,D118XI,char1,G124,number30,SH283T,number50,HV232B,text,S523T,number20,HV243B,text,SH118F,number20,D115H,char1,V784Q,char1,M49E,text,D118XD,char1,M2G,number20,M45,text,HB1,number30,D115R,number20,HV012,number30,V104,char1,SH20I,number30,HV017,number20,S538O,number20,S540F,number20,HV235,number20,V379,char1,V380,char1,V413A,char1,HV027,text,V3A00Z,number20,V762AK,text,V762BB,text,S804,number20,H4M,text,H5D,text,V851B,char1,HW72,text,H37K,text,S229C,number20,V844,char1,HV019,text,HV020,number20,S509B,number20,S510B,number20,V770I,text,D119XI,char1,S502C,number20,H0M,text,D118XH,char1,ML13G,char1,D118W,number20,D119N,number20,M49X,text,V212,text,HV226,number30,HA57,number20,SHHTEC,number40,V784K,text,V474,char1,H12H,text,V412A,text,M15,text,ML13H,number20,ML15C,char1,V481C,text,V614,number20,V3A08Z,number20,H37O,text,S504C,number20,HC62,text,HB55,text,HB66,number20,HA53,number40,S540X,number20,S541O,number20,SHB2M,number30,V119,number20,V120,number20,SHB3D,number30,SHB1Y,number50,S1309C2,number20,V158,text,S541M,number20,SH218F,number20,V853C,char1,V316,number50,S906B,number20,V204,number20,M57U,char1,D103B,number20,HV014,number20,H32L,number20,D117,char1,M3K,text,M60,text,HW18,number30,S326,number20,HC5,text,V375A,char1,V851K,char1,M65K,char1,V852B,text,D101C,number20,ML19E,char1,HV228,text,HA11,number50,V633G,char1,H2Y,text,ML19Z,char1,V471D,char1,V465,text,V376,text,V471E,char1,V775,char1,HMLIDX,number20,S540H,number20,S541S,number20,D110H,char1,HC73,text,S523I,number20,HV242,text,S540L,number20,S541C,number20,V627,number30,D110F,char1,SH221,number30,HA12A,number60,D118H,char1,ML13C,text,H7Y,text,ML0,number20,V770C,number20,G113,char1,V472A,char1,S945O,number20,V625A,number20,V762AI,char1,V762AR,char1,V307,number20,V762BI,char1,HV238,number30,D115XE,char1,V322,number20,G117D,char1,V743F,text,HV253A,text,SHSMK,char1,S435GM,number20,H12C,text,HB4,text,HA3,number50,M65E,char1,M71,text,B12,text,SH283Y,number50,SH1H,number30,D115XI,char1,H12D,text,S407B,number20,V237,number20,V855,text,HV227,text,V770J,text,V219,text,V220,number20,ML2,number20,V438,text,V815C,text,M57J,text,S502E,number20,SH2011,char1,V616,number40,H37J,text,D118A,char1,V820,char1,H12U,text,MM12,char1,S1202,number20,S541G,number20,V414I,text,V367,number20,SH218B,number20,HV113,text,V761C,char1,V774C,number20,SH231,number20,D105K,char1,V762AX,text,V762BO,char1,V238,number20,D116,number30,S229B,number20,V3A00R,char1,HV237B,text,SH242C,number20,V3A08S,number20,SHPC1,number50,H32E,number20,S111,number20,V131,text,M49B,text,H15I,text,ML13A,number20,SHPROV,number20,G114,char1,V603,number40,S223B,number20,HV253Z,text,V812,text,V412C,text,G123,number20,V321,number20,HW58,char1,HV253E,char1,SHSD1,number50,SHRM1,number60,HV237F,text,V304,text,M57P,text,V3A08AB,char1,HV008,number50,H3M,text,H4D,text,SHB1M,number30,V604,number20,SHB2D,number30,D124,char1,ML13K,number20,ML14B,char1,D119XJ,char1,V3A08AD,char1,S506B,number20,V784I,char1,S937A,number20,V129,number30,V130,text,D118M,number20,V472T,char1,M55E,text,V474B,char1,H38,text,HV030,number30,S1401E,number20,S715ABJ,number20,D119D,number20,V471B,char1,V629,number30,V838B,text,S326AC,number20,MM10,char1,V770R,text,V3A08X,number20,V784V,char1,HV230A,text,S523L,number20,D119V,number20,S210,number20,V203,number20,V784A,text,SH249,number20,SH250,number20,SH248,number20,H31,text,V152,number30,IDX95,number20,V841,text,D115I,char1,FDYSTO,number40,SH130CZ,number20,H41B,char1,H15L,char1,H2D,text,H42,text,V414T,char1,HV246C,text,SH21,number20,ML13J,number20,ML14A,char1,HW6,text,S502B,number20,MM7,number30,HML14,text,B8,text,H8M,text,H9D,text,S435D,number20,H37F,char1,S715ABH,number20,M1B,char1,M29,text,D119XD,char1,SH08A,number20,V3A08Q,number20,V827,char1,H9M,text,HW12,text,S325CH,number20,S507A,number20,V477,text,V625,number20,H15M,char1,M4,text,M13,text,V463F,char1,HV216,number30,HB0,number30,V103,char1,S1001,number20,S506I1Y,number50,V825,text,S506I2M,number30,D101B,number20,V847,char1,SH14,number20,H32G,text,V714A,number20,S112F,number20,SH3M,number30,HV244,number20,V472D,char1,V822,text,ML21C,char1,H2M,text,H3D,text,M1,text,S504E,number20,HV246I,text,H15G,text,H9,text,HV102,number20,V739,number20,V740,char1,SH110O,number20,HV009,number30,HV010,number20,HML18,text,V839A,text,V840A,text,IDXML,number20,V235,text,ML13L,number20,V762AS,text,M57I,text,M49G,char1,V762BJ,text,HV219,number20,HV220,number30,SH110L,number20,SH218E,number40,HV253B,text,HV253,text,M55J,text,D110E,char1,V3A05,text,D101G,number20,V823,number20,HML7,number30,V842,text,D110A,number20,V408,char1,S937B,number20,HV140,text,D115Y,number20,V784U,char1,S506F,number20,S504X,number20,M10,text,V838C,text,V409,text,V410,text,HV011,text,D118XG,char1,HA67,text,V467K,char1,V743B,number20,HVIDX,number30,HML1,text,S506AY,number50,V835B,char1,SH118A,number20,S714E,number20,D115N,number20,D105F,number20,D129,char1,S114GX,number30,V824,text,V395,text,V405,text,V851C,char1,HML33A,number30,D121,number20,S111A,number20,SH130B,number20,SH130CX,number20,V535,number20,V216,text,HB11,text,V850A,text,S325O,number20,D118I,char1,S326AX,number20,D119S,number20,D122A,number20,SHB3,number20,V829,text,H14,text,H12P,text,V830,char1,H32I,text,SH273,number50,AWFACTU,text,HMLC,number30,HV237K,char1,M39A,text,V633A,char1,S523B,number20,SH118B,number20,HA50,text,V3A08AC,char1,V536,number20,S541R,number20,V762AN,text,V762BE,text,HV116,text,HML32G,text,M55K,text,V3A08B,number20,M65D,char1,MMC4,char1,S105,number20,HV236,char1,H8Y,text,H12J,text,S435GK,number20,SH284G,number40,S111D,number20,G106,number30,B10,number20,V217,text,V472N,char1,D118P,number20,V527,number40,D119G,number20,V784B,text,SINTERP,number20,D101J,char1,V784C,text,HA35,text,SHBM,number50,SH3,number140,H12Z,text,D125,char1,V472U,char1,V474C,char1,S523S,number20,HC32,number50,V376A,char1,HV013,number30,HV237E,text,SHDISTRICT,number20,V414F,text,H4Y,text,S502A,number20,HV209,number20,HV210,number20,HB58,char1,S715B,number20,D101H,char1,SH1Y,number50,ML13P,char1,V472R,char1,BORD,text,SH238,number20,V631,char1,S714D,number20,S28DAYS,number20,H37G,char1,D105C,number20,ML15B,char1,S508,number20,V762BU,text,S540E,number20,H37A,text,HV218,number20,SH234C,number30,MM14,number30,S503A,number20,HC52,number20,HB3,text,V624,text,V762AC,text,MMC1,number30,S114B,number20,SH2X,number20,H5Y,text,G117H,char1,M27,text,M65X,char1,HC12,text,V472G,char1,V415,text,S1401F,number20,S1205,number20,H43,text,S435H,number40,V719,number20,V454,text,B2,number50,S435GF,number20,ML24C,char1,H3Y,text,V761B,text,S111B,number20,H12G,text,HV118,text,ML13Z,number20,S1004,number20,H7,text,HW51,text,H32J,number20,SHB13,char1,V3A08L,number20,V613,number30,V414W,text,ML19A,char1,ML20A,number20,SHRM3,number60,SHSD3,number50,V468,number20,V234,text,V836,text,HB32,number50,G119,number20,V3A01,char1,HC11,text,M55C,text,HA33,number20,MM11,char1,V412B,char1,HA6,number60,HA41,number50,H2,text,V3A08G,number20,D107,number20,V472H,char1,V784S,char1,V528,number30,V325A,char1,V832C,char1,V853B,text,MM8,number50,D110C,number20,SH20H,number20,V467M,char1,V732,number20,HV253G,char1,B4,number20,HV230B,text,HB40,text,D118XK,char1,V763C,number20,SH215A,number20,V767C,char1,V419,number20,V420,char1,ML101,text,S326AA,number20,HV246J,char1,HB63,text,S541X,number20,M70,text,S509C,number20,S510C,number20,S502F,number20,G112,char1,M36,char1,D115K,number20,M42B,char1,V762AF,char1,V744D,number20,SH127A,number20,B5,number20,S522D,number20,V467L,char1,V851F,char1,HW17,number30,H20,text,S503D,number20,M3M,text,M62,text,V157,text,V359,number30,V360,number30,V834C,char1,HV000,char4,H36A,text,HV246H,text,HC8,text,V762AP,char1,V762BG,char1,HA62,text,D105E,number20,V481F,char1,D127,char1,S506E,number20,H12S,text,V469E,text,V851D,char1,S715ABG,number20,V815A,text,V762AH,char1,SH130A,number20,V302A,number20,H12Y,text,M55I,text,V414P,text,S507X,char1,M57N,text,S509F,number20,S510F,number20,M49Z,text,V446,text,V3A00K,number20,HV239,char1,HV240,char1,HB35,text,V413D,char1,V784O,text,M57L,text,H6M,text,H7D,text,V418,number20,S506AD,number30,HV213,number30,V211,text,V311,char1,V784F,text,V472K,char1,V473B,text,S325CB,number20,HA5,number50,M55L,char1,S507C,number20,V848,char1,ML23A,text,V122,number20,D101E,number20,HW52,text,HML31,text,ML13X,number20,V414H,text,VCAL,text,S540I,number20,V805,text,M2B,number20,M39,text,G117Y,char1,HMLD,number30,D119T,number20,D122B,number20,H15C,text,V750,number20,D118C,number20,V754JP,number20,SH1M,number30,SH2D,number30,H37M,text,V849,char1,HB51,text,V754BP,char1,M1D,text,M57T,text,V846,char1,D118XJ,char1,M57A,text,V770D,number20,V134,text,SH3H,number30,G109,char1,G110,char1,HML32B,text,S523R,number20,D118Y,number20,D119P,number20,S325FX,number20,SH3X,number20,H32T,number20,S510J,number20,V3A00F,text,S504B,number20,HA69,text,HA70,text,V853A,text,G111,char1,D119XG,char1,H41A,char1,D119W,number20,V409A,char1,V410A,char1,MMC5,number30,D115B,number20,V471F,char1,V437,text,H32F,text,HV023,text,HV101,number30,ML19D,char1,SH279,number20,SH280,number50,S509A,number20,V242,text,D110D,char1,S510A,number20,S523D,number20,HV040,text,HML30,text,V414V,text,V463X,text,V472C,char1,S509E,number20,S510E,number20,H37N,text,S435F,number20,G117X,char1,M55X,text,M57F,text,V769,text,V770,number20,V3A02,text,S715AA,number20,V3A00H,text,V202,number20,M2K,number20,M55M,char1,V141,text,M3B,text,M50,text,V323A,number30,V414E,text,S439A,number30,SH259,number20,V462,char1,SH260,number20,HA1,number30,V837,char1,V213,number20,V458,char1,ML22B,char1,S435GG,number20,H37Z,text,S509D,number20,S510D,number20,HV106,number20,V701,number20,V633B,text,V439,text,V440,text,V602,number20,HB53,text,D103D,char1,V634,char1,V784D,text,HV232D,text,HV237,text,V312,number30,S506I1M,number30,S1209H,number20,HA56,number40,S506I2D,number30,ML22C,char1,D118L,number20,D119C,number20,ML13D,number20,H36F,char1,HML17,text,MMIDX,number30,V774B,number20,HML2,text,D100D,number20,H31C,text,S715C,number20,V502,number20,SH1MO,number30,D105A,number20,B11,text,V833B,text,M49Y,text,HC51,number30,M55G,text,H10,text,ML13M,number20,V803,number30,M57R,text,HC19,number50,D115XJ,char1,ML16A,number20,V384A,number20,S1401A,number20,V756,number20,M73,text,S114C,number20,D115G,number20,M65H,char1,V413B,char1,HML11,number20,V754DP,number20,V768C,char1,HV109,number20,HW10,text,HV110,char1,SHED3,number20,V745A,text,G117C,char1,S505,number20,V3A00P,char1,V337,number30,V784H,char1,V761,text,V784J,char1,V762AE,text,HV246,number20,HV237X,text,V411A,text,V839,text,V840,text,M3H,text,V457,text,V472O,char1,V762AV,text,V762BM,text,HV122,text,HV225,number20,HW70,text,HV127,char1,M5,text,SH1,number140,V153,number20,V472L,char1,HB52,text,MM5,char1,V814,text,H0D,text,H22,number20,SHCMC,number40,S435GL,number20,V159,text,V160,number20,ML13E,number20,S306A,number20,M2F,text,M44,char1,HV007,number50,SH3Y,number50,V633E,char1,V762AO,char1,M57V,char1,V762BF,char1,SH15,number20,V414C,char1,D118V,number20,D119M,number20,HML32D,text,HA65,number20,S715AD,number20,V102,number20,V762BZ,text,SH258,number20,S114G,number20,H37L,text,S509Z,number20,S510Z,number20,V762AQ,char1,V762BH,char1,SH271,number50,V3A00N,number20,H32X,number20,D118X,number20,S823B,number20,HC17,number30,S1209G,number20,SH122C,number52,S506I1D,number30,D119O,number20,V124,number20,V482B,char1,HV207,number20,D130A,char1,HV044,text,H37D,text,V467G,char1,V414D,char1,V3A00J,number20,V731,number20,V3A08N,number20,HW8,text,ML1,text,HB56,text,BIDX,text,H12K,text,H13B,text,V762AW,char1,V762BN,text,V763E,char1,V137,number20,S325A,number20,S541Y,number20,V138,number20,HV246G,text,D119XA,number20,V128,number30,S536K,number20,HML5,text,V476,char1,V207,number20,REC84_GROUP,char1,G121,number20,G107,number30,HC58,char1,S502Z,number20,D115S,number20,D117A,number20,HIDX,number20,HMLB,number30,S325CX,number20,HV103,number20,M49A,text,H12L,text,HV246A,text,HV221,number20,HV246E,text,HV237C,text,V784T,text,V744B,number20,S5YEARS,number20,V3A08A,text,S325CE,number20,HC53,number40,HMLA,number30,V447A,text,V3A04,text,V414R,char1,S541E,number20,V784E,text,V3A08F,number20,S103A,number20,H32A,number20,V227,text,H32P,text,V768A,char1,V481B,text,V813,text,SH2MO,number30,S616,number30,M49C,text,HML34,text,G101,number20,B13,text,V762AM,text,V762BD,text,V541,char1,V481D,text,V762AA,text,SHB1D,number30,HC3,text,SH255D,number40,SH257,number20,FSYSTO,number40,HB60,text,HB68,number20,S502G,number20,V832B,text,S507B,number20,S540W,number20,S541N,number20,S506C,number20,V811,text,V406,text,HML16A,number30,S714BC,number20,G118,number20,D119X,number20,D118Q,number20,D119H,char1,S1209E,number20,V474D,char1,M55O,char1,S504Z,number20,S506H,number20,S541L,number20,V466,char1,V784P,char1,H12R,char1,M3J,text,HML16,text,HV128,char1,HW5,text,V414K,text,V715,number30,V770V,text,S506Z,number20,S504D,number20,MIDX,number20,D130B,char1,V444A,text,D103C,char1,H31E,text,S715ABE,number20,D115E,number20,SH110K,number20,SH111B,number20,S509X,number20,S510X,number20,V3A00C,number20,S325FA,number20,ML19X,char1,SH242B,number20,SHADULT35,number20,SH20E,number30,D114,number20,SHED1,number20,V529,number40,V530,number20,V511,number30,SH16,number30,V770L,number20,SH218G,number30,V413C,char1,SH255S,number40,S523G,number20,V503,number20,S325CG,number20,H15H,text,SHUPAZILA,number30,V3A00Q,char1,V763G,char1,D101D,number20,M57Q,text,V774A,number20,V3A06,text,V481E,char1,H12V,text,D115XF,char1,SCONCES,number40,AWFACTT,text,H32U,number20,V834B,text,S541Q,number20,SH2,number140,M42D,text,S506D,number20,HC1,number30,V826A,text,H3,text,S541K,number20,V463G,char1,V3A00D,number20,D118S,number20,D119J,number20,D121A,number20,S522C,number20,SH209A,number20,AWFACTE2,number50,HV206,number20,SH123A,number20,D005,number80,D119XK,char1,H7M,text,V3A00S,number20,M57X,text,H8D,text,V741,number20,M17,text,V779,text,V780,text,MM15,char1,D105D,number20,V464,text,MMC2,number30,REC31_GROUP,text,V414N,text,V3A03,text,SH234,number30,HML15,text,ML13O,char1,V507,number30,SH283,number90,H15B,text,G117A,char1,G104,number20,D110G,char1,H31D,text,SH283D,number30,D108,number20,V3A00W,text,V762AB,text,HV245,number40,S604A,number30,D101I,char1,S504A,number20,V838A,text,HV237Z,text,D115W,number20,H37E,text,V482A,char1,H13,text,HA13,number20,SH264D,number40,SH242A,number20,SH130CE,number20,V762AT,text,V762BK,text,M55H,text,G108,number30,H0,text,V474E,char1,HV026,text,SH20J,number20,SH228,number20,M55B,text,SHB2Y,number50,D115L,number20,V481H,char1,V455,text,G115,char1,G122,number30,HV004,text,S715AC,number20,D118D,number20,V763F,char1,SCOMM,number30,V190,number20,S506G,number20,D105I,number20,D118B,number20,S435GA,number20,S325CC,number20,SHB3M,number30,M55N,char1,V744E,number20,HA12,number60,HB57,text,V3A00V,number20,S106,number30,S541I,number20,V372A,text,V106,number20,H0Y,text,H45,char1,HV202,char1,S714F,number20,M2D,text,SHB1,number20,V363,text,M2N,number20,M3E,text,D118XB,char1,HML32E,text,M49F,text,SH253,number50,D100B,number20,HV234A,text,HA54,number20,HV107,number20,V3A08J,number20,V3A09A,char1,HV246D,text,ML11,char1,V474H,char1,V208,number20,S435C,number20,S1206,number20,HW13,number20,HV018,text,V763D,char1,AWFACTE,text,V632,number20,V412,char1,ML14Y,char1,V467H,char1,SH241,number20,V472P,char1,HV032,number20,HV237I,char1,HA55,number20,V3A08V,number20,V3A00A,number20,D119XB,char1,V3A08D,number20,HA0,number30,V243,text,D115J,number20,SH104A,number20,HW56,text,HV016,number30,ML16B,char1,H37H,text,V414U,char1,S1209A,number20,S541P,number20,D1310A,number20,HC68,number20,SHB3Y,number50,S506YY,number50,ML19C,char1,ML20C,char1,H5M,text,H6D,text,S1013,number20,HV253X,text,H32Y,number20,M65G,char1,D115U,char1,V3A08E,number20,ML19Y,char1,HW71,text,HMHIDX,text,S325CZ,number20,S540A,number20,S435J,number20,S229A,number20,S325CA,number20,S503C,number20,V3A07,number30,V469X,text,V472F,char1,AWFACTR,text,V702,number20,HC10,text,V417,number20,V834A,text,HV006,number30,H44C,char1,D119Q,number20,V474F,char1,SH2H,number30,V851I,char1,V626,text,HA63,text,S523J,number20,D105M,char1,HV243C,text,SCORE,number30,D115T,number20,B16,number30,H12M,text,S506AM,number30,D115XD,char1,HV246B,text,SHFLG,number20,D118N,number20,HV270,number20,D119E,number20,S410J,number20,M57B,text,V362,number20,V3A08T,number20,M2H,number20,M46,text,V319,number20,V705,text,V320,number20,HW2,text,V826,char1,S823A,number20,M3F,text,M54,text,V301,text,M49D,text,S714BA,number20,V762BS,text,V717,text,V785,number20,HB33,number20,S1208,number20,M9,text,SH110N,number20,S715ABK,number20,H34,text,HML21,number20,V472I,char1,D115XA,number20,HW57,text,V770F,number20,M19,text,SH212A,number40,S503Z,number20,D115XB,char1,V721,char1,V421,char1,V318,number20,D119U,char1,D122C,number20,SH239,number30,MM6,number30,V766A,text,HML6,number20,D104,number20,HA32,number50,ML15A,char1,SH20A,number20,V467A,char1,SH19A,number20,ML23B,char1,HA60,text,S435GZ,number20,HV042,text,V828,text,HV124,text,V445,text,MM2,number20,H36C,text,HC27,number20,HV237D,text,V113,number30,S1401G,number20,S714C,number20,D115XH,char1,V123,number20,HML8,number20,V393,text,HMLE,text,S714AA,number20,V136,number30,S435GH,number20,S1002,number20,V532,number20,S325B,number20,V833A,text,HHID,text,MM4,number50,S523O,number20,V447,text,V475,char1,S523A,number20,D118XE,char1,HC15,text,ML13B,number20,M1A,text,M28,text,HC0,number30,V115,number40,S523N,number20,D115M,number20,H21A,text,V139,number30,V140,number20,H32V,text,H33M,text,H40D,char1,V501,number20,S523C,number20,HV237A,text,B15,number20,S1209F,number20,M1E,text,HML32,number20,SHCOLL,number30,S540B,number20,HA66,number20,H32N,number20,S541J,number20,V471G,char1,V443,text,S223A,number20,S326B,number30,HC2,text,V801,number50,AWFACTE3,number50,HB65,number20,V474I,char1,S541T,number20,D119R,number20,S506X,number20,V777,text,V411,text,ML21A,text,HV123,text,HV237G,text,D128,char1,H40Y,char1,H37Y,text,S435I,number20,S325CD,number20,MLWEIGHT,char1,D119XF,char1,SH276,number20,V467B,text,V831,char1,HV217,number20,D112A,number20,S823,number20,HV025,number20,S523E,number20,H32R,char1,V414G,text,HWIDX,number20,V762BR,char1,D101A,number20,V463Z,text,V101,number20,HML35,text,V414L,text,D115V,number20,H31B,text,HW15,text,V626A,text,V394,text,V404,text,V384C,number20,S503F,number20,SHB2,number20,V531,number30,V317,number50,V471A,char1,HA40,number50,M57G,text,S325FE,number20,SH254,number20,H44A,text,HV232,text,S111C,number20,S503B,number20,V416,text,S1207,number30,V456,text,HML32C,text,V815B,text,M2J,char1,M3A,text,M48,char1,HW4,text,S1003,number20,HV126,char1,HV253C,text,V467D,text,HV205,number30,S805,number20,V444,text,HA68,number20,HV246K,char1,S803A,number20,S715ABX,number20,V472B,char1,ML23C,char1,V835C,char1,SH264S,number40,V762AU,text,V762BL,text,SH20F,number20,HV120,number20,V525,number30,H32S,number20,B0,number20,V762BT,text,V770K,text,V3A00X,number20,V223,number20,V770U,number20,V767B,text,SHED2,number30,V3A08I,number20,D115X,number20,S307,number30,V743C,char1,HML33,text,S114F,number20,S715A,number20,S1211,char1,V513,number20,S1014,number20,V442,text,HW11,text,SH13,number20,V804,number20,D115D,number20,H37P,text,S523Q,number20,V441,text,HV232E,char1,V3A00B,number20,HB69,text,HB70,text,HV237J,char1,H32M,number20,H33D,text,D115F,number20,D100C,number20,G105,number20,M65F,char1,MM9,number30,V229,text,V230,text,HC30,number30,D118O,number20,D119F,number20,D112,number20,S519J,number20,HML4,number30,HB12B,text,V762AZ,text,V762BQ,char1,V770M,number20,S112E,number20,V226,text,V481X,text,H15F,text,D118XA,number20,V784M,text,HA12B,number60,V835A,char1,HW1,number30,V3A00U,number20,M57E,text,M57K,text,B6,text,M55F,text,G117G,char1,HC9,text,S114A,number20,H12A,text,HML13,text,V754WP,number20,M66,text,S112C,number20,ML13I,number20,V806,text,V221,text,V770E,number20,SILANG,number20,V3A00O,text,S503E,number20,H47,text,V851J,char1,V852A,text,V821C,char1,V168,text,V133,number30,V191,text,V201,number30,V3A08U,number20,H46A,number30,V414O,text,H11,text,V304A,text,V762AL,text,V762BC,text,SH235,number20,HV112,text,S715ABB,number20,V214,number20,V729,number20,V730,number30,H12N,text,V467F,text,D119XC,char1,H32W,text,V474Z,char1,HC64,number30,V426,text,HW73,text,S536A,number20,V327,number20,V784G,char1,S325E,number20,D118K,number20,S1209X,number20,S523X,number20,V361,number20,SH2Y,number50,D118G,number20,D119B,number20,HV271,text,V481G,char1,V222,text,D115XK,char1,SH22,number20,HC57,number20,S502D,number20,S523H,number20,V467J,char1,SH218A,number20,V770H,text,V467I,char1,S945A,number20,V459,text,V460,text,S325FC,number20,HC4,text,H33,text,HW19,number50,S541U,number20,H15J,char1,S229D,number30,V481,text,V633C,char1,H12Q,char1,V850B,text,SH3MO,number30,V633D,char1,V762BP,char1,S1401B,number20,V3A00M,number20,HA51,text,M3N,text,M3I,text,S1012,number20,H37B,text,D126,char1,HV243A,number20,V769A,text,V770A,number20,S502H,number20,V156,char1,SHWH,number20,HC63,number40,D103A,number20,V763B,number20,S325FB,number20,MM13,char1,M65B,char1,V716,text,D118XF,char1,ML18B,char1,SH246S,number40,D105N,char1,V167,text,S507Z,char1,D111,number20,V743D,number20,V770O,number20,D1310B,number30,H1,text,H21,text,SH110M,number20,V746,text,S309A,number20,S1201,number20,V770S,text,V463E,char1,IDXH4,number30,S435GC,number20,HML19,text,H44B,char1,S541H,number20,S715ABA,number20,HML20,text,HV201,number30,H32B,number20,V323,number30,S435GN,number20,D106,number20,M65A,char1,V851L,char1,V852C,char1,V474X,char1,HV104,number20,ML19B,char1,ML20B,char1,S540C,number20,HW9,text,SCOLL,number30,V851H,char1,D105L,char1,V851G,char1,H37X,text,V781,text,HA2,number50,M65C,char1,HV015,number20,M2E,text,H12O,text,M43,text,HV241,text,V751,number20,SH218D,number20,M65I,char1,S104A,number20,HV237H,char1,HC18,number30,V305,char1,HML9,text,V463A,text,V384B,number20,H46B,char1,HB50,text,HV232Y,text,HV253F,char1,V623,number20,V452A,text,V833C,char1,V452C,text,HB61,text,V770W,text,B9,number20,V506,text,HV214,number30,HA4,number50,V762BV,text,V3A08M,number20,SH1D,number30,HB12,text,SH12,number20,S325CF,number20,V479,char1,V480,text,V3A00G,text,HV111,text,S112D,number20,S114D,number20,SH110I,number20,H12W,char1,HML1A,text,SH262,number50,H32K,number20,S1209D,number20,V3A00T,text,V821B,char1,V155,number20,HV215,number30,D115XC,char1,SH20G,number30,SH225,number30,HB62,text,S506YD,number30,HC70,text,S112B,number20,S435GI,number20,H39,text,H40,char1,SH281,number50,V854B,text,V413,text,SH130CD,number20,V372,text,HC72,text,V467C,text,HV022,text,S1005,number20,H4,text,V453,text,HC16,number30,D115C,number20,G117F,char1,S536C,number30,VCOL,number20,D118U,char1,D119L,number20,HC56,number40,D118F,number20,M55D,text,D115Q,number20,D105G,number20,G100,number20,M3L,text,M61,text,ML13N,char1,V315,number30,H37I,text,H15A,text,V770G,text,V762AD,text,V633F,char1,ML17B,char1,V239,text,V240,text,V3A08AA,char1,HA61,text,HW55,text,V508,number50,M72,text,V841A,char1,HV108,number30,H32O,text,SHRM5,number60,SH243,number30,S326C,number20,S435GX,number20,HV035,number20,D115XG,char1,S1204,number20,S325FF,number20,HC6,text,HW16,number30,SH13A,number20,SH13B,number20,V743E,char1,H32H,text,S536B,number30,ML12,char1,H35,char1,H12F,text,D110B,number20,M2L,text,M3C,text,M51,text,V472J,char1,V463C,text,V473A,text,H36B,text,V414S,text,V3A08C,number20,S325N,number20,S541F,number20,HA58,char1,S523M,number20,ML17A,text,SH19B,number30,SH219,number20,HV021,text,HV211,number20,SHCOMM,number30,S112G,number20,V105,char1,HW7,text,V762BW,char1,HV028,text,V463D,text,HML10,number20,M11,text,S435GD,number20,V621,number20,H12X,text,SH08,number20,M65J,char1,HV125,char1,V469F,text,V766B,text,V206,number20,M7,text,V539,char1,V540,char1,V770N,number20,S715ABD,number20,V762BX,text,H15,text,M57O,text,S305A,number30,H15K,char1,V3A00I,text,V3A08K,number20,V3A09B,char1,D105B,number20,HV234,char1,SH283M,number30,S541W,number20,V770T,number20,H37C,char1,D119Y,number20,G117E,char1,M35,char1,ML21B,char1,V452B,text,G102,number20,SHRESI,number20,G117I,char1,V407,char1,S113,number20,V3A08W,char1,S715E,number20,V205,number20,HB67,text,M57S,text,HV024,number20,D118J,number20,M34,text,V116,number30,D119A,char1,HV005,text,V310,char1,SH130CC,number20,V107,text,SH237,number20,V744C,number20,SHRI,number50,M14,text,HC71,text,SHCONCES,number40,ML17C,char1,HC31,number50,V770Q,text,S536D,char1,H15D,text,D118R,number20,V209,number20,V210,number20,D119I,char1,IDX94,number20,V3A00Y,number20,V783,text,HC55,number20,V241,text,H8,text,SH245,number50,V505,text,H5,text,D101F,number20,S1309B2,number20,H36D,text,S523V,number20,V784R,char1,H32Z,number20,D102,number20,H9Y,text,S1401D,number20,V745B,text,H36E,char1,SH104B,number30,S506I,number20,S435GJ,number20,V821A,char1,V151,number20,SH284B,number40,V512,number30,S506I2Y,number50,SH18,number20,HV002,text,HA64,char1,S1309A2,number20,V3A00E,number20,M18,text,V125,text,V605,number20,V3A08H,number20,D109,number30,HB6,text,SH218C,number20,S523K,number20,M55A,text,SH122A,number20,SH218H,number30,HV253H,char1,S1401C,number20,H12E,text,ML18A,text,V313,number20,H12T,text,V364,number20,V472M,char1,H15E,text,HV252,text,H12B,text,V762AG,char1,D115P,number20,V482C,char1,V149,number20,V150,number30,V628,number30,D113,number20,V135,number20,V127,number30,V770B,number20,V401,text,D105J,char1,V854A,text,M2C,number20,S1209B,number20,HV232C,text,S1210,char1,V784N,text,S502X,number20,HB64,char1,GIDX,number20,HV117,number20,S523W,number20,G116,char1,V414M,text,HV114,text,B3,number50 +$(DATASET_KEYWORD_SCHEMA_FROM_TABLE_1)_MERGE_DEF SCHEMA_FROM_TABLE_1::schema EXACT schema +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "CSV (CSV_4) Splitter" INPUT FEATURE_TYPE CSV OUTPUT FEATURE_TYPE CSV_0_MoEYg1G4nI4= OUTPUT FEATURE_TYPE CSV_1_MoEYg1G4nI4= +DEFAULT_MACRO WB_CURRENT_CONTEXT +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {schema} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME schema_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME schema_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME schema_FeatureDirector INPUT FEATURE_TYPE schema TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE schema___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE schema___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME schema___FeatureDirector1 INPUT FEATURE_TYPE schema___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE schema___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE schema___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME schema_VectorSetterUpper INPUT FEATURE_TYPE schema___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc schema_fa9b5d78_280a_430c_aefa_f121070123331_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME schema___PointCloudThinner INPUT FEATURE_TYPE schema___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("schema_fa9b5d78_280a_430c_aefa_f121070123331_thinPointCloud") +Tcl2 proc schema_fa9b5d78_280a_430c_aefa_f121070123331_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME schema_RasterSetterUpper INPUT FEATURE_TYPE schema___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("schema_fa9b5d78_280a_430c_aefa_f121070123331_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# schema_fa9b5d78_280a_430c_aefa_f121070123331_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO schema_fa9b5d78_280a_430c_aefa_f121070123331_VIS_FEAT_TYPE schema$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME schema_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(schema_fa9b5d78_280a_430c_aefa_f121070123331_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA fme_feature_type_name,varchar255,fme_format_long_name,varchar255,fme_format_short_name,varchar255,fme_basename,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- +FACTORY_DEF * TeeFactory FACTORY_NAME "_All_ (Disabled) Nuker" INPUT FEATURE_TYPE CSV_1_MoEYg1G4nI4= +# ------------------------------------------------------------------------- + +# Expose all attributes. This ensures that if you expose fme_dataset, you will get it. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeExposer INPUT FEATURE_TYPE CSV_0_MoEYg1G4nI4= OUTPUT FEATURE_TYPE AttributeExposer_OUTPUT + +# ------------------------------------------------------------------------- + +Tcl2 set AttributeSplitter_9194fd49_e420_4ea6_b0e2_7105da477e6011_splitDelim [FME_DecodeText {.}]; if { [regexp {^([1-9][0-9]*s)+$} [set AttributeSplitter_9194fd49_e420_4ea6_b0e2_7105da477e6011_splitDelim]] } { set AttributeSplitter_9194fd49_e420_4ea6_b0e2_7105da477e6011_splitWidths [split [regsub -all {s$} {.} {}] s]; proc AttributeSplitter_doSplit {} { global AttributeSplitter_9194fd49_e420_4ea6_b0e2_7105da477e6011_splitWidths; set source [FME_GetAttribute [FME_DecodeText {fme_basename}]]; set attrNum 0; set listName [FME_DecodeText {_list}]; set attrPos 0; set keepEmptyParts [string equal {No} {No}]; foreach width [set AttributeSplitter_9194fd49_e420_4ea6_b0e2_7105da477e6011_splitWidths] { set endPos [expr $attrPos + $width - 1]; set bit [string range $source $attrPos $endPos]; set part [string trim $bit]; if { $keepEmptyParts || $part != \"\" } { FME_SetAttribute "$listName{$attrNum}" $part; incr attrNum; }; incr attrPos $width; }; }; } else { proc AttributeSplitter_doSplit {} { global AttributeSplitter_9194fd49_e420_4ea6_b0e2_7105da477e6011_splitDelim; set delim [set AttributeSplitter_9194fd49_e420_4ea6_b0e2_7105da477e6011_splitDelim]; set delimLength [string length $delim]; set source [FME_GetAttribute [FME_DecodeText {fme_basename}]]; set keepEmptyParts [string equal {No} {No}]; set bits {}; set startIndex 0; set nextIndex [string first $delim $source $startIndex]; while {$nextIndex >= 0} { lappend bits [string range $source $startIndex [expr $nextIndex-1]]; set startIndex [expr $nextIndex + $delimLength]; set nextIndex [string first $delim $source $startIndex]; }; lappend bits [string range $source $startIndex end]; set listName [FME_DecodeText {_list}]; set attrNum 0; foreach bit $bits { set trimmedPart [string trim $bit]; if { $keepEmptyParts || $trimmedPart != \"\" } { FME_SetAttribute "$listName{$attrNum}" $trimmedPart; incr attrNum; }; } } } +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeSplitter INPUT FEATURE_TYPE AttributeExposer_OUTPUT OUTPUT FEATURE_TYPE AttributeSplitter_OUTPUT @Tcl2(AttributeSplitter_doSplit) + +# ------------------------------------------------------------------------- + +Tcl2 proc ListIndexer_indexer {index numElements prefix} { if {$index < 0 } { set index [expr $numElements + $index]; }; regsub \"{}\" {_list{}} \"{$index}\" listWithIndex; regsub \"{}\" {_list{}} {} listBase; set complexListExp "$listWithIndex\."; set prefixLength [expr [string length $complexListExp]-1]; set prefix [FME_DecodeText $prefix]; foreach attr [FME_AttributeNames] { set newAttr {}; if {$attr == $listWithIndex} { set newAttr $listBase; } elseif {[string first $complexListExp $attr] == 0} { set newAttr [string replace $attr 0 $prefixLength]; }; if {$newAttr != {}} { if {$prefix != {} } { set newAttr $prefix$newAttr; }; if {[string first {fme_} $newAttr] != 0} { set first [string first {fme_} $newAttr]; lappend attrsToCopy $newAttr $attr; }; }; }; if {[info exists attrsToCopy] && [llength $attrsToCopy] > 0} { eval FME_Execute CopyAttributes $attrsToCopy; }; } +FACTORY_DEF * TestFactory FACTORY_NAME ListIndexer INPUT FEATURE_TYPE AttributeSplitter_OUTPUT TEST "1" >= 0 OUTPUT PASSED FEATURE_TYPE ListIndexer_OUTPUT @Tcl2("ListIndexer_indexer 1 0 {_tbName}") OUTPUT FAILED FEATURE_TYPE ListIndexer_OUTPUT @Tcl2("ListIndexer_indexer 1 @NumElements(_list{}) {_tbName}") +# ------------------------------------------------------------------------- + +Tcl2 proc ListIndexer_2_indexer {index numElements prefix} { if {$index < 0 } { set index [expr $numElements + $index]; }; regsub \"{}\" {_list{}} \"{$index}\" listWithIndex; regsub \"{}\" {_list{}} {} listBase; set complexListExp "$listWithIndex\."; set prefixLength [expr [string length $complexListExp]-1]; set prefix [FME_DecodeText $prefix]; foreach attr [FME_AttributeNames] { set newAttr {}; if {$attr == $listWithIndex} { set newAttr $listBase; } elseif {[string first $complexListExp $attr] == 0} { set newAttr [string replace $attr 0 $prefixLength]; }; if {$newAttr != {}} { if {$prefix != {} } { set newAttr $prefix$newAttr; }; if {[string first {fme_} $newAttr] != 0} { set first [string first {fme_} $newAttr]; lappend attrsToCopy $newAttr $attr; }; }; }; if {[info exists attrsToCopy] && [llength $attrsToCopy] > 0} { eval FME_Execute CopyAttributes $attrsToCopy; }; } +FACTORY_DEF * TestFactory FACTORY_NAME ListIndexer_2 INPUT FEATURE_TYPE ListIndexer_OUTPUT TEST "0" >= 0 OUTPUT PASSED FEATURE_TYPE ListIndexer_2_OUTPUT @Tcl2("ListIndexer_2_indexer 0 0 {_filecode}") OUTPUT FAILED FEATURE_TYPE ListIndexer_2_OUTPUT @Tcl2("ListIndexer_2_indexer 0 @NumElements(_list{}) {_filecode}") +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer INPUT FEATURE_TYPE ListIndexer_2_OUTPUT OUTPUT FEATURE_TYPE AttributeRenamer_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, _filecode_list,FileCode,) + + +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" INPUT FEATURE_TYPE * ROUTE FME_GENERIC AttributeRenamer_OUTPUT TO MDB_ADO __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODEDfme_template_feature_typeTable1,SupplyAttributesENCODED__wb_out_feat_type__Table1,EvaluateExpressionATTR_CREATE_EXPR__wb_out_feat_type__atValueopenparen_tbName_listcloseparenTable1 GEOMETRY OUTPUT ROUTED FEATURE_TYPE * @FeatureType(ENCODED,@Value(__wb_out_feat_type__)) @RemoveAttributes(__wb_out_feat_type__) OUTPUT NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__ + +# ------------------------------------------------------------------------- + +FACTORY_DEF * CreationFactory CREATE_AT_END OUTPUT FEATURE_TYPE __NUKEME__ @TCL("if [file exists {$(WORKSPACE_TEMP_DIR)}] {set files [glob -nocomplain -directory {$(WORKSPACE_TEMP_DIR)} -tails *.ffs]; if {[llength $files] == 1} { set theFile {$(WORKSPACE_TEMP_DIR)/}; append theFile [lindex $files 0]; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -f FFS $theFile & \175; } elseif { [llength $files] == 0 } { catch { file delete -force {$(WORKSPACE_TEMP_DIR)} }; } else { set filesNoExt {}; set lastfile {}; foreach {fileName} [lsort $files] { set fileNoExt [string trimright $fileName {.ffs}]; if [regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] { if { $fileNoExtBase == $lastfile } { continue } }; set lastfile $fileNoExt; lappend filesNoExt $fileNoExt }; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -d {$(WORKSPACE_TEMP_DIR)} -a ffs -f FFS $filesNoExt & \175; }; }; ") +FACTORY_DEF * TeeFactory INPUT FEATURE_TYPE __NUKEME__ +# ------------------------------------------------------------------------- +MDB_ADO_1_DEF_TEMPLATE Table1 mdb_update_key_columns "" mdb_drop_table NO mdb_truncate_table NO mdb_table_writer_mode INHERIT_FROM_WRITER fme_schema_readers SCHEMA_FROM_TABLE_1 fme_schema_feature_first No fme_schema_name_expression @EvaluateExpression(FDIV,STRING,Value_tbName_list,Table1) fme_schema_attributes_to_remove "" FileCode text(6) diff --git a/DataFileParsing/translate_all_recordtypes_to_pg.fmw b/DataFileParsing/translate_all_recordtypes_to_pg.fmw new file mode 100644 index 0000000..572b5c7 --- /dev/null +++ b/DataFileParsing/translate_all_recordtypes_to_pg.fmw @@ -0,0 +1,16122 @@ +#! +#! localhost:5432DHS_Surveys" +# --SourceDataset_CSV "C:\Users\zool1301\Documents\DHS\Phase6\ExtractedSurveyRecords_Python\*.All.csv" +# --FEATURE_TYPES "" +# --SourceDataset_CSV_3 "C:\Users\zool1301\Documents\DHS\Phase6\ExtractedSurveyRecords_Python\*.All.csv" +# +# +#! LOG_MAX_PRECISION="Yes" +#! FME_STROKE_MAX_DEVIATION="0" +#! WORKSPACE_VERSION="1" +#! REDIRECT_TERMINATORS="NONE" +#! WARN_INVALID_XFORM_PARAM="Yes" +#! LOG_MAX_RECORDED_FEATURES="200" +#! HISTORY="" +#! FME_SERVER_SERVICES="" +#! CATEGORY="" +#! ATTR_TYPE_ENCODING="SDF" +#! REQUIREMENTS="" +#! SHOW_ANNOTATIONS="true" +#! SOURCE_ROUTING_FILE="" +#! FME_BUILD_NUM="15479" +#! USAGE="" +#! DESTINATION_ROUTING_FILE="" +#! END_TCL="" +#! FME_GEOMETRY_HANDLING="Enhanced" +#! DESTINATION="NONE" +#! VIEW_POSITION="-498.005 360.004" +#! FME_DOCUMENT_PRIORGUID="fdb5a764-9bf1-4134-b68e-cc6d6b6e00f9,34e45aa7-2ab2-4afa-b4a9-262d923a49a4,24e239ed-80bd-43a2-9d8f-ea3e8fc8075a,f4bedd0f-93b4-491e-a139-d19b26438fb8,9f529740-aa0e-4ef6-9324-978b3b8dad09" +#! BEGIN_PYTHON="" +#! DESCRIPTION="" +#! FME_IMPLICIT_CSMAP_REPROJECTION_MODE="Auto" +#! FME_DOCUMENT_GUID="95840ff4-fc08-4c68-8403-16f394f9d4a5" +#! PASSWORD="" +#! LAST_SAVE_DATE="2015-05-08T15:44:55" +#! MAX_LOG_FEATURES="200" +#! LOG_FILE="" +#! LAST_SAVE_BUILD="FME(R) 2015.1.0.0 (20150426 - Build 15479 - WIN64)" +#! DOC_TOP_LEFT="-281.004 -443.002" +#! BEGIN_TCL="" +#! TITLE="" +#! MULTI_WRITER_DATASET_ORDER="BY_ID" +#! IGNORE_READER_FAILURE="No" +#! SHOW_INFO_NODES="true" +#! LEGAL_TERMS_CONDITIONS="" +#! END_PYTHON="" +#! FME_REPROJECTION_ENGINE="FME" +#! REQUIREMENTS_KEYWORD="" +#! SOURCE="NONE" +#! ZOOM_SCALE="100" +#! DOC_EXTENTS="3035.01 732.007" +#! > +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +GUI IGNORE SourceDataset_CSV_1,CSV_IN_NETWORK_AUTHENTICATION_CSV_1,_SKIP_LINES_CSV_1,_SKIP_FOOTER_CSV_1,_STRIP_QUOTES_CSV_1,_DUPLICATE_DELIMS_CSV_1,SORT_GROUP_CSV_1,_SORT_PARAMS_CSV_1,FILTER_GROUP_CSV_1,_FILTER_PARAMS_CSV_1,_ENCODING_CSV_1,SourceDataset_CSV_2,CSV_IN_NETWORK_AUTHENTICATION_CSV_2,_SKIP_LINES_CSV_2,_SKIP_FOOTER_CSV_2,_STRIP_QUOTES_CSV_2,_DUPLICATE_DELIMS_CSV_2,SORT_GROUP_CSV_2,_SORT_PARAMS_CSV_2,FILTER_GROUP_CSV_2,_FILTER_PARAMS_CSV_2,_ENCODING_CSV_2,DestDataset_POSTGRES_1,POSTGRES_OUT_WRITER_MODE_POSTGRES_1,POSTGRES_OUT_START_TRANSACTION_POSTGRES_1,POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_1,POSTGRES_OUT_BULK_COPY_POSTGRES_1,POSTGRES_OUT_BEGIN_SQL_POSTGRES_1,POSTGRES_OUT_END_SQL_POSTGRES_1 +DEFAULT_MACRO DestDataset_POSTGRES postgreslocalhost:5432DHS_Surveys +GUI NAMED_DB_CONNECTION_ENCODED DestDataset_POSTGRES FMT:POSTGRES Connection: +DEFAULT_MACRO SourceDataset_CSV C:\Users\zool1301\Documents\DHS\Phase6\ExtractedSurveyRecords_Python\*.All.csv +GUI MULTIFILE SourceDataset_CSV CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +DEFAULT_MACRO FEATURE_TYPES +GUI OPTIONAL FEATURE_TYPES FEATURE_TYPES "C:Userszool1301DocumentsDHSPhase6ExtractedSurveyRecords_Python*.All.csv,_FORMAT_OVERRIDE_,CSV,_DATASET_OVERRIDE_,SourceDataset_CSV,_SKIP_LINES,1,_SKIP_FOOTER,0,_STRIP_QUOTES,yes,_DUPLICATE_DELIMS,no,SORT_GROUP,NO,FILTER_GROUP,NO,MAX_FEATURES,10,_SCHEMA_WITH_COL_NAMES,\"FileCode,char,7,,CASEID,char,18,,V000,char,4,,V001,number,4,0,V002,number,4,0,V003,number,3,0,V004,number,4,0,V005,number,8,0,V006,number,3,0,V007,number,5,0,V008,number,5,0,V009,number,3,0,V010,number,5,0,V011,number,5,0,V012,number,3,0,V013,number,2,0,V014,number,2,0,V015,number,2,0,V016,number,3,0,V017,number,5,0,V018,number,3,0,V019,number,3,0,V019A,number,2,0,V020,number,2,0,V021,number,4,0,V022,number,3,0,V023,number,3,0,V024,number,2,0,V025,number,2,0,V026,number,2,0,V027,number,2,0,V028,number,4,0,V029,number,2,0,V030,number,3,0,V031,number,4,0,V032,number,2,0,V034,number,3,0,V040,number,4,0,V042,number,2,0,V044,char,1,\",_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_FIELD_NAMES_AFTER_HEADER,no,_IN_SEPARATOR,\",\",_GROUP_BY_DATASET,yes,groupBox_5,FME_DISCLOSURE_OPEN,_SORT_TABLE_CONFIG,\"""NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%\""Attribute\""%\""STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044\""%%\""Alpha/Num\""%\""LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric\""%alphabetic%\""Order\""%\""LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending\""%ascending""\",SCAN_MAX_FEATURES,10000,DYNAMIC_WORKFLOW,yes,_IN_FIELD_NAMES,YES,groupBox,FME_DISCLOSURE_OPEN,_FILTER_TABLE_CONFIG,\"""NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%\""Field Name\""%\""STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044\""%%\""Filter\""%\""STRING_ENCODED _FILTER_REGEX \""%%\""Invert Filter\""%\""CHECKBOX _FILTER_UNMATCHED yes%no\""%no""\",_MERGE_SCHEMAS,YES,_SCHEMA,\"char,7,,char,18,,char,4,,number,4,0,number,4,0,number,3,0,number,4,0,number,8,0,number,3,0,number,5,0,number,5,0,number,3,0,number,5,0,number,5,0,number,3,0,number,2,0,number,2,0,number,2,0,number,3,0,number,5,0,number,3,0,number,3,0,number,2,0,number,2,0,number,4,0,number,3,0,number,3,0,number,2,0,number,2,0,number,2,0,number,2,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,char,1,\",_MERGE_SCHEMAS,YES" Feature Types to Read: +DEFAULT_MACRO SourceDataset_CSV_3 C:\Users\zool1301\Documents\DHS\Phase6\ExtractedSurveyRecords_Python\*.All.csv +GUI MULTIFILE SourceDataset_CSV_3 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +INCLUDE [ if {{$(DestDataset_POSTGRES)} == {}} { puts_real {Parameter 'DestDataset_POSTGRES' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(SourceDataset_CSV)} == {}} { puts_real {Parameter 'SourceDataset_CSV' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(SourceDataset_CSV_3)} == {}} { puts_real {Parameter 'SourceDataset_CSV_3' must be given a value.}; exit 1; }; ] +#! START_HEADER +#! START_WB_HEADER +READER_TYPE MULTI_READER +MULTI_READER_TYPE{0} CSV +MULTI_READER_KEYWORD{0} CSV_1 +MULTI_READER_GEN_DIRECTIVES{0} _SCHEMA_WITH_COL_NAMES,FileCodechar7CASEIDchar18V000char4V001number40V002number40V003number30V004number40V005number80V006number30V007number50V008number50V009number30V010number50V011number50V012number30V013number20V014number20V015number20V016number30V017number50V018number30V019number30V019Anumber20V020number20V021number40V022number30V023number30V024number20V025number20V026number20V027number20V028number40V029number20V030number30V031number40V032number20V034number30V040number40V042number20V044char1,_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_FILTER_PARAMS,,_SORT_PARAMS,,_DUPLICATE_DELIMS,no,_FIELD_NAMES_AFTER_HEADER,no,groupBox_2,,_IN_SEPARATOR,,groupBox_4,,_GROUP_BY_DATASET,yes,groupBox_5,FME_DISCLOSURE_OPEN,_SKIP_LINES,1,groupBox_6,,FILTER_GROUP,NO,_SORT_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending,_ENCODING,,SCAN_MAX_FEATURES,10000,DYNAMIC_WORKFLOW,yes,SORT_GROUP,NO,_IN_FIELD_NAMES,YES,groupBox,FME_DISCLOSURE_OPEN,_SKIP_FOOTER,0,_FILTER_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no,_MERGE_SCHEMAS,YES,_SCHEMA,char7char18char4number40number40number30number40number80number30number50number50number30number50number50number30number20number20number20number30number50number30number30number20number20number40number30number30number20number20number20number20number40number20number30number40number20number30number40number20char1,_STRIP_QUOTES,yes +MULTI_READER_TYPE{1} NULL +MULTI_READER_FORMAT{1} CSV +MULTI_READER_KEYWORD{1} CSV_2 +MULTI_READER_GEN_DIRECTIVES{1} _SCHEMA_WITH_COL_NAMES,FileCodechar7CASEIDchar18V000char4V001number40V002number40V003number30V004number40V005number80V006number30V007number50V008number50V009number30V010number50V011number50V012number30V013number20V014number20V015number20V016number30V017number50V018number30V019number30V019Anumber20V020number20V021number40V022number30V023number30V024number20V025number20V026number20V027number20V028number40V029number20V030number30V031number40V032number20V034number30V040number40V042number20V044char1,_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_FILTER_PARAMS,,_SORT_PARAMS,,_DUPLICATE_DELIMS,no,_FIELD_NAMES_AFTER_HEADER,no,groupBox_2,,_IN_SEPARATOR,,groupBox_4,,_GROUP_BY_DATASET,yes,groupBox_5,FME_DISCLOSURE_OPEN,_SKIP_LINES,1,groupBox_6,,FILTER_GROUP,NO,_SORT_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending,_ENCODING,,SCAN_MAX_FEATURES,10000,SORT_GROUP,NO,_IN_FIELD_NAMES,YES,groupBox,FME_DISCLOSURE_OPEN,_SKIP_FOOTER,0,_FILTER_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no,_MERGE_SCHEMAS,YES,_SCHEMA,char7char18char4number40number40number30number40number80number30number50number50number30number50number50number30number20number20number20number30number50number30number30number20number20number40number30number30number20number20number20number20number40number20number30number40number20number30number40number20char1,_STRIP_QUOTES,yes +WRITER_TYPE MULTI_WRITER +MULTI_WRITER_DATASET_ORDER BY_ID +MULTI_WRITER_FIRST_WRITER_ID 0 +MULTI_WRITER_TYPE{0} POSTGRES +MULTI_WRITER_KEYWORD{0} POSTGRES_1 +#! END_WB_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_1 +CSV_1_DYNAMIC_WORKFLOW YES +# ============================================================================ +# The following GUI line prompts for a folder to be used as the +# source of the CSV files. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_CSV_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_1 +DEFAULT_MACRO SourceDataset_CSV_1 $(SourceDataset_CSV) +GUI MULTIFILE SourceDataset_CSV_1 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +# ============================================================================ +# Hardcode the settings that were used to generate this mapping file +# +DEFAULT_MACRO _SCHEMA_CSV_1 char,7,,char,18,,char,4,,number,4,0,number,4,0,number,3,0,number,4,0,number,8,0,number,3,0,number,5,0,number,5,0,number,3,0,number,5,0,number,5,0,number,3,0,number,2,0,number,2,0,number,2,0,number,3,0,number,5,0,number,3,0,number,3,0,number,2,0,number,2,0,number,4,0,number,3,0,number,3,0,number,2,0,number,2,0,number,2,0,number,2,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,char,1, +DEFAULT_MACRO _IN_FIELD_NAMES_CSV_1 YES +DEFAULT_MACRO _FIELD_NAMES_AFTER_HEADER_CSV_1 no +DEFAULT_MACRO _EXTENSION_CSV_1 CSV +DEFAULT_MACRO _ALLOW_SPACES_IN_COLUMN_NAMES_CSV_1 yes +DEFAULT_MACRO _GROUP_BY_DATASET_CSV_1 yes +CSV_1_SCHEMA char,7,,char,18,,char,4,,number,4,0,number,4,0,number,3,0,number,4,0,number,8,0,number,3,0,number,5,0,number,5,0,number,3,0,number,5,0,number,5,0,number,3,0,number,2,0,number,2,0,number,2,0,number,3,0,number,5,0,number,3,0,number,3,0,number,2,0,number,2,0,number,4,0,number,3,0,number,3,0,number,2,0,number,2,0,number,2,0,number,2,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,char,1, +DEFAULT_MACRO _SKIP_LINES_CSV_1 1 +CSV_1_SKIP_LINES $(_SKIP_LINES_CSV_1) +DEFAULT_MACRO _SKIP_FOOTER_CSV_1 0 +CSV_1_SKIP_FOOTER $(_SKIP_FOOTER_CSV_1) +CSV_1_FIELD_NAMES $(_IN_FIELD_NAMES_CSV_1) +CSV_1_FIELD_NAMES_AFTER_HEADER $(_FIELD_NAMES_AFTER_HEADER_CSV_1) +DEFAULT_MACRO _STRIP_QUOTES_CSV_1 yes +CSV_1_STRIP_QUOTES $(_STRIP_QUOTES_CSV_1) +CSV_1_SEPARATOR (",") +CSV_1_EXTENSION CSV +DEFAULT_MACRO _DUPLICATE_DELIMS_CSV_1 no +CSV_1_DUPLICATE_DELIMS $(_DUPLICATE_DELIMS_CSV_1) +CSV_1_SEQUENCED no +CSV_1_ALLOW_SPACES_IN_COLUMN_NAMES $(_ALLOW_SPACES_IN_COLUMN_NAMES_CSV_1) +CSV_1_GROUP_BY_DATASET $(_GROUP_BY_DATASET_CSV_1) +DEFAULT_MACRO SORT_GROUP_CSV_1 NO +CSV_1_SORT_GROUP $(SORT_GROUP_CSV_1) +DEFAULT_MACRO _SORT_PARAMS_CSV_1 +CSV_1_SORT_PARAMS $(_SORT_PARAMS_CSV_1) +DEFAULT_MACRO FILTER_GROUP_CSV_1 NO +CSV_1_FILTER_GROUP $(FILTER_GROUP_CSV_1) +DEFAULT_MACRO _FILTER_PARAMS_CSV_1 +CSV_1_FILTER_PARAMS $(_FILTER_PARAMS_CSV_1) +# ===================================================================== +# Provide some control over what attributes have the user-selected +# encoding applied. Normally all attributes are updated after being +# read, but the following lines exclude from this treatment all +# attributes whose names start with fme_ or csv_. +CSV_1_UNENCODED_ATTR_PREFIX fme_ csv_ +# =========================================================================== +DEFAULT_MACRO CSV_IN_NETWORK_AUTHENTICATION_CSV_1 +CSV_1_NETWORK_AUTHENTICATION "$(CSV_IN_NETWORK_AUTHENTICATION_CSV_1)" +GUI OPTIONAL AUTHENTICATOR CSV_IN_NETWORK_AUTHENTICATION_CSV_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI INTEGER _SKIP_LINES_CSV_1 Number of Lines to Skip: +GUI INTEGER _SKIP_FOOTER_CSV_1 Number of Footer Lines to Skip: +# GUI CHOICE _IN_FIELD_NAMES yes%no Field Names in File: +# GUI CHOICE _FIELD_NAMES_AFTER_HEADER yes%no Field After Header: +GUI CHOICE _STRIP_QUOTES_CSV_1 yes%no Strip Quotes From Fields: +# GUI TEXT _IN_SEPARATOR Field Delimiter: +# GUI TEXT _EXTENSION Default File Extension: +GUI CHOICE _DUPLICATE_DELIMS_CSV_1 yes%no Skip Duplicate Delimiters: +GUI CHOICE SORT_GROUP_CSV_1 yes%no Sorting Enabled: +GUI OPTIONAL GUI_LINE_TABLE _SORT_PARAMS_CSV_1 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Attribute"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044"%%"Alpha/Num"%"LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric"%alphabetic%"Order"%"LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending"%ascending Sorting Parameters: +GUI CHOICE FILTER_GROUP_CSV_1 yes%no Filter Enabled: +GUI OPTIONAL GUI_LINE_TABLE _FILTER_PARAMS_CSV_1 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Field Name"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044"%%"Filter"%"STRING_ENCODED _FILTER_REGEX "%%"Invert Filter"%"CHECKBOX _FILTER_UNMATCHED yes%no"%no Filter Parameters: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO _ENCODING_CSV_1 +GUI OPTIONAL STRING_OR_ENCODING _ENCODING_CSV_1 SYSTEM%* Character Encoding: +CSV_1_ENCODING $(_ENCODING_CSV_1) +CSV_1_DATASET "$(SourceDataset_CSV_1)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_2" +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_2 +# ============================================================================ +# The following GUI line prompts for a folder to be used as the +# source of the CSV files. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_CSV_2 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_2 +DEFAULT_MACRO SourceDataset_CSV_2 $(SourceDataset_CSV_3) +GUI MULTIFILE SourceDataset_CSV_2 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +# ============================================================================ +# Hardcode the settings that were used to generate this mapping file +# +DEFAULT_MACRO _SCHEMA_CSV_2 char,7,,char,18,,char,4,,number,4,0,number,4,0,number,3,0,number,4,0,number,8,0,number,3,0,number,5,0,number,5,0,number,3,0,number,5,0,number,5,0,number,3,0,number,2,0,number,2,0,number,2,0,number,3,0,number,5,0,number,3,0,number,3,0,number,2,0,number,2,0,number,4,0,number,3,0,number,3,0,number,2,0,number,2,0,number,2,0,number,2,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,char,1, +DEFAULT_MACRO _IN_FIELD_NAMES_CSV_2 YES +DEFAULT_MACRO _FIELD_NAMES_AFTER_HEADER_CSV_2 no +DEFAULT_MACRO _EXTENSION_CSV_2 CSV +DEFAULT_MACRO _ALLOW_SPACES_IN_COLUMN_NAMES_CSV_2 yes +DEFAULT_MACRO _GROUP_BY_DATASET_CSV_2 yes +CSV_2_SCHEMA char,7,,char,18,,char,4,,number,4,0,number,4,0,number,3,0,number,4,0,number,8,0,number,3,0,number,5,0,number,5,0,number,3,0,number,5,0,number,5,0,number,3,0,number,2,0,number,2,0,number,2,0,number,3,0,number,5,0,number,3,0,number,3,0,number,2,0,number,2,0,number,4,0,number,3,0,number,3,0,number,2,0,number,2,0,number,2,0,number,2,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,char,1, +DEFAULT_MACRO _SKIP_LINES_CSV_2 1 +CSV_2_SKIP_LINES $(_SKIP_LINES_CSV_2) +DEFAULT_MACRO _SKIP_FOOTER_CSV_2 0 +CSV_2_SKIP_FOOTER $(_SKIP_FOOTER_CSV_2) +CSV_2_FIELD_NAMES $(_IN_FIELD_NAMES_CSV_2) +CSV_2_FIELD_NAMES_AFTER_HEADER $(_FIELD_NAMES_AFTER_HEADER_CSV_2) +DEFAULT_MACRO _STRIP_QUOTES_CSV_2 yes +CSV_2_STRIP_QUOTES $(_STRIP_QUOTES_CSV_2) +CSV_2_SEPARATOR (",") +CSV_2_EXTENSION CSV +DEFAULT_MACRO _DUPLICATE_DELIMS_CSV_2 no +CSV_2_DUPLICATE_DELIMS $(_DUPLICATE_DELIMS_CSV_2) +CSV_2_SEQUENCED no +CSV_2_ALLOW_SPACES_IN_COLUMN_NAMES $(_ALLOW_SPACES_IN_COLUMN_NAMES_CSV_2) +CSV_2_GROUP_BY_DATASET $(_GROUP_BY_DATASET_CSV_2) +DEFAULT_MACRO SORT_GROUP_CSV_2 NO +CSV_2_SORT_GROUP $(SORT_GROUP_CSV_2) +DEFAULT_MACRO _SORT_PARAMS_CSV_2 +CSV_2_SORT_PARAMS $(_SORT_PARAMS_CSV_2) +DEFAULT_MACRO FILTER_GROUP_CSV_2 NO +CSV_2_FILTER_GROUP $(FILTER_GROUP_CSV_2) +DEFAULT_MACRO _FILTER_PARAMS_CSV_2 +CSV_2_FILTER_PARAMS $(_FILTER_PARAMS_CSV_2) +# ===================================================================== +# Provide some control over what attributes have the user-selected +# encoding applied. Normally all attributes are updated after being +# read, but the following lines exclude from this treatment all +# attributes whose names start with fme_ or csv_. +CSV_2_UNENCODED_ATTR_PREFIX fme_ csv_ +# =========================================================================== +DEFAULT_MACRO CSV_IN_NETWORK_AUTHENTICATION_CSV_2 +CSV_2_NETWORK_AUTHENTICATION "$(CSV_IN_NETWORK_AUTHENTICATION_CSV_2)" +GUI OPTIONAL AUTHENTICATOR CSV_IN_NETWORK_AUTHENTICATION_CSV_2 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI INTEGER _SKIP_LINES_CSV_2 Number of Lines to Skip: +GUI INTEGER _SKIP_FOOTER_CSV_2 Number of Footer Lines to Skip: +# GUI CHOICE _IN_FIELD_NAMES yes%no Field Names in File: +# GUI CHOICE _FIELD_NAMES_AFTER_HEADER yes%no Field After Header: +GUI CHOICE _STRIP_QUOTES_CSV_2 yes%no Strip Quotes From Fields: +# GUI TEXT _IN_SEPARATOR Field Delimiter: +# GUI TEXT _EXTENSION Default File Extension: +GUI CHOICE _DUPLICATE_DELIMS_CSV_2 yes%no Skip Duplicate Delimiters: +GUI CHOICE SORT_GROUP_CSV_2 yes%no Sorting Enabled: +GUI OPTIONAL GUI_LINE_TABLE _SORT_PARAMS_CSV_2 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Attribute"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044"%%"Alpha/Num"%"LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric"%alphabetic%"Order"%"LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending"%ascending Sorting Parameters: +GUI CHOICE FILTER_GROUP_CSV_2 yes%no Filter Enabled: +GUI OPTIONAL GUI_LINE_TABLE _FILTER_PARAMS_CSV_2 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Field Name"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044"%%"Filter"%"STRING_ENCODED _FILTER_REGEX "%%"Invert Filter"%"CHECKBOX _FILTER_UNMATCHED yes%no"%no Filter Parameters: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO _ENCODING_CSV_2 +GUI OPTIONAL STRING_OR_ENCODING _ENCODING_CSV_2 SYSTEM%* Character Encoding: +CSV_2_ENCODING $(_ENCODING_CSV_2) +CSV_2_DATASET "$(SourceDataset_CSV_2)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "POSTGRES_1" +#! END_WB_HEADER +#! START_DEST_HEADER POSTGRES POSTGRES_1 +#! END_DEST_HEADER +#! START_WB_HEADER +DEFAULT_MACRO DestDataset +INCLUDE [ if {"$(DestDataset)" != ""} { \ + puts {DEFAULT_MACRO DestDataset_POSTGRES_1 $(DestDataset)} \ + } ] +#! END_WB_HEADER +#! START_DEST_HEADER POSTGRES POSTGRES_1 +DEFAULT_MACRO DestDataset_POSTGRES_1 $(DestDataset_POSTGRES) +GUI NAMED_DB_CONNECTION_ENCODED DestDataset_POSTGRES_1 FMT:POSTGRES Connection: +# ============================================================================ +# Opt in for destination dataset type vs format type validation +DEFAULT_MACRO POSTGRES_OUT_DESTINATION_DATASETTYPE_VALIDATION_POSTGRES_1 Yes +POSTGRES_1_DESTINATION_DATASETTYPE_VALIDATION "$(POSTGRES_OUT_DESTINATION_DATASETTYPE_VALIDATION_POSTGRES_1)" +DEFAULT_MACRO POSTGRES_OUT_WRITER_MODE_POSTGRES_1 INSERT +GUI CHOICE POSTGRES_OUT_WRITER_MODE_POSTGRES_1 INSERT%UPDATE%DELETE Writer Mode: +POSTGRES_1_WRITER_MODE $(POSTGRES_OUT_WRITER_MODE_POSTGRES_1) +DEFAULT_MACRO POSTGRES_OUT_START_TRANSACTION_POSTGRES_1 0 +GUI TEXT POSTGRES_OUT_START_TRANSACTION_POSTGRES_1 Starting Feature: +POSTGRES_1_START_TRANSACTION $(POSTGRES_OUT_START_TRANSACTION_POSTGRES_1) +DEFAULT_MACRO POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_1 1000 +GUI TEXT POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_1 Features Per Transaction: +POSTGRES_1_TRANSACTION_INTERVAL $(POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_1) +DEFAULT_MACRO POSTGRES_OUT_BULK_COPY_POSTGRES_1 YES +GUI CHOICE POSTGRES_OUT_BULK_COPY_POSTGRES_1 YES%NO Bulk Copy Insert: +POSTGRES_1_BULK_COPY $(POSTGRES_OUT_BULK_COPY_POSTGRES_1) +DEFAULT_MACRO POSTGRES_OUT_BEGIN_SQL_POSTGRES_1 +GUI OPTIONAL TEXT_EDIT_SQL POSTGRES_OUT_BEGIN_SQL_POSTGRES_1 SQL Statement to Execute Before Translation: +POSTGRES_1_BEGIN_SQL "$(POSTGRES_OUT_BEGIN_SQL_POSTGRES_1)" +DEFAULT_MACRO POSTGRES_OUT_END_SQL_POSTGRES_1 +GUI OPTIONAL TEXT_EDIT_SQL POSTGRES_OUT_END_SQL_POSTGRES_1 SQL Statement to Execute After Translation: +POSTGRES_1_END_SQL "$(POSTGRES_OUT_END_SQL_POSTGRES_1)" +POSTGRES_1_DATASET "$(DestDataset_POSTGRES_1)" +#! END_DEST_HEADER +#! END_HEADER + +LOG_FILENAME "$(FME_MF_DIR)translate_all_recordtypes_to_pg.log" +LOG_APPEND NO +LOG_MAX_FEATURES 200 +LOG_MAX_RECORDED_FEATURES 200 +LOG_MAX_PRECISION Yes +FME_REPROJECTION_ENGINE FME +FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto +FME_GEOMETRY_HANDLING Enhanced +FME_STROKE_MAX_DEVIATION 0 +LOG_FILTER_MASK -1 +DEFAULT_MACRO DATASET_KEYWORD_CSV_1 CSV_1 +DEFAULT_MACRO DATASET_KEYWORD_CSV_2 CSV_2 +DEFAULT_MACRO DATASET_KEYWORD_POSTGRES_1 POSTGRES_1 +# ------------------------------------------------------------------------- + +CSV_1_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +CSV_2_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +CSV_1_MAX_FEATURES 10 +CSV_1_FEATURE_TYPES $(FEATURE_TYPES) +MULTI_READER_CONTINUE_ON_READER_FAILURE No + +# ------------------------------------------------------------------------- + +MACRO WORKSPACE_NAME translate_all_recordtypes_to_pg +MACRO FME_VIEWER_APP fmedatainspector +# ------------------------------------------------------------------------- + +INCLUDE [ if {[info exists env(FME_TEMP)] && [file isdirectory $env(FME_TEMP)]} {set gVisualizerTemp $env(FME_TEMP)} elseif {[info exists env(TEMP)] && [file isdirectory $env(TEMP)]} {set gVisualizerTemp $env(TEMP)} elseif { $tcl_platform(platform) == "unix" } {set gVisualizerTemp "/tmp"} else {set gVisualizerTemp c:}; regsub -all {[ ,&]} {$(WORKSPACE_NAME)} {_} wsname; set gVisualizerTemp $gVisualizerTemp/${wsname}_[clock format [clock seconds] -format %H%M%S]; puts "MACRO WORKSPACE_TEMP_DIR $gVisualizerTemp"; +MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/inspector.ffs +MACRO VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector.fsc +MACRO VISUALIZER_CREATE_SPATIAL_INDEX YES +# ------------------------------------------------------------------------- +CSV_1_DEF REC01.All FileCode char(7) CASEID char(18) V000 char(4) V001 number(4,0) V002 number(4,0) V003 number(3,0) V004 number(4,0) V005 number(8,0) V006 number(3,0) V007 number(5,0) V008 number(5,0) V009 number(3,0) V010 number(5,0) V011 number(5,0) V012 number(3,0) V013 number(2,0) V014 number(2,0) V015 number(2,0) V016 number(3,0) V017 number(5,0) V018 number(3,0) V019 number(3,0) V019A number(2,0) V020 number(2,0) V021 number(4,0) V022 number(3,0) V023 number(3,0) V024 number(2,0) V025 number(2,0) V026 number(2,0) V027 number(2,0) V028 number(4,0) V029 number(2,0) V030 number(3,0) V031 number(4,0) V032 number(2,0) V034 number(3,0) V040 number(4,0) V042 number(2,0) V044 char(1) G117B char(1) S903C number(2,0) V784X char(1) SH62B number(6,0) S326AB number(2,0) V763A number(2,0) S114E number(2,0) ML13F char(1) V504 number(2,0) SHH1 number(2,0) SH263 number(6,0) V851E char(1) V3A08R number(2,0) SG265B number(2,0) V851A char(1) M65L char(1) D118T number(2,0) D118XC char(1) D119K number(2,0) SG234 number(2,0) SG308 number(2,0) V784L char(1) B7 number(4,0) S539 number(2,0) V845 char(1) HV003 number(3,0) ML22A char(1) V704 number(3,0) SG292 number(6,0) SG302 number(2,0) M57M number(2,0) V767A char(1) SG116B number(3,0) MMC3 char(1) D103F char(1) V472E char(1) D105H number(2,0) SG228B number(2,0) SG283 number(6,0) V414J number(2,0) HV208 number(2,0) H11B number(2,0) SG265AF number(2,0) S577D number(3,0) SG269I number(2,0) V474G char(1) SLNWP number(2,0) SH6YX number(2,0) SHH1M number(3,0) SHH2 number(2,0) V471C char(1) HW53 number(4,0) V414Q char(1) SHH2D number(3,0) SH617 number(2,0) SH284 number(4,0) SH235AG number(6,0) SG216D number(2,0) SG242 number(2,0) D112N char(1) M42E number(2,0) SH6XY number(2,0) SH1X number(2,0) SH54 number(2,0) HC60 number(4,0) V481A char(1) V326 number(3,0) V802 number(5,0) CHL8 number(3,0) HV212 char(1) SG270I number(2,0) SINGRESOE number(7,0) SH246D number(6,0) HV001 number(4,0) SG215 number(2,0) SG265AZ number(2,0) H12I number(2,0) H32Q char(1) S523U number(2,0) SH_MIG char(15) H33Y number(5,0) V224 number(3,0) M42A char(1) S506A char(1) V218 number(3,0) SG201M number(2,0) S325J number(2,0) SG202D number(2,0) V161 number(3,0) SH244 number(6,0) V215 number(4,0) SHD4M number(3,0) V509 number(5,0) V510 number(2,0) S435GE number(2,0) SG220 number(2,0) M57C char(1) V414B char(1) SH284A number(4,0) HB5 number(5,0) S325M number(2,0) HML3 number(2,0) HC13 number(2,0) H40M char(1) SHT2M number(3,0) SHT3D number(3,0) V231 number(5,0) HW3 number(5,0) HC61 number(2,0) V768B char(1) SG228Y number(2,0) H6 number(2,0) S538P number(2,0) S540G number(2,0) SH4 number(2,0) ML13Y number(2,0) MM1 number(2,0) S540D number(2,0) HV246F char(1) S567 number(3,0) S577R number(3,0) S578I number(5,0) V474J char(1) HV105 number(3,0) HA52 number(2,0) SG201X number(2,0) SG257 number(3,0) SG304A number(2,0) SG284 number(2,0) S325FH number(2,0) V743A number(2,0) S435E number(2,0) HB2 number(5,0) V302 char(1) ML18C char(1) SG206A number(2,0) SH5 number(2,0) M2A number(2,0) M38 number(2,0) S433L number(3,0) V3A08O char(1) H32C number(2,0) V232 number(2,0) SH230 number(3,0) S937Z number(2,0) SH229 number(3,0) ML19F char(1) S540K number(2,0) S541B number(2,0) HV031 number(4,0) S325FD number(2,0) SG269D number(2,0) SG270D number(2,0) V843 char(1) S577K number(5,0) S578B number(9,0) SH222 number(2,0) H6Y number(5,0) V461 char(1) HV129 char(1) V3A08P number(2,0) S577P number(9,0) S578G number(3,0) V714 number(2,0) HV243D char(1) B1 number(3,0) S325D number(2,0) D118E number(2,0) HB13 number(2,0) SH110J number(2,0) HV121 number(2,0) M1C char(1) M8 number(3,0) ML14Z char(1) D115O number(2,0) D100A number(2,0) S541D number(2,0) M55Z number(2,0) M57H number(2,0) M2I number(2,0) M47 char(1) G117J char(1) SHMLC number(3,0) V414A char(1) SG228E number(2,0) SG115 number(2,0) HC33 number(2,0) SG222J number(2,0) SG223A number(2,0) M3G number(2,0) SG265AI number(2,0) IDXH4A number(3,0) SH9 number(2,0) V225 number(2,0) HC7 number(5,0) MM3 number(3,0) SH76U number(2,0) SG240E number(2,0) SG123H number(2,0) SG226 number(2,0) M2M number(2,0) M3D number(2,0) M52 number(3,0) S112A number(2,0) S541V number(2,0) SH19 number(2,0) SH20 number(2,0) SG251 number(6,0) D119XH char(1) SG305 number(3,0) HV247 number(2,0) HML12 number(2,0) S572C number(2,0) CHL4 number(3,0) SHMLD number(3,0) V538 char(1) S714BB number(2,0) S923 number(2,0) S325FZ number(2,0) SG201F number(2,0) HML32A char(1) SH68B number(3,0) SHCOLA number(2,0) V467E char(1) M57D char(1) V770P number(2,0) S573C number(3,0) V472Q char(1) V778 char(1) V478 char(1) V754CP number(2,0) SH231AG number(6,0) SH232 number(3,0) S540J number(2,0) M42C number(2,0) S541A number(2,0) SG216F number(2,0) SG304C number(2,0) V166 char(1) HB41 number(5,0) V744A number(2,0) V463B char(1) SH83 number(2,0) SG261 number(2,0) V770X number(2,0) SH292 number(2,0) SH110H number(2,0) S523P number(2,0) SH110G number(2,0) V762AJ char(1) V762BA char(1) S578V number(3,0) S581D number(2,0) IDXCH2 number(3,0) SG309 number(2,0) D103E char(1) HV041 number(3,0) SHRM4 number(6,0) SG241Y number(2,0) SG310 number(2,0) S435GB number(2,0) HV204 number(4,0) V121 number(2,0) S937F number(2,0) SG269Z number(2,0) AWFACTW number(5,0) SG270Z number(2,0) M6 number(3,0) SH2M number(3,0) V472S char(1) V474A char(1) SH3D number(3,0) S903D number(2,0) G103 number(2,0) HV253D char(1) SH197D number(2,0) HMHIDX2 number(3,0) HO101 number(2,0) ML16C char(1) SG253C number(4,0) H32D number(2,0) S523F number(2,0) SG241B number(2,0) HML32F char(1) S947 number(2,0) SH93 number(4,0) SG121 number(2,0) HSKIDX number(3,0) D120 number(3,0) V228 number(2,0) D123 char(1) HV115 char(1) SG112A number(7,0) M19A number(2,0) D119XE char(1) S951 number(3,0) SGRESULT number(3,0) S906A number(2,0) V233 number(2,0) V3A00L number(2,0) V537 number(3,0) HS102 number(2,0) D118XI char(1) HB12A number(6,0) G124 number(3,0) SH283T number(5,0) SH6YJ number(2,0) HV232B number(2,0) S523T number(2,0) HV243B char(1) D115H char(1) V784Q char(1) M49E char(1) CHL6 number(3,0) SH123D number(2,0) D118XD char(1) M2G number(2,0) M45 number(2,0) SG216H number(2,0) S577G1 number(3,0) D115R number(2,0) HV012 number(3,0) HB1 number(3,0) V104 char(1) SG228Z number(2,0) S938 number(2,0) SH227 number(6,0) HV017 number(2,0) S903Z number(2,0) S538O number(2,0) S540F number(2,0) HV235 number(2,0) SH202 number(3,0) V379 char(1) V380 char(1) S948 number(3,0) SG266B number(7,0) V413A char(1) HV027 number(2,0) V3A00Z number(2,0) V762AK char(1) V762BB char(1) H4M number(3,0) H5D number(3,0) V851B char(1) HW72 number(5,0) H37K number(2,0) S229C number(2,0) V844 char(1) HV019 number(2,0) HV020 number(2,0) SG126 number(7,0) SG228I number(2,0) V770I number(2,0) S906 number(2,0) S937C number(2,0) SH231AE number(6,0) D119XI char(1) S919 number(3,0) S920 number(2,0) H0M number(3,0) D118XH char(1) ML13G char(1) S578X number(9,0) S581F number(2,0) D118W number(2,0) D119N number(2,0) SG275 number(2,0) SH6YF number(2,0) M49X number(2,0) V212 number(3,0) HV226 number(3,0) HA57 number(2,0) SHHTEC number(4,0) SG123B number(2,0) V784K char(1) SG246X number(2,0) V474 char(1) H12H number(2,0) V412A number(2,0) M15 number(3,0) SGMUNIC char(1) SH216 number(3,0) ML13H number(2,0) ML15C char(1) V481C char(1) SH4Y number(5,0) SVALPRO number(6,0) V614 number(2,0) V3A08Z number(2,0) H37O number(2,0) S941 number(2,0) SG109 number(2,0) SG110 number(4,0) SG240I number(2,0) SH76 number(6,0) SG222Z number(2,0) S944 number(2,0) HC62 number(3,0) SH71U number(2,0) SGINTNUM number(4,0) HB55 number(2,0) S921 number(2,0) HB66 number(2,0) HA53 number(4,0) S540X number(2,0) S541O number(2,0) SHB2M number(3,0) V119 number(2,0) V120 number(2,0) SHB1Y number(5,0) SHB3D number(3,0) SG303B number(2,0) V158 number(2,0) S541M number(2,0) SH251AM number(3,0) V853C char(1) SG224 number(2,0) SG265D number(2,0) V316 number(5,0) SH68A number(2,0) SG246D number(2,0) HPCIDX number(3,0) S906B number(2,0) V204 number(2,0) SINGRTH number(9,0) SG232B number(6,0) M57U char(1) S937G number(2,0) D103B number(2,0) HV014 number(2,0) SREGALIAP number(7,0) H32L number(2,0) D117 char(1) M3K number(2,0) M60 number(2,0) HW18 number(3,0) S326 number(2,0) HC5 number(5,0) SHCOLC number(2,0) V375A char(1) V851K char(1) M65K char(1) V852B char(1) D101C number(2,0) ML19E char(1) HV228 char(1) HA11 number(5,0) V633G char(1) SG262A number(2,0) SG222B number(2,0) H2Y number(5,0) ML19Z char(1) V471D char(1) V465 char(1) SG258A number(2,0) V376 number(3,0) V471E char(1) V775 char(1) HMLIDX number(2,0) HS111 number(2,0) SH53 number(3,0) S540H number(2,0) SG246E number(2,0) S541S number(2,0) D110H char(1) HC73 number(5,0) SG229 number(3,0) S523I number(2,0) D110F char(1) S540L number(2,0) S541C number(2,0) V627 number(3,0) SH221 char(4) HV242 number(2,0) SH6XC number(2,0) S578K number(3,0) S579B number(5,0) SG223F number(2,0) HS108 number(2,0) SBONIFICA number(7,0) D118H char(1) HA12A number(6,0) SH80C number(3,0) H7Y number(5,0) ML13C number(2,0) SG127 number(3,0) ML0 number(2,0) V770C number(2,0) SGEDITO number(2,0) G113 char(1) V472A char(1) S945O number(2,0) V625A number(2,0) V762AI char(1) V762AR char(1) V307 number(2,0) V762BI char(1) D115XE char(1) S929 number(2,0) V322 number(2,0) S930 number(3,0) G117D char(1) HV238 number(3,0) SG247E number(2,0) V743F char(1) HV253A char(1) SHSMK char(1) SG279N number(2,0) S435GM number(2,0) SG123D number(2,0) H12C number(2,0) SHH2Y number(5,0) HB4 number(5,0) HA3 number(5,0) M65E char(1) S578P2 number(9,0) M71 number(4,0) B12 number(4,0) SH1H number(3,0) SH283Y number(5,0) D115XI char(1) SH28D number(3,0) SG265BB number(2,0) H12D number(2,0) V237 number(2,0) SG301A number(2,0) V855 char(1) S578Q number(3,0) HV227 char(1) SG123A number(2,0) V770J number(2,0) V219 number(3,0) V220 number(2,0) S572D number(2,0) SG252 number(2,0) V438 number(5,0) ML2 number(2,0) SHT1D number(3,0) V815C char(1) M57J number(2,0) S577E number(5,0) V616 number(4,0) H37J number(2,0) S903G number(2,0) SG204M number(3,0) D118A char(1) V820 char(1) SH235AA number(6,0) H12U number(2,0) MM12 char(1) S578W number(5,0) S581E number(2,0) SH235AF number(6,0) SG204A number(5,0) S541G number(2,0) HO104 number(2,0) V414I number(2,0) V367 number(2,0) SH133B number(2,0) HV113 char(1) V761C char(1) V774C number(2,0) D105K char(1) SH231 number(3,0) SG282B number(2,0) V762AX char(1) V762BO char(1) V238 number(2,0) S577J number(3,0) S578A number(5,0) D116 number(3,0) SH96C number(6,0) SG240A number(2,0) S229B number(2,0) SG216B number(2,0) SG216Z number(2,0) V3A00R char(1) S222 number(2,0) HV237B number(2,0) SH242C number(3,0) V3A08S number(2,0) S578M number(5,0) S579D number(3,0) SHPC1 number(5,0) H32E number(2,0) V131 char(1) M49B number(2,0) H15I number(2,0) S572 number(3,0) SG265Z number(2,0) ML13A number(2,0) G114 char(1) V603 number(4,0) S223B number(2,0) SG241D number(2,0) HV253Z char(1) SG123E number(2,0) V812 number(2,0) SG249A number(2,0) V412C char(1) G123 number(2,0) V321 number(2,0) HW58 char(1) HV253E char(1) SHSD1 number(5,0) SHRM1 number(6,0) HV237F number(2,0) SH9Y number(5,0) SH227AB number(6,0) V304 char(1) SG241C number(2,0) M57P number(2,0) V3A08AB char(1) HV008 number(5,0) H3M number(3,0) H4D number(3,0) SHB1M number(5,0) V604 number(2,0) SHB2D number(5,0) D124 char(1) ML13K number(2,0) ML14B char(1) SH614 number(2,0) D119XJ char(1) V3A08AD char(1) SQUINTIP number(2,0) V784I char(1) S937A number(2,0) V129 number(3,0) V130 number(2,0) D118M number(2,0) V472T char(1) M55E number(2,0) V474B char(1) H38 number(2,0) D119D number(2,0) HV030 number(3,0) SH25M number(3,0) V471B char(1) V629 number(3,0) SH80MI number(3,0) V838B char(1) S326AC number(2,0) MM10 char(1) SH295A number(9,0) V770R number(2,0) V3A08X number(2,0) V784V char(1) HV230A number(2,0) S523L number(2,0) D119V number(2,0) SH515 number(2,0) V203 number(2,0) V784A char(1) SH249 number(6,0) SH250 number(6,0) SH70 number(6,0) SH248 number(2,0) H31 number(2,0) SG217F number(2,0) V152 number(3,0) IDX95 number(2,0) SG280A number(2,0) SH295BH number(3,0) SH69 number(2,0) V841 char(1) D115I char(1) FDYSTO number(4,0) S939 number(2,0) H41B char(1) H15L char(1) H2D number(3,0) H42 number(2,0) V414T char(1) HV246C char(1) SH21 number(2,0) SG265X number(2,0) ML13J number(2,0) ML14A char(1) SG269E number(2,0) SG270E number(2,0) HW6 number(6,0) SGHORAF number(3,0) MM7 number(3,0) SHIDX9 number(2,0) HML14 number(2,0) B8 number(3,0) H8M number(3,0) H9D number(3,0) S435D number(2,0) SG216X number(2,0) H37F char(1) SH125A number(2,0) M1B char(1) M29 number(2,0) D119XD char(1) SH6YA number(2,0) V3A08Q number(2,0) V827 char(1) SG201E number(2,0) H9M number(3,0) HW12 number(6,0) S325CH number(2,0) S931 number(2,0) SG218 number(2,0) V477 char(1) V625 number(2,0) H15M char(1) M4 number(3,0) SH233 number(3,0) SH615 char(6) M13 number(3,0) V463F char(1) SG247Z number(2,0) SH79U number(2,0) SH80U number(2,0) SIFUENTE3 number(7,0) HV216 number(3,0) HB0 number(3,0) V103 char(1) S1001 number(2,0) SHT3 number(2,0) V825 char(1) D101B number(2,0) SG304E number(2,0) V847 char(1) SH268 number(2,0) H32G number(2,0) SG222X number(2,0) V714A number(2,0) SGRESP number(3,0) SHMTX number(2,0) S913 number(3,0) SH3M number(3,0) SH4D number(3,0) HV244 number(2,0) SH62 number(2,0) SHP222 number(2,0) V472D char(1) S911 number(2,0) V822 char(1) SG285 number(2,0) ML21C char(1) H2M number(3,0) H3D number(3,0) M1 number(2,0) SHH3M number(3,0) S943 number(2,0) HV246I number(3,0) SG217H number(2,0) H15G number(2,0) H9 number(2,0) HV102 number(2,0) V739 number(2,0) V740 char(1) HV009 number(3,0) S908 number(3,0) HV010 number(2,0) V839A char(1) V840A char(1) HML18 number(2,0) IDXML number(2,0) V235 number(2,0) ML13L number(2,0) M57I number(2,0) V762AS char(1) M49G char(1) V762BJ char(1) S572X number(2,0) HV219 number(2,0) HV220 number(3,0) SH197C number(2,0) SH110L number(2,0) SGHORAI number(3,0) HV253B char(1) SG265AX number(2,0) SG228G number(2,0) HV253 char(1) M55J number(2,0) D110E char(1) V3A05 char(1) D101G number(2,0) V823 number(2,0) SG304X number(2,0) V842 char(1) HML7 number(3,0) D110A number(2,0) V408 char(1) S937B number(2,0) HV140 number(2,0) D115Y number(2,0) V784U char(1) SHT1Y number(5,0) M10 number(2,0) V838C char(1) SH63 number(2,0) V409 number(2,0) V410 number(2,0) D118XG char(1) HV011 number(2,0) HA67 number(3,0) V467K char(1) V743B number(2,0) SHD4Y number(5,0) HVIDX number(3,0) SG217C number(2,0) SG271 number(2,0) HML1 char(1) S506AY number(5,0) V835B char(1) D115N number(2,0) S714E number(2,0) SH118A number(2,0) SH251BH number(3,0) D105F number(2,0) SG240H number(2,0) D129 char(1) SG240X number(2,0) S114GX number(3,0) V824 char(1) S573D number(3,0) V395 char(1) V405 number(2,0) V851C char(1) D121 number(2,0) S569B number(2,0) S570B number(2,0) SH251A number(9,0) V535 number(2,0) V216 number(2,0) HB11 number(5,0) V850A char(1) S325O number(2,0) D118I char(1) SGMINUTI number(3,0) S326AX number(2,0) D119S number(2,0) D122A number(2,0) S903F number(2,0) SG119B number(2,0) SHB3 number(2,0) SG120B number(2,0) SG272B number(7,0) SH26 number(3,0) V829 char(1) H14 number(2,0) H12P number(2,0) V830 char(1) H32I number(2,0) SH273 number(5,0) AWFACTU number(5,0) SG247C number(2,0) HMLC number(3,0) SH80M number(3,0) SINGRTHP number(9,0) HV237K char(1) M39A number(2,0) V633A char(1) S523B number(2,0) S928 number(2,0) SH118B number(2,0) HA50 char(1) V3A08AC char(1) S583B number(3,0) V536 number(2,0) S541R number(2,0) V762AN char(1) V762BE char(1) HV116 number(2,0) SG235 number(2,0) SH78A number(6,0) M55K number(2,0) HML32G char(1) V3A08B number(2,0) SH6YE number(2,0) SG222K number(2,0) M65D char(1) MMC4 char(1) S577O number(5,0) S578F number(9,0) HV236 char(1) SG223B number(2,0) SG304D number(2,0) SH80AI number(5,0) H8Y number(5,0) H12J number(2,0) S435GK number(2,0) SH284G number(4,0) SG254 number(3,0) G106 number(3,0) CHL7 number(2,0) B10 number(2,0) V217 char(1) V472N char(1) D118P number(2,0) V527 number(4,0) D119G number(2,0) V784B char(1) D101J char(1) V784C char(1) S578P number(3,0) S579G number(9,0) HA35 char(1) SG118A number(7,0) SHBM number(5,0) SG208B number(7,0) SH3 number(2,0) H12Z number(2,0) D125 char(1) V472U char(1) V474C char(1) SG311 number(3,0) S523S number(2,0) HC32 number(5,0) SG301F number(2,0) V376A char(1) HV013 number(3,0) HV237E number(2,0) SHDISTRICT number(3,0) V414F number(2,0) H4Y number(5,0) SG105 number(2,0) SG269K number(2,0) S578Y number(3,0) S581G number(2,0) HV209 number(2,0) D101H char(1) SHD4 number(2,0) HV210 number(2,0) SG270K number(2,0) SH1Y number(5,0) SH55 number(2,0) V472R char(1) BORD number(3,0) HB58 char(1) SH238 number(6,0) HD101 number(4,0) SG123C number(2,0) ML13P char(1) V631 char(1) S28DAYS number(2,0) S714D number(2,0) H37G char(1) D105C number(2,0) SH9M number(3,0) ML15B char(1) SG256A number(2,0) V762BU char(1) MM14 number(3,0) H37A number(2,0) S540E number(2,0) HV218 number(2,0) SH234C number(6,0) HC52 number(2,0) HB3 number(5,0) V624 number(3,0) S577L number(9,0) S578C number(3,0) V762AC char(1) MMC1 number(3,0) SG222C number(2,0) S114B number(2,0) SH2X number(2,0) SG223E number(2,0) H5Y number(5,0) G117H char(1) M27 number(2,0) SHT2Y number(5,0) M65X char(1) HC12 number(6,0) V472G char(1) V415 number(2,0) SH212D number(2,0) H43 number(2,0) S435H number(4,0) V719 number(2,0) V454 number(2,0) B2 number(5,0) S435GF number(2,0) ML24C char(1) V761B char(1) H3Y number(5,0) SINGRESOIB number(3,0) H12G number(2,0) HV118 number(2,0) ML13Z number(2,0) S1004 number(2,0) H7 number(2,0) SH6YB number(2,0) HW51 number(3,0) H32J number(2,0) SHB13 number(2,0) V3A08L number(2,0) V613 number(3,0) V414W char(1) ML19A char(1) ML20A number(2,0) SHA0 number(3,0) SHRM3 number(6,0) SHSD3 number(5,0) SG241Z number(2,0) V468 number(2,0) SG301E number(2,0) SH295BM number(3,0) V234 number(2,0) V836 char(1) G119 number(2,0) HB32 number(5,0) V3A01 char(1) S584B number(3,0) M55C number(2,0) MM11 char(1) HA33 number(2,0) S937X number(2,0) HC11 number(5,0) V412B char(1) HA6 number(6,0) SH127B number(5,0) HA41 number(5,0) H2 number(2,0) S907 number(2,0) S573E number(5,0) S576C number(5,0) V3A08G number(2,0) S581J number(2,0) D107 number(2,0) V472H char(1) V784S char(1) SG237A number(2,0) IDX5CS number(3,0) V528 number(3,0) V325A char(1) V832C char(1) V853B char(1) MM8 number(5,0) D110C number(2,0) SH226 number(3,0) SG123X number(2,0) V467M char(1) SG219A number(2,0) HO106 number(2,0) V732 number(2,0) HV253G char(1) SHH3Y number(5,0) B4 number(2,0) HV230B number(2,0) D118XK char(1) HB40 number(5,0) V763C number(2,0) V767C char(1) V419 number(2,0) V420 char(1) ML101 char(1) S326AA number(2,0) S940M number(3,0) HV246J char(1) SG240D number(2,0) HB63 number(2,0) S541X number(2,0) M70 number(2,0) G112 char(1) M36 char(1) D115K number(2,0) M42B char(1) SG225B number(7,0) V762AF char(1) V744D number(2,0) SH127A number(2,0) B5 number(2,0) S522D number(2,0) V467L char(1) V851F char(1) HW17 number(3,0) H20 number(2,0) SH80A number(5,0) SG278 number(2,0) M3M number(2,0) M62 number(2,0) S581I number(2,0) V157 number(2,0) S1113 number(2,0) S926 number(2,0) SG113D number(6,0) V359 number(3,0) V360 number(3,0) V834C char(1) HV000 char(4) SG233 number(2,0) H36A number(2,0) SG223Z number(2,0) SG304B number(2,0) SH139C number(3,0) HV246H number(3,0) HC8 number(5,0) V762AP char(1) V762BG char(1) D127 char(1) D105E number(2,0) V481F char(1) HA62 char(1) SG223G number(2,0) SH139B number(3,0) SH231AC number(6,0) H12S number(2,0) V469E number(2,0) V851D char(1) V815A char(1) SG207B number(2,0) V762AH char(1) V302A number(2,0) S578U number(3,0) H12Y number(2,0) S581C number(2,0) SG247X number(2,0) SG241G number(2,0) M55I number(2,0) V414P number(2,0) M57N number(2,0) M49Z number(2,0) SG202H number(2,0) V446 number(5,0) V3A00K number(2,0) S573A number(2,0) HV239 char(1) HV240 char(1) HB35 number(3,0) V413D char(1) V784O char(1) M57L number(2,0) H6M number(3,0) H7D number(3,0) V418 number(2,0) S506AD number(3,0) HV213 number(3,0) SH68C number(3,0) SH197E number(2,0) V211 number(5,0) V311 char(1) V784F char(1) V472K char(1) V473B char(1) S325CB number(2,0) HA5 number(5,0) SG219B number(7,0) SINGRESOO number(8,0) M55L char(1) S577G2 number(5,0) V848 char(1) SG211 number(2,0) ML23A number(2,0) V122 number(2,0) S940Y number(5,0) D101E number(2,0) HW52 number(2,0) SG243A number(2,0) HML31 number(2,0) ML13X number(2,0) V414H number(2,0) VCAL char(73) S540I number(2,0) V805 number(4,0) M2B number(2,0) M39 number(2,0) G117Y char(1) SH128 number(3,0) SH68 number(2,0) HMLD number(3,0) D119T number(2,0) D122B number(2,0) H15C number(2,0) V750 number(2,0) D118C number(2,0) V754JP number(2,0) S573 number(3,0) SGINTM number(3,0) SH2D number(3,0) SH1M number(3,0) H37M number(2,0) V849 char(1) SG269C number(2,0) V754BP char(1) SG270C number(2,0) M1D number(3,0) M57T number(2,0) SH251 number(2,0) SH6XA number(2,0) HB51 number(3,0) V846 char(1) SG269B number(2,0) SG270B number(2,0) SG228C number(2,0) D118XJ char(1) SH215 number(3,0) M57A number(2,0) SG223K number(2,0) V770D number(2,0) V134 number(2,0) G109 char(1) G110 char(1) SH3H number(3,0) SH56 number(3,0) SG258B number(7,0) S523R number(2,0) D118Y number(2,0) D119P number(2,0) S325FX number(2,0) HML32B char(1) SH74 number(6,0) SH3X number(2,0) SG269X number(2,0) SG270X number(2,0) H32T number(2,0) S510J number(2,0) SH128B number(5,0) V3A00F number(2,0) HA69 char(1) HA70 char(1) V853A char(1) SGSUPERV number(4,0) G111 char(1) D119XG char(1) H41A char(1) SH71 number(3,0) D119W number(2,0) SG241I number(2,0) V409A char(1) V410A char(1) MMC5 number(3,0) D115B number(2,0) SG201J number(2,0) SG202A number(2,0) SH69A number(2,0) V471F char(1) V437 number(5,0) H32F number(2,0) HV023 number(3,0) HV101 number(3,0) ML19D char(1) SH279 number(2,0) SH280 number(5,0) V242 number(5,0) D110D char(1) S523D number(2,0) S903H number(2,0) SG107 number(2,0) HV040 number(4,0) HML30 number(3,0) V414V number(2,0) S577Q number(3,0) S578H number(3,0) V463X char(1) V472C char(1) SG264 number(2,0) H37N number(2,0) S435F number(2,0) G117X char(1) SH6YI number(2,0) M55X number(2,0) M57F number(2,0) S924 number(3,0) V769 char(1) V770 number(2,0) V3A02 char(1) V3A00H number(2,0) V202 number(2,0) SG227 number(6,0) M2K number(2,0) M55M char(1) V141 number(2,0) M3B number(2,0) M50 number(2,0) V323A number(3,0) S572B number(2,0) SHP216 number(3,0) V414E number(2,0) SGMINUTF number(3,0) SH6M number(3,0) S439A number(3,0) SH7D number(3,0) V462 char(1) SH92 number(3,0) SH259 number(6,0) HA1 number(3,0) SH260 number(6,0) V837 char(1) V213 number(2,0) V458 char(1) ML22B char(1) SH235AC number(6,0) S435GG number(2,0) H37Z number(2,0) SG113A number(6,0) HV106 number(2,0) V701 number(2,0) V633B char(1) V439 number(5,0) V440 number(5,0) V602 number(2,0) SH7M number(3,0) SH8D number(3,0) D103D char(1) SG217E number(2,0) V634 char(1) SG240Z number(2,0) S903E number(2,0) HB53 number(4,0) V784D char(1) SH251BM number(3,0) HV232D number(2,0) SG222F number(2,0) HV237 number(2,0) V312 number(3,0) ML22C char(1) HA56 number(4,0) SG116A number(3,0) ML13D number(2,0) D118L number(2,0) D119C number(2,0) H36F char(1) HML17 number(2,0) SG201D number(2,0) MMIDX number(3,0) V774B number(2,0) D100D number(2,0) HML2 char(1) H31C number(2,0) V502 number(2,0) D105A number(2,0) SH1MO number(3,0) B11 number(4,0) V833B char(1) M49Y number(2,0) HC51 number(3,0) SGINT number(9,0) M55G number(2,0) H10 number(2,0) ML13M number(2,0) V803 number(3,0) SG240B number(2,0) SH67 number(3,0) M57R number(2,0) HC19 number(5,0) D115XJ char(1) ML16A number(2,0) SH77C number(6,0) SVIVIG2 number(2,0) SG262B number(6,0) SH75U number(2,0) V384A number(2,0) S936 number(2,0) SH268I number(4,0) HS107 number(2,0) V756 number(2,0) M73 number(3,0) S114C number(2,0) D115G number(2,0) M65H char(1) V413B char(1) SH235AD number(6,0) HML11 number(2,0) V754DP number(2,0) V768C char(1) HV109 number(2,0) HW10 number(5,0) HV110 char(1) S591 number(3,0) V745A char(1) G117C char(1) SHED3 number(2,0) V3A00P char(1) V337 number(3,0) V761 char(1) V784H char(1) SG116C number(3,0) V784J char(1) SG217I number(2,0) SH8 number(2,0) V762AE char(1) S568E number(2,0) HV246 number(2,0) SVIVIG1 number(2,0) SG208A number(2,0) HV237X number(2,0) SH79 number(3,0) SH80 number(4,0) V411A number(2,0) HO103 number(2,0) V839 char(1) V840 char(1) SG265AB number(2,0) M3H number(2,0) SG247Y number(2,0) V457 number(2,0) V472O char(1) SG279U number(2,0) SG282C number(2,0) V762AV char(1) V762BM char(1) SG111 number(3,0) HV122 number(2,0) HV225 number(2,0) HW70 number(5,0) HV127 char(1) SG288 number(2,0) SH78 number(2,0) M5 number(3,0) SH1 number(14,0) V153 number(2,0) V472L char(1) HB52 number(2,0) MM5 char(1) V814 number(2,0) H0D number(3,0) H22 number(2,0) S569D number(2,0) S435GL number(2,0) V159 number(2,0) V160 number(2,0) S570D number(2,0) S306A number(2,0) M2F number(2,0) M44 char(1) SHCMC number(4,0) IDX92 number(3,0) HV007 number(5,0) SG256B number(6,0) SH3Y number(5,0) SH75 number(2,0) V633E char(1) SH227AG number(6,0) ML13E number(2,0) V762AO char(1) M57V char(1) V762BF char(1) SH295AD number(3,0) V414C char(1) D118V number(2,0) D119M number(2,0) HML32D char(1) HA65 number(2,0) V102 number(2,0) SHT2 number(2,0) V762BZ char(1) SH258 number(3,0) SG217Y number(2,0) S114G number(2,0) H37L number(2,0) V762AQ char(1) V762BH char(1) SH271 number(5,0) V3A00N number(2,0) SH94 number(6,0) H32X number(2,0) S576A number(3,0) S823B number(2,0) D118X number(2,0) D119O number(2,0) SH122C number(5,2) HC17 number(3,0) SG280B number(7,0) V124 number(2,0) V482B char(1) D130A char(1) HV207 number(2,0) SH91 number(2,0) HV044 char(1) SG216A number(2,0) H37D number(2,0) V467G char(1) SH133C number(2,0) SG265H number(2,0) V414D char(1) V3A00J number(2,0) V731 number(2,0) S577C number(3,0) V3A08N number(2,0) S576H number(9,0) HW8 number(5,0) SG202G number(2,0) ML1 number(3,0) HB56 number(4,0) SG228D number(2,0) BIDX number(3,0) H12K number(2,0) H13B number(2,0) V762AW char(1) V762BN char(1) SH8Y number(5,0) SH227AE number(6,0) SG222I number(2,0) SG237B number(6,0) SG241E number(2,0) V763E char(1) V137 number(2,0) S325A number(2,0) SH516 char(6) S541Y number(2,0) V138 number(2,0) D119XA number(2,0) HV246G number(3,0) V128 number(3,0) S536K number(2,0) SG281 number(2,0) V476 char(1) V207 number(2,0) REC84_GROUP char(1) HML5 number(2,0) G121 number(2,0) G107 number(3,0) HC58 char(1) SH224I number(4,0) D115S number(2,0) D117A number(2,0) IDX99 number(2,0) HIDX number(2,0) IDX96 number(2,0) SG269F number(2,0) SG270F number(2,0) SG207 number(3,0) HMLB number(3,0) S325CX number(2,0) HV103 number(2,0) M49A number(2,0) H12L number(2,0) HV221 number(2,0) HV246A char(1) HV237C number(2,0) HV246E char(1) V784T char(1) V744B number(2,0) S5YEARS number(2,0) V3A08A char(1) S325CE number(2,0) S916 number(2,0) S570 number(3,0) HC53 number(4,0) CHL5 number(2,0) V447A number(3,0) V3A04 char(1) V414R char(1) S575 number(9,0) HMLA number(3,0) SINGRESOTP number(8,0) S541E number(2,0) V784E char(1) V3A08F number(2,0) S103A number(2,0) SG277 number(2,0) H32A number(2,0) SH73 number(6,0) SG301H number(2,0) SG202X number(2,0) V227 number(2,0) H32P number(2,0) V768A char(1) V481B char(1) HS104 number(2,0) SG245 number(2,0) V813 number(2,0) SH2MO number(3,0) S578P1 number(5,0) SG248 number(2,0) S616 number(3,0) SG104 number(2,0) SH505 number(4,0) M49C char(1) HML34 char(6) SH79N number(7,0) SH80N number(7,0) G101 number(2,0) SH6YC number(2,0) S927 number(2,0) B13 number(2,0) V762AM char(1) V762AA char(1) V541 char(1) V481D char(1) V762BD char(1) SHB1D number(3,0) HC3 number(5,0) SH255D number(4,0) SH257 number(3,0) FSYSTO number(4,0) S904 number(2,0) SG230M number(3,0) SG201I number(2,0) V832B char(1) SINGRESOIP number(2,0) HB60 number(2,0) HB68 number(2,0) S540W number(2,0) S541N number(2,0) V811 number(2,0) V406 number(2,0) SG214 number(2,0) HML16A number(3,0) S714BC number(2,0) G118 number(2,0) D118Q number(2,0) D119H char(1) D119X number(2,0) SG286 number(6,0) V474D char(1) M55O char(1) SG253B number(4,0) S541L number(2,0) V466 char(1) V784P char(1) H12R char(1) M3J number(2,0) SHP221 number(4,0) SG202N char(1) HML16 number(3,0) SH76N number(7,0) HV128 char(1) HW5 number(5,0) V414K number(2,0) V715 number(3,0) V770V number(2,0) SG123J number(2,0) MIDX number(2,0) S909 number(2,0) S910 number(2,0) SHT3M number(3,0) D130B char(1) V444A number(5,0) SG216E number(2,0) D103C char(1) H31E number(2,0) D115E number(2,0) S903X number(2,0) SH110K number(2,0) SH295BC char(6) S582 number(2,0) V3A00C number(2,0) S325FA number(2,0) S578J number(9,0) S579A number(3,0) SG117A number(7,0) S576J number(3,0) S577A number(5,0) SHADULT35 number(2,0) SH242B number(2,0) SH223 number(3,0) ML19X char(1) D114 number(2,0) SHMLB number(3,0) SHED1 number(2,0) V529 number(4,0) V530 number(2,0) V511 number(3,0) IDXCHL number(3,0) SG225A number(2,0) S918 number(2,0) SG239 number(2,0) SIFUENTE2 number(7,0) V770L number(2,0) V413C char(1) SH255S number(4,0) S523G number(2,0) V503 number(2,0) S325CG number(2,0) H15H number(2,0) SHUPAZILA number(3,0) V3A00Q char(1) V763G char(1) SGZONA number(2,0) SH61 number(3,0) D101D number(2,0) M57Q number(2,0) V774A number(2,0) V3A06 char(1) V481E char(1) H12V number(2,0) SG201A number(2,0) D115XF char(1) SG201B number(2,0) AWFACTT number(5,0) SHP4D number(3,0) H32U number(2,0) V834B char(1) S541Q number(2,0) SH2 number(2,0) M42D number(2,0) SG101 number(3,0) HC1 number(3,0) V826A char(1) H3 number(2,0) S541K number(2,0) SH6YG number(2,0) V463G char(1) V3A00D number(2,0) D118S number(2,0) D119J number(2,0) D121A number(2,0) S522C number(2,0) SH231AD number(6,0) AWFACTE2 number(6,0) S932 number(2,0) HV206 number(2,0) SH123A number(2,0) SH198C number(2,0) D005 number(8,0) D119XK char(1) SH6YD number(2,0) H7M number(3,0) V3A00S number(2,0) M57X number(2,0) H8D number(3,0) V741 number(2,0) M17 number(2,0) V779 char(1) V780 char(1) MM15 char(1) D105D number(2,0) SG125 number(2,0) SG282A number(2,0) SH28C number(2,0) V464 char(1) HS105 number(2,0) SIFUENTE1 number(8,0) MMC2 number(3,0) REC31_GROUP number(2,0) V414N number(2,0) V3A03 char(1) S572A number(2,0) SH234 number(2,0) SH7 number(2,0) HML15 char(1) V507 number(3,0) S566 number(2,0) SHMLA number(3,0) ML13O char(1) SH283 number(9,0) SG240C number(2,0) SG241A number(2,0) H15B number(2,0) S577G number(3,0) SG241F number(2,0) G117A char(1) G104 number(2,0) D110G char(1) H31D number(2,0) SH283D number(3,0) D108 number(2,0) SG265AC number(2,0) V762AB char(1) V3A00W number(2,0) D101I char(1) S604A number(3,0) S578N number(9,0) S579E number(3,0) HV245 number(4,0) SH251B number(5,0) V838A char(1) HV237Z number(2,0) S922 number(2,0) D115W number(2,0) H37E number(2,0) V482A char(1) H13 number(2,0) HA13 number(2,0) SH242A number(6,0) SH264D number(4,0) SG202M number(2,0) M55H number(2,0) V762AT char(1) V762BK char(1) G108 number(3,0) H0 number(2,0) V474E char(1) HV026 number(2,0) SHP218 number(3,0) SH228 number(2,0) SG217Z number(2,0) M55B number(2,0) SHB2Y number(5,0) D115L number(2,0) V481H char(1) V455 number(2,0) G115 char(1) G122 number(3,0) HV004 number(4,0) SG114A number(7,0) SH139D number(3,0) D118D number(2,0) V763F char(1) V190 number(2,0) D105I number(2,0) D118B number(2,0) S435GA number(2,0) S325CC number(2,0) SHB3M number(3,0) SH251AY number(5,0) M55N char(1) V744E number(2,0) S578S number(5,0) S581A number(3,0) S946 number(2,0) SG241H number(2,0) HA12 number(6,0) HB57 number(2,0) V3A00V number(2,0) HS101 number(2,0) S541I number(2,0) V372A number(2,0) V106 number(2,0) H0Y number(5,0) H45 char(1) HV202 char(1) M2D number(2,0) SHB1 number(3,0) V363 number(3,0) SH94A number(2,0) M2N number(2,0) M3E number(2,0) D118XB char(1) SG247B number(2,0) M49F char(1) SH253 number(5,0) HML32E char(1) D100B number(2,0) HO105 number(2,0) HV234A number(2,0) HA54 number(2,0) HV107 number(2,0) SG244 number(2,0) V3A08J number(2,0) V3A09A char(1) HV246D char(1) ML11 char(1) S577F number(9,0) SG265AD number(2,0) V474H char(1) IDXHML number(2,0) SG238 number(2,0) V208 number(2,0) S576F number(3,0) S435C number(2,0) HS103 number(2,0) HW13 number(2,0) S577N number(3,0) S578E number(5,0) SHH2M number(3,0) SHH3D number(3,0) HV018 number(4,0) V763D char(1) S578R number(3,0) HD100 number(3,0) AWFACTE number(5,0) V632 number(2,0) V412 char(1) S569A number(2,0) S570A number(2,0) S576E number(3,0) V467H char(1) S580 number(3,0) SH96A number(6,0) V472P char(1) HV032 number(2,0) SH221AH number(3,0) HV237I char(1) HA55 number(2,0) SH241 number(6,0) V3A08V number(2,0) ML14Y char(1) V3A00A number(2,0) D119XB char(1) V3A08D number(2,0) HA0 number(3,0) V243 number(2,0) D115J number(2,0) SH0Y number(5,0) SGWEIGHT number(9,0) SG263 number(2,0) SH104A number(2,0) CHL1 number(2,0) HW56 number(5,0) HV016 number(3,0) S937E number(2,0) H37H number(2,0) SG265AY number(2,0) SG291 number(3,0) SH28 number(3,0) ML16B char(1) V414U char(1) SG269H number(2,0) S541P number(2,0) SG270H number(2,0) D1310A number(2,0) HC68 number(5,0) SHB3Y number(5,0) SG265C number(2,0) SG287 number(2,0) SH227AD number(6,0) ML19C char(1) SGPROVIN number(3,0) ML20C char(1) SHT1M number(3,0) H5M number(3,0) H6D number(3,0) SHT2D number(3,0) HV253X char(1) H32Y number(2,0) M65G char(1) D115U char(1) V3A08E number(2,0) SG119A number(7,0) SG120A number(6,0) ML19Y char(1) SH231AF number(6,0) HW71 number(5,0) SG223Y number(2,0) HMHIDX number(3,0) S325CZ number(2,0) S540A number(2,0) S435J number(2,0) S934 number(2,0) SH231AB number(6,0) SG221 number(2,0) S229A number(2,0) S325CA number(2,0) SG202K number(2,0) V3A07 number(3,0) SGINTD number(3,0) IDX9A number(3,0) SG203B number(3,0) V469X number(2,0) V472F char(1) AWFACTR number(5,0) V702 number(3,0) HC10 number(5,0) V417 number(2,0) V834A char(1) S905Y number(5,0) H44C char(1) D119Q number(2,0) V474F char(1) HV006 number(3,0) SH2H number(3,0) V851I char(1) V626 number(3,0) SH231AA number(6,0) SG217B number(2,0) HA63 char(1) S589 number(3,0) S523J number(2,0) S569E number(2,0) D105M char(1) HV243C char(1) SCORE number(3,0) D115T number(2,0) B16 number(3,0) SG202F number(2,0) SG123F number(2,0) H12M number(2,0) S506AM number(3,0) D115XD char(1) SH235AB number(6,0) HV246B number(3,0) SHFLG number(2,0) D118N number(2,0) D119E number(2,0) HV270 number(2,0) S410J number(3,0) M57B number(2,0) SH90 number(2,0) V362 number(2,0) SH33 number(2,0) V3A08T number(2,0) M2H number(2,0) M46 number(4,0) V319 number(2,0) V705 char(1) V320 number(2,0) HW2 number(5,0) V826 char(1) S823A number(2,0) M3F number(2,0) M54 number(2,0) V301 char(1) M49D char(1) S714BA number(2,0) V762BS char(1) V717 char(1) V785 number(2,0) S588 number(2,0) SG117B number(2,0) M9 number(3,0) SH23 number(3,0) HB33 number(2,0) SH286 number(2,0) HO102 number(2,0) H34 number(2,0) SG223H number(2,0) V472I char(1) D115XA number(2,0) HML21 number(2,0) HW57 number(2,0) V770F number(2,0) M19 number(5,0) SG253 number(4,0) D115XB char(1) V721 char(1) V421 char(1) V318 number(2,0) D119U char(1) D122C number(2,0) SH239 number(6,0) SH240 number(2,0) MM6 number(3,0) V766A char(1) HML6 number(2,0) SG268 number(2,0) SH133A number(3,0) S573B number(9,0) D104 number(2,0) HA32 number(5,0) ML15A number(2,0) SH218 number(3,0) V467A char(1) ML23B char(1) HA60 char(1) S435GZ number(2,0) HV042 number(2,0) V828 char(1) MM2 number(2,0) V445 number(5,0) HV124 number(3,0) H36C number(2,0) HC27 number(2,0) HV237D number(2,0) V113 number(3,0) SHH3 number(2,0) SGHOGAR number(3,0) D115XH char(1) SG123I number(2,0) V123 number(2,0) SG128 number(2,0) HML8 number(2,0) SH57 number(2,0) V393 char(1) HMLE char(1) S714AA number(2,0) V136 number(3,0) S435GH number(2,0) S325B number(2,0) V532 number(2,0) S1002 number(2,0) SG213B number(7,0) SG307 number(2,0) V833A char(1) SH4M number(3,0) SH5D number(3,0) HHID char(7) SH72 number(6,0) MM4 number(5,0) SH24 number(2,0) SG265AG number(2,0) S523O number(2,0) SG201H number(2,0) SH62A number(2,0) V447 number(2,0) V475 char(1) S523A number(2,0) D118XE char(1) SH25 number(2,0) HC15 number(2,0) SG232A number(2,0) SH295 number(2,0) SH25Y number(5,0) ML13B number(2,0) SH227AC number(6,0) S942 number(3,0) SH616 number(2,0) M1A number(2,0) M28 number(2,0) HC0 number(3,0) V115 number(4,0) S523N number(2,0) D115M number(2,0) SH27 number(2,0) H21A number(2,0) V139 number(3,0) V140 number(2,0) HO107 number(2,0) H32V number(2,0) H33M number(3,0) H40D char(1) SH221B number(4,0) SG265AA number(2,0) V501 number(2,0) HS106 number(2,0) SG112B number(2,0) S523C number(2,0) HV237A number(2,0) B15 number(2,0) SG223X number(2,0) M1E number(5,0) HML32 number(2,0) S540B number(2,0) HA66 number(2,0) H32N number(2,0) S541J number(2,0) V471G char(1) SCHL145 number(2,0) V443 number(6,0) S223A number(2,0) S326B number(3,0) HC2 number(5,0) SG265G number(2,0) V801 number(5,0) AWFACTE3 number(6,0) SH72U number(2,0) HB65 number(2,0) V474I char(1) SH72N number(7,0) S541T number(2,0) D119R number(2,0) SH251AD number(3,0) SGEDITC number(4,0) SG116D number(3,0) V777 char(1) V411 number(2,0) SG223I number(2,0) ML21A char(1) SG270Y number(2,0) HV123 number(2,0) HV237G number(2,0) SH0 number(2,0) SG301B number(2,0) D128 char(1) H40Y char(1) H37Y number(2,0) S435I number(2,0) S577I number(3,0) SG202I number(2,0) S576I number(3,0) S945 number(2,0) SGASTOTI char(1) SG231 number(3,0) S902 number(2,0) SG246B number(2,0) S325CD number(2,0) D119XF char(1) SH276 number(2,0) V467B char(1) V831 char(1) SHP221AH number(3,0) HV217 number(2,0) D112A number(2,0) S569C number(2,0) S823 number(2,0) S570C number(2,0) HV025 number(2,0) SH220B char(4) S523E number(2,0) S905M number(3,0) SH77 number(2,0) H32R char(1) SH77A number(6,0) SG122 number(2,0) SG216I number(2,0) V414G number(2,0) HWIDX number(2,0) V762BR char(1) S933 number(2,0) D101A number(2,0) V463Z char(1) IDX98 number(2,0) V101 number(2,0) S576D number(9,0) V414L number(2,0) SHT1 number(2,0) H31B number(2,0) D115V number(2,0) HW15 number(2,0) V626A number(3,0) V394 char(1) V404 number(2,0) V384C number(2,0) HML35 number(2,0) SH251BC char(6) SHB2 number(3,0) V531 number(3,0) S577B number(9,0) V317 number(5,0) V471A char(1) HA40 number(5,0) M57G number(2,0) S325FE number(2,0) SH6YH number(2,0) H44A number(3,0) SH254 number(3,0) SG228X number(2,0) SG269A number(2,0) HV232 number(2,0) SG270A number(2,0) SG222D number(2,0) SG274 number(6,0) V416 char(1) SG303A number(2,0) SG113B number(6,0) V456 number(4,0) SG114B number(7,0) HO100 number(3,0) HML32C char(1) S587 number(3,0) S581X number(2,0) V815B char(1) M2J char(1) M3A number(2,0) M48 char(1) HW4 number(5,0) S1003 number(2,0) SHCOL21A number(3,0) HV126 char(1) HV253C char(1) V467D char(1) HV205 number(3,0) V444 number(6,0) SHP4Y number(5,0) HV246K char(1) HA68 number(2,0) SH286I number(4,0) SG222H number(2,0) SH295AM number(3,0) S803A number(2,0) V472B char(1) ML23C char(1) SG209 number(2,0) SG210 number(2,0) V835C char(1) SH5M number(3,0) SH6D number(3,0) SH227AA number(6,0) SH82 number(2,0) SH264S number(4,0) V762AU char(1) V762BL char(1) SH224 number(2,0) HV120 number(2,0) V525 number(3,0) SG222A number(2,0) H32S number(2,0) B0 number(2,0) SH139E number(3,0) V762BT char(1) SH63B number(2,0) V770K char(1) SG228J number(2,0) SG230A number(5,0) SH295B number(5,0) SG241X number(2,0) V3A00X number(2,0) V223 number(2,0) V767B char(1) V770U number(2,0) SHED2 number(3,0) SG223C number(2,0) V3A08I number(2,0) D115X number(2,0) SH77B number(6,0) V743C char(1) HML33 char(1) S114F number(2,0) S586 number(2,0) V513 number(2,0) V442 number(6,0) SH33D number(3,0) SH6XX number(2,0) HW11 number(5,0) SH13 number(2,0) V804 number(2,0) S578L number(3,0) S579C number(9,0) D115D number(2,0) H37P number(2,0) S523Q number(2,0) SG259 number(2,0) SG260 number(2,0) V441 number(6,0) SG265F number(2,0) HV232E char(1) SH212 number(4,0) V3A00B number(2,0) D115F number(2,0) G105 number(2,0) HV237J char(1) H32M number(2,0) H33D number(3,0) D100C number(2,0) HB69 number(8,0) HB70 number(4,0) SH128A number(2,0) HS100 number(2,0) SG202J number(2,0) SG203A number(2,0) M65F char(1) SH6Y number(5,0) MM9 number(3,0) V229 number(3,0) V230 number(5,0) D118O number(2,0) D119F number(2,0) D112 number(2,0) HC30 number(3,0) S519J number(2,0) HML4 number(3,0) HB12B number(6,0) V762AZ char(1) V762BQ char(1) V770M number(2,0) S912 number(2,0) V226 number(4,0) V481X char(1) H15F number(2,0) D118XA number(2,0) SH206 number(5,0) SINGRHI number(2,0) SG217A number(2,0) CHL2 number(3,0) SG289 number(7,0) V784M char(1) SG290 number(2,0) HA12B number(6,0) V835A char(1) HW1 number(3,0) SH7Y number(5,0) V3A00U number(2,0) M57E number(2,0) M57K number(2,0) B6 number(4,0) HDPIDX2 number(2,0) SH198D number(2,0) S914 number(2,0) M55F number(2,0) SH603 number(6,0) G117G char(1) HC9 number(6,0) SH6XZ number(2,0) S114A number(2,0) H12A number(2,0) SG269J number(2,0) SG270J number(2,0) V754WP number(2,0) M66 number(2,0) SHCOLB number(2,0) HML13 number(2,0) ML13I number(2,0) V806 number(2,0) V221 number(4,0) SG265I number(2,0) V770E number(2,0) S581H number(2,0) V3A00O number(2,0) H47 number(2,0) V851J char(1) V852A char(1) V821C char(1) S571 number(2,0) S584 number(3,0) V168 char(1) V133 number(3,0) V191 number(8,0) V201 number(3,0) V3A08U number(2,0) H46A number(3,0) V414O number(2,0) H11 number(2,0) V762AL char(1) V304A char(1) V762BC char(1) SG301X number(2,0) SH235 number(2,0) HV112 char(1) SH295AY number(5,0) V214 number(2,0) V729 number(2,0) V730 number(3,0) H12N number(2,0) V467F char(1) S578T number(9,0) S581B number(5,0) D119XC char(1) H32W number(2,0) V474Z char(1) HC64 number(3,0) SG265A number(2,0) SG265AE number(2,0) SG223J number(2,0) V426 number(4,0) HW73 number(5,0) S536A number(2,0) V327 number(2,0) V784G char(1) S325E number(2,0) D118K number(2,0) D119B number(2,0) S523X number(2,0) V361 number(2,0) SH2Y number(5,0) D118G number(2,0) SH618 char(6) SH205 number(5,0) SG201N number(2,0) SG202E number(2,0) SG223D number(2,0) HV271 number(8,0) V481G char(1) V222 number(4,0) SG222G number(2,0) SINGRESOIPA number(2,0) D115XK char(1) SH81 number(3,0) SH0D number(3,0) SH22 number(2,0) SG240G number(2,0) HC57 number(2,0) SG265E number(2,0) S523H number(2,0) V467J char(1) V770H number(2,0) V467I char(1) S325FC number(2,0) V459 char(1) V460 char(1) S945A number(2,0) HC4 number(5,0) H33 number(2,0) HW19 number(5,0) SG240F number(2,0) S541U number(2,0) H15J char(1) HDPIDX number(3,0) S229D number(3,0) V481 char(1) V633C char(1) H12Q char(1) V850B char(1) D126 char(1) V633D char(1) V762BP char(1) SH3MO number(3,0) V3A00M number(2,0) HA51 char(1) M3N number(2,0) M3I number(2,0) SG265AH number(2,0) H37B number(2,0) S903A number(2,0) V769A char(1) V770A number(2,0) HV243A number(2,0) V156 char(1) SHWH number(2,0) SG306 number(2,0) D103A number(2,0) HC63 number(4,0) V763B number(2,0) MM13 char(1) S325FB number(2,0) SG205 number(3,0) S574 number(3,0) M65B char(1) V716 number(3,0) D118XF char(1) HMLIDX2 number(2,0) SG255 number(3,0) SH123C number(2,0) ML18B char(1) SH619 number(2,0) SH246S number(6,0) D105N char(1) V167 char(1) S578O number(3,0) S579F number(5,0) D111 number(2,0) V743D number(2,0) SG267 number(2,0) SH8M number(3,0) SH9D number(3,0) V770O number(2,0) D1310B number(3,0) H1 number(2,0) H21 number(2,0) SH123B number(3,0) V746 char(1) SH217 number(5,0) SALLINCI number(2,0) V770S number(2,0) SIFUENTE4 number(6,0) V463E char(1) IDXH4 number(3,0) S435GC number(2,0) HML19 number(2,0) H44B char(1) S541H number(2,0) HML20 number(2,0) HV201 number(3,0) H32B number(2,0) SH71N number(7,0) HS109 number(2,0) HS110 number(2,0) V323 number(3,0) S435GN number(2,0) D106 number(2,0) S576B number(3,0) SH235A number(2,0) M65A char(1) V851L char(1) V852C char(1) V474X char(1) SHP4M number(3,0) HV104 number(2,0) SHP220B number(4,0) S540C number(2,0) ML19B char(1) ML20B char(1) HW9 number(6,0) SG269G number(2,0) V851H char(1) S568D number(2,0) V851G char(1) D105L char(1) H37X number(2,0) V781 char(1) SG270G number(2,0) HA2 number(5,0) M65C char(1) HV015 number(2,0) SH506 number(5,0) SG246Z number(2,0) SG206B number(6,0) M2E number(2,0) H12O number(2,0) M43 number(2,0) HV241 number(2,0) V751 number(2,0) S577H number(9,0) SG250 number(2,0) M65I char(1) S104A number(2,0) HV237H char(1) HC18 number(3,0) V305 char(1) SH242 number(2,0) SH227AF number(6,0) HML9 number(3,0) SG228H number(2,0) V463A char(1) V384B number(2,0) H46B char(1) SG123G number(2,0) SG249B number(7,0) HV232Y number(2,0) HV253F char(1) HB50 number(2,0) S937D number(2,0) V623 number(2,0) V452A char(1) V833C char(1) V452C number(2,0) HB61 number(2,0) V770W number(2,0) B9 number(2,0) V506 char(1) HV214 number(3,0) HA4 number(5,0) V762BV char(1) SG113C number(6,0) V3A08M number(2,0) SH0M number(3,0) SH1D number(3,0) SG108 number(3,0) HB12 number(6,0) S325CF number(2,0) S568A number(2,0) SG301G number(2,0) SH78O number(3,0) V479 char(1) V480 char(1) V3A00G number(2,0) HV111 char(1) S114D number(2,0) SGESTR char(1) SH110I number(2,0) IDXMCS number(3,0) H12W char(1) HML1A char(1) SH262 number(6,0) H32K number(2,0) S903B number(2,0) V3A00T char(1) SH6YZ number(2,0) SH136 number(2,0) V821B char(1) SG118B number(2,0) V155 number(2,0) HV215 number(3,0) D115XC char(1) SH225 number(3,0) HB62 char(6) HC70 number(5,0) S112B number(2,0) S435GI number(2,0) SG246C number(2,0) H39 number(2,0) H40 char(1) SH281 number(5,0) V854B char(1) V413 number(2,0) SG106 number(2,0) SHT3Y number(5,0) V372 number(2,0) HC72 number(5,0) V467C char(1) SG246A number(2,0) HV022 number(3,0) S1005 number(2,0) H4 number(2,0) V453 number(4,0) HC16 number(3,0) SHP4 number(2,0) D115C number(2,0) G117F char(1) S536C number(3,0) VCOL number(2,0) D118F number(2,0) D118U char(1) D119L number(2,0) SLNPM number(2,0) M55D number(2,0) HC56 number(4,0) D115Q number(2,0) D105G number(2,0) G100 number(2,0) SHP221AM number(3,0) M3L number(2,0) M61 number(4,0) SG301C number(2,0) SH33Y number(5,0) SHP221B number(4,0) ML13N char(1) SH242I number(4,0) V315 number(3,0) H37I number(2,0) V762AD char(1) H15A number(2,0) V770G number(2,0) V633F char(1) SHC0 number(3,0) V239 number(2,0) V240 number(3,0) V3A08AA char(1) HA61 char(1) HW55 number(2,0) V508 number(5,0) M72 number(3,0) V841A char(1) HV108 number(3,0) H32O number(2,0) SH96B number(6,0) SHRM5 number(6,0) SG217G number(2,0) SH243 number(3,0) SG273 number(2,0) ML17B char(1) S326C number(2,0) S435GX number(2,0) S583 number(3,0) S577M number(3,0) S578D number(3,0) D115XG char(1) HV035 number(2,0) SH221AM number(3,0) SGDIGIT number(3,0) S325FF number(2,0) HC6 number(6,0) HW16 number(3,0) SG222E number(2,0) V743E char(1) H32H number(2,0) S536B number(3,0) SG301D number(2,0) ML12 char(1) H35 char(1) H12F number(2,0) D110B number(2,0) M2L number(2,0) M3C number(2,0) M51 number(4,0) V472J char(1) V463C char(1) V473A char(1) H36B number(2,0) V414S number(2,0) V3A08C number(2,0) S325N number(2,0) S541F number(2,0) HA58 char(1) S523M number(2,0) SG201C number(2,0) SH220 number(4,0) ML17A number(2,0) SGINTA number(5,0) HV021 number(4,0) HV211 number(2,0) SH236 number(2,0) S949 number(2,0) S950 number(3,0) SG243B number(7,0) V105 char(1) SH5Y number(5,0) HW7 number(5,0) V762BW char(1) HV028 number(8,0) V463D char(1) SH95 number(6,0) HML10 number(2,0) M11 number(4,0) SHCOLD number(2,0) S435GD number(2,0) SG201K number(2,0) SG202B number(2,0) V621 number(2,0) H12X number(2,0) SH08 number(2,0) M65J char(1) HV125 char(1) V469F number(2,0) V766B char(1) V206 number(3,0) SG216C number(2,0) M7 number(3,0) V539 char(1) V540 char(1) V770N number(2,0) V762BX char(1) SG276 number(4,0) H15 number(2,0) M57O number(2,0) S572Y number(2,0) SG129 number(2,0) SHD4D number(3,0) SG272A number(2,0) H15K char(1) V3A00I number(2,0) V3A08K number(2,0) V3A09B char(1) CHL3 number(2,0) D105B number(2,0) SG266A number(2,0) HV234 char(1) S568B number(2,0) SG103 number(3,0) SH283M number(3,0) S541W number(2,0) SH6XB number(2,0) SG217D number(2,0) SH278 number(2,0) V770T number(2,0) H37C char(1) D119Y number(2,0) G117E char(1) M35 char(1) ML21B char(1) S570X number(2,0) V452B char(1) S568C number(2,0) SG247A number(2,0) G102 number(2,0) G117I char(1) SHRESI number(2,0) SG303C number(2,0) V407 char(1) V3A08W char(1) SG124 number(2,0) SH33M number(3,0) V205 number(2,0) HB67 number(3,0) SH6 number(2,0) SH139A number(3,0) M57S number(2,0) SH604 number(5,0) D118J number(2,0) D119A char(1) M34 number(4,0) V116 number(3,0) HV024 number(2,0) HV005 number(8,0) SG292A number(7,0) V310 char(1) HOVIDX number(3,0) SG213A number(2,0) V107 number(2,0) SH237 number(6,0) V744C number(2,0) SHRI number(5,0) SG228F number(2,0) M14 number(3,0) HC71 number(5,0) ML17C char(1) HC31 number(5,0) SH279A number(2,0) SH517 number(2,0) V770Q number(2,0) S536D number(3,0) H15D number(2,0) D118R number(2,0) V209 number(2,0) V210 number(2,0) D119I char(1) IDX94 number(2,0) V3A00Y number(2,0) S585 number(2,0) V783 char(1) HC55 number(2,0) SG228A number(2,0) V241 number(5,0) H8 number(2,0) S915 number(3,0) SH245 number(6,0) SGCONGL number(5,0) V505 char(1) H5 number(2,0) D101F number(2,0) SH75N number(7,0) H36D number(2,0) S523V number(2,0) V784R char(1) H32Z number(2,0) S576G number(5,0) D102 number(2,0) H9Y number(5,0) SG201G number(2,0) V745B char(1) H36E char(1) SG202L number(2,0) SH104B number(3,0) S435GJ number(2,0) V821A char(1) SG247D number(2,0) V151 number(2,0) SH235AE number(6,0) SH284B number(4,0) V512 number(3,0) SGVISITS number(2,0) SH18 number(2,0) HV002 number(4,0) HA64 char(1) SHMLIDX number(2,0) V3A00E number(2,0) M18 number(2,0) V125 char(1) V605 number(2,0) V3A08H number(2,0) D109 number(3,0) HB6 number(6,0) S523K number(2,0) M55A number(2,0) SH122A number(2,0) HV253H char(1) H12E number(2,0) SHH1Y number(5,0) V313 number(2,0) SHCOL3B number(3,0) SG216G number(2,0) HO108 number(2,0) ML18A number(2,0) H12T number(2,0) V364 number(2,0) V472M char(1) H15E number(2,0) HV252 number(2,0) SG253A number(4,0) S917 number(3,0) H12B number(2,0) V762AG char(1) D115P number(2,0) V482C char(1) V149 number(2,0) V150 number(3,0) V628 number(3,0) D113 number(2,0) SHH1D number(3,0) V135 number(2,0) SG201L number(2,0) SG202C number(2,0) V127 number(3,0) V401 number(2,0) V770B number(2,0) D105J char(1) V854A char(1) SG217X number(2,0) M2C number(2,0) HV232C number(2,0) SHP220 number(4,0) V784N char(1) GIDX number(2,0) HB64 number(2,0) HV117 number(2,0) SH197B number(3,0) S523W number(2,0) G116 char(1) V414M number(2,0) S937H number(2,0) B3 number(5,0) HV114 char(1) +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" INPUT FEATURE_TYPE * ROUTE CSV CSV_1::REC01.All multi_reader_keyword,$(DATASET_KEYWORD_CSV_1) TO FME_GENERIC ::REC01.All ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * +$(DATASET_KEYWORD_CSV_1)_MERGE_DEF CSV_1::REC01.All GLOB_NOCASE * DEFLINE FileCode,char7,CASEID,char18,V000,char4,V001,number40,V002,number40,V003,number30,V004,number40,V005,number80,V006,number30,V007,number50,V008,number50,V009,number30,V010,number50,V011,number50,V012,number30,V013,number20,V014,number20,V015,number20,V016,number30,V017,number50,V018,number30,V019,number30,V019A,number20,V020,number20,V021,number40,V022,number30,V023,number30,V024,number20,V025,number20,V026,number20,V027,number20,V028,number40,V029,number20,V030,number30,V031,number40,V032,number20,V034,number30,V040,number40,V042,number20,V044,char1,G117B,char1,S903C,number20,V784X,char1,SH62B,number60,S326AB,number20,V763A,number20,S114E,number20,ML13F,char1,V504,number20,SHH1,number20,SH263,number60,V851E,char1,V3A08R,number20,SG265B,number20,V851A,char1,M65L,char1,D118T,number20,D118XC,char1,D119K,number20,SG234,number20,SG308,number20,V784L,char1,B7,number40,S539,number20,V845,char1,HV003,number30,ML22A,char1,V704,number30,SG292,number60,SG302,number20,M57M,number20,V767A,char1,SG116B,number30,MMC3,char1,D103F,char1,V472E,char1,D105H,number20,SG228B,number20,SG283,number60,V414J,number20,HV208,number20,H11B,number20,SG265AF,number20,S577D,number30,SG269I,number20,V474G,char1,SLNWP,number20,SH6YX,number20,SHH1M,number30,SHH2,number20,V471C,char1,HW53,number40,V414Q,char1,SHH2D,number30,SH617,number20,SH284,number40,SH235AG,number60,SG216D,number20,SG242,number20,D112N,char1,M42E,number20,SH6XY,number20,SH1X,number20,SH54,number20,HC60,number40,V481A,char1,V326,number30,V802,number50,CHL8,number30,HV212,char1,SG270I,number20,SINGRESOE,number70,SH246D,number60,HV001,number40,SG215,number20,SG265AZ,number20,H12I,number20,H32Q,char1,S523U,number20,SH_MIG,char15,H33Y,number50,V224,number30,M42A,char1,S506A,char1,V218,number30,SG201M,number20,S325J,number20,SG202D,number20,V161,number30,SH244,number60,V215,number40,SHD4M,number30,V509,number50,V510,number20,S435GE,number20,SG220,number20,M57C,char1,V414B,char1,SH284A,number40,HB5,number50,S325M,number20,HML3,number20,HC13,number20,H40M,char1,SHT2M,number30,SHT3D,number30,V231,number50,HW3,number50,HC61,number20,V768B,char1,SG228Y,number20,H6,number20,S538P,number20,S540G,number20,SH4,number20,ML13Y,number20,MM1,number20,S540D,number20,HV246F,char1,S567,number30,S577R,number30,S578I,number50,V474J,char1,HV105,number30,HA52,number20,SG201X,number20,SG257,number30,SG304A,number20,SG284,number20,S325FH,number20,V743A,number20,S435E,number20,HB2,number50,V302,char1,ML18C,char1,SG206A,number20,SH5,number20,M2A,number20,M38,number20,S433L,number30,V3A08O,char1,H32C,number20,V232,number20,SH230,number30,S937Z,number20,SH229,number30,ML19F,char1,S540K,number20,S541B,number20,HV031,number40,S325FD,number20,SG269D,number20,SG270D,number20,V843,char1,S577K,number50,S578B,number90,SH222,number20,H6Y,number50,V461,char1,HV129,char1,V3A08P,number20,S577P,number90,S578G,number30,V714,number20,HV243D,char1,B1,number30,S325D,number20,D118E,number20,HB13,number20,SH110J,number20,HV121,number20,M1C,char1,M8,number30,ML14Z,char1,D115O,number20,D100A,number20,S541D,number20,M55Z,number20,M57H,number20,M2I,number20,M47,char1,G117J,char1,SHMLC,number30,V414A,char1,SG228E,number20,SG115,number20,HC33,number20,SG222J,number20,SG223A,number20,M3G,number20,SG265AI,number20,IDXH4A,number30,SH9,number20,V225,number20,HC7,number50,MM3,number30,SH76U,number20,SG240E,number20,SG123H,number20,SG226,number20,M2M,number20,M3D,number20,M52,number30,S112A,number20,S541V,number20,SH19,number20,SH20,number20,SG251,number60,D119XH,char1,SG305,number30,HV247,number20,HML12,number20,S572C,number20,CHL4,number30,SHMLD,number30,V538,char1,S714BB,number20,S923,number20,S325FZ,number20,SG201F,number20,HML32A,char1,SH68B,number30,SHCOLA,number20,V467E,char1,M57D,char1,V770P,number20,S573C,number30,V472Q,char1,V778,char1,V478,char1,V754CP,number20,SH231AG,number60,SH232,number30,S540J,number20,M42C,number20,S541A,number20,SG216F,number20,SG304C,number20,V166,char1,HB41,number50,V744A,number20,V463B,char1,SH83,number20,SG261,number20,V770X,number20,SH292,number20,SH110H,number20,S523P,number20,SH110G,number20,V762AJ,char1,V762BA,char1,S578V,number30,S581D,number20,IDXCH2,number30,SG309,number20,D103E,char1,HV041,number30,SHRM4,number60,SG241Y,number20,SG310,number20,S435GB,number20,HV204,number40,V121,number20,S937F,number20,SG269Z,number20,AWFACTW,number50,SG270Z,number20,M6,number30,SH2M,number30,V472S,char1,V474A,char1,SH3D,number30,S903D,number20,G103,number20,HV253D,char1,SH197D,number20,HMHIDX2,number30,HO101,number20,ML16C,char1,SG253C,number40,H32D,number20,S523F,number20,SG241B,number20,HML32F,char1,S947,number20,SH93,number40,SG121,number20,HSKIDX,number30,D120,number30,V228,number20,D123,char1,HV115,char1,SG112A,number70,M19A,number20,D119XE,char1,S951,number30,SGRESULT,number30,S906A,number20,V233,number20,V3A00L,number20,V537,number30,HS102,number20,D118XI,char1,HB12A,number60,G124,number30,SH283T,number50,SH6YJ,number20,HV232B,number20,S523T,number20,HV243B,char1,D115H,char1,V784Q,char1,M49E,char1,CHL6,number30,SH123D,number20,D118XD,char1,M2G,number20,M45,number20,SG216H,number20,S577G1,number30,D115R,number20,HV012,number30,HB1,number30,V104,char1,SG228Z,number20,S938,number20,SH227,number60,HV017,number20,S903Z,number20,S538O,number20,S540F,number20,HV235,number20,SH202,number30,V379,char1,V380,char1,S948,number30,SG266B,number70,V413A,char1,HV027,number20,V3A00Z,number20,V762AK,char1,V762BB,char1,H4M,number30,H5D,number30,V851B,char1,HW72,number50,H37K,number20,S229C,number20,V844,char1,HV019,number20,HV020,number20,SG126,number70,SG228I,number20,V770I,number20,S906,number20,S937C,number20,SH231AE,number60,D119XI,char1,S919,number30,S920,number20,H0M,number30,D118XH,char1,ML13G,char1,S578X,number90,S581F,number20,D118W,number20,D119N,number20,SG275,number20,SH6YF,number20,M49X,number20,V212,number30,HV226,number30,HA57,number20,SHHTEC,number40,SG123B,number20,V784K,char1,SG246X,number20,V474,char1,H12H,number20,V412A,number20,M15,number30,SGMUNIC,char1,SH216,number30,ML13H,number20,ML15C,char1,V481C,char1,SH4Y,number50,SVALPRO,number60,V614,number20,V3A08Z,number20,H37O,number20,S941,number20,SG109,number20,SG110,number40,SG240I,number20,SH76,number60,SG222Z,number20,S944,number20,HC62,number30,SH71U,number20,SGINTNUM,number40,HB55,number20,S921,number20,HB66,number20,HA53,number40,S540X,number20,S541O,number20,SHB2M,number30,V119,number20,V120,number20,SHB1Y,number50,SHB3D,number30,SG303B,number20,V158,number20,S541M,number20,SH251AM,number30,V853C,char1,SG224,number20,SG265D,number20,V316,number50,SH68A,number20,SG246D,number20,HPCIDX,number30,S906B,number20,V204,number20,SINGRTH,number90,SG232B,number60,M57U,char1,S937G,number20,D103B,number20,HV014,number20,SREGALIAP,number70,H32L,number20,D117,char1,M3K,number20,M60,number20,HW18,number30,S326,number20,HC5,number50,SHCOLC,number20,V375A,char1,V851K,char1,M65K,char1,V852B,char1,D101C,number20,ML19E,char1,HV228,char1,HA11,number50,V633G,char1,SG262A,number20,SG222B,number20,H2Y,number50,ML19Z,char1,V471D,char1,V465,char1,SG258A,number20,V376,number30,V471E,char1,V775,char1,HMLIDX,number20,HS111,number20,SH53,number30,S540H,number20,SG246E,number20,S541S,number20,D110H,char1,HC73,number50,SG229,number30,S523I,number20,D110F,char1,S540L,number20,S541C,number20,V627,number30,SH221,char4,HV242,number20,SH6XC,number20,S578K,number30,S579B,number50,SG223F,number20,HS108,number20,SBONIFICA,number70,D118H,char1,HA12A,number60,SH80C,number30,H7Y,number50,ML13C,number20,SG127,number30,ML0,number20,V770C,number20,SGEDITO,number20,G113,char1,V472A,char1,S945O,number20,V625A,number20,V762AI,char1,V762AR,char1,V307,number20,V762BI,char1,D115XE,char1,S929,number20,V322,number20,S930,number30,G117D,char1,HV238,number30,SG247E,number20,V743F,char1,HV253A,char1,SHSMK,char1,SG279N,number20,S435GM,number20,SG123D,number20,H12C,number20,SHH2Y,number50,HB4,number50,HA3,number50,M65E,char1,S578P2,number90,M71,number40,B12,number40,SH1H,number30,SH283Y,number50,D115XI,char1,SH28D,number30,SG265BB,number20,H12D,number20,V237,number20,SG301A,number20,V855,char1,S578Q,number30,HV227,char1,SG123A,number20,V770J,number20,V219,number30,V220,number20,S572D,number20,SG252,number20,V438,number50,ML2,number20,SHT1D,number30,V815C,char1,M57J,number20,S577E,number50,V616,number40,H37J,number20,S903G,number20,SG204M,number30,D118A,char1,V820,char1,SH235AA,number60,H12U,number20,MM12,char1,S578W,number50,S581E,number20,SH235AF,number60,SG204A,number50,S541G,number20,HO104,number20,V414I,number20,V367,number20,SH133B,number20,HV113,char1,V761C,char1,V774C,number20,D105K,char1,SH231,number30,SG282B,number20,V762AX,char1,V762BO,char1,V238,number20,S577J,number30,S578A,number50,D116,number30,SH96C,number60,SG240A,number20,S229B,number20,SG216B,number20,SG216Z,number20,V3A00R,char1,S222,number20,HV237B,number20,SH242C,number30,V3A08S,number20,S578M,number50,S579D,number30,SHPC1,number50,H32E,number20,V131,char1,M49B,number20,H15I,number20,S572,number30,SG265Z,number20,ML13A,number20,G114,char1,V603,number40,S223B,number20,SG241D,number20,HV253Z,char1,SG123E,number20,V812,number20,SG249A,number20,V412C,char1,G123,number20,V321,number20,HW58,char1,HV253E,char1,SHSD1,number50,SHRM1,number60,HV237F,number20,SH9Y,number50,SH227AB,number60,V304,char1,SG241C,number20,M57P,number20,V3A08AB,char1,HV008,number50,H3M,number30,H4D,number30,SHB1M,number50,V604,number20,SHB2D,number50,D124,char1,ML13K,number20,ML14B,char1,SH614,number20,D119XJ,char1,V3A08AD,char1,SQUINTIP,number20,V784I,char1,S937A,number20,V129,number30,V130,number20,D118M,number20,V472T,char1,M55E,number20,V474B,char1,H38,number20,D119D,number20,HV030,number30,SH25M,number30,V471B,char1,V629,number30,SH80MI,number30,V838B,char1,S326AC,number20,MM10,char1,SH295A,number90,V770R,number20,V3A08X,number20,V784V,char1,HV230A,number20,S523L,number20,D119V,number20,SH515,number20,V203,number20,V784A,char1,SH249,number60,SH250,number60,SH70,number60,SH248,number20,H31,number20,SG217F,number20,V152,number30,IDX95,number20,SG280A,number20,SH295BH,number30,SH69,number20,V841,char1,D115I,char1,FDYSTO,number40,S939,number20,H41B,char1,H15L,char1,H2D,number30,H42,number20,V414T,char1,HV246C,char1,SH21,number20,SG265X,number20,ML13J,number20,ML14A,char1,SG269E,number20,SG270E,number20,HW6,number60,SGHORAF,number30,MM7,number30,SHIDX9,number20,HML14,number20,B8,number30,H8M,number30,H9D,number30,S435D,number20,SG216X,number20,H37F,char1,SH125A,number20,M1B,char1,M29,number20,D119XD,char1,SH6YA,number20,V3A08Q,number20,V827,char1,SG201E,number20,H9M,number30,HW12,number60,S325CH,number20,S931,number20,SG218,number20,V477,char1,V625,number20,H15M,char1,M4,number30,SH233,number30,SH615,char6,M13,number30,V463F,char1,SG247Z,number20,SH79U,number20,SH80U,number20,SIFUENTE3,number70,HV216,number30,HB0,number30,V103,char1,S1001,number20,SHT3,number20,V825,char1,D101B,number20,SG304E,number20,V847,char1,SH268,number20,H32G,number20,SG222X,number20,V714A,number20,SGRESP,number30,SHMTX,number20,S913,number30,SH3M,number30,SH4D,number30,HV244,number20,SH62,number20,SHP222,number20,V472D,char1,S911,number20,V822,char1,SG285,number20,ML21C,char1,H2M,number30,H3D,number30,M1,number20,SHH3M,number30,S943,number20,HV246I,number30,SG217H,number20,H15G,number20,H9,number20,HV102,number20,V739,number20,V740,char1,HV009,number30,S908,number30,HV010,number20,V839A,char1,V840A,char1,HML18,number20,IDXML,number20,V235,number20,ML13L,number20,M57I,number20,V762AS,char1,M49G,char1,V762BJ,char1,S572X,number20,HV219,number20,HV220,number30,SH197C,number20,SH110L,number20,SGHORAI,number30,HV253B,char1,SG265AX,number20,SG228G,number20,HV253,char1,M55J,number20,D110E,char1,V3A05,char1,D101G,number20,V823,number20,SG304X,number20,V842,char1,HML7,number30,D110A,number20,V408,char1,S937B,number20,HV140,number20,D115Y,number20,V784U,char1,SHT1Y,number50,M10,number20,V838C,char1,SH63,number20,V409,number20,V410,number20,D118XG,char1,HV011,number20,HA67,number30,V467K,char1,V743B,number20,SHD4Y,number50,HVIDX,number30,SG217C,number20,SG271,number20,HML1,char1,S506AY,number50,V835B,char1,D115N,number20,S714E,number20,SH118A,number20,SH251BH,number30,D105F,number20,SG240H,number20,D129,char1,SG240X,number20,S114GX,number30,V824,char1,S573D,number30,V395,char1,V405,number20,V851C,char1,D121,number20,S569B,number20,S570B,number20,SH251A,number90,V535,number20,V216,number20,HB11,number50,V850A,char1,S325O,number20,D118I,char1,SGMINUTI,number30,S326AX,number20,D119S,number20,D122A,number20,S903F,number20,SG119B,number20,SHB3,number20,SG120B,number20,SG272B,number70,SH26,number30,V829,char1,H14,number20,H12P,number20,V830,char1,H32I,number20,SH273,number50,AWFACTU,number50,SG247C,number20,HMLC,number30,SH80M,number30,SINGRTHP,number90,HV237K,char1,M39A,number20,V633A,char1,S523B,number20,S928,number20,SH118B,number20,HA50,char1,V3A08AC,char1,S583B,number30,V536,number20,S541R,number20,V762AN,char1,V762BE,char1,HV116,number20,SG235,number20,SH78A,number60,M55K,number20,HML32G,char1,V3A08B,number20,SH6YE,number20,SG222K,number20,M65D,char1,MMC4,char1,S577O,number50,S578F,number90,HV236,char1,SG223B,number20,SG304D,number20,SH80AI,number50,H8Y,number50,H12J,number20,S435GK,number20,SH284G,number40,SG254,number30,G106,number30,CHL7,number20,B10,number20,V217,char1,V472N,char1,D118P,number20,V527,number40,D119G,number20,V784B,char1,D101J,char1,V784C,char1,S578P,number30,S579G,number90,HA35,char1,SG118A,number70,SHBM,number50,SG208B,number70,SH3,number20,H12Z,number20,D125,char1,V472U,char1,V474C,char1,SG311,number30,S523S,number20,HC32,number50,SG301F,number20,V376A,char1,HV013,number30,HV237E,number20,SHDISTRICT,number30,V414F,number20,H4Y,number50,SG105,number20,SG269K,number20,S578Y,number30,S581G,number20,HV209,number20,D101H,char1,SHD4,number20,HV210,number20,SG270K,number20,SH1Y,number50,SH55,number20,V472R,char1,BORD,number30,HB58,char1,SH238,number60,HD101,number40,SG123C,number20,ML13P,char1,V631,char1,S28DAYS,number20,S714D,number20,H37G,char1,D105C,number20,SH9M,number30,ML15B,char1,SG256A,number20,V762BU,char1,MM14,number30,H37A,number20,S540E,number20,HV218,number20,SH234C,number60,HC52,number20,HB3,number50,V624,number30,S577L,number90,S578C,number30,V762AC,char1,MMC1,number30,SG222C,number20,S114B,number20,SH2X,number20,SG223E,number20,H5Y,number50,G117H,char1,M27,number20,SHT2Y,number50,M65X,char1,HC12,number60,V472G,char1,V415,number20,SH212D,number20,H43,number20,S435H,number40,V719,number20,V454,number20,B2,number50,S435GF,number20,ML24C,char1,V761B,char1,H3Y,number50,SINGRESOIB,number30,H12G,number20,HV118,number20,ML13Z,number20,S1004,number20,H7,number20,SH6YB,number20,HW51,number30,H32J,number20,SHB13,number20,V3A08L,number20,V613,number30,V414W,char1,ML19A,char1,ML20A,number20,SHA0,number30,SHRM3,number60,SHSD3,number50,SG241Z,number20,V468,number20,SG301E,number20,SH295BM,number30,V234,number20,V836,char1,G119,number20,HB32,number50,V3A01,char1,S584B,number30,M55C,number20,MM11,char1,HA33,number20,S937X,number20,HC11,number50,V412B,char1,HA6,number60,SH127B,number50,HA41,number50,H2,number20,S907,number20,S573E,number50,S576C,number50,V3A08G,number20,S581J,number20,D107,number20,V472H,char1,V784S,char1,SG237A,number20,IDX5CS,number30,V528,number30,V325A,char1,V832C,char1,V853B,char1,MM8,number50,D110C,number20,SH226,number30,SG123X,number20,V467M,char1,SG219A,number20,HO106,number20,V732,number20,HV253G,char1,SHH3Y,number50,B4,number20,HV230B,number20,D118XK,char1,HB40,number50,V763C,number20,V767C,char1,V419,number20,V420,char1,ML101,char1,S326AA,number20,S940M,number30,HV246J,char1,SG240D,number20,HB63,number20,S541X,number20,M70,number20,G112,char1,M36,char1,D115K,number20,M42B,char1,SG225B,number70,V762AF,char1,V744D,number20,SH127A,number20,B5,number20,S522D,number20,V467L,char1,V851F,char1,HW17,number30,H20,number20,SH80A,number50,SG278,number20,M3M,number20,M62,number20,S581I,number20,V157,number20,S1113,number20,S926,number20,SG113D,number60,V359,number30,V360,number30,V834C,char1,HV000,char4,SG233,number20,H36A,number20,SG223Z,number20,SG304B,number20,SH139C,number30,HV246H,number30,HC8,number50,V762AP,char1,V762BG,char1,D127,char1,D105E,number20,V481F,char1,HA62,char1,SG223G,number20,SH139B,number30,SH231AC,number60,H12S,number20,V469E,number20,V851D,char1,V815A,char1,SG207B,number20,V762AH,char1,V302A,number20,S578U,number30,H12Y,number20,S581C,number20,SG247X,number20,SG241G,number20,M55I,number20,V414P,number20,M57N,number20,M49Z,number20,SG202H,number20,V446,number50,V3A00K,number20,S573A,number20,HV239,char1,HV240,char1,HB35,number30,V413D,char1,V784O,char1,M57L,number20,H6M,number30,H7D,number30,V418,number20,S506AD,number30,HV213,number30,SH68C,number30,SH197E,number20,V211,number50,V311,char1,V784F,char1,V472K,char1,V473B,char1,S325CB,number20,HA5,number50,SG219B,number70,SINGRESOO,number80,M55L,char1,S577G2,number50,V848,char1,SG211,number20,ML23A,number20,V122,number20,S940Y,number50,D101E,number20,HW52,number20,SG243A,number20,HML31,number20,ML13X,number20,V414H,number20,VCAL,char73,S540I,number20,V805,number40,M2B,number20,M39,number20,G117Y,char1,SH128,number30,SH68,number20,HMLD,number30,D119T,number20,D122B,number20,H15C,number20,V750,number20,D118C,number20,V754JP,number20,S573,number30,SGINTM,number30,SH2D,number30,SH1M,number30,H37M,number20,V849,char1,SG269C,number20,V754BP,char1,SG270C,number20,M1D,number30,M57T,number20,SH251,number20,SH6XA,number20,HB51,number30,V846,char1,SG269B,number20,SG270B,number20,SG228C,number20,D118XJ,char1,SH215,number30,M57A,number20,SG223K,number20,V770D,number20,V134,number20,G109,char1,G110,char1,SH3H,number30,SH56,number30,SG258B,number70,S523R,number20,D118Y,number20,D119P,number20,S325FX,number20,HML32B,char1,SH74,number60,SH3X,number20,SG269X,number20,SG270X,number20,H32T,number20,S510J,number20,SH128B,number50,V3A00F,number20,HA69,char1,HA70,char1,V853A,char1,SGSUPERV,number40,G111,char1,D119XG,char1,H41A,char1,SH71,number30,D119W,number20,SG241I,number20,V409A,char1,V410A,char1,MMC5,number30,D115B,number20,SG201J,number20,SG202A,number20,SH69A,number20,V471F,char1,V437,number50,H32F,number20,HV023,number30,HV101,number30,ML19D,char1,SH279,number20,SH280,number50,V242,number50,D110D,char1,S523D,number20,S903H,number20,SG107,number20,HV040,number40,HML30,number30,V414V,number20,S577Q,number30,S578H,number30,V463X,char1,V472C,char1,SG264,number20,H37N,number20,S435F,number20,G117X,char1,SH6YI,number20,M55X,number20,M57F,number20,S924,number30,V769,char1,V770,number20,V3A02,char1,V3A00H,number20,V202,number20,SG227,number60,M2K,number20,M55M,char1,V141,number20,M3B,number20,M50,number20,V323A,number30,S572B,number20,SHP216,number30,V414E,number20,SGMINUTF,number30,SH6M,number30,S439A,number30,SH7D,number30,V462,char1,SH92,number30,SH259,number60,HA1,number30,SH260,number60,V837,char1,V213,number20,V458,char1,ML22B,char1,SH235AC,number60,S435GG,number20,H37Z,number20,SG113A,number60,HV106,number20,V701,number20,V633B,char1,V439,number50,V440,number50,V602,number20,SH7M,number30,SH8D,number30,D103D,char1,SG217E,number20,V634,char1,SG240Z,number20,S903E,number20,HB53,number40,V784D,char1,SH251BM,number30,HV232D,number20,SG222F,number20,HV237,number20,V312,number30,ML22C,char1,HA56,number40,SG116A,number30,ML13D,number20,D118L,number20,D119C,number20,H36F,char1,HML17,number20,SG201D,number20,MMIDX,number30,V774B,number20,D100D,number20,HML2,char1,H31C,number20,V502,number20,D105A,number20,SH1MO,number30,B11,number40,V833B,char1,M49Y,number20,HC51,number30,SGINT,number90,M55G,number20,H10,number20,ML13M,number20,V803,number30,SG240B,number20,SH67,number30,M57R,number20,HC19,number50,D115XJ,char1,ML16A,number20,SH77C,number60,SVIVIG2,number20,SG262B,number60,SH75U,number20,V384A,number20,S936,number20,SH268I,number40,HS107,number20,V756,number20,M73,number30,S114C,number20,D115G,number20,M65H,char1,V413B,char1,SH235AD,number60,HML11,number20,V754DP,number20,V768C,char1,HV109,number20,HW10,number50,HV110,char1,S591,number30,V745A,char1,G117C,char1,SHED3,number20,V3A00P,char1,V337,number30,V761,char1,V784H,char1,SG116C,number30,V784J,char1,SG217I,number20,SH8,number20,V762AE,char1,S568E,number20,HV246,number20,SVIVIG1,number20,SG208A,number20,HV237X,number20,SH79,number30,SH80,number40,V411A,number20,HO103,number20,V839,char1,V840,char1,SG265AB,number20,M3H,number20,SG247Y,number20,V457,number20,V472O,char1,SG279U,number20,SG282C,number20,V762AV,char1,V762BM,char1,SG111,number30,HV122,number20,HV225,number20,HW70,number50,HV127,char1,SG288,number20,SH78,number20,M5,number30,SH1,number140,V153,number20,V472L,char1,HB52,number20,MM5,char1,V814,number20,H0D,number30,H22,number20,S569D,number20,S435GL,number20,V159,number20,V160,number20,S570D,number20,S306A,number20,M2F,number20,M44,char1,SHCMC,number40,IDX92,number30,HV007,number50,SG256B,number60,SH3Y,number50,SH75,number20,V633E,char1,SH227AG,number60,ML13E,number20,V762AO,char1,M57V,char1,V762BF,char1,SH295AD,number30,V414C,char1,D118V,number20,D119M,number20,HML32D,char1,HA65,number20,V102,number20,SHT2,number20,V762BZ,char1,SH258,number30,SG217Y,number20,S114G,number20,H37L,number20,V762AQ,char1,V762BH,char1,SH271,number50,V3A00N,number20,SH94,number60,H32X,number20,S576A,number30,S823B,number20,D118X,number20,D119O,number20,SH122C,number52,HC17,number30,SG280B,number70,V124,number20,V482B,char1,D130A,char1,HV207,number20,SH91,number20,HV044,char1,SG216A,number20,H37D,number20,V467G,char1,SH133C,number20,SG265H,number20,V414D,char1,V3A00J,number20,V731,number20,S577C,number30,V3A08N,number20,S576H,number90,HW8,number50,SG202G,number20,ML1,number30,HB56,number40,SG228D,number20,BIDX,number30,H12K,number20,H13B,number20,V762AW,char1,V762BN,char1,SH8Y,number50,SH227AE,number60,SG222I,number20,SG237B,number60,SG241E,number20,V763E,char1,V137,number20,S325A,number20,SH516,char6,S541Y,number20,V138,number20,D119XA,number20,HV246G,number30,V128,number30,S536K,number20,SG281,number20,V476,char1,V207,number20,REC84_GROUP,char1,HML5,number20,G121,number20,G107,number30,HC58,char1,SH224I,number40,D115S,number20,D117A,number20,IDX99,number20,HIDX,number20,IDX96,number20,SG269F,number20,SG270F,number20,SG207,number30,HMLB,number30,S325CX,number20,HV103,number20,M49A,number20,H12L,number20,HV221,number20,HV246A,char1,HV237C,number20,HV246E,char1,V784T,char1,V744B,number20,S5YEARS,number20,V3A08A,char1,S325CE,number20,S916,number20,S570,number30,HC53,number40,CHL5,number20,V447A,number30,V3A04,char1,V414R,char1,S575,number90,HMLA,number30,SINGRESOTP,number80,S541E,number20,V784E,char1,V3A08F,number20,S103A,number20,SG277,number20,H32A,number20,SH73,number60,SG301H,number20,SG202X,number20,V227,number20,H32P,number20,V768A,char1,V481B,char1,HS104,number20,SG245,number20,V813,number20,SH2MO,number30,S578P1,number50,SG248,number20,S616,number30,SG104,number20,SH505,number40,M49C,char1,HML34,char6,SH79N,number70,SH80N,number70,G101,number20,SH6YC,number20,S927,number20,B13,number20,V762AM,char1,V762AA,char1,V541,char1,V481D,char1,V762BD,char1,SHB1D,number30,HC3,number50,SH255D,number40,SH257,number30,FSYSTO,number40,S904,number20,SG230M,number30,SG201I,number20,V832B,char1,SINGRESOIP,number20,HB60,number20,HB68,number20,S540W,number20,S541N,number20,V811,number20,V406,number20,SG214,number20,HML16A,number30,S714BC,number20,G118,number20,D118Q,number20,D119H,char1,D119X,number20,SG286,number60,V474D,char1,M55O,char1,SG253B,number40,S541L,number20,V466,char1,V784P,char1,H12R,char1,M3J,number20,SHP221,number40,SG202N,char1,HML16,number30,SH76N,number70,HV128,char1,HW5,number50,V414K,number20,V715,number30,V770V,number20,SG123J,number20,MIDX,number20,S909,number20,S910,number20,SHT3M,number30,D130B,char1,V444A,number50,SG216E,number20,D103C,char1,H31E,number20,D115E,number20,S903X,number20,SH110K,number20,SH295BC,char6,S582,number20,V3A00C,number20,S325FA,number20,S578J,number90,S579A,number30,SG117A,number70,S576J,number30,S577A,number50,SHADULT35,number20,SH242B,number20,SH223,number30,ML19X,char1,D114,number20,SHMLB,number30,SHED1,number20,V529,number40,V530,number20,V511,number30,IDXCHL,number30,SG225A,number20,S918,number20,SG239,number20,SIFUENTE2,number70,V770L,number20,V413C,char1,SH255S,number40,S523G,number20,V503,number20,S325CG,number20,H15H,number20,SHUPAZILA,number30,V3A00Q,char1,V763G,char1,SGZONA,number20,SH61,number30,D101D,number20,M57Q,number20,V774A,number20,V3A06,char1,V481E,char1,H12V,number20,SG201A,number20,D115XF,char1,SG201B,number20,AWFACTT,number50,SHP4D,number30,H32U,number20,V834B,char1,S541Q,number20,SH2,number20,M42D,number20,SG101,number30,HC1,number30,V826A,char1,H3,number20,S541K,number20,SH6YG,number20,V463G,char1,V3A00D,number20,D118S,number20,D119J,number20,D121A,number20,S522C,number20,SH231AD,number60,AWFACTE2,number60,S932,number20,HV206,number20,SH123A,number20,SH198C,number20,D005,number80,D119XK,char1,SH6YD,number20,H7M,number30,V3A00S,number20,M57X,number20,H8D,number30,V741,number20,M17,number20,V779,char1,V780,char1,MM15,char1,D105D,number20,SG125,number20,SG282A,number20,SH28C,number20,V464,char1,HS105,number20,SIFUENTE1,number80,MMC2,number30,REC31_GROUP,number20,V414N,number20,V3A03,char1,S572A,number20,SH234,number20,SH7,number20,HML15,char1,V507,number30,S566,number20,SHMLA,number30,ML13O,char1,SH283,number90,SG240C,number20,SG241A,number20,H15B,number20,S577G,number30,SG241F,number20,G117A,char1,G104,number20,D110G,char1,H31D,number20,SH283D,number30,D108,number20,SG265AC,number20,V762AB,char1,V3A00W,number20,D101I,char1,S604A,number30,S578N,number90,S579E,number30,HV245,number40,SH251B,number50,V838A,char1,HV237Z,number20,S922,number20,D115W,number20,H37E,number20,V482A,char1,H13,number20,HA13,number20,SH242A,number60,SH264D,number40,SG202M,number20,M55H,number20,V762AT,char1,V762BK,char1,G108,number30,H0,number20,V474E,char1,HV026,number20,SHP218,number30,SH228,number20,SG217Z,number20,M55B,number20,SHB2Y,number50,D115L,number20,V481H,char1,V455,number20,G115,char1,G122,number30,HV004,number40,SG114A,number70,SH139D,number30,D118D,number20,V763F,char1,V190,number20,D105I,number20,D118B,number20,S435GA,number20,S325CC,number20,SHB3M,number30,SH251AY,number50,M55N,char1,V744E,number20,S578S,number50,S581A,number30,S946,number20,SG241H,number20,HA12,number60,HB57,number20,V3A00V,number20,HS101,number20,S541I,number20,V372A,number20,V106,number20,H0Y,number50,H45,char1,HV202,char1,M2D,number20,SHB1,number30,V363,number30,SH94A,number20,M2N,number20,M3E,number20,D118XB,char1,SG247B,number20,M49F,char1,SH253,number50,HML32E,char1,D100B,number20,HO105,number20,HV234A,number20,HA54,number20,HV107,number20,SG244,number20,V3A08J,number20,V3A09A,char1,HV246D,char1,ML11,char1,S577F,number90,SG265AD,number20,V474H,char1,IDXHML,number20,SG238,number20,V208,number20,S576F,number30,S435C,number20,HS103,number20,HW13,number20,S577N,number30,S578E,number50,SHH2M,number30,SHH3D,number30,HV018,number40,V763D,char1,S578R,number30,HD100,number30,AWFACTE,number50,V632,number20,V412,char1,S569A,number20,S570A,number20,S576E,number30,V467H,char1,S580,number30,SH96A,number60,V472P,char1,HV032,number20,SH221AH,number30,HV237I,char1,HA55,number20,SH241,number60,V3A08V,number20,ML14Y,char1,V3A00A,number20,D119XB,char1,V3A08D,number20,HA0,number30,V243,number20,D115J,number20,SH0Y,number50,SGWEIGHT,number90,SG263,number20,SH104A,number20,CHL1,number20,HW56,number50,HV016,number30,S937E,number20,H37H,number20,SG265AY,number20,SG291,number30,SH28,number30,ML16B,char1,V414U,char1,SG269H,number20,S541P,number20,SG270H,number20,D1310A,number20,HC68,number50,SHB3Y,number50,SG265C,number20,SG287,number20,SH227AD,number60,ML19C,char1,SGPROVIN,number30,ML20C,char1,SHT1M,number30,H5M,number30,H6D,number30,SHT2D,number30,HV253X,char1,H32Y,number20,M65G,char1,D115U,char1,V3A08E,number20,SG119A,number70,SG120A,number60,ML19Y,char1,SH231AF,number60,HW71,number50,SG223Y,number20,HMHIDX,number30,S325CZ,number20,S540A,number20,S435J,number20,S934,number20,SH231AB,number60,SG221,number20,S229A,number20,S325CA,number20,SG202K,number20,V3A07,number30,SGINTD,number30,IDX9A,number30,SG203B,number30,V469X,number20,V472F,char1,AWFACTR,number50,V702,number30,HC10,number50,V417,number20,V834A,char1,S905Y,number50,H44C,char1,D119Q,number20,V474F,char1,HV006,number30,SH2H,number30,V851I,char1,V626,number30,SH231AA,number60,SG217B,number20,HA63,char1,S589,number30,S523J,number20,S569E,number20,D105M,char1,HV243C,char1,SCORE,number30,D115T,number20,B16,number30,SG202F,number20,SG123F,number20,H12M,number20,S506AM,number30,D115XD,char1,SH235AB,number60,HV246B,number30,SHFLG,number20,D118N,number20,D119E,number20,HV270,number20,S410J,number30,M57B,number20,SH90,number20,V362,number20,SH33,number20,V3A08T,number20,M2H,number20,M46,number40,V319,number20,V705,char1,V320,number20,HW2,number50,V826,char1,S823A,number20,M3F,number20,M54,number20,V301,char1,M49D,char1,S714BA,number20,V762BS,char1,V717,char1,V785,number20,S588,number20,SG117B,number20,M9,number30,SH23,number30,HB33,number20,SH286,number20,HO102,number20,H34,number20,SG223H,number20,V472I,char1,D115XA,number20,HML21,number20,HW57,number20,V770F,number20,M19,number50,SG253,number40,D115XB,char1,V721,char1,V421,char1,V318,number20,D119U,char1,D122C,number20,SH239,number60,SH240,number20,MM6,number30,V766A,char1,HML6,number20,SG268,number20,SH133A,number30,S573B,number90,D104,number20,HA32,number50,ML15A,number20,SH218,number30,V467A,char1,ML23B,char1,HA60,char1,S435GZ,number20,HV042,number20,V828,char1,MM2,number20,V445,number50,HV124,number30,H36C,number20,HC27,number20,HV237D,number20,V113,number30,SHH3,number20,SGHOGAR,number30,D115XH,char1,SG123I,number20,V123,number20,SG128,number20,HML8,number20,SH57,number20,V393,char1,HMLE,char1,S714AA,number20,V136,number30,S435GH,number20,S325B,number20,V532,number20,S1002,number20,SG213B,number70,SG307,number20,V833A,char1,SH4M,number30,SH5D,number30,HHID,char7,SH72,number60,MM4,number50,SH24,number20,SG265AG,number20,S523O,number20,SG201H,number20,SH62A,number20,V447,number20,V475,char1,S523A,number20,D118XE,char1,SH25,number20,HC15,number20,SG232A,number20,SH295,number20,SH25Y,number50,ML13B,number20,SH227AC,number60,S942,number30,SH616,number20,M1A,number20,M28,number20,HC0,number30,V115,number40,S523N,number20,D115M,number20,SH27,number20,H21A,number20,V139,number30,V140,number20,HO107,number20,H32V,number20,H33M,number30,H40D,char1,SH221B,number40,SG265AA,number20,V501,number20,HS106,number20,SG112B,number20,S523C,number20,HV237A,number20,B15,number20,SG223X,number20,M1E,number50,HML32,number20,S540B,number20,HA66,number20,H32N,number20,S541J,number20,V471G,char1,SCHL145,number20,V443,number60,S223A,number20,S326B,number30,HC2,number50,SG265G,number20,V801,number50,AWFACTE3,number60,SH72U,number20,HB65,number20,V474I,char1,SH72N,number70,S541T,number20,D119R,number20,SH251AD,number30,SGEDITC,number40,SG116D,number30,V777,char1,V411,number20,SG223I,number20,ML21A,char1,SG270Y,number20,HV123,number20,HV237G,number20,SH0,number20,SG301B,number20,D128,char1,H40Y,char1,H37Y,number20,S435I,number20,S577I,number30,SG202I,number20,S576I,number30,S945,number20,SGASTOTI,char1,SG231,number30,S902,number20,SG246B,number20,S325CD,number20,D119XF,char1,SH276,number20,V467B,char1,V831,char1,SHP221AH,number30,HV217,number20,D112A,number20,S569C,number20,S823,number20,S570C,number20,HV025,number20,SH220B,char4,S523E,number20,S905M,number30,SH77,number20,H32R,char1,SH77A,number60,SG122,number20,SG216I,number20,V414G,number20,HWIDX,number20,V762BR,char1,S933,number20,D101A,number20,V463Z,char1,IDX98,number20,V101,number20,S576D,number90,V414L,number20,SHT1,number20,H31B,number20,D115V,number20,HW15,number20,V626A,number30,V394,char1,V404,number20,V384C,number20,HML35,number20,SH251BC,char6,SHB2,number30,V531,number30,S577B,number90,V317,number50,V471A,char1,HA40,number50,M57G,number20,S325FE,number20,SH6YH,number20,H44A,number30,SH254,number30,SG228X,number20,SG269A,number20,HV232,number20,SG270A,number20,SG222D,number20,SG274,number60,V416,char1,SG303A,number20,SG113B,number60,V456,number40,SG114B,number70,HO100,number30,HML32C,char1,S587,number30,S581X,number20,V815B,char1,M2J,char1,M3A,number20,M48,char1,HW4,number50,S1003,number20,SHCOL21A,number30,HV126,char1,HV253C,char1,V467D,char1,HV205,number30,V444,number60,SHP4Y,number50,HV246K,char1,HA68,number20,SH286I,number40,SG222H,number20,SH295AM,number30,S803A,number20,V472B,char1,ML23C,char1,SG209,number20,SG210,number20,V835C,char1,SH5M,number30,SH6D,number30,SH227AA,number60,SH82,number20,SH264S,number40,V762AU,char1,V762BL,char1,SH224,number20,HV120,number20,V525,number30,SG222A,number20,H32S,number20,B0,number20,SH139E,number30,V762BT,char1,SH63B,number20,V770K,char1,SG228J,number20,SG230A,number50,SH295B,number50,SG241X,number20,V3A00X,number20,V223,number20,V767B,char1,V770U,number20,SHED2,number30,SG223C,number20,V3A08I,number20,D115X,number20,SH77B,number60,V743C,char1,HML33,char1,S114F,number20,S586,number20,V513,number20,V442,number60,SH33D,number30,SH6XX,number20,HW11,number50,SH13,number20,V804,number20,S578L,number30,S579C,number90,D115D,number20,H37P,number20,S523Q,number20,SG259,number20,SG260,number20,V441,number60,SG265F,number20,HV232E,char1,SH212,number40,V3A00B,number20,D115F,number20,G105,number20,HV237J,char1,H32M,number20,H33D,number30,D100C,number20,HB69,number80,HB70,number40,SH128A,number20,HS100,number20,SG202J,number20,SG203A,number20,M65F,char1,SH6Y,number50,MM9,number30,V229,number30,V230,number50,D118O,number20,D119F,number20,D112,number20,HC30,number30,S519J,number20,HML4,number30,HB12B,number60,V762AZ,char1,V762BQ,char1,V770M,number20,S912,number20,V226,number40,V481X,char1,H15F,number20,D118XA,number20,SH206,number50,SINGRHI,number20,SG217A,number20,CHL2,number30,SG289,number70,V784M,char1,SG290,number20,HA12B,number60,V835A,char1,HW1,number30,SH7Y,number50,V3A00U,number20,M57E,number20,M57K,number20,B6,number40,HDPIDX2,number20,SH198D,number20,S914,number20,M55F,number20,SH603,number60,G117G,char1,HC9,number60,SH6XZ,number20,S114A,number20,H12A,number20,SG269J,number20,SG270J,number20,V754WP,number20,M66,number20,SHCOLB,number20,HML13,number20,ML13I,number20,V806,number20,V221,number40,SG265I,number20,V770E,number20,S581H,number20,V3A00O,number20,H47,number20,V851J,char1,V852A,char1,V821C,char1,S571,number20,S584,number30,V168,char1,V133,number30,V191,number80,V201,number30,V3A08U,number20,H46A,number30,V414O,number20,H11,number20,V762AL,char1,V304A,char1,V762BC,char1,SG301X,number20,SH235,number20,HV112,char1,SH295AY,number50,V214,number20,V729,number20,V730,number30,H12N,number20,V467F,char1,S578T,number90,S581B,number50,D119XC,char1,H32W,number20,V474Z,char1,HC64,number30,SG265A,number20,SG265AE,number20,SG223J,number20,V426,number40,HW73,number50,S536A,number20,V327,number20,V784G,char1,S325E,number20,D118K,number20,D119B,number20,S523X,number20,V361,number20,SH2Y,number50,D118G,number20,SH618,char6,SH205,number50,SG201N,number20,SG202E,number20,SG223D,number20,HV271,number80,V481G,char1,V222,number40,SG222G,number20,SINGRESOIPA,number20,D115XK,char1,SH81,number30,SH0D,number30,SH22,number20,SG240G,number20,HC57,number20,SG265E,number20,S523H,number20,V467J,char1,V770H,number20,V467I,char1,S325FC,number20,V459,char1,V460,char1,S945A,number20,HC4,number50,H33,number20,HW19,number50,SG240F,number20,S541U,number20,H15J,char1,HDPIDX,number30,S229D,number30,V481,char1,V633C,char1,H12Q,char1,V850B,char1,D126,char1,V633D,char1,V762BP,char1,SH3MO,number30,V3A00M,number20,HA51,char1,M3N,number20,M3I,number20,SG265AH,number20,H37B,number20,S903A,number20,V769A,char1,V770A,number20,HV243A,number20,V156,char1,SHWH,number20,SG306,number20,D103A,number20,HC63,number40,V763B,number20,MM13,char1,S325FB,number20,SG205,number30,S574,number30,M65B,char1,V716,number30,D118XF,char1,HMLIDX2,number20,SG255,number30,SH123C,number20,ML18B,char1,SH619,number20,SH246S,number60,D105N,char1,V167,char1,S578O,number30,S579F,number50,D111,number20,V743D,number20,SG267,number20,SH8M,number30,SH9D,number30,V770O,number20,D1310B,number30,H1,number20,H21,number20,SH123B,number30,V746,char1,SH217,number50,SALLINCI,number20,V770S,number20,SIFUENTE4,number60,V463E,char1,IDXH4,number30,S435GC,number20,HML19,number20,H44B,char1,S541H,number20,HML20,number20,HV201,number30,H32B,number20,SH71N,number70,HS109,number20,HS110,number20,V323,number30,S435GN,number20,D106,number20,S576B,number30,SH235A,number20,M65A,char1,V851L,char1,V852C,char1,V474X,char1,SHP4M,number30,HV104,number20,SHP220B,number40,S540C,number20,ML19B,char1,ML20B,char1,HW9,number60,SG269G,number20,V851H,char1,S568D,number20,V851G,char1,D105L,char1,H37X,number20,V781,char1,SG270G,number20,HA2,number50,M65C,char1,HV015,number20,SH506,number50,SG246Z,number20,SG206B,number60,M2E,number20,H12O,number20,M43,number20,HV241,number20,V751,number20,S577H,number90,SG250,number20,M65I,char1,S104A,number20,HV237H,char1,HC18,number30,V305,char1,SH242,number20,SH227AF,number60,HML9,number30,SG228H,number20,V463A,char1,V384B,number20,H46B,char1,SG123G,number20,SG249B,number70,HV232Y,number20,HV253F,char1,HB50,number20,S937D,number20,V623,number20,V452A,char1,V833C,char1,V452C,number20,HB61,number20,V770W,number20,B9,number20,V506,char1,HV214,number30,HA4,number50,V762BV,char1,SG113C,number60,V3A08M,number20,SH0M,number30,SH1D,number30,SG108,number30,HB12,number60,S325CF,number20,S568A,number20,SG301G,number20,SH78O,number30,V479,char1,V480,char1,V3A00G,number20,HV111,char1,S114D,number20,SGESTR,char1,SH110I,number20,IDXMCS,number30,H12W,char1,HML1A,char1,SH262,number60,H32K,number20,S903B,number20,V3A00T,char1,SH6YZ,number20,SH136,number20,V821B,char1,SG118B,number20,V155,number20,HV215,number30,D115XC,char1,SH225,number30,HB62,char6,HC70,number50,S112B,number20,S435GI,number20,SG246C,number20,H39,number20,H40,char1,SH281,number50,V854B,char1,V413,number20,SG106,number20,SHT3Y,number50,V372,number20,HC72,number50,V467C,char1,SG246A,number20,HV022,number30,S1005,number20,H4,number20,V453,number40,HC16,number30,SHP4,number20,D115C,number20,G117F,char1,S536C,number30,VCOL,number20,D118F,number20,D118U,char1,D119L,number20,SLNPM,number20,M55D,number20,HC56,number40,D115Q,number20,D105G,number20,G100,number20,SHP221AM,number30,M3L,number20,M61,number40,SG301C,number20,SH33Y,number50,SHP221B,number40,ML13N,char1,SH242I,number40,V315,number30,H37I,number20,V762AD,char1,H15A,number20,V770G,number20,V633F,char1,SHC0,number30,V239,number20,V240,number30,V3A08AA,char1,HA61,char1,HW55,number20,V508,number50,M72,number30,V841A,char1,HV108,number30,H32O,number20,SH96B,number60,SHRM5,number60,SG217G,number20,SH243,number30,SG273,number20,ML17B,char1,S326C,number20,S435GX,number20,S583,number30,S577M,number30,S578D,number30,D115XG,char1,HV035,number20,SH221AM,number30,SGDIGIT,number30,S325FF,number20,HC6,number60,HW16,number30,SG222E,number20,V743E,char1,H32H,number20,S536B,number30,SG301D,number20,ML12,char1,H35,char1,H12F,number20,D110B,number20,M2L,number20,M3C,number20,M51,number40,V472J,char1,V463C,char1,V473A,char1,H36B,number20,V414S,number20,V3A08C,number20,S325N,number20,S541F,number20,HA58,char1,S523M,number20,SG201C,number20,SH220,number40,ML17A,number20,SGINTA,number50,HV021,number40,HV211,number20,SH236,number20,S949,number20,S950,number30,SG243B,number70,V105,char1,SH5Y,number50,HW7,number50,V762BW,char1,HV028,number80,V463D,char1,SH95,number60,HML10,number20,M11,number40,SHCOLD,number20,S435GD,number20,SG201K,number20,SG202B,number20,V621,number20,H12X,number20,SH08,number20,M65J,char1,HV125,char1,V469F,number20,V766B,char1,V206,number30,SG216C,number20,M7,number30,V539,char1,V540,char1,V770N,number20,V762BX,char1,SG276,number40,H15,number20,M57O,number20,S572Y,number20,SG129,number20,SHD4D,number30,SG272A,number20,H15K,char1,V3A00I,number20,V3A08K,number20,V3A09B,char1,CHL3,number20,D105B,number20,SG266A,number20,HV234,char1,S568B,number20,SG103,number30,SH283M,number30,S541W,number20,SH6XB,number20,SG217D,number20,SH278,number20,V770T,number20,H37C,char1,D119Y,number20,G117E,char1,M35,char1,ML21B,char1,S570X,number20,V452B,char1,S568C,number20,SG247A,number20,G102,number20,G117I,char1,SHRESI,number20,SG303C,number20,V407,char1,V3A08W,char1,SG124,number20,SH33M,number30,V205,number20,HB67,number30,SH6,number20,SH139A,number30,M57S,number20,SH604,number50,D118J,number20,D119A,char1,M34,number40,V116,number30,HV024,number20,HV005,number80,SG292A,number70,V310,char1,HOVIDX,number30,SG213A,number20,V107,number20,SH237,number60,V744C,number20,SHRI,number50,SG228F,number20,M14,number30,HC71,number50,ML17C,char1,HC31,number50,SH279A,number20,SH517,number20,V770Q,number20,S536D,number30,H15D,number20,D118R,number20,V209,number20,V210,number20,D119I,char1,IDX94,number20,V3A00Y,number20,S585,number20,V783,char1,HC55,number20,SG228A,number20,V241,number50,H8,number20,S915,number30,SH245,number60,SGCONGL,number50,V505,char1,H5,number20,D101F,number20,SH75N,number70,H36D,number20,S523V,number20,V784R,char1,H32Z,number20,S576G,number50,D102,number20,H9Y,number50,SG201G,number20,V745B,char1,H36E,char1,SG202L,number20,SH104B,number30,S435GJ,number20,V821A,char1,SG247D,number20,V151,number20,SH235AE,number60,SH284B,number40,V512,number30,SGVISITS,number20,SH18,number20,HV002,number40,HA64,char1,SHMLIDX,number20,V3A00E,number20,M18,number20,V125,char1,V605,number20,V3A08H,number20,D109,number30,HB6,number60,S523K,number20,M55A,number20,SH122A,number20,HV253H,char1,H12E,number20,SHH1Y,number50,V313,number20,SHCOL3B,number30,SG216G,number20,HO108,number20,ML18A,number20,H12T,number20,V364,number20,V472M,char1,H15E,number20,HV252,number20,SG253A,number40,S917,number30,H12B,number20,V762AG,char1,D115P,number20,V482C,char1,V149,number20,V150,number30,V628,number30,D113,number20,SHH1D,number30,V135,number20,SG201L,number20,SG202C,number20,V127,number30,V401,number20,V770B,number20,D105J,char1,V854A,char1,SG217X,number20,M2C,number20,HV232C,number20,SHP220,number40,V784N,char1,GIDX,number20,HB64,number20,HV117,number20,SH197B,number30,S523W,number20,G116,char1,V414M,number20,S937H,number20,B3,number50,HV114,char1 +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "REC01.All (CSV_1) Splitter" INPUT FEATURE_TYPE REC01.All OUTPUT FEATURE_TYPE REC01.All_0_tdHQ0mtKw/c= OUTPUT FEATURE_TYPE REC01.All_1_tdHQ0mtKw/c= +DEFAULT_MACRO WB_CURRENT_CONTEXT +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer INPUT FEATURE_TYPE REC01.All_1_tdHQ0mtKw/c= OUTPUT FEATURE_TYPE BulkAttributeRenamer_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +# Expose all attributes. This ensures that if you expose fme_dataset, you will get it. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeExposer INPUT FEATURE_TYPE BulkAttributeRenamer_OUTPUT OUTPUT FEATURE_TYPE AttributeExposer_OUTPUT + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeCopier INPUT FEATURE_TYPE AttributeExposer_OUTPUT OUTPUT FEATURE_TYPE AttributeCopier_OUTPUT @CopyAttributes(ENCODED,ATTR_LIST_DEF_VAL, fme_feature_type,tbname,) + +# ------------------------------------------------------------------------- + +MACRO casemac +INCLUDE [ if { {NO} == {NO} } { puts {MACRO casemac -nocase}} ] +Tcl2 proc StringReplacer_bf30ff78_26a6_45ad_9cfe_6e4bef0a5b715_replacer { findText replaceText invalidValue} { set attrs [split \"tbname\" {,}]; set findValue [FME_DecodeText $findText]; set replaceValue [FME_DecodeText $replaceText]; foreach attr $attrs { set attrVal [FME_GetAttribute $attr]; set noMatch true; if {{NO} == {YES}} { set newAttrVal [regsub $(casemac) -all -- $findValue $attrVal $replaceValue]; } else { set newAttrVal [string map $(casemac) [list $findValue $replaceValue] $attrVal]; }; if { $newAttrVal ne $attrVal } { set noMatch false; FME_SetAttribute $attr $newAttrVal; }; if {$noMatch} { if { $invalidValue == {FME_NULL_VALUE} } { FME_SetAttributeNull $attr; } elseif { $invalidValue != {_FME_NO_OP_} } { FME_SetAttribute $attr [FME_DecodeText $invalidValue]; }; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME StringReplacer INPUT FEATURE_TYPE AttributeCopier_OUTPUT OUTPUT FEATURE_TYPE StringReplacer_OUTPUT @Tcl2("StringReplacer_bf30ff78_26a6_45ad_9cfe_6e4bef0a5b715_replacer {.} {_} {_FME_NO_OP_}") + +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {_All_} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME _All__DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME _All__DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME _All__FeatureDirector INPUT FEATURE_TYPE REC01.All_0_tdHQ0mtKw/c= TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE _All____NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE _All____RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME _All____FeatureDirector1 INPUT FEATURE_TYPE _All____NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE _All____VectorFeatures___ OUTPUT PASSED FEATURE_TYPE _All____PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME _All__VectorSetterUpper INPUT FEATURE_TYPE _All____VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc _All__9e7a328e_8b5f_4cb6_9bd5_d276fb8e050d3_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME _All____PointCloudThinner INPUT FEATURE_TYPE _All____PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("_All__9e7a328e_8b5f_4cb6_9bd5_d276fb8e050d3_thinPointCloud") +Tcl2 proc _All__9e7a328e_8b5f_4cb6_9bd5_d276fb8e050d3_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME _All__RasterSetterUpper INPUT FEATURE_TYPE _All____RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("_All__9e7a328e_8b5f_4cb6_9bd5_d276fb8e050d3_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# _All__9e7a328e_8b5f_4cb6_9bd5_d276fb8e050d3_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO _All__9e7a328e_8b5f_4cb6_9bd5_d276fb8e050d3_VIS_FEAT_TYPE _All_$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME _All__Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(_All__9e7a328e_8b5f_4cb6_9bd5_d276fb8e050d3_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA FileCode,varchar255,CASEID,varchar255,V000,varchar255,V001,varchar255,V002,varchar255,V003,varchar255,V004,varchar255,V005,varchar255,V006,varchar255,V007,varchar255,V008,varchar255,V009,varchar255,V010,varchar255,V011,varchar255,V012,varchar255,V013,varchar255,V014,varchar255,V015,varchar255,V016,varchar255,V017,varchar255,V018,varchar255,V019,varchar255,V019A,varchar255,V020,varchar255,V021,varchar255,V022,varchar255,V023,varchar255,V024,varchar255,V025,varchar255,V026,varchar255,V027,varchar255,V028,varchar255,V029,varchar255,V030,varchar255,V031,varchar255,V032,varchar255,V034,varchar255,V040,varchar255,V042,varchar255,V044,varchar255,G117B,varchar255,S903C,varchar255,V784X,varchar255,SH62B,varchar255,S326AB,varchar255,V763A,varchar255,S114E,varchar255,ML13F,varchar255,V504,varchar255,SHH1,varchar255,SH263,varchar255,V851E,varchar255,V3A08R,varchar255,SG265B,varchar255,V851A,varchar255,M65L,varchar255,D118T,varchar255,D118XC,varchar255,D119K,varchar255,SG234,varchar255,SG308,varchar255,V784L,varchar255,B7,varchar255,S539,varchar255,V845,varchar255,HV003,varchar255,ML22A,varchar255,V704,varchar255,SG292,varchar255,SG302,varchar255,M57M,varchar255,V767A,varchar255,SG116B,varchar255,MMC3,varchar255,D103F,varchar255,V472E,varchar255,D105H,varchar255,SG228B,varchar255,SG283,varchar255,V414J,varchar255,HV208,varchar255,H11B,varchar255,SG265AF,varchar255,S577D,varchar255,SG269I,varchar255,V474G,varchar255,SLNWP,varchar255,SH6YX,varchar255,SHH1M,varchar255,SHH2,varchar255,V471C,varchar255,HW53,varchar255,V414Q,varchar255,SHH2D,varchar255,SH617,varchar255,SH284,varchar255,SH235AG,varchar255,SG216D,varchar255,SG242,varchar255,D112N,varchar255,M42E,varchar255,SH6XY,varchar255,SH1X,varchar255,SH54,varchar255,HC60,varchar255,V481A,varchar255,V326,varchar255,V802,varchar255,CHL8,varchar255,HV212,varchar255,SG270I,varchar255,SINGRESOE,varchar255,SH246D,varchar255,HV001,varchar255,SG215,varchar255,SG265AZ,varchar255,H12I,varchar255,H32Q,varchar255,S523U,varchar255,SH_MIG,varchar255,H33Y,varchar255,V224,varchar255,M42A,varchar255,S506A,varchar255,V218,varchar255,SG201M,varchar255,S325J,varchar255,SG202D,varchar255,V161,varchar255,SH244,varchar255,V215,varchar255,SHD4M,varchar255,V509,varchar255,V510,varchar255,S435GE,varchar255,SG220,varchar255,M57C,varchar255,V414B,varchar255,SH284A,varchar255,HB5,varchar255,S325M,varchar255,HML3,varchar255,HC13,varchar255,H40M,varchar255,SHT2M,varchar255,SHT3D,varchar255,V231,varchar255,HW3,varchar255,HC61,varchar255,V768B,varchar255,SG228Y,varchar255,H6,varchar255,S538P,varchar255,S540G,varchar255,SH4,varchar255,ML13Y,varchar255,MM1,varchar255,S540D,varchar255,HV246F,varchar255,S567,varchar255,S577R,varchar255,S578I,varchar255,V474J,varchar255,HV105,varchar255,HA52,varchar255,SG201X,varchar255,SG257,varchar255,SG304A,varchar255,SG284,varchar255,S325FH,varchar255,V743A,varchar255,S435E,varchar255,HB2,varchar255,V302,varchar255,ML18C,varchar255,SG206A,varchar255,SH5,varchar255,M2A,varchar255,M38,varchar255,S433L,varchar255,V3A08O,varchar255,H32C,varchar255,V232,varchar255,SH230,varchar255,S937Z,varchar255,SH229,varchar255,ML19F,varchar255,S540K,varchar255,S541B,varchar255,HV031,varchar255,S325FD,varchar255,SG269D,varchar255,SG270D,varchar255,V843,varchar255,S577K,varchar255,S578B,varchar255,SH222,varchar255,H6Y,varchar255,V461,varchar255,HV129,varchar255,V3A08P,varchar255,S577P,varchar255,S578G,varchar255,V714,varchar255,HV243D,varchar255,B1,varchar255,S325D,varchar255,D118E,varchar255,HB13,varchar255,SH110J,varchar255,HV121,varchar255,M1C,varchar255,M8,varchar255,ML14Z,varchar255,D115O,varchar255,D100A,varchar255,S541D,varchar255,M55Z,varchar255,M57H,varchar255,M2I,varchar255,M47,varchar255,G117J,varchar255,SHMLC,varchar255,V414A,varchar255,SG228E,varchar255,SG115,varchar255,HC33,varchar255,SG222J,varchar255,SG223A,varchar255,M3G,varchar255,SG265AI,varchar255,IDXH4A,varchar255,SH9,varchar255,V225,varchar255,HC7,varchar255,MM3,varchar255,SH76U,varchar255,SG240E,varchar255,SG123H,varchar255,SG226,varchar255,M2M,varchar255,M3D,varchar255,M52,varchar255,S112A,varchar255,S541V,varchar255,SH19,varchar255,SH20,varchar255,SG251,varchar255,D119XH,varchar255,SG305,varchar255,HV247,varchar255,HML12,varchar255,S572C,varchar255,CHL4,varchar255,SHMLD,varchar255,V538,varchar255,S714BB,varchar255,S923,varchar255,S325FZ,varchar255,SG201F,varchar255,HML32A,varchar255,SH68B,varchar255,SHCOLA,varchar255,V467E,varchar255,M57D,varchar255,V770P,varchar255,S573C,varchar255,V472Q,varchar255,V778,varchar255,V478,varchar255,V754CP,varchar255,SH231AG,varchar255,SH232,varchar255,S540J,varchar255,M42C,varchar255,S541A,varchar255,SG216F,varchar255,SG304C,varchar255,V166,varchar255,HB41,varchar255,V744A,varchar255,V463B,varchar255,SH83,varchar255,SG261,varchar255,V770X,varchar255,SH292,varchar255,SH110H,varchar255,S523P,varchar255,SH110G,varchar255,V762AJ,varchar255,V762BA,varchar255,S578V,varchar255,S581D,varchar255,IDXCH2,varchar255,SG309,varchar255,D103E,varchar255,HV041,varchar255,SHRM4,varchar255,SG241Y,varchar255,SG310,varchar255,S435GB,varchar255,HV204,varchar255,V121,varchar255,S937F,varchar255,SG269Z,varchar255,AWFACTW,varchar255,SG270Z,varchar255,M6,varchar255,SH2M,varchar255,V472S,varchar255,V474A,varchar255,SH3D,varchar255,S903D,varchar255,G103,varchar255,HV253D,varchar255,SH197D,varchar255,HMHIDX2,varchar255,HO101,varchar255,ML16C,varchar255,SG253C,varchar255,H32D,varchar255,S523F,varchar255,SG241B,varchar255,HML32F,varchar255,S947,varchar255,SH93,varchar255,SG121,varchar255,HSKIDX,varchar255,D120,varchar255,V228,varchar255,D123,varchar255,HV115,varchar255,SG112A,varchar255,M19A,varchar255,D119XE,varchar255,S951,varchar255,SGRESULT,varchar255,S906A,varchar255,V233,varchar255,V3A00L,varchar255,V537,varchar255,HS102,varchar255,D118XI,varchar255,HB12A,varchar255,G124,varchar255,SH283T,varchar255,SH6YJ,varchar255,HV232B,varchar255,S523T,varchar255,HV243B,varchar255,D115H,varchar255,V784Q,varchar255,M49E,varchar255,CHL6,varchar255,SH123D,varchar255,D118XD,varchar255,M2G,varchar255,M45,varchar255,SG216H,varchar255,S577G1,varchar255,D115R,varchar255,HV012,varchar255,HB1,varchar255,V104,varchar255,SG228Z,varchar255,S938,varchar255,SH227,varchar255,HV017,varchar255,S903Z,varchar255,S538O,varchar255,S540F,varchar255,HV235,varchar255,SH202,varchar255,V379,varchar255,V380,varchar255,S948,varchar255,SG266B,varchar255,V413A,varchar255,HV027,varchar255,V3A00Z,varchar255,V762AK,varchar255,V762BB,varchar255,H4M,varchar255,H5D,varchar255,V851B,varchar255,HW72,varchar255,H37K,varchar255,S229C,varchar255,V844,varchar255,HV019,varchar255,HV020,varchar255,SG126,varchar255,SG228I,varchar255,V770I,varchar255,S906,varchar255,S937C,varchar255,SH231AE,varchar255,D119XI,varchar255,S919,varchar255,S920,varchar255,H0M,varchar255,D118XH,varchar255,ML13G,varchar255,S578X,varchar255,S581F,varchar255,D118W,varchar255,D119N,varchar255,SG275,varchar255,SH6YF,varchar255,M49X,varchar255,V212,varchar255,HV226,varchar255,HA57,varchar255,SHHTEC,varchar255,SG123B,varchar255,V784K,varchar255,SG246X,varchar255,V474,varchar255,H12H,varchar255,V412A,varchar255,M15,varchar255,SGMUNIC,varchar255,SH216,varchar255,ML13H,varchar255,ML15C,varchar255,V481C,varchar255,SH4Y,varchar255,SVALPRO,varchar255,V614,varchar255,V3A08Z,varchar255,H37O,varchar255,S941,varchar255,SG109,varchar255,SG110,varchar255,SG240I,varchar255,SH76,varchar255,SG222Z,varchar255,S944,varchar255,HC62,varchar255,SH71U,varchar255,SGINTNUM,varchar255,HB55,varchar255,S921,varchar255,HB66,varchar255,HA53,varchar255,S540X,varchar255,S541O,varchar255,SHB2M,varchar255,V119,varchar255,V120,varchar255,SHB1Y,varchar255,SHB3D,varchar255,SG303B,varchar255,V158,varchar255,S541M,varchar255,SH251AM,varchar255,V853C,varchar255,SG224,varchar255,SG265D,varchar255,V316,varchar255,SH68A,varchar255,SG246D,varchar255,HPCIDX,varchar255,S906B,varchar255,V204,varchar255,SINGRTH,varchar255,SG232B,varchar255,M57U,varchar255,S937G,varchar255,D103B,varchar255,HV014,varchar255,SREGALIAP,varchar255,H32L,varchar255,D117,varchar255,M3K,varchar255,M60,varchar255,HW18,varchar255,S326,varchar255,HC5,varchar255,SHCOLC,varchar255,V375A,varchar255,V851K,varchar255,M65K,varchar255,V852B,varchar255,D101C,varchar255,ML19E,varchar255,HV228,varchar255,HA11,varchar255,V633G,varchar255,SG262A,varchar255,SG222B,varchar255,H2Y,varchar255,ML19Z,varchar255,V471D,varchar255,V465,varchar255,SG258A,varchar255,V376,varchar255,V471E,varchar255,V775,varchar255,HMLIDX,varchar255,HS111,varchar255,SH53,varchar255,S540H,varchar255,SG246E,varchar255,S541S,varchar255,D110H,varchar255,HC73,varchar255,SG229,varchar255,S523I,varchar255,D110F,varchar255,S540L,varchar255,S541C,varchar255,V627,varchar255,SH221,varchar255,HV242,varchar255,SH6XC,varchar255,S578K,varchar255,S579B,varchar255,SG223F,varchar255,HS108,varchar255,SBONIFICA,varchar255,D118H,varchar255,HA12A,varchar255,SH80C,varchar255,H7Y,varchar255,ML13C,varchar255,SG127,varchar255,ML0,varchar255,V770C,varchar255,SGEDITO,varchar255,G113,varchar255,V472A,varchar255,S945O,varchar255,V625A,varchar255,V762AI,varchar255,V762AR,varchar255,V307,varchar255,V762BI,varchar255,D115XE,varchar255,S929,varchar255,V322,varchar255,S930,varchar255,G117D,varchar255,HV238,varchar255,SG247E,varchar255,V743F,varchar255,HV253A,varchar255,SHSMK,varchar255,SG279N,varchar255,S435GM,varchar255,SG123D,varchar255,H12C,varchar255,SHH2Y,varchar255,HB4,varchar255,HA3,varchar255,M65E,varchar255,S578P2,varchar255,M71,varchar255,B12,varchar255,SH1H,varchar255,SH283Y,varchar255,D115XI,varchar255,SH28D,varchar255,SG265BB,varchar255,H12D,varchar255,V237,varchar255,SG301A,varchar255,V855,varchar255,S578Q,varchar255,HV227,varchar255,SG123A,varchar255,V770J,varchar255,V219,varchar255,V220,varchar255,S572D,varchar255,SG252,varchar255,V438,varchar255,ML2,varchar255,SHT1D,varchar255,V815C,varchar255,M57J,varchar255,S577E,varchar255,V616,varchar255,H37J,varchar255,S903G,varchar255,SG204M,varchar255,D118A,varchar255,V820,varchar255,SH235AA,varchar255,H12U,varchar255,MM12,varchar255,S578W,varchar255,S581E,varchar255,SH235AF,varchar255,SG204A,varchar255,S541G,varchar255,HO104,varchar255,V414I,varchar255,V367,varchar255,SH133B,varchar255,HV113,varchar255,V761C,varchar255,V774C,varchar255,D105K,varchar255,SH231,varchar255,SG282B,varchar255,V762AX,varchar255,V762BO,varchar255,V238,varchar255,S577J,varchar255,S578A,varchar255,D116,varchar255,SH96C,varchar255,SG240A,varchar255,S229B,varchar255,SG216B,varchar255,SG216Z,varchar255,V3A00R,varchar255,S222,varchar255,HV237B,varchar255,SH242C,varchar255,V3A08S,varchar255,S578M,varchar255,S579D,varchar255,SHPC1,varchar255,H32E,varchar255,V131,varchar255,M49B,varchar255,H15I,varchar255,S572,varchar255,SG265Z,varchar255,ML13A,varchar255,G114,varchar255,V603,varchar255,S223B,varchar255,SG241D,varchar255,HV253Z,varchar255,SG123E,varchar255,V812,varchar255,SG249A,varchar255,V412C,varchar255,G123,varchar255,V321,varchar255,HW58,varchar255,HV253E,varchar255,SHSD1,varchar255,SHRM1,varchar255,HV237F,varchar255,SH9Y,varchar255,SH227AB,varchar255,V304,varchar255,SG241C,varchar255,M57P,varchar255,V3A08AB,varchar255,HV008,varchar255,H3M,varchar255,H4D,varchar255,SHB1M,varchar255,V604,varchar255,SHB2D,varchar255,D124,varchar255,ML13K,varchar255,ML14B,varchar255,SH614,varchar255,D119XJ,varchar255,V3A08AD,varchar255,SQUINTIP,varchar255,V784I,varchar255,S937A,varchar255,V129,varchar255,V130,varchar255,D118M,varchar255,V472T,varchar255,M55E,varchar255,V474B,varchar255,H38,varchar255,D119D,varchar255,HV030,varchar255,SH25M,varchar255,V471B,varchar255,V629,varchar255,SH80MI,varchar255,V838B,varchar255,S326AC,varchar255,MM10,varchar255,SH295A,varchar255,V770R,varchar255,V3A08X,varchar255,V784V,varchar255,HV230A,varchar255,S523L,varchar255,D119V,varchar255,SH515,varchar255,V203,varchar255,V784A,varchar255,SH249,varchar255,SH250,varchar255,SH70,varchar255,SH248,varchar255,H31,varchar255,SG217F,varchar255,V152,varchar255,IDX95,varchar255,SG280A,varchar255,SH295BH,varchar255,SH69,varchar255,V841,varchar255,D115I,varchar255,FDYSTO,varchar255,S939,varchar255,H41B,varchar255,H15L,varchar255,H2D,varchar255,H42,varchar255,V414T,varchar255,HV246C,varchar255,SH21,varchar255,SG265X,varchar255,ML13J,varchar255,ML14A,varchar255,SG269E,varchar255,SG270E,varchar255,HW6,varchar255,SGHORAF,varchar255,MM7,varchar255,SHIDX9,varchar255,HML14,varchar255,B8,varchar255,H8M,varchar255,H9D,varchar255,S435D,varchar255,SG216X,varchar255,H37F,varchar255,SH125A,varchar255,M1B,varchar255,M29,varchar255,D119XD,varchar255,SH6YA,varchar255,V3A08Q,varchar255,V827,varchar255,SG201E,varchar255,H9M,varchar255,HW12,varchar255,S325CH,varchar255,S931,varchar255,SG218,varchar255,V477,varchar255,V625,varchar255,H15M,varchar255,M4,varchar255,SH233,varchar255,SH615,varchar255,M13,varchar255,V463F,varchar255,SG247Z,varchar255,SH79U,varchar255,SH80U,varchar255,SIFUENTE3,varchar255,HV216,varchar255,HB0,varchar255,V103,varchar255,S1001,varchar255,SHT3,varchar255,V825,varchar255,D101B,varchar255,SG304E,varchar255,V847,varchar255,SH268,varchar255,H32G,varchar255,SG222X,varchar255,V714A,varchar255,SGRESP,varchar255,SHMTX,varchar255,S913,varchar255,SH3M,varchar255,SH4D,varchar255,HV244,varchar255,SH62,varchar255,SHP222,varchar255,V472D,varchar255,S911,varchar255,V822,varchar255,SG285,varchar255,ML21C,varchar255,H2M,varchar255,H3D,varchar255,M1,varchar255,SHH3M,varchar255,S943,varchar255,HV246I,varchar255,SG217H,varchar255,H15G,varchar255,H9,varchar255,HV102,varchar255,V739,varchar255,V740,varchar255,HV009,varchar255,S908,varchar255,HV010,varchar255,V839A,varchar255,V840A,varchar255,HML18,varchar255,IDXML,varchar255,V235,varchar255,ML13L,varchar255,M57I,varchar255,V762AS,varchar255,M49G,varchar255,V762BJ,varchar255,S572X,varchar255,HV219,varchar255,HV220,varchar255,SH197C,varchar255,SH110L,varchar255,SGHORAI,varchar255,HV253B,varchar255,SG265AX,varchar255,SG228G,varchar255,HV253,varchar255,M55J,varchar255,D110E,varchar255,V3A05,varchar255,D101G,varchar255,V823,varchar255,SG304X,varchar255,V842,varchar255,HML7,varchar255,D110A,varchar255,V408,varchar255,S937B,varchar255,HV140,varchar255,D115Y,varchar255,V784U,varchar255,SHT1Y,varchar255,M10,varchar255,V838C,varchar255,SH63,varchar255,V409,varchar255,V410,varchar255,D118XG,varchar255,HV011,varchar255,HA67,varchar255,V467K,varchar255,V743B,varchar255,SHD4Y,varchar255,HVIDX,varchar255,SG217C,varchar255,SG271,varchar255,HML1,varchar255,S506AY,varchar255,V835B,varchar255,D115N,varchar255,S714E,varchar255,SH118A,varchar255,SH251BH,varchar255,D105F,varchar255,SG240H,varchar255,D129,varchar255,SG240X,varchar255,S114GX,varchar255,V824,varchar255,S573D,varchar255,V395,varchar255,V405,varchar255,V851C,varchar255,D121,varchar255,S569B,varchar255,S570B,varchar255,SH251A,varchar255,V535,varchar255,V216,varchar255,HB11,varchar255,V850A,varchar255,S325O,varchar255,D118I,varchar255,SGMINUTI,varchar255,S326AX,varchar255,D119S,varchar255,D122A,varchar255,S903F,varchar255,SG119B,varchar255,SHB3,varchar255,SG120B,varchar255,SG272B,varchar255,SH26,varchar255,V829,varchar255,H14,varchar255,H12P,varchar255,V830,varchar255,H32I,varchar255,SH273,varchar255,AWFACTU,varchar255,SG247C,varchar255,HMLC,varchar255,SH80M,varchar255,SINGRTHP,varchar255,HV237K,varchar255,M39A,varchar255,V633A,varchar255,S523B,varchar255,S928,varchar255,SH118B,varchar255,HA50,varchar255,V3A08AC,varchar255,S583B,varchar255,V536,varchar255,S541R,varchar255,V762AN,varchar255,V762BE,varchar255,HV116,varchar255,SG235,varchar255,SH78A,varchar255,M55K,varchar255,HML32G,varchar255,V3A08B,varchar255,SH6YE,varchar255,SG222K,varchar255,M65D,varchar255,MMC4,varchar255,S577O,varchar255,S578F,varchar255,HV236,varchar255,SG223B,varchar255,SG304D,varchar255,SH80AI,varchar255,H8Y,varchar255,H12J,varchar255,S435GK,varchar255,SH284G,varchar255,SG254,varchar255,G106,varchar255,CHL7,varchar255,B10,varchar255,V217,varchar255,V472N,varchar255,D118P,varchar255,V527,varchar255,D119G,varchar255,V784B,varchar255,D101J,varchar255,V784C,varchar255,S578P,varchar255,S579G,varchar255,HA35,varchar255,SG118A,varchar255,SHBM,varchar255,SG208B,varchar255,SH3,varchar255,H12Z,varchar255,D125,varchar255,V472U,varchar255,V474C,varchar255,SG311,varchar255,S523S,varchar255,HC32,varchar255,SG301F,varchar255,V376A,varchar255,HV013,varchar255,HV237E,varchar255,SHDISTRICT,varchar255,V414F,varchar255,H4Y,varchar255,SG105,varchar255,SG269K,varchar255,S578Y,varchar255,S581G,varchar255,HV209,varchar255,D101H,varchar255,SHD4,varchar255,HV210,varchar255,SG270K,varchar255,SH1Y,varchar255,SH55,varchar255,V472R,varchar255,BORD,varchar255,HB58,varchar255,SH238,varchar255,HD101,varchar255,SG123C,varchar255,ML13P,varchar255,V631,varchar255,S28DAYS,varchar255,S714D,varchar255,H37G,varchar255,D105C,varchar255,SH9M,varchar255,ML15B,varchar255,SG256A,varchar255,V762BU,varchar255,MM14,varchar255,H37A,varchar255,S540E,varchar255,HV218,varchar255,SH234C,varchar255,HC52,varchar255,HB3,varchar255,V624,varchar255,S577L,varchar255,S578C,varchar255,V762AC,varchar255,MMC1,varchar255,SG222C,varchar255,S114B,varchar255,SH2X,varchar255,SG223E,varchar255,H5Y,varchar255,G117H,varchar255,M27,varchar255,SHT2Y,varchar255,M65X,varchar255,HC12,varchar255,V472G,varchar255,V415,varchar255,SH212D,varchar255,H43,varchar255,S435H,varchar255,V719,varchar255,V454,varchar255,B2,varchar255,S435GF,varchar255,ML24C,varchar255,V761B,varchar255,H3Y,varchar255,SINGRESOIB,varchar255,H12G,varchar255,HV118,varchar255,ML13Z,varchar255,S1004,varchar255,H7,varchar255,SH6YB,varchar255,HW51,varchar255,H32J,varchar255,SHB13,varchar255,V3A08L,varchar255,V613,varchar255,V414W,varchar255,ML19A,varchar255,ML20A,varchar255,SHA0,varchar255,SHRM3,varchar255,SHSD3,varchar255,SG241Z,varchar255,V468,varchar255,SG301E,varchar255,SH295BM,varchar255,V234,varchar255,V836,varchar255,G119,varchar255,HB32,varchar255,V3A01,varchar255,S584B,varchar255,M55C,varchar255,MM11,varchar255,HA33,varchar255,S937X,varchar255,HC11,varchar255,V412B,varchar255,HA6,varchar255,SH127B,varchar255,HA41,varchar255,H2,varchar255,S907,varchar255,S573E,varchar255,S576C,varchar255,V3A08G,varchar255,S581J,varchar255,D107,varchar255,V472H,varchar255,V784S,varchar255,SG237A,varchar255,IDX5CS,varchar255,V528,varchar255,V325A,varchar255,V832C,varchar255,V853B,varchar255,MM8,varchar255,D110C,varchar255,SH226,varchar255,SG123X,varchar255,V467M,varchar255,SG219A,varchar255,HO106,varchar255,V732,varchar255,HV253G,varchar255,SHH3Y,varchar255,B4,varchar255,HV230B,varchar255,D118XK,varchar255,HB40,varchar255,V763C,varchar255,V767C,varchar255,V419,varchar255,V420,varchar255,ML101,varchar255,S326AA,varchar255,S940M,varchar255,HV246J,varchar255,SG240D,varchar255,HB63,varchar255,S541X,varchar255,M70,varchar255,G112,varchar255,M36,varchar255,D115K,varchar255,M42B,varchar255,SG225B,varchar255,V762AF,varchar255,V744D,varchar255,SH127A,varchar255,B5,varchar255,S522D,varchar255,V467L,varchar255,V851F,varchar255,HW17,varchar255,H20,varchar255,SH80A,varchar255,SG278,varchar255,M3M,varchar255,M62,varchar255,S581I,varchar255,V157,varchar255,S1113,varchar255,S926,varchar255,SG113D,varchar255,V359,varchar255,V360,varchar255,V834C,varchar255,HV000,varchar255,SG233,varchar255,H36A,varchar255,SG223Z,varchar255,SG304B,varchar255,SH139C,varchar255,HV246H,varchar255,HC8,varchar255,V762AP,varchar255,V762BG,varchar255,D127,varchar255,D105E,varchar255,V481F,varchar255,HA62,varchar255,SG223G,varchar255,SH139B,varchar255,SH231AC,varchar255,H12S,varchar255,V469E,varchar255,V851D,varchar255,V815A,varchar255,SG207B,varchar255,V762AH,varchar255,V302A,varchar255,S578U,varchar255,H12Y,varchar255,S581C,varchar255,SG247X,varchar255,SG241G,varchar255,M55I,varchar255,V414P,varchar255,M57N,varchar255,M49Z,varchar255,SG202H,varchar255,V446,varchar255,V3A00K,varchar255,S573A,varchar255,HV239,varchar255,HV240,varchar255,HB35,varchar255,V413D,varchar255,V784O,varchar255,M57L,varchar255,H6M,varchar255,H7D,varchar255,V418,varchar255,S506AD,varchar255,HV213,varchar255,SH68C,varchar255,SH197E,varchar255,V211,varchar255,V311,varchar255,V784F,varchar255,V472K,varchar255,V473B,varchar255,S325CB,varchar255,HA5,varchar255,SG219B,varchar255,SINGRESOO,varchar255,M55L,varchar255,S577G2,varchar255,V848,varchar255,SG211,varchar255,ML23A,varchar255,V122,varchar255,S940Y,varchar255,D101E,varchar255,HW52,varchar255,SG243A,varchar255,HML31,varchar255,ML13X,varchar255,V414H,varchar255,VCAL,varchar255,S540I,varchar255,V805,varchar255,M2B,varchar255,M39,varchar255,G117Y,varchar255,SH128,varchar255,SH68,varchar255,HMLD,varchar255,D119T,varchar255,D122B,varchar255,H15C,varchar255,V750,varchar255,D118C,varchar255,V754JP,varchar255,S573,varchar255,SGINTM,varchar255,SH2D,varchar255,SH1M,varchar255,H37M,varchar255,V849,varchar255,SG269C,varchar255,V754BP,varchar255,SG270C,varchar255,M1D,varchar255,M57T,varchar255,SH251,varchar255,SH6XA,varchar255,HB51,varchar255,V846,varchar255,SG269B,varchar255,SG270B,varchar255,SG228C,varchar255,D118XJ,varchar255,SH215,varchar255,M57A,varchar255,SG223K,varchar255,V770D,varchar255,V134,varchar255,G109,varchar255,G110,varchar255,SH3H,varchar255,SH56,varchar255,SG258B,varchar255,S523R,varchar255,D118Y,varchar255,D119P,varchar255,S325FX,varchar255,HML32B,varchar255,SH74,varchar255,SH3X,varchar255,SG269X,varchar255,SG270X,varchar255,H32T,varchar255,S510J,varchar255,SH128B,varchar255,V3A00F,varchar255,HA69,varchar255,HA70,varchar255,V853A,varchar255,SGSUPERV,varchar255,G111,varchar255,D119XG,varchar255,H41A,varchar255,SH71,varchar255,D119W,varchar255,SG241I,varchar255,V409A,varchar255,V410A,varchar255,MMC5,varchar255,D115B,varchar255,SG201J,varchar255,SG202A,varchar255,SH69A,varchar255,V471F,varchar255,V437,varchar255,H32F,varchar255,HV023,varchar255,HV101,varchar255,ML19D,varchar255,SH279,varchar255,SH280,varchar255,V242,varchar255,D110D,varchar255,S523D,varchar255,S903H,varchar255,SG107,varchar255,HV040,varchar255,HML30,varchar255,V414V,varchar255,S577Q,varchar255,S578H,varchar255,V463X,varchar255,V472C,varchar255,SG264,varchar255,H37N,varchar255,S435F,varchar255,G117X,varchar255,SH6YI,varchar255,M55X,varchar255,M57F,varchar255,S924,varchar255,V769,varchar255,V770,varchar255,V3A02,varchar255,V3A00H,varchar255,V202,varchar255,SG227,varchar255,M2K,varchar255,M55M,varchar255,V141,varchar255,M3B,varchar255,M50,varchar255,V323A,varchar255,S572B,varchar255,SHP216,varchar255,V414E,varchar255,SGMINUTF,varchar255,SH6M,varchar255,S439A,varchar255,SH7D,varchar255,V462,varchar255,SH92,varchar255,SH259,varchar255,HA1,varchar255,SH260,varchar255,V837,varchar255,V213,varchar255,V458,varchar255,ML22B,varchar255,SH235AC,varchar255,S435GG,varchar255,H37Z,varchar255,SG113A,varchar255,HV106,varchar255,V701,varchar255,V633B,varchar255,V439,varchar255,V440,varchar255,V602,varchar255,SH7M,varchar255,SH8D,varchar255,D103D,varchar255,SG217E,varchar255,V634,varchar255,SG240Z,varchar255,S903E,varchar255,HB53,varchar255,V784D,varchar255,SH251BM,varchar255,HV232D,varchar255,SG222F,varchar255,HV237,varchar255,V312,varchar255,ML22C,varchar255,HA56,varchar255,SG116A,varchar255,ML13D,varchar255,D118L,varchar255,D119C,varchar255,H36F,varchar255,HML17,varchar255,SG201D,varchar255,MMIDX,varchar255,V774B,varchar255,D100D,varchar255,HML2,varchar255,H31C,varchar255,V502,varchar255,D105A,varchar255,SH1MO,varchar255,B11,varchar255,V833B,varchar255,M49Y,varchar255,HC51,varchar255,SGINT,varchar255,M55G,varchar255,H10,varchar255,ML13M,varchar255,V803,varchar255,SG240B,varchar255,SH67,varchar255,M57R,varchar255,HC19,varchar255,D115XJ,varchar255,ML16A,varchar255,SH77C,varchar255,SVIVIG2,varchar255,SG262B,varchar255,SH75U,varchar255,V384A,varchar255,S936,varchar255,SH268I,varchar255,HS107,varchar255,V756,varchar255,M73,varchar255,S114C,varchar255,D115G,varchar255,M65H,varchar255,V413B,varchar255,SH235AD,varchar255,HML11,varchar255,V754DP,varchar255,V768C,varchar255,HV109,varchar255,HW10,varchar255,HV110,varchar255,S591,varchar255,V745A,varchar255,G117C,varchar255,SHED3,varchar255,V3A00P,varchar255,V337,varchar255,V761,varchar255,V784H,varchar255,SG116C,varchar255,V784J,varchar255,SG217I,varchar255,SH8,varchar255,V762AE,varchar255,S568E,varchar255,HV246,varchar255,SVIVIG1,varchar255,SG208A,varchar255,HV237X,varchar255,SH79,varchar255,SH80,varchar255,V411A,varchar255,HO103,varchar255,V839,varchar255,V840,varchar255,SG265AB,varchar255,M3H,varchar255,SG247Y,varchar255,V457,varchar255,V472O,varchar255,SG279U,varchar255,SG282C,varchar255,V762AV,varchar255,V762BM,varchar255,SG111,varchar255,HV122,varchar255,HV225,varchar255,HW70,varchar255,HV127,varchar255,SG288,varchar255,SH78,varchar255,M5,varchar255,SH1,varchar255,V153,varchar255,V472L,varchar255,HB52,varchar255,MM5,varchar255,V814,varchar255,H0D,varchar255,H22,varchar255,S569D,varchar255,S435GL,varchar255,V159,varchar255,V160,varchar255,S570D,varchar255,S306A,varchar255,M2F,varchar255,M44,varchar255,SHCMC,varchar255,IDX92,varchar255,HV007,varchar255,SG256B,varchar255,SH3Y,varchar255,SH75,varchar255,V633E,varchar255,SH227AG,varchar255,ML13E,varchar255,V762AO,varchar255,M57V,varchar255,V762BF,varchar255,SH295AD,varchar255,V414C,varchar255,D118V,varchar255,D119M,varchar255,HML32D,varchar255,HA65,varchar255,V102,varchar255,SHT2,varchar255,V762BZ,varchar255,SH258,varchar255,SG217Y,varchar255,S114G,varchar255,H37L,varchar255,V762AQ,varchar255,V762BH,varchar255,SH271,varchar255,V3A00N,varchar255,SH94,varchar255,H32X,varchar255,S576A,varchar255,S823B,varchar255,D118X,varchar255,D119O,varchar255,SH122C,varchar255,HC17,varchar255,SG280B,varchar255,V124,varchar255,V482B,varchar255,D130A,varchar255,HV207,varchar255,SH91,varchar255,HV044,varchar255,SG216A,varchar255,H37D,varchar255,V467G,varchar255,SH133C,varchar255,SG265H,varchar255,V414D,varchar255,V3A00J,varchar255,V731,varchar255,S577C,varchar255,V3A08N,varchar255,S576H,varchar255,HW8,varchar255,SG202G,varchar255,ML1,varchar255,HB56,varchar255,SG228D,varchar255,BIDX,varchar255,H12K,varchar255,H13B,varchar255,V762AW,varchar255,V762BN,varchar255,SH8Y,varchar255,SH227AE,varchar255,SG222I,varchar255,SG237B,varchar255,SG241E,varchar255,V763E,varchar255,V137,varchar255,S325A,varchar255,SH516,varchar255,S541Y,varchar255,V138,varchar255,D119XA,varchar255,HV246G,varchar255,V128,varchar255,S536K,varchar255,SG281,varchar255,V476,varchar255,V207,varchar255,REC84_GROUP,varchar255,HML5,varchar255,G121,varchar255,G107,varchar255,HC58,varchar255,SH224I,varchar255,D115S,varchar255,D117A,varchar255,IDX99,varchar255,HIDX,varchar255,IDX96,varchar255,SG269F,varchar255,SG270F,varchar255,SG207,varchar255,HMLB,varchar255,S325CX,varchar255,HV103,varchar255,M49A,varchar255,H12L,varchar255,HV221,varchar255,HV246A,varchar255,HV237C,varchar255,HV246E,varchar255,V784T,varchar255,V744B,varchar255,S5YEARS,varchar255,V3A08A,varchar255,S325CE,varchar255,S916,varchar255,S570,varchar255,HC53,varchar255,CHL5,varchar255,V447A,varchar255,V3A04,varchar255,V414R,varchar255,S575,varchar255,HMLA,varchar255,SINGRESOTP,varchar255,S541E,varchar255,V784E,varchar255,V3A08F,varchar255,S103A,varchar255,SG277,varchar255,H32A,varchar255,SH73,varchar255,SG301H,varchar255,SG202X,varchar255,V227,varchar255,H32P,varchar255,V768A,varchar255,V481B,varchar255,HS104,varchar255,SG245,varchar255,V813,varchar255,SH2MO,varchar255,S578P1,varchar255,SG248,varchar255,S616,varchar255,SG104,varchar255,SH505,varchar255,M49C,varchar255,HML34,varchar255,SH79N,varchar255,SH80N,varchar255,G101,varchar255,SH6YC,varchar255,S927,varchar255,B13,varchar255,V762AM,varchar255,V762AA,varchar255,V541,varchar255,V481D,varchar255,V762BD,varchar255,SHB1D,varchar255,HC3,varchar255,SH255D,varchar255,SH257,varchar255,FSYSTO,varchar255,S904,varchar255,SG230M,varchar255,SG201I,varchar255,V832B,varchar255,SINGRESOIP,varchar255,HB60,varchar255,HB68,varchar255,S540W,varchar255,S541N,varchar255,V811,varchar255,V406,varchar255,SG214,varchar255,HML16A,varchar255,S714BC,varchar255,G118,varchar255,D118Q,varchar255,D119H,varchar255,D119X,varchar255,SG286,varchar255,V474D,varchar255,M55O,varchar255,SG253B,varchar255,S541L,varchar255,V466,varchar255,V784P,varchar255,H12R,varchar255,M3J,varchar255,SHP221,varchar255,SG202N,varchar255,HML16,varchar255,SH76N,varchar255,HV128,varchar255,HW5,varchar255,V414K,varchar255,V715,varchar255,V770V,varchar255,SG123J,varchar255,MIDX,varchar255,S909,varchar255,S910,varchar255,SHT3M,varchar255,D130B,varchar255,V444A,varchar255,SG216E,varchar255,D103C,varchar255,H31E,varchar255,D115E,varchar255,S903X,varchar255,SH110K,varchar255,SH295BC,varchar255,S582,varchar255,V3A00C,varchar255,S325FA,varchar255,S578J,varchar255,S579A,varchar255,SG117A,varchar255,S576J,varchar255,S577A,varchar255,SHADULT35,varchar255,SH242B,varchar255,SH223,varchar255,ML19X,varchar255,D114,varchar255,SHMLB,varchar255,SHED1,varchar255,V529,varchar255,V530,varchar255,V511,varchar255,IDXCHL,varchar255,SG225A,varchar255,S918,varchar255,SG239,varchar255,SIFUENTE2,varchar255,V770L,varchar255,V413C,varchar255,SH255S,varchar255,S523G,varchar255,V503,varchar255,S325CG,varchar255,H15H,varchar255,SHUPAZILA,varchar255,V3A00Q,varchar255,V763G,varchar255,SGZONA,varchar255,SH61,varchar255,D101D,varchar255,M57Q,varchar255,V774A,varchar255,V3A06,varchar255,V481E,varchar255,H12V,varchar255,SG201A,varchar255,D115XF,varchar255,SG201B,varchar255,AWFACTT,varchar255,SHP4D,varchar255,H32U,varchar255,V834B,varchar255,S541Q,varchar255,SH2,varchar255,M42D,varchar255,SG101,varchar255,HC1,varchar255,V826A,varchar255,H3,varchar255,S541K,varchar255,SH6YG,varchar255,V463G,varchar255,V3A00D,varchar255,D118S,varchar255,D119J,varchar255,D121A,varchar255,S522C,varchar255,SH231AD,varchar255,AWFACTE2,varchar255,S932,varchar255,HV206,varchar255,SH123A,varchar255,SH198C,varchar255,D005,varchar255,D119XK,varchar255,SH6YD,varchar255,H7M,varchar255,V3A00S,varchar255,M57X,varchar255,H8D,varchar255,V741,varchar255,M17,varchar255,V779,varchar255,V780,varchar255,MM15,varchar255,D105D,varchar255,SG125,varchar255,SG282A,varchar255,SH28C,varchar255,V464,varchar255,HS105,varchar255,SIFUENTE1,varchar255,MMC2,varchar255,REC31_GROUP,varchar255,V414N,varchar255,V3A03,varchar255,S572A,varchar255,SH234,varchar255,SH7,varchar255,HML15,varchar255,V507,varchar255,S566,varchar255,SHMLA,varchar255,ML13O,varchar255,SH283,varchar255,SG240C,varchar255,SG241A,varchar255,H15B,varchar255,S577G,varchar255,SG241F,varchar255,G117A,varchar255,G104,varchar255,D110G,varchar255,H31D,varchar255,SH283D,varchar255,D108,varchar255,SG265AC,varchar255,V762AB,varchar255,V3A00W,varchar255,D101I,varchar255,S604A,varchar255,S578N,varchar255,S579E,varchar255,HV245,varchar255,SH251B,varchar255,V838A,varchar255,HV237Z,varchar255,S922,varchar255,D115W,varchar255,H37E,varchar255,V482A,varchar255,H13,varchar255,HA13,varchar255,SH242A,varchar255,SH264D,varchar255,SG202M,varchar255,M55H,varchar255,V762AT,varchar255,V762BK,varchar255,G108,varchar255,H0,varchar255,V474E,varchar255,HV026,varchar255,SHP218,varchar255,SH228,varchar255,SG217Z,varchar255,M55B,varchar255,SHB2Y,varchar255,D115L,varchar255,V481H,varchar255,V455,varchar255,G115,varchar255,G122,varchar255,HV004,varchar255,SG114A,varchar255,SH139D,varchar255,D118D,varchar255,V763F,varchar255,V190,varchar255,D105I,varchar255,D118B,varchar255,S435GA,varchar255,S325CC,varchar255,SHB3M,varchar255,SH251AY,varchar255,M55N,varchar255,V744E,varchar255,S578S,varchar255,S581A,varchar255,S946,varchar255,SG241H,varchar255,HA12,varchar255,HB57,varchar255,V3A00V,varchar255,HS101,varchar255,S541I,varchar255,V372A,varchar255,V106,varchar255,H0Y,varchar255,H45,varchar255,HV202,varchar255,M2D,varchar255,SHB1,varchar255,V363,varchar255,SH94A,varchar255,M2N,varchar255,M3E,varchar255,D118XB,varchar255,SG247B,varchar255,M49F,varchar255,SH253,varchar255,HML32E,varchar255,D100B,varchar255,HO105,varchar255,HV234A,varchar255,HA54,varchar255,HV107,varchar255,SG244,varchar255,V3A08J,varchar255,V3A09A,varchar255,HV246D,varchar255,ML11,varchar255,S577F,varchar255,SG265AD,varchar255,V474H,varchar255,IDXHML,varchar255,SG238,varchar255,V208,varchar255,S576F,varchar255,S435C,varchar255,HS103,varchar255,HW13,varchar255,S577N,varchar255,S578E,varchar255,SHH2M,varchar255,SHH3D,varchar255,HV018,varchar255,V763D,varchar255,S578R,varchar255,HD100,varchar255,AWFACTE,varchar255,V632,varchar255,V412,varchar255,S569A,varchar255,S570A,varchar255,S576E,varchar255,V467H,varchar255,S580,varchar255,SH96A,varchar255,V472P,varchar255,HV032,varchar255,SH221AH,varchar255,HV237I,varchar255,HA55,varchar255,SH241,varchar255,V3A08V,varchar255,ML14Y,varchar255,V3A00A,varchar255,D119XB,varchar255,V3A08D,varchar255,HA0,varchar255,V243,varchar255,D115J,varchar255,SH0Y,varchar255,SGWEIGHT,varchar255,SG263,varchar255,SH104A,varchar255,CHL1,varchar255,HW56,varchar255,HV016,varchar255,S937E,varchar255,H37H,varchar255,SG265AY,varchar255,SG291,varchar255,SH28,varchar255,ML16B,varchar255,V414U,varchar255,SG269H,varchar255,S541P,varchar255,SG270H,varchar255,D1310A,varchar255,HC68,varchar255,SHB3Y,varchar255,SG265C,varchar255,SG287,varchar255,SH227AD,varchar255,ML19C,varchar255,SGPROVIN,varchar255,ML20C,varchar255,SHT1M,varchar255,H5M,varchar255,H6D,varchar255,SHT2D,varchar255,HV253X,varchar255,H32Y,varchar255,M65G,varchar255,D115U,varchar255,V3A08E,varchar255,SG119A,varchar255,SG120A,varchar255,ML19Y,varchar255,SH231AF,varchar255,HW71,varchar255,SG223Y,varchar255,HMHIDX,varchar255,S325CZ,varchar255,S540A,varchar255,S435J,varchar255,S934,varchar255,SH231AB,varchar255,SG221,varchar255,S229A,varchar255,S325CA,varchar255,SG202K,varchar255,V3A07,varchar255,SGINTD,varchar255,IDX9A,varchar255,SG203B,varchar255,V469X,varchar255,V472F,varchar255,AWFACTR,varchar255,V702,varchar255,HC10,varchar255,V417,varchar255,V834A,varchar255,S905Y,varchar255,H44C,varchar255,D119Q,varchar255,V474F,varchar255,HV006,varchar255,SH2H,varchar255,V851I,varchar255,V626,varchar255,SH231AA,varchar255,SG217B,varchar255,HA63,varchar255,S589,varchar255,S523J,varchar255,S569E,varchar255,D105M,varchar255,HV243C,varchar255,SCORE,varchar255,D115T,varchar255,B16,varchar255,SG202F,varchar255,SG123F,varchar255,H12M,varchar255,S506AM,varchar255,D115XD,varchar255,SH235AB,varchar255,HV246B,varchar255,SHFLG,varchar255,D118N,varchar255,D119E,varchar255,HV270,varchar255,S410J,varchar255,M57B,varchar255,SH90,varchar255,V362,varchar255,SH33,varchar255,V3A08T,varchar255,M2H,varchar255,M46,varchar255,V319,varchar255,V705,varchar255,V320,varchar255,HW2,varchar255,V826,varchar255,S823A,varchar255,M3F,varchar255,M54,varchar255,V301,varchar255,M49D,varchar255,S714BA,varchar255,V762BS,varchar255,V717,varchar255,V785,varchar255,S588,varchar255,SG117B,varchar255,M9,varchar255,SH23,varchar255,HB33,varchar255,SH286,varchar255,HO102,varchar255,H34,varchar255,SG223H,varchar255,V472I,varchar255,D115XA,varchar255,HML21,varchar255,HW57,varchar255,V770F,varchar255,M19,varchar255,SG253,varchar255,D115XB,varchar255,V721,varchar255,V421,varchar255,V318,varchar255,D119U,varchar255,D122C,varchar255,SH239,varchar255,SH240,varchar255,MM6,varchar255,V766A,varchar255,HML6,varchar255,SG268,varchar255,SH133A,varchar255,S573B,varchar255,D104,varchar255,HA32,varchar255,ML15A,varchar255,SH218,varchar255,V467A,varchar255,ML23B,varchar255,HA60,varchar255,S435GZ,varchar255,HV042,varchar255,V828,varchar255,MM2,varchar255,V445,varchar255,HV124,varchar255,H36C,varchar255,HC27,varchar255,HV237D,varchar255,V113,varchar255,SHH3,varchar255,SGHOGAR,varchar255,D115XH,varchar255,SG123I,varchar255,V123,varchar255,SG128,varchar255,HML8,varchar255,SH57,varchar255,V393,varchar255,HMLE,varchar255,S714AA,varchar255,V136,varchar255,S435GH,varchar255,S325B,varchar255,V532,varchar255,S1002,varchar255,SG213B,varchar255,SG307,varchar255,V833A,varchar255,SH4M,varchar255,SH5D,varchar255,HHID,varchar255,SH72,varchar255,MM4,varchar255,SH24,varchar255,SG265AG,varchar255,S523O,varchar255,SG201H,varchar255,SH62A,varchar255,V447,varchar255,V475,varchar255,S523A,varchar255,D118XE,varchar255,SH25,varchar255,HC15,varchar255,SG232A,varchar255,SH295,varchar255,SH25Y,varchar255,ML13B,varchar255,SH227AC,varchar255,S942,varchar255,SH616,varchar255,M1A,varchar255,M28,varchar255,HC0,varchar255,V115,varchar255,S523N,varchar255,D115M,varchar255,SH27,varchar255,H21A,varchar255,V139,varchar255,V140,varchar255,HO107,varchar255,H32V,varchar255,H33M,varchar255,H40D,varchar255,SH221B,varchar255,SG265AA,varchar255,V501,varchar255,HS106,varchar255,SG112B,varchar255,S523C,varchar255,HV237A,varchar255,B15,varchar255,SG223X,varchar255,M1E,varchar255,HML32,varchar255,S540B,varchar255,HA66,varchar255,H32N,varchar255,S541J,varchar255,V471G,varchar255,SCHL145,varchar255,V443,varchar255,S223A,varchar255,S326B,varchar255,HC2,varchar255,SG265G,varchar255,V801,varchar255,AWFACTE3,varchar255,SH72U,varchar255,HB65,varchar255,V474I,varchar255,SH72N,varchar255,S541T,varchar255,D119R,varchar255,SH251AD,varchar255,SGEDITC,varchar255,SG116D,varchar255,V777,varchar255,V411,varchar255,SG223I,varchar255,ML21A,varchar255,SG270Y,varchar255,HV123,varchar255,HV237G,varchar255,SH0,varchar255,SG301B,varchar255,D128,varchar255,H40Y,varchar255,H37Y,varchar255,S435I,varchar255,S577I,varchar255,SG202I,varchar255,S576I,varchar255,S945,varchar255,SGASTOTI,varchar255,SG231,varchar255,S902,varchar255,SG246B,varchar255,S325CD,varchar255,D119XF,varchar255,SH276,varchar255,V467B,varchar255,V831,varchar255,SHP221AH,varchar255,HV217,varchar255,D112A,varchar255,S569C,varchar255,S823,varchar255,S570C,varchar255,HV025,varchar255,SH220B,varchar255,S523E,varchar255,S905M,varchar255,SH77,varchar255,H32R,varchar255,SH77A,varchar255,SG122,varchar255,SG216I,varchar255,V414G,varchar255,HWIDX,varchar255,V762BR,varchar255,S933,varchar255,D101A,varchar255,V463Z,varchar255,IDX98,varchar255,V101,varchar255,S576D,varchar255,V414L,varchar255,SHT1,varchar255,H31B,varchar255,D115V,varchar255,HW15,varchar255,V626A,varchar255,V394,varchar255,V404,varchar255,V384C,varchar255,HML35,varchar255,SH251BC,varchar255,SHB2,varchar255,V531,varchar255,S577B,varchar255,V317,varchar255,V471A,varchar255,HA40,varchar255,M57G,varchar255,S325FE,varchar255,SH6YH,varchar255,H44A,varchar255,SH254,varchar255,SG228X,varchar255,SG269A,varchar255,HV232,varchar255,SG270A,varchar255,SG222D,varchar255,SG274,varchar255,V416,varchar255,SG303A,varchar255,SG113B,varchar255,V456,varchar255,SG114B,varchar255,HO100,varchar255,HML32C,varchar255,S587,varchar255,S581X,varchar255,V815B,varchar255,M2J,varchar255,M3A,varchar255,M48,varchar255,HW4,varchar255,S1003,varchar255,SHCOL21A,varchar255,HV126,varchar255,HV253C,varchar255,V467D,varchar255,HV205,varchar255,V444,varchar255,SHP4Y,varchar255,HV246K,varchar255,HA68,varchar255,SH286I,varchar255,SG222H,varchar255,SH295AM,varchar255,S803A,varchar255,V472B,varchar255,ML23C,varchar255,SG209,varchar255,SG210,varchar255,V835C,varchar255,SH5M,varchar255,SH6D,varchar255,SH227AA,varchar255,SH82,varchar255,SH264S,varchar255,V762AU,varchar255,V762BL,varchar255,SH224,varchar255,HV120,varchar255,V525,varchar255,SG222A,varchar255,H32S,varchar255,B0,varchar255,SH139E,varchar255,V762BT,varchar255,SH63B,varchar255,V770K,varchar255,SG228J,varchar255,SG230A,varchar255,SH295B,varchar255,SG241X,varchar255,V3A00X,varchar255,V223,varchar255,V767B,varchar255,V770U,varchar255,SHED2,varchar255,SG223C,varchar255,V3A08I,varchar255,D115X,varchar255,SH77B,varchar255,V743C,varchar255,HML33,varchar255,S114F,varchar255,S586,varchar255,V513,varchar255,V442,varchar255,SH33D,varchar255,SH6XX,varchar255,HW11,varchar255,SH13,varchar255,V804,varchar255,S578L,varchar255,S579C,varchar255,D115D,varchar255,H37P,varchar255,S523Q,varchar255,SG259,varchar255,SG260,varchar255,V441,varchar255,SG265F,varchar255,HV232E,varchar255,SH212,varchar255,V3A00B,varchar255,D115F,varchar255,G105,varchar255,HV237J,varchar255,H32M,varchar255,H33D,varchar255,D100C,varchar255,HB69,varchar255,HB70,varchar255,SH128A,varchar255,HS100,varchar255,SG202J,varchar255,SG203A,varchar255,M65F,varchar255,SH6Y,varchar255,MM9,varchar255,V229,varchar255,V230,varchar255,D118O,varchar255,D119F,varchar255,D112,varchar255,HC30,varchar255,S519J,varchar255,HML4,varchar255,HB12B,varchar255,V762AZ,varchar255,V762BQ,varchar255,V770M,varchar255,S912,varchar255,V226,varchar255,V481X,varchar255,H15F,varchar255,D118XA,varchar255,SH206,varchar255,SINGRHI,varchar255,SG217A,varchar255,CHL2,varchar255,SG289,varchar255,V784M,varchar255,SG290,varchar255,HA12B,varchar255,V835A,varchar255,HW1,varchar255,SH7Y,varchar255,V3A00U,varchar255,M57E,varchar255,M57K,varchar255,B6,varchar255,HDPIDX2,varchar255,SH198D,varchar255,S914,varchar255,M55F,varchar255,SH603,varchar255,G117G,varchar255,HC9,varchar255,SH6XZ,varchar255,S114A,varchar255,H12A,varchar255,SG269J,varchar255,SG270J,varchar255,V754WP,varchar255,M66,varchar255,SHCOLB,varchar255,HML13,varchar255,ML13I,varchar255,V806,varchar255,V221,varchar255,SG265I,varchar255,V770E,varchar255,S581H,varchar255,V3A00O,varchar255,H47,varchar255,V851J,varchar255,V852A,varchar255,V821C,varchar255,S571,varchar255,S584,varchar255,V168,varchar255,V133,varchar255,V191,varchar255,V201,varchar255,V3A08U,varchar255,H46A,varchar255,V414O,varchar255,H11,varchar255,V762AL,varchar255,V304A,varchar255,V762BC,varchar255,SG301X,varchar255,SH235,varchar255,HV112,varchar255,SH295AY,varchar255,V214,varchar255,V729,varchar255,V730,varchar255,H12N,varchar255,V467F,varchar255,S578T,varchar255,S581B,varchar255,D119XC,varchar255,H32W,varchar255,V474Z,varchar255,HC64,varchar255,SG265A,varchar255,SG265AE,varchar255,SG223J,varchar255,V426,varchar255,HW73,varchar255,S536A,varchar255,V327,varchar255,V784G,varchar255,S325E,varchar255,D118K,varchar255,D119B,varchar255,S523X,varchar255,V361,varchar255,SH2Y,varchar255,D118G,varchar255,SH618,varchar255,SH205,varchar255,SG201N,varchar255,SG202E,varchar255,SG223D,varchar255,HV271,varchar255,V481G,varchar255,V222,varchar255,SG222G,varchar255,SINGRESOIPA,varchar255,D115XK,varchar255,SH81,varchar255,SH0D,varchar255,SH22,varchar255,SG240G,varchar255,HC57,varchar255,SG265E,varchar255,S523H,varchar255,V467J,varchar255,V770H,varchar255,V467I,varchar255,S325FC,varchar255,V459,varchar255,V460,varchar255,S945A,varchar255,HC4,varchar255,H33,varchar255,HW19,varchar255,SG240F,varchar255,S541U,varchar255,H15J,varchar255,HDPIDX,varchar255,S229D,varchar255,V481,varchar255,V633C,varchar255,H12Q,varchar255,V850B,varchar255,D126,varchar255,V633D,varchar255,V762BP,varchar255,SH3MO,varchar255,V3A00M,varchar255,HA51,varchar255,M3N,varchar255,M3I,varchar255,SG265AH,varchar255,H37B,varchar255,S903A,varchar255,V769A,varchar255,V770A,varchar255,HV243A,varchar255,V156,varchar255,SHWH,varchar255,SG306,varchar255,D103A,varchar255,HC63,varchar255,V763B,varchar255,MM13,varchar255,S325FB,varchar255,SG205,varchar255,S574,varchar255,M65B,varchar255,V716,varchar255,D118XF,varchar255,HMLIDX2,varchar255,SG255,varchar255,SH123C,varchar255,ML18B,varchar255,SH619,varchar255,SH246S,varchar255,D105N,varchar255,V167,varchar255,S578O,varchar255,S579F,varchar255,D111,varchar255,V743D,varchar255,SG267,varchar255,SH8M,varchar255,SH9D,varchar255,V770O,varchar255,D1310B,varchar255,H1,varchar255,H21,varchar255,SH123B,varchar255,V746,varchar255,SH217,varchar255,SALLINCI,varchar255,V770S,varchar255,SIFUENTE4,varchar255,V463E,varchar255,IDXH4,varchar255,S435GC,varchar255,HML19,varchar255,H44B,varchar255,S541H,varchar255,HML20,varchar255,HV201,varchar255,H32B,varchar255,SH71N,varchar255,HS109,varchar255,HS110,varchar255,V323,varchar255,S435GN,varchar255,D106,varchar255,S576B,varchar255,SH235A,varchar255,M65A,varchar255,V851L,varchar255,V852C,varchar255,V474X,varchar255,SHP4M,varchar255,HV104,varchar255,SHP220B,varchar255,S540C,varchar255,ML19B,varchar255,ML20B,varchar255,HW9,varchar255,SG269G,varchar255,V851H,varchar255,S568D,varchar255,V851G,varchar255,D105L,varchar255,H37X,varchar255,V781,varchar255,SG270G,varchar255,HA2,varchar255,M65C,varchar255,HV015,varchar255,SH506,varchar255,SG246Z,varchar255,SG206B,varchar255,M2E,varchar255,H12O,varchar255,M43,varchar255,HV241,varchar255,V751,varchar255,S577H,varchar255,SG250,varchar255,M65I,varchar255,S104A,varchar255,HV237H,varchar255,HC18,varchar255,V305,varchar255,SH242,varchar255,SH227AF,varchar255,HML9,varchar255,SG228H,varchar255,V463A,varchar255,V384B,varchar255,H46B,varchar255,SG123G,varchar255,SG249B,varchar255,HV232Y,varchar255,HV253F,varchar255,HB50,varchar255,S937D,varchar255,V623,varchar255,V452A,varchar255,V833C,varchar255,V452C,varchar255,HB61,varchar255,V770W,varchar255,B9,varchar255,V506,varchar255,HV214,varchar255,HA4,varchar255,V762BV,varchar255,SG113C,varchar255,V3A08M,varchar255,SH0M,varchar255,SH1D,varchar255,SG108,varchar255,HB12,varchar255,S325CF,varchar255,S568A,varchar255,SG301G,varchar255,SH78O,varchar255,V479,varchar255,V480,varchar255,V3A00G,varchar255,HV111,varchar255,S114D,varchar255,SGESTR,varchar255,SH110I,varchar255,IDXMCS,varchar255,H12W,varchar255,HML1A,varchar255,SH262,varchar255,H32K,varchar255,S903B,varchar255,V3A00T,varchar255,SH6YZ,varchar255,SH136,varchar255,V821B,varchar255,SG118B,varchar255,V155,varchar255,HV215,varchar255,D115XC,varchar255,SH225,varchar255,HB62,varchar255,HC70,varchar255,S112B,varchar255,S435GI,varchar255,SG246C,varchar255,H39,varchar255,H40,varchar255,SH281,varchar255,V854B,varchar255,V413,varchar255,SG106,varchar255,SHT3Y,varchar255,V372,varchar255,HC72,varchar255,V467C,varchar255,SG246A,varchar255,HV022,varchar255,S1005,varchar255,H4,varchar255,V453,varchar255,HC16,varchar255,SHP4,varchar255,D115C,varchar255,G117F,varchar255,S536C,varchar255,VCOL,varchar255,D118F,varchar255,D118U,varchar255,D119L,varchar255,SLNPM,varchar255,M55D,varchar255,HC56,varchar255,D115Q,varchar255,D105G,varchar255,G100,varchar255,SHP221AM,varchar255,M3L,varchar255,M61,varchar255,SG301C,varchar255,SH33Y,varchar255,SHP221B,varchar255,ML13N,varchar255,SH242I,varchar255,V315,varchar255,H37I,varchar255,V762AD,varchar255,H15A,varchar255,V770G,varchar255,V633F,varchar255,SHC0,varchar255,V239,varchar255,V240,varchar255,V3A08AA,varchar255,HA61,varchar255,HW55,varchar255,V508,varchar255,M72,varchar255,V841A,varchar255,HV108,varchar255,H32O,varchar255,SH96B,varchar255,SHRM5,varchar255,SG217G,varchar255,SH243,varchar255,SG273,varchar255,ML17B,varchar255,S326C,varchar255,S435GX,varchar255,S583,varchar255,S577M,varchar255,S578D,varchar255,D115XG,varchar255,HV035,varchar255,SH221AM,varchar255,SGDIGIT,varchar255,S325FF,varchar255,HC6,varchar255,HW16,varchar255,SG222E,varchar255,V743E,varchar255,H32H,varchar255,S536B,varchar255,SG301D,varchar255,ML12,varchar255,H35,varchar255,H12F,varchar255,D110B,varchar255,M2L,varchar255,M3C,varchar255,M51,varchar255,V472J,varchar255,V463C,varchar255,V473A,varchar255,H36B,varchar255,V414S,varchar255,V3A08C,varchar255,S325N,varchar255,S541F,varchar255,HA58,varchar255,S523M,varchar255,SG201C,varchar255,SH220,varchar255,ML17A,varchar255,SGINTA,varchar255,HV021,varchar255,HV211,varchar255,SH236,varchar255,S949,varchar255,S950,varchar255,SG243B,varchar255,V105,varchar255,SH5Y,varchar255,HW7,varchar255,V762BW,varchar255,HV028,varchar255,V463D,varchar255,SH95,varchar255,HML10,varchar255,M11,varchar255,SHCOLD,varchar255,S435GD,varchar255,SG201K,varchar255,SG202B,varchar255,V621,varchar255,H12X,varchar255,SH08,varchar255,M65J,varchar255,HV125,varchar255,V469F,varchar255,V766B,varchar255,V206,varchar255,SG216C,varchar255,M7,varchar255,V539,varchar255,V540,varchar255,V770N,varchar255,V762BX,varchar255,SG276,varchar255,H15,varchar255,M57O,varchar255,S572Y,varchar255,SG129,varchar255,SHD4D,varchar255,SG272A,varchar255,H15K,varchar255,V3A00I,varchar255,V3A08K,varchar255,V3A09B,varchar255,CHL3,varchar255,D105B,varchar255,SG266A,varchar255,HV234,varchar255,S568B,varchar255,SG103,varchar255,SH283M,varchar255,S541W,varchar255,SH6XB,varchar255,SG217D,varchar255,SH278,varchar255,V770T,varchar255,H37C,varchar255,D119Y,varchar255,G117E,varchar255,M35,varchar255,ML21B,varchar255,S570X,varchar255,V452B,varchar255,S568C,varchar255,SG247A,varchar255,G102,varchar255,G117I,varchar255,SHRESI,varchar255,SG303C,varchar255,V407,varchar255,V3A08W,varchar255,SG124,varchar255,SH33M,varchar255,V205,varchar255,HB67,varchar255,SH6,varchar255,SH139A,varchar255,M57S,varchar255,SH604,varchar255,D118J,varchar255,D119A,varchar255,M34,varchar255,V116,varchar255,HV024,varchar255,HV005,varchar255,SG292A,varchar255,V310,varchar255,HOVIDX,varchar255,SG213A,varchar255,V107,varchar255,SH237,varchar255,V744C,varchar255,SHRI,varchar255,SG228F,varchar255,M14,varchar255,HC71,varchar255,ML17C,varchar255,HC31,varchar255,SH279A,varchar255,SH517,varchar255,V770Q,varchar255,S536D,varchar255,H15D,varchar255,D118R,varchar255,V209,varchar255,V210,varchar255,D119I,varchar255,IDX94,varchar255,V3A00Y,varchar255,S585,varchar255,V783,varchar255,HC55,varchar255,SG228A,varchar255,V241,varchar255,H8,varchar255,S915,varchar255,SH245,varchar255,SGCONGL,varchar255,V505,varchar255,H5,varchar255,D101F,varchar255,SH75N,varchar255,H36D,varchar255,S523V,varchar255,V784R,varchar255,H32Z,varchar255,S576G,varchar255,D102,varchar255,H9Y,varchar255,SG201G,varchar255,V745B,varchar255,H36E,varchar255,SG202L,varchar255,SH104B,varchar255,S435GJ,varchar255,V821A,varchar255,SG247D,varchar255,V151,varchar255,SH235AE,varchar255,SH284B,varchar255,V512,varchar255,SGVISITS,varchar255,SH18,varchar255,HV002,varchar255,HA64,varchar255,SHMLIDX,varchar255,V3A00E,varchar255,M18,varchar255,V125,varchar255,V605,varchar255,V3A08H,varchar255,D109,varchar255,HB6,varchar255,S523K,varchar255,M55A,varchar255,SH122A,varchar255,HV253H,varchar255,H12E,varchar255,SHH1Y,varchar255,V313,varchar255,SHCOL3B,varchar255,SG216G,varchar255,HO108,varchar255,ML18A,varchar255,H12T,varchar255,V364,varchar255,V472M,varchar255,H15E,varchar255,HV252,varchar255,SG253A,varchar255,S917,varchar255,H12B,varchar255,V762AG,varchar255,D115P,varchar255,V482C,varchar255,V149,varchar255,V150,varchar255,V628,varchar255,D113,varchar255,SHH1D,varchar255,V135,varchar255,SG201L,varchar255,SG202C,varchar255,V127,varchar255,V401,varchar255,V770B,varchar255,D105J,varchar255,V854A,varchar255,SG217X,varchar255,M2C,varchar255,HV232C,varchar255,SHP220,varchar255,V784N,varchar255,GIDX,varchar255,HB64,varchar255,HV117,varchar255,SH197B,varchar255,S523W,varchar255,G116,varchar255,V414M,varchar255,S937H,varchar255,B3,varchar255,HV114,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" INPUT FEATURE_TYPE * ROUTE FME_GENERIC StringReplacer_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,__wb_out_feat_type__,__nuke_me__ GEOMETRY OUTPUT ROUTED FEATURE_TYPE * @FeatureType(ENCODED,@Value(__wb_out_feat_type__)) @RemoveAttributes(__wb_out_feat_type__) OUTPUT NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__ + +# ------------------------------------------------------------------------- + +FACTORY_DEF * CreationFactory CREATE_AT_END OUTPUT FEATURE_TYPE __NUKEME__ @TCL("if [file exists {$(WORKSPACE_TEMP_DIR)}] {set files [glob -nocomplain -directory {$(WORKSPACE_TEMP_DIR)} -tails *.ffs]; if {[llength $files] == 1} { set theFile {$(WORKSPACE_TEMP_DIR)/}; append theFile [lindex $files 0]; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -f FFS $theFile & \175; } elseif { [llength $files] == 0 } { catch { file delete -force {$(WORKSPACE_TEMP_DIR)} }; } else { set filesNoExt {}; set lastfile {}; foreach {fileName} [lsort $files] { set fileNoExt [string trimright $fileName {.ffs}]; if [regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] { if { $fileNoExtBase == $lastfile } { continue } }; set lastfile $fileNoExt; lappend filesNoExt $fileNoExt }; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -d {$(WORKSPACE_TEMP_DIR)} -a ffs -f FFS $filesNoExt & \175; }; }; ") +FACTORY_DEF * TeeFactory INPUT FEATURE_TYPE __NUKEME__ diff --git a/DataFileParsing/translate_all_recordtypes_to_pg_singly.fmw b/DataFileParsing/translate_all_recordtypes_to_pg_singly.fmw new file mode 100644 index 0000000..3998bb3 --- /dev/null +++ b/DataFileParsing/translate_all_recordtypes_to_pg_singly.fmw @@ -0,0 +1,28579 @@ +#! +#! localhost:5432DHS_Surveys" +# --SourceDataset_CSV "C:\Users\zool1301\Documents\DHS\Phase6\ExtractedSurveyRecords_Python\*.All.csv" +# --FEATURE_TYPES "" +# --SourceDataset_CSV_5 "C:\Users\zool1301\Documents\DHS\Phase6\ExtractedSurveyRecords_Python\*.All.csv" +# --SourceDataset_CSV_4 "C:\Users\zool1301\Documents\DHS\Phase6\ExtractedSurveyRecords_Python\*_All.csv" +# +# +#! LOG_MAX_PRECISION="Yes" +#! FME_STROKE_MAX_DEVIATION="0" +#! WORKSPACE_VERSION="1" +#! REDIRECT_TERMINATORS="NONE" +#! WARN_INVALID_XFORM_PARAM="Yes" +#! LOG_MAX_RECORDED_FEATURES="200" +#! HISTORY="" +#! FME_SERVER_SERVICES="" +#! CATEGORY="" +#! ATTR_TYPE_ENCODING="SDF" +#! REQUIREMENTS="" +#! SHOW_ANNOTATIONS="true" +#! SOURCE_ROUTING_FILE="" +#! FME_BUILD_NUM="15479" +#! USAGE="" +#! DESTINATION_ROUTING_FILE="" +#! END_TCL="" +#! FME_GEOMETRY_HANDLING="Enhanced" +#! DESTINATION="NONE" +#! VIEW_POSITION="-498.005 -9420.09" +#! FME_DOCUMENT_PRIORGUID="fdb5a764-9bf1-4134-b68e-cc6d6b6e00f9,34e45aa7-2ab2-4afa-b4a9-262d923a49a4,24e239ed-80bd-43a2-9d8f-ea3e8fc8075a,f4bedd0f-93b4-491e-a139-d19b26438fb8,9f529740-aa0e-4ef6-9324-978b3b8dad09,95840ff4-fc08-4c68-8403-16f394f9d4a5" +#! BEGIN_PYTHON="" +#! DESCRIPTION="" +#! FME_IMPLICIT_CSMAP_REPROJECTION_MODE="Auto" +#! FME_DOCUMENT_GUID="6c03ef90-737b-4eb1-ab39-5d7f2a975099" +#! PASSWORD="" +#! LAST_SAVE_DATE="2015-05-14T12:47:19" +#! MAX_LOG_FEATURES="200" +#! LOG_FILE="" +#! LAST_SAVE_BUILD="FME(R) 2015.1.0.0 (20150426 - Build 15479 - WIN64)" +#! DOC_TOP_LEFT="-326.004 -10892" +#! BEGIN_TCL="" +#! TITLE="" +#! MULTI_WRITER_DATASET_ORDER="BY_ID" +#! IGNORE_READER_FAILURE="No" +#! SHOW_INFO_NODES="true" +#! LEGAL_TERMS_CONDITIONS="" +#! END_PYTHON="" +#! FME_REPROJECTION_ENGINE="FME" +#! REQUIREMENTS_KEYWORD="" +#! SOURCE="NONE" +#! ZOOM_SCALE="100" +#! DOC_EXTENTS="3080.01 11181" +#! > +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +GUI IGNORE SourceDataset_CSV_1,CSV_IN_NETWORK_AUTHENTICATION_CSV_1,_SKIP_LINES_CSV_1,_SKIP_FOOTER_CSV_1,_STRIP_QUOTES_CSV_1,_DUPLICATE_DELIMS_CSV_1,SORT_GROUP_CSV_1,_SORT_PARAMS_CSV_1,FILTER_GROUP_CSV_1,_FILTER_PARAMS_CSV_1,_ENCODING_CSV_1,SourceDataset_CSV_2,CSV_IN_NETWORK_AUTHENTICATION_CSV_2,_SKIP_LINES_CSV_2,_SKIP_FOOTER_CSV_2,_STRIP_QUOTES_CSV_2,_DUPLICATE_DELIMS_CSV_2,SORT_GROUP_CSV_2,_SORT_PARAMS_CSV_2,FILTER_GROUP_CSV_2,_FILTER_PARAMS_CSV_2,_ENCODING_CSV_2,SourceDataset_CSV_3,CSV_IN_NETWORK_AUTHENTICATION_CSV_3,_SKIP_LINES_CSV_3,_SKIP_FOOTER_CSV_3,_STRIP_QUOTES_CSV_3,_DUPLICATE_DELIMS_CSV_3,SORT_GROUP_CSV_3,_SORT_PARAMS_CSV_3,FILTER_GROUP_CSV_3,_FILTER_PARAMS_CSV_3,_ENCODING_CSV_3,DestDataset_POSTGRES_1,POSTGRES_OUT_WRITER_MODE_POSTGRES_1,POSTGRES_OUT_START_TRANSACTION_POSTGRES_1,POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_1,POSTGRES_OUT_BULK_COPY_POSTGRES_1,POSTGRES_OUT_BEGIN_SQL_POSTGRES_1,POSTGRES_OUT_END_SQL_POSTGRES_1 +DEFAULT_MACRO DestDataset_POSTGRES postgreslocalhost:5432DHS_Surveys +GUI NAMED_DB_CONNECTION_ENCODED DestDataset_POSTGRES FMT:POSTGRES Connection: +DEFAULT_MACRO SourceDataset_CSV C:\Users\zool1301\Documents\DHS\Phase6\ExtractedSurveyRecords_Python\*.All.csv +GUI MULTIFILE SourceDataset_CSV CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +DEFAULT_MACRO FEATURE_TYPES +GUI OPTIONAL FEATURE_TYPES FEATURE_TYPES "C:Userszool1301DocumentsDHSPhase6ExtractedSurveyRecords_Python*.All.csv,_FORMAT_OVERRIDE_,CSV,_DATASET_OVERRIDE_,SourceDataset_CSV,_SKIP_LINES,1,_SKIP_FOOTER,0,_STRIP_QUOTES,yes,_DUPLICATE_DELIMS,no,SORT_GROUP,NO,FILTER_GROUP,NO,MAX_FEATURES,10,_SCHEMA_WITH_COL_NAMES,\"FileCode,char,7,,CASEID,char,18,,V000,char,4,,V001,number,4,0,V002,number,4,0,V003,number,3,0,V004,number,4,0,V005,number,8,0,V006,number,3,0,V007,number,5,0,V008,number,5,0,V009,number,3,0,V010,number,5,0,V011,number,5,0,V012,number,3,0,V013,number,2,0,V014,number,2,0,V015,number,2,0,V016,number,3,0,V017,number,5,0,V018,number,3,0,V019,number,3,0,V019A,number,2,0,V020,number,2,0,V021,number,4,0,V022,number,3,0,V023,number,3,0,V024,number,2,0,V025,number,2,0,V026,number,2,0,V027,number,2,0,V028,number,4,0,V029,number,2,0,V030,number,3,0,V031,number,4,0,V032,number,2,0,V034,number,3,0,V040,number,4,0,V042,number,2,0,V044,char,1,\",_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_FIELD_NAMES_AFTER_HEADER,no,_IN_SEPARATOR,\",\",_GROUP_BY_DATASET,yes,groupBox_5,FME_DISCLOSURE_OPEN,_SORT_TABLE_CONFIG,\"""NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%\""Attribute\""%\""STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044\""%%\""Alpha/Num\""%\""LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric\""%alphabetic%\""Order\""%\""LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending\""%ascending""\",SCAN_MAX_FEATURES,10000,DYNAMIC_WORKFLOW,yes,_IN_FIELD_NAMES,YES,groupBox,FME_DISCLOSURE_OPEN,_FILTER_TABLE_CONFIG,\"""NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%\""Field Name\""%\""STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044\""%%\""Filter\""%\""STRING_ENCODED _FILTER_REGEX \""%%\""Invert Filter\""%\""CHECKBOX _FILTER_UNMATCHED yes%no\""%no""\",_MERGE_SCHEMAS,YES,_SCHEMA,\"char,7,,char,18,,char,4,,number,4,0,number,4,0,number,3,0,number,4,0,number,8,0,number,3,0,number,5,0,number,5,0,number,3,0,number,5,0,number,5,0,number,3,0,number,2,0,number,2,0,number,2,0,number,3,0,number,5,0,number,3,0,number,3,0,number,2,0,number,2,0,number,4,0,number,3,0,number,3,0,number,2,0,number,2,0,number,2,0,number,2,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,char,1,\",_MERGE_SCHEMAS,YES" Feature Types to Read: +DEFAULT_MACRO SourceDataset_CSV_5 C:\Users\zool1301\Documents\DHS\Phase6\ExtractedSurveyRecords_Python\*.All.csv +GUI MULTIFILE SourceDataset_CSV_5 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +DEFAULT_MACRO SourceDataset_CSV_4 C:\Users\zool1301\Documents\DHS\Phase6\ExtractedSurveyRecords_Python\*_All.csv +GUI MULTIFILE SourceDataset_CSV_4 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +INCLUDE [ if {{$(DestDataset_POSTGRES)} == {}} { puts_real {Parameter 'DestDataset_POSTGRES' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(SourceDataset_CSV)} == {}} { puts_real {Parameter 'SourceDataset_CSV' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(SourceDataset_CSV_5)} == {}} { puts_real {Parameter 'SourceDataset_CSV_5' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(SourceDataset_CSV_4)} == {}} { puts_real {Parameter 'SourceDataset_CSV_4' must be given a value.}; exit 1; }; ] +#! START_HEADER +#! START_WB_HEADER +READER_TYPE MULTI_READER +MULTI_READER_TYPE{0} NULL +MULTI_READER_FORMAT{0} CSV +MULTI_READER_KEYWORD{0} CSV_1 +MULTI_READER_GEN_DIRECTIVES{0} _SCHEMA_WITH_COL_NAMES,FileCodechar7CASEIDchar18V000char4V001number40V002number40V003number30V004number40V005number80V006number30V007number50V008number50V009number30V010number50V011number50V012number30V013number20V014number20V015number20V016number30V017number50V018number30V019number30V019Anumber20V020number20V021number40V022number30V023number30V024number20V025number20V026number20V027number20V028number40V029number20V030number30V031number40V032number20V034number30V040number40V042number20V044char1,_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_FILTER_PARAMS,,_SORT_PARAMS,,_DUPLICATE_DELIMS,no,_FIELD_NAMES_AFTER_HEADER,no,groupBox_2,,_IN_SEPARATOR,,groupBox_4,,_GROUP_BY_DATASET,yes,groupBox_5,FME_DISCLOSURE_OPEN,_SKIP_LINES,1,groupBox_6,,FILTER_GROUP,NO,_SORT_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending,_ENCODING,,SCAN_MAX_FEATURES,10000,DYNAMIC_WORKFLOW,yes,SORT_GROUP,NO,_IN_FIELD_NAMES,YES,groupBox,FME_DISCLOSURE_OPEN,_SKIP_FOOTER,0,_FILTER_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no,_MERGE_SCHEMAS,YES,_SCHEMA,char7char18char4number40number40number30number40number80number30number50number50number30number50number50number30number20number20number20number30number50number30number30number20number20number40number30number30number20number20number20number20number40number20number30number40number20number30number40number20char1,_STRIP_QUOTES,yes +MULTI_READER_TYPE{1} NULL +MULTI_READER_FORMAT{1} CSV +MULTI_READER_KEYWORD{1} CSV_2 +MULTI_READER_GEN_DIRECTIVES{1} _SCHEMA_WITH_COL_NAMES,FileCodechar7CASEIDchar18V000char4V001number40V002number40V003number30V004number40V005number80V006number30V007number50V008number50V009number30V010number50V011number50V012number30V013number20V014number20V015number20V016number30V017number50V018number30V019number30V019Anumber20V020number20V021number40V022number30V023number30V024number20V025number20V026number20V027number20V028number40V029number20V030number30V031number40V032number20V034number30V040number40V042number20V044char1,_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_FILTER_PARAMS,,_SORT_PARAMS,,_DUPLICATE_DELIMS,no,_FIELD_NAMES_AFTER_HEADER,no,groupBox_2,,_IN_SEPARATOR,,groupBox_4,,_GROUP_BY_DATASET,yes,groupBox_5,FME_DISCLOSURE_OPEN,_SKIP_LINES,1,groupBox_6,,FILTER_GROUP,NO,_SORT_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending,_ENCODING,,SCAN_MAX_FEATURES,10000,SORT_GROUP,NO,_IN_FIELD_NAMES,YES,groupBox,FME_DISCLOSURE_OPEN,_SKIP_FOOTER,0,_FILTER_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no,_MERGE_SCHEMAS,YES,_SCHEMA,char7char18char4number40number40number30number40number80number30number50number50number30number50number50number30number20number20number20number30number50number30number30number20number20number40number30number30number20number20number20number20number40number20number30number40number20number30number40number20char1,_STRIP_QUOTES,yes +MULTI_READER_TYPE{2} CSV +MULTI_READER_KEYWORD{2} CSV_3 +MULTI_READER_GEN_DIRECTIVES{2} _SCHEMA_WITH_COL_NAMES,FileCodechar7CASEIDchar18V000char4V001number40V002number40V003number30V004number40V005number80V006number30V007number50V008number50V009number30V010number50V011number50V012number30V013number20V014number20V015number20V016number30V017number50V018number30V019number30V019Anumber20V020number20V021number40V022number30V023number30V024number20V025number20V026number20V027number20V028number40V029number20V030number30V031number40V032number20V034number30V040number40V042number20V044char1,_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_FILTER_PARAMS,,_SORT_PARAMS,,_DUPLICATE_DELIMS,no,_FIELD_NAMES_AFTER_HEADER,no,groupBox_2,,_IN_SEPARATOR,,groupBox_4,,_GROUP_BY_DATASET,yes,groupBox_5,FME_DISCLOSURE_OPEN,_SKIP_LINES,1,groupBox_6,,FILTER_GROUP,NO,_SORT_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending,_ENCODING,,SCAN_MAX_FEATURES,10000,SORT_GROUP,NO,_IN_FIELD_NAMES,YES,groupBox,FME_DISCLOSURE_OPEN,_SKIP_FOOTER,0,_FILTER_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no,_MERGE_SCHEMAS,YES,_SCHEMA,char7char18char4number40number40number30number40number80number30number50number50number30number50number50number30number20number20number20number30number50number30number30number20number20number40number30number30number20number20number20number20number40number20number30number40number20number30number40number20char1,_STRIP_QUOTES,yes +WRITER_TYPE MULTI_WRITER +MULTI_WRITER_DATASET_ORDER BY_ID +MULTI_WRITER_FIRST_WRITER_ID 0 +MULTI_WRITER_TYPE{0} POSTGRES +MULTI_WRITER_KEYWORD{0} POSTGRES_1 +#! END_WB_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_1 +CSV_1_DYNAMIC_WORKFLOW YES +# ============================================================================ +# The following GUI line prompts for a folder to be used as the +# source of the CSV files. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_CSV_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_1 +DEFAULT_MACRO SourceDataset_CSV_1 $(SourceDataset_CSV) +GUI MULTIFILE SourceDataset_CSV_1 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +# ============================================================================ +# Hardcode the settings that were used to generate this mapping file +# +DEFAULT_MACRO _SCHEMA_CSV_1 char,7,,char,18,,char,4,,number,4,0,number,4,0,number,3,0,number,4,0,number,8,0,number,3,0,number,5,0,number,5,0,number,3,0,number,5,0,number,5,0,number,3,0,number,2,0,number,2,0,number,2,0,number,3,0,number,5,0,number,3,0,number,3,0,number,2,0,number,2,0,number,4,0,number,3,0,number,3,0,number,2,0,number,2,0,number,2,0,number,2,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,char,1, +DEFAULT_MACRO _IN_FIELD_NAMES_CSV_1 YES +DEFAULT_MACRO _FIELD_NAMES_AFTER_HEADER_CSV_1 no +DEFAULT_MACRO _EXTENSION_CSV_1 CSV +DEFAULT_MACRO _ALLOW_SPACES_IN_COLUMN_NAMES_CSV_1 yes +DEFAULT_MACRO _GROUP_BY_DATASET_CSV_1 yes +CSV_1_SCHEMA char,7,,char,18,,char,4,,number,4,0,number,4,0,number,3,0,number,4,0,number,8,0,number,3,0,number,5,0,number,5,0,number,3,0,number,5,0,number,5,0,number,3,0,number,2,0,number,2,0,number,2,0,number,3,0,number,5,0,number,3,0,number,3,0,number,2,0,number,2,0,number,4,0,number,3,0,number,3,0,number,2,0,number,2,0,number,2,0,number,2,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,char,1, +DEFAULT_MACRO _SKIP_LINES_CSV_1 1 +CSV_1_SKIP_LINES $(_SKIP_LINES_CSV_1) +DEFAULT_MACRO _SKIP_FOOTER_CSV_1 0 +CSV_1_SKIP_FOOTER $(_SKIP_FOOTER_CSV_1) +CSV_1_FIELD_NAMES $(_IN_FIELD_NAMES_CSV_1) +CSV_1_FIELD_NAMES_AFTER_HEADER $(_FIELD_NAMES_AFTER_HEADER_CSV_1) +DEFAULT_MACRO _STRIP_QUOTES_CSV_1 yes +CSV_1_STRIP_QUOTES $(_STRIP_QUOTES_CSV_1) +CSV_1_SEPARATOR (",") +CSV_1_EXTENSION CSV +DEFAULT_MACRO _DUPLICATE_DELIMS_CSV_1 no +CSV_1_DUPLICATE_DELIMS $(_DUPLICATE_DELIMS_CSV_1) +CSV_1_SEQUENCED no +CSV_1_ALLOW_SPACES_IN_COLUMN_NAMES $(_ALLOW_SPACES_IN_COLUMN_NAMES_CSV_1) +CSV_1_GROUP_BY_DATASET $(_GROUP_BY_DATASET_CSV_1) +DEFAULT_MACRO SORT_GROUP_CSV_1 NO +CSV_1_SORT_GROUP $(SORT_GROUP_CSV_1) +DEFAULT_MACRO _SORT_PARAMS_CSV_1 +CSV_1_SORT_PARAMS $(_SORT_PARAMS_CSV_1) +DEFAULT_MACRO FILTER_GROUP_CSV_1 NO +CSV_1_FILTER_GROUP $(FILTER_GROUP_CSV_1) +DEFAULT_MACRO _FILTER_PARAMS_CSV_1 +CSV_1_FILTER_PARAMS $(_FILTER_PARAMS_CSV_1) +# ===================================================================== +# Provide some control over what attributes have the user-selected +# encoding applied. Normally all attributes are updated after being +# read, but the following lines exclude from this treatment all +# attributes whose names start with fme_ or csv_. +CSV_1_UNENCODED_ATTR_PREFIX fme_ csv_ +# =========================================================================== +DEFAULT_MACRO CSV_IN_NETWORK_AUTHENTICATION_CSV_1 +CSV_1_NETWORK_AUTHENTICATION "$(CSV_IN_NETWORK_AUTHENTICATION_CSV_1)" +GUI OPTIONAL AUTHENTICATOR CSV_IN_NETWORK_AUTHENTICATION_CSV_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI INTEGER _SKIP_LINES_CSV_1 Number of Lines to Skip: +GUI INTEGER _SKIP_FOOTER_CSV_1 Number of Footer Lines to Skip: +# GUI CHOICE _IN_FIELD_NAMES yes%no Field Names in File: +# GUI CHOICE _FIELD_NAMES_AFTER_HEADER yes%no Field After Header: +GUI CHOICE _STRIP_QUOTES_CSV_1 yes%no Strip Quotes From Fields: +# GUI TEXT _IN_SEPARATOR Field Delimiter: +# GUI TEXT _EXTENSION Default File Extension: +GUI CHOICE _DUPLICATE_DELIMS_CSV_1 yes%no Skip Duplicate Delimiters: +GUI CHOICE SORT_GROUP_CSV_1 yes%no Sorting Enabled: +GUI OPTIONAL GUI_LINE_TABLE _SORT_PARAMS_CSV_1 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Attribute"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044"%%"Alpha/Num"%"LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric"%alphabetic%"Order"%"LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending"%ascending Sorting Parameters: +GUI CHOICE FILTER_GROUP_CSV_1 yes%no Filter Enabled: +GUI OPTIONAL GUI_LINE_TABLE _FILTER_PARAMS_CSV_1 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Field Name"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044"%%"Filter"%"STRING_ENCODED _FILTER_REGEX "%%"Invert Filter"%"CHECKBOX _FILTER_UNMATCHED yes%no"%no Filter Parameters: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO _ENCODING_CSV_1 +GUI OPTIONAL STRING_OR_ENCODING _ENCODING_CSV_1 SYSTEM%* Character Encoding: +CSV_1_ENCODING $(_ENCODING_CSV_1) +CSV_1_DATASET "$(SourceDataset_CSV_1)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_2" +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_2 +# ============================================================================ +# The following GUI line prompts for a folder to be used as the +# source of the CSV files. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_CSV_2 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_2 +DEFAULT_MACRO SourceDataset_CSV_2 $(SourceDataset_CSV_5) +GUI MULTIFILE SourceDataset_CSV_2 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +# ============================================================================ +# Hardcode the settings that were used to generate this mapping file +# +DEFAULT_MACRO _SCHEMA_CSV_2 char,7,,char,18,,char,4,,number,4,0,number,4,0,number,3,0,number,4,0,number,8,0,number,3,0,number,5,0,number,5,0,number,3,0,number,5,0,number,5,0,number,3,0,number,2,0,number,2,0,number,2,0,number,3,0,number,5,0,number,3,0,number,3,0,number,2,0,number,2,0,number,4,0,number,3,0,number,3,0,number,2,0,number,2,0,number,2,0,number,2,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,char,1, +DEFAULT_MACRO _IN_FIELD_NAMES_CSV_2 YES +DEFAULT_MACRO _FIELD_NAMES_AFTER_HEADER_CSV_2 no +DEFAULT_MACRO _EXTENSION_CSV_2 CSV +DEFAULT_MACRO _ALLOW_SPACES_IN_COLUMN_NAMES_CSV_2 yes +DEFAULT_MACRO _GROUP_BY_DATASET_CSV_2 yes +CSV_2_SCHEMA char,7,,char,18,,char,4,,number,4,0,number,4,0,number,3,0,number,4,0,number,8,0,number,3,0,number,5,0,number,5,0,number,3,0,number,5,0,number,5,0,number,3,0,number,2,0,number,2,0,number,2,0,number,3,0,number,5,0,number,3,0,number,3,0,number,2,0,number,2,0,number,4,0,number,3,0,number,3,0,number,2,0,number,2,0,number,2,0,number,2,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,char,1, +DEFAULT_MACRO _SKIP_LINES_CSV_2 1 +CSV_2_SKIP_LINES $(_SKIP_LINES_CSV_2) +DEFAULT_MACRO _SKIP_FOOTER_CSV_2 0 +CSV_2_SKIP_FOOTER $(_SKIP_FOOTER_CSV_2) +CSV_2_FIELD_NAMES $(_IN_FIELD_NAMES_CSV_2) +CSV_2_FIELD_NAMES_AFTER_HEADER $(_FIELD_NAMES_AFTER_HEADER_CSV_2) +DEFAULT_MACRO _STRIP_QUOTES_CSV_2 yes +CSV_2_STRIP_QUOTES $(_STRIP_QUOTES_CSV_2) +CSV_2_SEPARATOR (",") +CSV_2_EXTENSION CSV +DEFAULT_MACRO _DUPLICATE_DELIMS_CSV_2 no +CSV_2_DUPLICATE_DELIMS $(_DUPLICATE_DELIMS_CSV_2) +CSV_2_SEQUENCED no +CSV_2_ALLOW_SPACES_IN_COLUMN_NAMES $(_ALLOW_SPACES_IN_COLUMN_NAMES_CSV_2) +CSV_2_GROUP_BY_DATASET $(_GROUP_BY_DATASET_CSV_2) +DEFAULT_MACRO SORT_GROUP_CSV_2 NO +CSV_2_SORT_GROUP $(SORT_GROUP_CSV_2) +DEFAULT_MACRO _SORT_PARAMS_CSV_2 +CSV_2_SORT_PARAMS $(_SORT_PARAMS_CSV_2) +DEFAULT_MACRO FILTER_GROUP_CSV_2 NO +CSV_2_FILTER_GROUP $(FILTER_GROUP_CSV_2) +DEFAULT_MACRO _FILTER_PARAMS_CSV_2 +CSV_2_FILTER_PARAMS $(_FILTER_PARAMS_CSV_2) +# ===================================================================== +# Provide some control over what attributes have the user-selected +# encoding applied. Normally all attributes are updated after being +# read, but the following lines exclude from this treatment all +# attributes whose names start with fme_ or csv_. +CSV_2_UNENCODED_ATTR_PREFIX fme_ csv_ +# =========================================================================== +DEFAULT_MACRO CSV_IN_NETWORK_AUTHENTICATION_CSV_2 +CSV_2_NETWORK_AUTHENTICATION "$(CSV_IN_NETWORK_AUTHENTICATION_CSV_2)" +GUI OPTIONAL AUTHENTICATOR CSV_IN_NETWORK_AUTHENTICATION_CSV_2 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI INTEGER _SKIP_LINES_CSV_2 Number of Lines to Skip: +GUI INTEGER _SKIP_FOOTER_CSV_2 Number of Footer Lines to Skip: +# GUI CHOICE _IN_FIELD_NAMES yes%no Field Names in File: +# GUI CHOICE _FIELD_NAMES_AFTER_HEADER yes%no Field After Header: +GUI CHOICE _STRIP_QUOTES_CSV_2 yes%no Strip Quotes From Fields: +# GUI TEXT _IN_SEPARATOR Field Delimiter: +# GUI TEXT _EXTENSION Default File Extension: +GUI CHOICE _DUPLICATE_DELIMS_CSV_2 yes%no Skip Duplicate Delimiters: +GUI CHOICE SORT_GROUP_CSV_2 yes%no Sorting Enabled: +GUI OPTIONAL GUI_LINE_TABLE _SORT_PARAMS_CSV_2 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Attribute"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044"%%"Alpha/Num"%"LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric"%alphabetic%"Order"%"LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending"%ascending Sorting Parameters: +GUI CHOICE FILTER_GROUP_CSV_2 yes%no Filter Enabled: +GUI OPTIONAL GUI_LINE_TABLE _FILTER_PARAMS_CSV_2 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Field Name"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044"%%"Filter"%"STRING_ENCODED _FILTER_REGEX "%%"Invert Filter"%"CHECKBOX _FILTER_UNMATCHED yes%no"%no Filter Parameters: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO _ENCODING_CSV_2 +GUI OPTIONAL STRING_OR_ENCODING _ENCODING_CSV_2 SYSTEM%* Character Encoding: +CSV_2_ENCODING $(_ENCODING_CSV_2) +CSV_2_DATASET "$(SourceDataset_CSV_2)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_3" +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_3 +# ============================================================================ +# The following GUI line prompts for a folder to be used as the +# source of the CSV files. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_CSV_3 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_3 +DEFAULT_MACRO SourceDataset_CSV_3 $(SourceDataset_CSV_4) +GUI MULTIFILE SourceDataset_CSV_3 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +# ============================================================================ +# Hardcode the settings that were used to generate this mapping file +# +DEFAULT_MACRO _SCHEMA_CSV_3 char,7,,char,18,,char,4,,number,4,0,number,4,0,number,3,0,number,4,0,number,8,0,number,3,0,number,5,0,number,5,0,number,3,0,number,5,0,number,5,0,number,3,0,number,2,0,number,2,0,number,2,0,number,3,0,number,5,0,number,3,0,number,3,0,number,2,0,number,2,0,number,4,0,number,3,0,number,3,0,number,2,0,number,2,0,number,2,0,number,2,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,char,1, +DEFAULT_MACRO _IN_FIELD_NAMES_CSV_3 YES +DEFAULT_MACRO _FIELD_NAMES_AFTER_HEADER_CSV_3 no +DEFAULT_MACRO _EXTENSION_CSV_3 CSV +DEFAULT_MACRO _ALLOW_SPACES_IN_COLUMN_NAMES_CSV_3 yes +DEFAULT_MACRO _GROUP_BY_DATASET_CSV_3 yes +CSV_3_SCHEMA char,7,,char,18,,char,4,,number,4,0,number,4,0,number,3,0,number,4,0,number,8,0,number,3,0,number,5,0,number,5,0,number,3,0,number,5,0,number,5,0,number,3,0,number,2,0,number,2,0,number,2,0,number,3,0,number,5,0,number,3,0,number,3,0,number,2,0,number,2,0,number,4,0,number,3,0,number,3,0,number,2,0,number,2,0,number,2,0,number,2,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,number,3,0,number,4,0,number,2,0,char,1, +DEFAULT_MACRO _SKIP_LINES_CSV_3 1 +CSV_3_SKIP_LINES $(_SKIP_LINES_CSV_3) +DEFAULT_MACRO _SKIP_FOOTER_CSV_3 0 +CSV_3_SKIP_FOOTER $(_SKIP_FOOTER_CSV_3) +CSV_3_FIELD_NAMES $(_IN_FIELD_NAMES_CSV_3) +CSV_3_FIELD_NAMES_AFTER_HEADER $(_FIELD_NAMES_AFTER_HEADER_CSV_3) +DEFAULT_MACRO _STRIP_QUOTES_CSV_3 yes +CSV_3_STRIP_QUOTES $(_STRIP_QUOTES_CSV_3) +CSV_3_SEPARATOR (",") +CSV_3_EXTENSION CSV +DEFAULT_MACRO _DUPLICATE_DELIMS_CSV_3 no +CSV_3_DUPLICATE_DELIMS $(_DUPLICATE_DELIMS_CSV_3) +CSV_3_SEQUENCED no +CSV_3_ALLOW_SPACES_IN_COLUMN_NAMES $(_ALLOW_SPACES_IN_COLUMN_NAMES_CSV_3) +CSV_3_GROUP_BY_DATASET $(_GROUP_BY_DATASET_CSV_3) +DEFAULT_MACRO SORT_GROUP_CSV_3 NO +CSV_3_SORT_GROUP $(SORT_GROUP_CSV_3) +DEFAULT_MACRO _SORT_PARAMS_CSV_3 +CSV_3_SORT_PARAMS $(_SORT_PARAMS_CSV_3) +DEFAULT_MACRO FILTER_GROUP_CSV_3 NO +CSV_3_FILTER_GROUP $(FILTER_GROUP_CSV_3) +DEFAULT_MACRO _FILTER_PARAMS_CSV_3 +CSV_3_FILTER_PARAMS $(_FILTER_PARAMS_CSV_3) +# ===================================================================== +# Provide some control over what attributes have the user-selected +# encoding applied. Normally all attributes are updated after being +# read, but the following lines exclude from this treatment all +# attributes whose names start with fme_ or csv_. +CSV_3_UNENCODED_ATTR_PREFIX fme_ csv_ +# =========================================================================== +DEFAULT_MACRO CSV_IN_NETWORK_AUTHENTICATION_CSV_3 +CSV_3_NETWORK_AUTHENTICATION "$(CSV_IN_NETWORK_AUTHENTICATION_CSV_3)" +GUI OPTIONAL AUTHENTICATOR CSV_IN_NETWORK_AUTHENTICATION_CSV_3 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI INTEGER _SKIP_LINES_CSV_3 Number of Lines to Skip: +GUI INTEGER _SKIP_FOOTER_CSV_3 Number of Footer Lines to Skip: +# GUI CHOICE _IN_FIELD_NAMES yes%no Field Names in File: +# GUI CHOICE _FIELD_NAMES_AFTER_HEADER yes%no Field After Header: +GUI CHOICE _STRIP_QUOTES_CSV_3 yes%no Strip Quotes From Fields: +# GUI TEXT _IN_SEPARATOR Field Delimiter: +# GUI TEXT _EXTENSION Default File Extension: +GUI CHOICE _DUPLICATE_DELIMS_CSV_3 yes%no Skip Duplicate Delimiters: +GUI CHOICE SORT_GROUP_CSV_3 yes%no Sorting Enabled: +GUI OPTIONAL GUI_LINE_TABLE _SORT_PARAMS_CSV_3 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Attribute"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044"%%"Alpha/Num"%"LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric"%alphabetic%"Order"%"LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending"%ascending Sorting Parameters: +GUI CHOICE FILTER_GROUP_CSV_3 yes%no Filter Enabled: +GUI OPTIONAL GUI_LINE_TABLE _FILTER_PARAMS_CSV_3 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Field Name"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%CASEID%V000%V001%V002%V003%V004%V005%V006%V007%V008%V009%V010%V011%V012%V013%V014%V015%V016%V017%V018%V019%V019A%V020%V021%V022%V023%V024%V025%V026%V027%V028%V029%V030%V031%V032%V034%V040%V042%V044"%%"Filter"%"STRING_ENCODED _FILTER_REGEX "%%"Invert Filter"%"CHECKBOX _FILTER_UNMATCHED yes%no"%no Filter Parameters: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO _ENCODING_CSV_3 +GUI OPTIONAL STRING_OR_ENCODING _ENCODING_CSV_3 SYSTEM%* Character Encoding: +CSV_3_ENCODING $(_ENCODING_CSV_3) +CSV_3_DATASET "$(SourceDataset_CSV_3)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "POSTGRES_1" +#! END_WB_HEADER +#! START_DEST_HEADER POSTGRES POSTGRES_1 +#! END_DEST_HEADER +#! START_WB_HEADER +DEFAULT_MACRO DestDataset +INCLUDE [ if {"$(DestDataset)" != ""} { \ + puts {DEFAULT_MACRO DestDataset_POSTGRES_1 $(DestDataset)} \ + } ] +#! END_WB_HEADER +#! START_DEST_HEADER POSTGRES POSTGRES_1 +DEFAULT_MACRO DestDataset_POSTGRES_1 $(DestDataset_POSTGRES) +GUI NAMED_DB_CONNECTION_ENCODED DestDataset_POSTGRES_1 FMT:POSTGRES Connection: +# ============================================================================ +# Opt in for destination dataset type vs format type validation +DEFAULT_MACRO POSTGRES_OUT_DESTINATION_DATASETTYPE_VALIDATION_POSTGRES_1 Yes +POSTGRES_1_DESTINATION_DATASETTYPE_VALIDATION "$(POSTGRES_OUT_DESTINATION_DATASETTYPE_VALIDATION_POSTGRES_1)" +DEFAULT_MACRO POSTGRES_OUT_WRITER_MODE_POSTGRES_1 INSERT +GUI CHOICE POSTGRES_OUT_WRITER_MODE_POSTGRES_1 INSERT%UPDATE%DELETE Writer Mode: +POSTGRES_1_WRITER_MODE $(POSTGRES_OUT_WRITER_MODE_POSTGRES_1) +DEFAULT_MACRO POSTGRES_OUT_START_TRANSACTION_POSTGRES_1 0 +GUI TEXT POSTGRES_OUT_START_TRANSACTION_POSTGRES_1 Starting Feature: +POSTGRES_1_START_TRANSACTION $(POSTGRES_OUT_START_TRANSACTION_POSTGRES_1) +DEFAULT_MACRO POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_1 1000 +GUI TEXT POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_1 Features Per Transaction: +POSTGRES_1_TRANSACTION_INTERVAL $(POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_1) +DEFAULT_MACRO POSTGRES_OUT_BULK_COPY_POSTGRES_1 YES +GUI CHOICE POSTGRES_OUT_BULK_COPY_POSTGRES_1 YES%NO Bulk Copy Insert: +POSTGRES_1_BULK_COPY $(POSTGRES_OUT_BULK_COPY_POSTGRES_1) +DEFAULT_MACRO POSTGRES_OUT_BEGIN_SQL_POSTGRES_1 +GUI OPTIONAL TEXT_EDIT_SQL POSTGRES_OUT_BEGIN_SQL_POSTGRES_1 SQL Statement to Execute Before Translation: +POSTGRES_1_BEGIN_SQL "$(POSTGRES_OUT_BEGIN_SQL_POSTGRES_1)" +DEFAULT_MACRO POSTGRES_OUT_END_SQL_POSTGRES_1 +GUI OPTIONAL TEXT_EDIT_SQL POSTGRES_OUT_END_SQL_POSTGRES_1 SQL Statement to Execute After Translation: +POSTGRES_1_END_SQL "$(POSTGRES_OUT_END_SQL_POSTGRES_1)" +POSTGRES_1_DATASET "$(DestDataset_POSTGRES_1)" +#! END_DEST_HEADER +#! END_HEADER + +LOG_FILENAME "$(FME_MF_DIR)translate_all_recordtypes_to_pg_singly.log" +LOG_APPEND NO +LOG_MAX_FEATURES 200 +LOG_MAX_RECORDED_FEATURES 200 +LOG_MAX_PRECISION Yes +FME_REPROJECTION_ENGINE FME +FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto +FME_GEOMETRY_HANDLING Enhanced +FME_STROKE_MAX_DEVIATION 0 +LOG_FILTER_MASK -1 +DEFAULT_MACRO DATASET_KEYWORD_CSV_1 CSV_1 +DEFAULT_MACRO DATASET_KEYWORD_CSV_2 CSV_2 +DEFAULT_MACRO DATASET_KEYWORD_CSV_3 CSV_3 +DEFAULT_MACRO DATASET_KEYWORD_POSTGRES_1 POSTGRES_1 +# ------------------------------------------------------------------------- + +CSV_1_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +CSV_2_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +CSV_3_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +CSV_1_MAX_FEATURES 10 +CSV_1_FEATURE_TYPES $(FEATURE_TYPES) +MULTI_READER_CONTINUE_ON_READER_FAILURE No + +# ------------------------------------------------------------------------- + +MACRO WORKSPACE_NAME translate_all_recordtypes_to_pg_singly +MACRO FME_VIEWER_APP fmedatainspector +# ------------------------------------------------------------------------- + +INCLUDE [ if {[info exists env(FME_TEMP)] && [file isdirectory $env(FME_TEMP)]} {set gVisualizerTemp $env(FME_TEMP)} elseif {[info exists env(TEMP)] && [file isdirectory $env(TEMP)]} {set gVisualizerTemp $env(TEMP)} elseif { $tcl_platform(platform) == "unix" } {set gVisualizerTemp "/tmp"} else {set gVisualizerTemp c:}; regsub -all {[ ,&]} {$(WORKSPACE_NAME)} {_} wsname; set gVisualizerTemp $gVisualizerTemp/${wsname}_[clock format [clock seconds] -format %H%M%S]; puts "MACRO WORKSPACE_TEMP_DIR $gVisualizerTemp"; +MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/inspector.ffs +MACRO VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector.fsc +MACRO VISUALIZER_CREATE_SPATIAL_INDEX YES +# ------------------------------------------------------------------------- +CSV_3_DEF RECHMC_All FileCode char(7) HHID number(6,0) IDXHML number(2,0) SH123A number(2,0) SH123B number(3,0) SH123C number(2,0) SH123D number(2,0) SH125A number(2,0) SH127A number(2,0) SH127B number(5,0) SH128 number(3,0) SH128A number(2,0) SH128B number(5,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHML_All FileCode char(7) HHID char(6) HMLIDX number(2,0) HML3 number(2,0) HML4 number(3,0) HML5 number(2,0) HML6 number(2,0) HML7 number(3,0) HML8 number(2,0) HML9 number(3,0) HML10 number(2,0) HML11 number(2,0) HML21 number(2,0) HMLA number(3,0) HMLB number(3,0) HMLC number(3,0) HMLD number(3,0) HMLE char(1) +# ------------------------------------------------------------------------- +CSV_3_DEF RECH4A_All FileCode char(7) HHID char(7) IDXH4A number(3,0) SH6XA number(2,0) SH6XB number(2,0) SH6XC number(2,0) SH6XX number(2,0) SH6XY number(2,0) SH6XZ number(2,0) SH62A number(2,0) SH62B number(6,0) SH63 number(2,0) SH63B number(2,0) SH68A number(2,0) SH68B number(3,0) SH68C number(3,0) SH6YA number(2,0) SH6YB number(2,0) SH6YC number(2,0) SH6YD number(2,0) SH6YE number(2,0) SH6YF number(2,0) SH6YG number(2,0) SH6YH number(2,0) SH6YI number(2,0) SH6YJ number(2,0) SH6YX number(2,0) SH6YZ number(2,0) SH69A number(2,0) SH70 number(6,0) SH71 number(3,0) SH72 number(6,0) SH73 number(6,0) SH74 number(6,0) SH75 number(2,0) SH76 number(6,0) SH77A number(6,0) SH77B number(6,0) SH77C number(6,0) SH78 number(2,0) SH78A number(6,0) SH90 number(2,0) SH91 number(2,0) SH92 number(3,0) SH93 number(4,0) SH94 number(6,0) SH94A number(2,0) SH95 number(6,0) SH96A number(6,0) SH96B number(6,0) SH96C number(6,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC61_All FileCode char(7) CASEID char(10) V602 number(2,0) V603 number(4,0) V604 number(2,0) V605 number(2,0) V613 number(3,0) V614 number(2,0) V616 number(4,0) V621 number(2,0) V623 number(2,0) V624 number(3,0) V625 number(2,0) V626 number(3,0) V625A number(2,0) V626A number(3,0) V627 number(3,0) V628 number(3,0) V629 number(3,0) V631 char(1) V632 number(2,0) V633A char(1) V633B char(1) V633C char(1) V633D char(1) V633E char(1) V633F char(1) V633G char(1) V634 char(1) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHSK_All FileCode char(7) HHID char(7) HSKIDX number(3,0) HS100 number(2,0) HS101 number(2,0) HS102 number(2,0) HS103 number(2,0) HS104 number(2,0) HS105 number(2,0) HS106 number(2,0) HS107 number(2,0) HS108 number(2,0) HS109 number(2,0) HS110 number(2,0) HS111 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECH3_All FileCode char(7) HHID char(7) SHDISTRICT number(3,0) SHUPAZILA number(3,0) SHADULT35 number(2,0) SHHTEC number(4,0) SH104A number(2,0) SH104B number(3,0) SH110G number(2,0) SH110H number(2,0) SH110I number(2,0) SH110J number(2,0) SH110K number(2,0) SH110L number(2,0) SH118A number(2,0) SH118B number(2,0) SH122A number(2,0) SH122C number(5,2) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHOV_All FileCode char(7) HHID char(7) HOVIDX number(3,0) HO100 number(3,0) HO101 number(2,0) HO102 number(2,0) HO103 number(2,0) HO104 number(2,0) HO105 number(2,0) HO106 number(2,0) HO107 number(2,0) HO108 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHLB_All FileCode char(7) HHID char(7) SHCOL21A number(3,0) SH21 number(3,0) SH22 number(2,0) SH23 number(3,0) SH24 number(2,0) SH25 number(2,0) SH26 number(3,0) SH27 number(2,0) SH28 number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC82_All FileCode char(7) CASEID char(10) VCOL number(2,0) VCAL char(73) +# ------------------------------------------------------------------------- +CSV_3_DEF REC44_All FileCode char(7) CASEID char(10) HWIDX number(2,0) HW1 number(3,0) HW2 number(5,0) HW3 number(5,0) HW4 number(5,0) HW5 number(5,0) HW6 number(6,0) HW7 number(5,0) HW8 number(5,0) HW9 number(6,0) HW10 number(5,0) HW11 number(5,0) HW12 number(6,0) HW13 number(2,0) HW15 number(2,0) HW16 number(3,0) HW17 number(3,0) HW18 number(3,0) HW19 number(5,0) HW51 number(3,0) HW52 number(2,0) HW53 number(4,0) HW55 number(2,0) HW56 number(5,0) HW57 number(2,0) HW58 char(1) HW70 number(5,0) HW71 number(5,0) HW72 number(5,0) HW73 number(5,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHW_All FileCode char(7) HHID char(7) SHCOLD number(2,0) SH215 number(3,0) SH216 number(6,0) SH217 number(5,0) SH240 number(4,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHMG_All FileCode char(7) HHID char(9) SH_MIG char(15) SH22 number(2,0) SH24 number(2,0) SH25M number(3,0) SH25Y number(5,0) SH26 number(3,0) SH27 number(2,0) SH28C number(2,0) SH28D number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC97_All FileCode char(7) CASEID char(12) S902 number(2,0) S903A number(2,0) S903B number(2,0) S903C number(2,0) S903D number(2,0) S903E number(2,0) S903F number(2,0) S903G number(2,0) S903H number(2,0) S903X number(2,0) S903Z number(2,0) S904 number(2,0) S905M number(3,0) S905Y number(5,0) S906 number(2,0) S907 number(2,0) S908 number(3,0) S909 number(2,0) S910 number(2,0) S911 number(2,0) S912 number(2,0) S913 number(3,0) S914 number(2,0) S915 number(3,0) S916 number(2,0) S917 number(3,0) S918 number(2,0) S919 number(3,0) S920 number(2,0) S921 number(2,0) S922 number(2,0) S923 number(2,0) S924 number(3,0) S926 number(2,0) S927 number(2,0) S928 number(2,0) S929 number(2,0) S930 number(3,0) S931 number(2,0) S932 number(2,0) S933 number(2,0) S934 number(2,0) S936 number(2,0) S937A number(2,0) S937B number(2,0) S937C number(2,0) S937D number(2,0) S937E number(2,0) S937F number(2,0) S937G number(2,0) S937H number(2,0) S937X number(2,0) S937Z number(2,0) S938 number(2,0) S939 number(2,0) S940M number(3,0) S940Y number(5,0) S941 number(2,0) S942 number(3,0) S943 number(2,0) S944 number(2,0) S945 number(2,0) S946 number(2,0) S947 number(2,0) S948 number(3,0) S949 number(2,0) S950 number(3,0) S951 number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECH11_All FileCode char(7) HHID number(10,0) SLNPM number(2,0) SHP216 number(3,0) SHP218 number(3,0) SHP220 number(4,0) SHP220B number(4,0) SHP221 number(4,0) SHP221B number(4,0) SHP221AH number(3,0) SHP221AM number(3,0) SHP222 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECG2_All FileCode char(7) CASEID char(9) GIDX number(2,0) G121 number(2,0) G122 number(3,0) G123 number(2,0) G124 number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECH5S_All FileCode char(7) HHID char(7) SHC0 number(3,0) SH505 number(4,0) SH506 number(5,0) SH515 number(2,0) SH516 char(6) SH517 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHG1_All FileCode char(7) HHID char(7) SGCONGL number(5,0) SGHOGAR number(3,0) SGESTR char(1) SGPROVIN number(3,0) SGMUNIC char(1) SGZONA number(2,0) SGRESP number(3,0) SGINT number(9,0) SGINTD number(3,0) SGINTM number(3,0) SGINTA number(5,0) SGINTNUM number(4,0) SGRESULT number(3,0) SGVISITS number(2,0) SGSUPERV number(4,0) SGEDITC number(4,0) SGEDITO number(2,0) SGDIGIT number(3,0) SGHORAI number(3,0) SGMINUTI number(3,0) SGHORAF number(3,0) SGMINUTF number(3,0) SGWEIGHT number(9,0) SINGRTH number(9,0) SINGRTHP number(9,0) SINGRHI number(2,0) SVIVIG1 number(2,0) SVIVIG2 number(2,0) SVALPRO number(6,0) SQUINTIP number(2,0) SALLINCI number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC71_All FileCode char(7) CASEID char(10) V701 number(2,0) V702 number(3,0) V704 number(3,0) V705 char(1) V714 number(2,0) V714A number(2,0) V715 number(3,0) V716 number(3,0) V717 char(1) V719 number(2,0) V721 char(1) V729 number(2,0) V730 number(3,0) V731 number(2,0) V732 number(2,0) V739 number(2,0) V740 char(1) V741 number(2,0) V743A number(2,0) V743B number(2,0) V743C char(1) V743D number(2,0) V743E char(1) V743F char(1) V744A number(2,0) V744B number(2,0) V744C number(2,0) V744D number(2,0) V744E number(2,0) V745A char(1) V745B char(1) V746 char(1) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHMH2_All FileCode char(7) HHID char(6) HMHIDX2 number(3,0) SH212D number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECH7_All FileCode char(7) HHID char(7) SH230 number(3,0) SH231 number(3,0) SH232 number(3,0) SH234 number(3,0) SH234C number(6,0) SH235 number(6,0) SH237 number(6,0) SH238 number(6,0) SH239 number(6,0) SH241 number(6,0) SH242A number(6,0) SH242B number(2,0) SH242C number(3,0) SH243 number(3,0) SH244 number(6,0) SH245 number(6,0) SH246S number(6,0) SH246D number(6,0) SH248 number(6,0) SH249 number(6,0) SH250 number(6,0) SH253 number(5,0) SH254 number(3,0) SH255S number(4,0) SH255D number(4,0) SH257 number(3,0) SH258 number(3,0) SH259 number(6,0) SH260 number(6,0) SH262 number(6,0) SH263 number(6,0) SH264S number(4,0) SH264D number(4,0) FSYSTO number(4,0) FDYSTO number(4,0) SH271 number(5,0) SH273 number(5,0) SH276 number(2,0) SHWH number(2,0) SH1 number(14,0) SH1D number(3,0) SH1MO number(3,0) SH1Y number(5,0) SH1H number(3,0) SH1M number(3,0) SH1X number(2,0) SH2 number(14,0) SH2D number(3,0) SH2MO number(3,0) SH2Y number(5,0) SH2H number(3,0) SH2M number(3,0) SH2X number(2,0) SH3 number(14,0) SH3D number(3,0) SH3MO number(3,0) SH3Y number(5,0) SH3H number(3,0) SH3M number(3,0) SH3X number(2,0) SH279 number(2,0) SH280 number(5,0) SH281 number(5,0) SH283 number(9,0) SH283D number(3,0) SH283M number(3,0) SH283Y number(5,0) SH283T number(5,0) SH284 number(4,0) SH284A number(4,0) SH284G number(4,0) SH284B number(4,0) SHPC1 number(5,0) SHSD1 number(5,0) SHRM1 number(6,0) SHRM3 number(6,0) SHRM4 number(6,0) SHRM5 number(6,0) SHSD3 number(5,0) SHBM number(5,0) SHRI number(5,0) SHCMC number(4,0) SHFLG number(2,0) SHSMK char(1) SHRESI number(2,0) SHED1 number(2,0) SHED2 number(3,0) SHED3 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHMCS_All FileCode char(7) HHID char(7) IDXMCS number(3,0) SH268 number(2,0) SH268I number(4,0) SH278 number(2,0) SH279 number(2,0) SH279A number(2,0) SH286 number(2,0) SH286I number(4,0) SH292 number(2,0) SH295BC char(6) SH295 number(2,0) SH295A number(9,0) SH295AD number(3,0) SH295AM number(3,0) SH295AY number(5,0) SH295B number(5,0) SH295BH number(3,0) SH295BM number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHI_All FileCode char(7) HHID char(7) SHCOLB number(2,0) SH61 number(3,0) SH62 number(2,0) SH63 number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC01_All FileCode char(7) CASEID char(18) V000 char(4) V001 number(4,0) V002 number(4,0) V003 number(3,0) V004 number(4,0) V005 number(8,0) V006 number(3,0) V007 number(5,0) V008 number(5,0) V009 number(3,0) V010 number(5,0) V011 number(5,0) V012 number(3,0) V013 number(2,0) V014 number(2,0) V015 number(2,0) V016 number(3,0) V017 number(5,0) V018 number(3,0) V019 number(3,0) V019A number(2,0) V020 number(2,0) V021 number(4,0) V022 number(3,0) V023 number(3,0) V024 number(2,0) V025 number(2,0) V026 number(2,0) V027 number(2,0) V028 number(4,0) V029 number(2,0) V030 number(3,0) V031 number(4,0) V032 number(2,0) V034 number(3,0) V040 number(4,0) V042 number(2,0) V044 char(1) +# ------------------------------------------------------------------------- +CSV_3_DEF RECML_All FileCode char(7) CASEID char(9) IDXML number(2,0) ML0 number(2,0) ML1 number(3,0) ML2 number(2,0) ML11 char(1) ML12 char(1) ML13A number(2,0) ML13B number(2,0) ML13C number(2,0) ML13D number(2,0) ML13E number(2,0) ML13F char(1) ML13G char(1) ML13H number(2,0) ML13I number(2,0) ML13J number(2,0) ML13K number(2,0) ML13L number(2,0) ML13M number(2,0) ML13N char(1) ML13O char(1) ML13P char(1) ML13X number(2,0) ML13Y number(2,0) ML13Z number(2,0) ML14A char(1) ML14B char(1) ML14Y char(1) ML14Z char(1) ML15A number(2,0) ML15B char(1) ML15C char(1) ML16A number(2,0) ML16B char(1) ML16C char(1) ML17A number(2,0) ML17B char(1) ML17C char(1) ML18A number(2,0) ML18B char(1) ML18C char(1) ML19A char(1) ML19B char(1) ML19C char(1) ML19D char(1) ML19E char(1) ML19F char(1) ML19X char(1) ML19Y char(1) ML19Z char(1) ML20A number(2,0) ML20B char(1) ML20C char(1) ML21A char(1) ML21B char(1) ML21C char(1) ML22A char(1) ML22B char(1) ML22C char(1) ML23A number(2,0) ML23B char(1) ML23C char(1) ML24C char(1) +# ------------------------------------------------------------------------- +CSV_3_DEF REC92_All FileCode char(7) CASEID char(12) IDX92 number(3,0) S222 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHMT_All FileCode char(7) HHID char(7) SHMTX number(2,0) SH78 number(2,0) SH79 number(3,0) SH80M number(3,0) SH80A number(5,0) SH81 number(2,0) SH80MI number(3,0) SH80AI number(5,0) SH80C number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHCH2_All FileCode char(7) HHID char(6) IDXCH2 number(3,0) SCHL145 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC22_All FileCode char(7) CASEID char(10) V201 number(3,0) V202 number(2,0) V203 number(2,0) V204 number(2,0) V205 number(2,0) V206 number(3,0) V207 number(2,0) V208 number(2,0) V209 number(2,0) V210 number(2,0) V211 number(5,0) V212 number(3,0) V213 number(2,0) V214 number(2,0) V215 number(4,0) V216 number(2,0) V217 char(1) V218 number(3,0) V219 number(3,0) V220 number(2,0) V221 number(4,0) V222 number(4,0) V223 number(2,0) V224 number(3,0) V225 number(2,0) V226 number(4,0) V227 number(2,0) V228 number(2,0) V229 number(3,0) V230 number(5,0) V231 number(5,0) V232 number(2,0) V233 number(2,0) V234 number(2,0) V235 number(2,0) V237 number(2,0) V238 number(2,0) V239 number(2,0) V240 number(3,0) V241 number(5,0) V242 number(5,0) V243 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC75_All FileCode char(7) CASEID char(10) V750 number(2,0) V751 number(2,0) V754BP char(1) V754CP number(2,0) V754DP number(2,0) V754JP number(2,0) V754WP number(2,0) V756 number(2,0) V761 char(1) V761B char(1) V761C char(1) V762AA char(1) V762AB char(1) V762AC char(1) V762AD char(1) V762AE char(1) V762AF char(1) V762AG char(1) V762AH char(1) V762AI char(1) V762AJ char(1) V762AK char(1) V762AL char(1) V762AM char(1) V762AN char(1) V762AO char(1) V762AP char(1) V762AQ char(1) V762AR char(1) V762AS char(1) V762AT char(1) V762AU char(1) V762AV char(1) V762AW char(1) V762AX char(1) V762AZ char(1) V762BA char(1) V762BB char(1) V762BC char(1) V762BD char(1) V762BE char(1) V762BF char(1) V762BG char(1) V762BH char(1) V762BI char(1) V762BJ char(1) V762BK char(1) V762BL char(1) V762BM char(1) V762BN char(1) V762BO char(1) V762BP char(1) V762BQ char(1) V762BR char(1) V762BS char(1) V762BT char(1) V762BU char(1) V762BV char(1) V762BW char(1) V762BX char(1) V762BZ char(1) V763A number(2,0) V763B number(2,0) V763C number(2,0) V763D char(1) V763E char(1) V763F char(1) V763G char(1) V766A char(1) V766B char(1) V767A char(1) V767B char(1) V767C char(1) V768A char(1) V768B char(1) V768C char(1) V769 char(1) V769A char(1) V770 number(2,0) V770A number(2,0) V770B number(2,0) V770C number(2,0) V770D number(2,0) V770E number(2,0) V770F number(2,0) V770G number(2,0) V770H number(2,0) V770I number(2,0) V770J number(2,0) V770K char(1) V770L number(2,0) V770M number(2,0) V770N number(2,0) V770O number(2,0) V770P number(2,0) V770Q number(2,0) V770R number(2,0) V770S number(2,0) V770T number(2,0) V770U number(2,0) V770V number(2,0) V770W number(2,0) V770X number(2,0) V774A number(2,0) V774B number(2,0) V774C number(2,0) V775 char(1) V777 char(1) V778 char(1) V779 char(1) V780 char(1) V781 char(1) V783 char(1) V784A char(1) V784B char(1) V784C char(1) V784D char(1) V784E char(1) V784F char(1) V784G char(1) V784H char(1) V784I char(1) V784J char(1) V784K char(1) V784L char(1) V784M char(1) V784N char(1) V784O char(1) V784P char(1) V784Q char(1) V784R char(1) V784S char(1) V784T char(1) V784U char(1) V784V char(1) V784X char(1) V785 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECH2_All FileCode char(7) HHID char(7) HV201 number(3,0) HV202 char(1) HV204 number(4,0) HV205 number(3,0) HV206 number(2,0) HV207 number(2,0) HV208 number(2,0) HV209 number(2,0) HV210 number(2,0) HV211 number(2,0) HV212 char(1) HV213 number(3,0) HV214 number(3,0) HV215 number(3,0) HV216 number(3,0) HV217 number(2,0) HV218 number(2,0) HV219 number(2,0) HV220 number(3,0) HV221 number(2,0) HV225 number(2,0) HV226 number(3,0) HV227 char(1) HV228 char(1) HV230A number(2,0) HV230B number(2,0) HV232 number(2,0) HV232B number(2,0) HV232C number(2,0) HV232D number(2,0) HV232E char(1) HV232Y number(2,0) HV234 char(1) HV234A number(2,0) HV235 number(2,0) HV236 char(1) HV237 number(2,0) HV237A number(2,0) HV237B number(2,0) HV237C number(2,0) HV237D number(2,0) HV237E number(2,0) HV237F number(2,0) HV237G number(2,0) HV237H char(1) HV237I char(1) HV237J char(1) HV237K char(1) HV237X number(2,0) HV237Z number(2,0) HV238 number(3,0) HV239 char(1) HV240 char(1) HV241 number(2,0) HV242 number(2,0) HV243A number(2,0) HV243B char(1) HV243C char(1) HV243D char(1) HV244 number(2,0) HV245 number(4,0) HV246 number(2,0) HV246A char(1) HV246B number(3,0) HV246C char(1) HV246D char(1) HV246E char(1) HV246F char(1) HV246G number(3,0) HV246H number(3,0) HV246I number(3,0) HV246J char(1) HV246K char(1) HV247 number(2,0) HV252 number(2,0) HV253 char(1) HV253A char(1) HV253B char(1) HV253C char(1) HV253D char(1) HV253E char(1) HV253F char(1) HV253G char(1) HV253H char(1) HV253X char(1) HV253Z char(1) HV270 number(2,0) HV271 number(8,0) HML1 char(1) HML1A char(1) HML2 char(1) +# ------------------------------------------------------------------------- +CSV_3_DEF RECH6S_All FileCode char(7) HHID char(7) SHA0 number(3,0) SH603 number(6,0) SH604 number(5,0) SH614 number(2,0) SH615 char(6) SH616 number(2,0) SH617 number(2,0) SH618 char(6) SH619 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC81_All FileCode char(7) CASEID char(10) V801 number(5,0) V802 number(5,0) V803 number(3,0) V804 number(2,0) V805 number(4,0) V806 number(2,0) V811 number(2,0) V812 number(2,0) V813 number(2,0) V814 number(2,0) V815A char(1) V815B char(1) V815C char(1) +# ------------------------------------------------------------------------- +CSV_3_DEF REC43_All FileCode char(7) CASEID char(10) HIDX number(2,0) H1 number(2,0) H2 number(2,0) H2D number(3,0) H2M number(3,0) H2Y number(5,0) H3 number(2,0) H3D number(3,0) H3M number(3,0) H3Y number(5,0) H4 number(2,0) H4D number(3,0) H4M number(3,0) H4Y number(5,0) H5 number(2,0) H5D number(3,0) H5M number(3,0) H5Y number(5,0) H6 number(2,0) H6D number(3,0) H6M number(3,0) H6Y number(5,0) H7 number(2,0) H7D number(3,0) H7M number(3,0) H7Y number(5,0) H8 number(2,0) H8D number(3,0) H8M number(3,0) H8Y number(5,0) H9 number(2,0) H9D number(3,0) H9M number(3,0) H9Y number(5,0) H0 number(2,0) H0D number(3,0) H0M number(3,0) H0Y number(5,0) H10 number(2,0) H11 number(2,0) H11B number(2,0) H12A number(2,0) H12B number(2,0) H12C number(2,0) H12D number(2,0) H12E number(2,0) H12F number(2,0) H12G number(2,0) H12H number(2,0) H12I number(2,0) H12J number(2,0) H12K number(2,0) H12L number(2,0) H12M number(2,0) H12N number(2,0) H12O number(2,0) H12P number(2,0) H12Q char(1) H12R char(1) H12S number(2,0) H12T number(2,0) H12U number(2,0) H12V number(2,0) H12W char(1) H12X number(2,0) H12Y number(2,0) H12Z number(2,0) H13 number(2,0) H13B number(2,0) H14 number(2,0) H15 number(2,0) H15A number(2,0) H15B number(2,0) H15C number(2,0) H15D number(2,0) H15E number(2,0) H15F number(2,0) H15G number(2,0) H15H number(2,0) H15I number(2,0) H15J char(1) H15K char(1) H15L char(1) H15M char(1) H20 number(2,0) H21A number(2,0) H21 number(2,0) H22 number(2,0) H31 number(2,0) H31B number(2,0) H31C number(2,0) H31D number(2,0) H31E number(2,0) H32A number(2,0) H32B number(2,0) H32C number(2,0) H32D number(2,0) H32E number(2,0) H32F number(2,0) H32G number(2,0) H32H number(2,0) H32I number(2,0) H32J number(2,0) H32K number(2,0) H32L number(2,0) H32M number(2,0) H32N number(2,0) H32O number(2,0) H32P number(2,0) H32Q char(1) H32R char(1) H32S number(2,0) H32T number(2,0) H32U number(2,0) H32V number(2,0) H32W number(2,0) H32X number(2,0) H32Y number(2,0) H32Z number(2,0) H33 number(2,0) H33D number(3,0) H33M number(3,0) H33Y number(5,0) H34 number(2,0) H35 char(1) H36A number(2,0) H36B number(2,0) H36C number(2,0) H36D number(2,0) H36E char(1) H36F char(1) H37A number(2,0) H37B number(2,0) H37C char(1) H37D number(2,0) H37E number(2,0) H37F char(1) H37G char(1) H37H number(2,0) H37I number(2,0) H37J number(2,0) H37K number(2,0) H37L number(2,0) H37M number(2,0) H37N number(2,0) H37O number(2,0) H37P number(2,0) H37X number(2,0) H37Y number(2,0) H37Z number(2,0) H38 number(2,0) H39 number(2,0) H40 char(1) H40D char(1) H40M char(1) H40Y char(1) H41A char(1) H41B char(1) H42 number(2,0) H43 number(2,0) H44A number(3,0) H44B char(1) H44C char(1) H45 char(1) H46A number(3,0) H46B char(1) H47 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC96_All FileCode char(7) CASEID char(12) IDX96 number(2,0) S566 number(2,0) S567 number(3,0) S568A number(2,0) S568B number(2,0) S568C number(2,0) S568D number(2,0) S568E number(2,0) S569A number(2,0) S569B number(2,0) S569C number(2,0) S569D number(2,0) S569E number(2,0) S570A number(2,0) S570B number(2,0) S570C number(2,0) S570D number(2,0) S570X number(2,0) S571 number(2,0) S572A number(2,0) S572B number(2,0) S572C number(2,0) S572D number(2,0) S572X number(2,0) S572Y number(2,0) S573 number(3,0) S574 number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC11_All FileCode char(7) CASEID char(10) V101 number(2,0) V102 number(2,0) V103 char(1) V104 char(1) V105 char(1) V106 number(2,0) V107 number(2,0) V113 number(3,0) V115 number(4,0) V116 number(3,0) V119 number(2,0) V120 number(2,0) V121 number(2,0) V122 number(2,0) V123 number(2,0) V124 number(2,0) V125 char(1) V127 number(3,0) V128 number(3,0) V129 number(3,0) V130 number(2,0) V131 char(1) V133 number(3,0) V134 number(2,0) V135 number(2,0) V136 number(3,0) V137 number(2,0) V138 number(2,0) V139 number(3,0) V140 number(2,0) V141 number(2,0) V149 number(2,0) V150 number(3,0) V151 number(2,0) V152 number(3,0) V153 number(2,0) AWFACTT number(5,0) AWFACTU number(5,0) AWFACTR number(5,0) AWFACTE number(5,0) AWFACTW number(5,0) V155 number(2,0) V156 char(1) V157 number(2,0) V158 number(2,0) V159 number(2,0) V160 number(2,0) V161 number(3,0) V166 char(1) V167 char(1) V168 char(1) V190 number(2,0) V191 number(8,0) ML101 char(1) +# ------------------------------------------------------------------------- +CSV_3_DEF RECH10_All FileCode char(7) HHID number(10,0) SLNWP number(2,0) SH216 number(3,0) SH218 number(3,0) SH220 number(4,0) SH220B char(4) SH221 char(4) SH221B number(4,0) SH221AH number(3,0) SH221AM number(3,0) SH222 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECG1_All FileCode char(7) CASEID char(9) G100 number(2,0) G101 number(2,0) G102 number(2,0) G103 number(2,0) G104 number(2,0) G105 number(2,0) G106 number(3,0) G107 number(3,0) G108 number(3,0) G109 char(1) G110 char(1) G111 char(1) G112 char(1) G113 char(1) G114 char(1) G115 char(1) G116 char(1) G117A char(1) G117B char(1) G117C char(1) G117D char(1) G117E char(1) G117F char(1) G117G char(1) G117H char(1) G117I char(1) G117J char(1) G117X char(1) G117Y char(1) G118 number(2,0) G119 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECGC_All FileCode char(7) CASEID char(10) G100 number(2,0) G101 number(2,0) G102 number(2,0) G103 number(2,0) G104 number(2,0) G105 number(2,0) G106 number(3,0) G107 number(3,0) G108 number(3,0) G109 number(3,0) G110 number(2,0) G111 number(2,0) G112 number(2,0) G113 number(3,0) G114 number(3,0) G115 char(1) G116 number(2,0) G117A char(1) G117B char(1) G117C char(1) G117D char(1) G117E char(1) G117F char(1) G117G char(1) G117H char(1) G117I char(1) G117J char(1) G117X char(1) G117Y char(1) G118 char(1) G119 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECH6_All FileCode char(7) HHID char(7) HC0 number(3,0) HC1 number(3,0) HC2 number(5,0) HC3 number(5,0) HC4 number(5,0) HC5 number(5,0) HC6 number(6,0) HC7 number(5,0) HC8 number(5,0) HC9 number(6,0) HC10 number(5,0) HC11 number(5,0) HC12 number(6,0) HC13 number(2,0) HC15 number(2,0) HC16 number(3,0) HC17 number(3,0) HC18 number(3,0) HC19 number(5,0) HC27 number(2,0) HC30 number(3,0) HC31 number(5,0) HC32 number(5,0) HC33 number(2,0) HC51 number(3,0) HC52 number(2,0) HC53 number(4,0) HC55 number(2,0) HC56 number(4,0) HC57 number(2,0) HC58 char(1) HC60 number(4,0) HC61 number(2,0) HC62 number(3,0) HC63 number(4,0) HC64 number(3,0) SHB13 number(2,0) HC68 number(5,0) HC70 number(5,0) HC71 number(5,0) HC72 number(5,0) HC73 number(5,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC32_All FileCode char(7) CASEID char(10) V310 char(1) V311 char(1) V312 number(3,0) V313 number(2,0) V315 number(3,0) V316 number(5,0) V317 number(5,0) V318 number(2,0) V319 number(2,0) V320 number(2,0) V321 number(2,0) V322 number(2,0) V323 number(3,0) V323A number(3,0) V325A char(1) V326 number(3,0) V327 number(2,0) V337 number(3,0) V359 number(3,0) V360 number(3,0) V361 number(2,0) V362 number(2,0) V363 number(3,0) V364 number(2,0) V367 number(2,0) V372 number(2,0) V372A number(2,0) V375A char(1) V376 number(3,0) V376A char(1) V379 char(1) V380 char(1) V384A number(2,0) V384B number(2,0) V384C number(2,0) V393 char(1) V394 char(1) V395 char(1) V3A00A number(2,0) V3A00B number(2,0) V3A00C number(2,0) V3A00D number(2,0) V3A00E number(2,0) V3A00F number(2,0) V3A00G number(2,0) V3A00H number(2,0) V3A00I number(2,0) V3A00J number(2,0) V3A00K number(2,0) V3A00L number(2,0) V3A00M number(2,0) V3A00N number(2,0) V3A00O number(2,0) V3A00P char(1) V3A00Q char(1) V3A00R char(1) V3A00S number(2,0) V3A00T char(1) V3A00U number(2,0) V3A00V number(2,0) V3A00W number(2,0) V3A00X number(2,0) V3A00Y number(2,0) V3A00Z number(2,0) V3A01 char(1) V3A02 char(1) V3A03 char(1) V3A04 char(1) V3A05 char(1) V3A06 char(1) V3A07 number(3,0) V3A08A char(1) V3A08B number(2,0) V3A08C number(2,0) V3A08D number(2,0) V3A08E number(2,0) V3A08F number(2,0) V3A08G number(2,0) V3A08H number(2,0) V3A08I number(2,0) V3A08J number(2,0) V3A08K number(2,0) V3A08L number(2,0) V3A08M number(2,0) V3A08N number(2,0) V3A08O char(1) V3A08P number(2,0) V3A08Q number(2,0) V3A08R number(2,0) V3A08S number(2,0) V3A08T number(2,0) V3A08U number(2,0) V3A08V number(2,0) V3A08W char(1) V3A08AA char(1) V3A08AB char(1) V3A08AC char(1) V3A08AD char(1) V3A08X number(2,0) V3A08Z number(2,0) V3A09A char(1) V3A09B char(1) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHPC_All FileCode char(7) HHID char(6) HPCIDX number(3,0) SH198C number(2,0) SH198D number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHMLS_All FileCode char(7) HHID char(7) SHMLIDX number(2,0) SH136 number(2,0) SH139A number(3,0) SH139B number(3,0) SH139C number(3,0) SH139D number(3,0) SH139E number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECH5CS_All FileCode char(7) HHID char(7) IDX5CS number(3,0) SH224 number(2,0) SH224I number(4,0) SH234 number(2,0) SH235 number(2,0) SH235A number(2,0) SH242 number(2,0) SH242I number(4,0) SH248 number(2,0) SH251BC char(6) SH251 number(2,0) SH251A number(9,0) SH251AD number(3,0) SH251AM number(3,0) SH251AY number(5,0) SH251B number(5,0) SH251BH number(3,0) SH251BM number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHMA_All FileCode char(7) HHID char(7) HB0 number(3,0) HB1 number(3,0) HB2 number(5,0) HB3 number(5,0) HB4 number(5,0) HB5 number(5,0) HB6 number(6,0) HB11 number(5,0) HB12 number(6,0) HB12A number(6,0) HB12B number(6,0) HB13 number(2,0) HB32 number(5,0) HB33 number(2,0) HB35 number(3,0) HB40 number(5,0) HB41 number(5,0) HB50 number(2,0) HB51 number(3,0) HB52 number(2,0) HB53 number(4,0) HB55 number(2,0) HB56 number(4,0) HB57 number(2,0) HB58 char(1) HB60 number(2,0) HB61 number(2,0) HB62 char(6) HB63 number(2,0) HB64 number(2,0) HB65 number(2,0) HB66 number(2,0) HB67 number(3,0) HB68 number(2,0) HB69 number(8,0) HB70 number(4,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC91_All FileCode char(7) CASEID char(10) S28DAYS number(2,0) S5YEARS number(2,0) S103A number(2,0) S104A number(2,0) S112A number(2,0) S112B number(2,0) S114A number(2,0) S114B number(2,0) S114C number(2,0) S114D number(2,0) S114E number(2,0) S114F number(2,0) S114G number(2,0) S114GX number(3,0) S223A number(2,0) S223B number(2,0) S229A number(2,0) S229B number(2,0) S229C number(2,0) S229D number(3,0) S306A number(2,0) S325J number(2,0) S325M number(2,0) S325N number(2,0) S325O number(2,0) S325A number(2,0) S325B number(2,0) S325CA number(2,0) S325CB number(2,0) S325CC number(2,0) S325CD number(2,0) S325CE number(2,0) S325CF number(2,0) S325CG number(2,0) S325CH number(2,0) S325CX number(2,0) S325CZ number(2,0) S325D number(2,0) S325E number(2,0) S325FA number(2,0) S325FB number(2,0) S325FC number(2,0) S325FD number(2,0) S325FE number(2,0) S325FF number(2,0) S325FH number(2,0) S325FX number(2,0) S325FZ number(2,0) S326 number(2,0) S326AA number(2,0) S326AB number(2,0) S326AC number(2,0) S326AX number(2,0) S326B number(3,0) S326C number(2,0) S506A char(1) S604A number(3,0) S616 number(3,0) S714AA number(2,0) S714BA number(2,0) S714BB number(2,0) S714BC number(2,0) S714D number(2,0) S714E number(2,0) S803A number(2,0) S823 number(2,0) S823A number(2,0) S823B number(2,0) S906A number(2,0) S906B number(2,0) S937A number(2,0) S937B number(2,0) S945O number(2,0) S945A number(2,0) S1001 number(2,0) S1002 number(2,0) S1003 number(2,0) S1004 number(2,0) S1005 number(2,0) SCORE number(3,0) AWFACTE2 number(6,0) AWFACTE3 number(6,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC21_All FileCode char(7) CASEID char(10) BIDX number(3,0) BORD number(3,0) B0 number(2,0) B1 number(3,0) B2 number(5,0) B3 number(5,0) B4 number(2,0) B5 number(2,0) B6 number(4,0) B7 number(4,0) B8 number(3,0) B9 number(2,0) B10 number(2,0) B11 number(4,0) B12 number(4,0) B13 number(2,0) B15 number(2,0) B16 number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHCHL_All FileCode char(7) HHID char(10) IDXCHL number(3,0) CHL1 number(2,0) CHL2 number(3,0) CHL3 number(2,0) CHL4 number(3,0) CHL5 number(2,0) CHL6 number(3,0) CHL7 number(2,0) CHL8 number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECH1_All FileCode char(7) HHID char(6) HVIDX number(3,0) HV101 number(3,0) HV102 number(2,0) HV103 number(2,0) HV104 number(2,0) HV105 number(3,0) HV106 number(2,0) HV107 number(2,0) HV108 number(3,0) HV109 number(2,0) HV110 char(1) HV111 char(1) HV112 char(1) HV113 char(1) HV114 char(1) HV115 char(1) HV116 number(2,0) HV117 number(2,0) HV118 number(2,0) HV120 number(2,0) HV121 number(2,0) HV122 number(2,0) HV123 number(2,0) HV124 number(3,0) HV125 char(1) HV126 char(1) HV127 char(1) HV128 char(1) HV129 char(1) HV140 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHC_All FileCode char(7) HHID char(7) SHCOLC number(2,0) SH202 number(3,0) SH205 number(5,0) SH206 number(5,0) SH212 number(4,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC80_All FileCode char(7) CASEID char(10) V820 char(1) V821A char(1) V821B char(1) V821C char(1) V822 char(1) V823 number(2,0) V824 char(1) V825 char(1) V826 char(1) V826A char(1) V827 char(1) V828 char(1) V829 char(1) V830 char(1) V831 char(1) V832B char(1) V832C char(1) V833A char(1) V833B char(1) V833C char(1) V834A char(1) V834B char(1) V834C char(1) V835A char(1) V835B char(1) V835C char(1) V836 char(1) V837 char(1) V838A char(1) V838B char(1) V838C char(1) V839 char(1) V839A char(1) V840 char(1) V840A char(1) V841 char(1) V841A char(1) V842 char(1) V843 char(1) V844 char(1) V845 char(1) V846 char(1) V847 char(1) V848 char(1) V849 char(1) V850A char(1) V850B char(1) V851A char(1) V851B char(1) V851C char(1) V851D char(1) V851E char(1) V851F char(1) V851G char(1) V851H char(1) V851I char(1) V851J char(1) V851K char(1) V851L char(1) V852A char(1) V852B char(1) V852C char(1) V853A char(1) V853B char(1) V853C char(1) V854A char(1) V854B char(1) V855 char(1) +# ------------------------------------------------------------------------- +CSV_3_DEF REC42_All FileCode char(7) CASEID char(10) V401 number(2,0) V404 number(2,0) V405 number(2,0) V406 number(2,0) V407 char(1) V408 char(1) V409 number(2,0) V409A char(1) V410 number(2,0) V410A char(1) V411 number(2,0) V411A number(2,0) V412 char(1) V412A number(2,0) V412B char(1) V412C char(1) V413 number(2,0) V413A char(1) V413B char(1) V413C char(1) V413D char(1) V414A char(1) V414B char(1) V414C char(1) V414D char(1) V414E number(2,0) V414F number(2,0) V414G number(2,0) V414H number(2,0) V414I number(2,0) V414J number(2,0) V414K number(2,0) V414L number(2,0) V414M number(2,0) V414N number(2,0) V414O number(2,0) V414P number(2,0) V414Q char(1) V414R char(1) V414S number(2,0) V414T char(1) V414U char(1) V414V number(2,0) V414W char(1) V415 number(2,0) V416 char(1) V417 number(2,0) V418 number(2,0) V419 number(2,0) V420 char(1) V421 char(1) V426 number(4,0) V437 number(5,0) V438 number(5,0) V439 number(5,0) V440 number(5,0) V441 number(6,0) V442 number(6,0) V443 number(6,0) V444 number(6,0) V444A number(5,0) V445 number(5,0) V446 number(5,0) V447 number(2,0) V447A number(3,0) V452A char(1) V452B char(1) V452C number(2,0) V453 number(4,0) V454 number(2,0) V455 number(2,0) V456 number(4,0) V457 number(2,0) V458 char(1) V459 char(1) V460 char(1) V461 char(1) V462 char(1) V463A char(1) V463B char(1) V463C char(1) V463D char(1) V463E char(1) V463F char(1) V463G char(1) V463X char(1) V463Z char(1) V464 char(1) V465 char(1) V466 char(1) V467A char(1) V467B char(1) V467C char(1) V467D char(1) V467E char(1) V467F char(1) V467G char(1) V467H char(1) V467I char(1) V467J char(1) V467K char(1) V467L char(1) V467M char(1) V468 number(2,0) V469E number(2,0) V469F number(2,0) V469X number(2,0) V471A char(1) V471B char(1) V471C char(1) V471D char(1) V471E char(1) V471F char(1) V471G char(1) V472A char(1) V472B char(1) V472C char(1) V472D char(1) V472E char(1) V472F char(1) V472G char(1) V472H char(1) V472I char(1) V472J char(1) V472K char(1) V472L char(1) V472M char(1) V472N char(1) V472O char(1) V472P char(1) V472Q char(1) V472R char(1) V472S char(1) V472T char(1) V472U char(1) V473A char(1) V473B char(1) V474 char(1) V474A char(1) V474B char(1) V474C char(1) V474D char(1) V474E char(1) V474F char(1) V474G char(1) V474H char(1) V474I char(1) V474J char(1) V474X char(1) V474Z char(1) V475 char(1) V476 char(1) V477 char(1) V478 char(1) V479 char(1) V480 char(1) V481 char(1) V481A char(1) V481B char(1) V481C char(1) V481D char(1) V481E char(1) V481F char(1) V481G char(1) V481H char(1) V481X char(1) V482A char(1) V482B char(1) V482C char(1) +# ------------------------------------------------------------------------- +CSV_3_DEF REC95_All FileCode char(7) CASEID char(10) IDX95 number(2,0) S506AD number(3,0) S506AM number(3,0) S506AY number(5,0) SHB1 number(3,0) SHB1D number(3,0) SHB1M number(5,0) SHB1Y number(5,0) SHB2 number(3,0) SHB2D number(5,0) SHB2M number(3,0) SHB2Y number(5,0) SHB3 number(2,0) SHB3D number(3,0) SHB3M number(3,0) SHB3Y number(5,0) S510J number(2,0) S519J number(2,0) S522C number(2,0) S522D number(2,0) S523A number(2,0) S523B number(2,0) S523C number(2,0) S523D number(2,0) S523E number(2,0) S523F number(2,0) S523G number(2,0) S523H number(2,0) S523I number(2,0) S523J number(2,0) S523K number(2,0) S523L number(2,0) S523M number(2,0) S523N number(2,0) S523O number(2,0) S523P number(2,0) S523Q number(2,0) S523R number(2,0) S523S number(2,0) S523T number(2,0) S523U number(2,0) S523V number(2,0) S523W number(2,0) S523X number(2,0) S536A number(2,0) S536K number(2,0) S536B number(3,0) S536C number(3,0) S536D number(3,0) S538O number(2,0) S538P number(2,0) S539 number(2,0) S540A number(2,0) S540B number(2,0) S540C number(2,0) S540D number(2,0) S540E number(2,0) S540F number(2,0) S540G number(2,0) S540H number(2,0) S540I number(2,0) S540J number(2,0) S540K number(2,0) S540L number(2,0) S540W number(2,0) S540X number(2,0) S541A number(2,0) S541B number(2,0) S541C number(2,0) S541D number(2,0) S541E number(2,0) S541F number(2,0) S541G number(2,0) S541H number(2,0) S541I number(2,0) S541J number(2,0) S541K number(2,0) S541L number(2,0) S541M number(2,0) S541N number(2,0) S541O number(2,0) S541P number(2,0) S541Q number(2,0) S541R number(2,0) S541S number(2,0) S541T number(2,0) S541U number(2,0) S541V number(2,0) S541W number(2,0) S541X number(2,0) S541Y number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECH5_All FileCode char(7) HHID char(7) HA0 number(3,0) HA1 number(3,0) HA2 number(5,0) HA3 number(5,0) HA4 number(5,0) HA5 number(5,0) HA6 number(6,0) HA11 number(5,0) HA12 number(6,0) HA12A number(6,0) HA12B number(6,0) HA13 number(2,0) HA32 number(5,0) HA33 number(2,0) HA35 char(1) HA40 number(5,0) HA41 number(5,0) HA50 char(1) HA51 char(1) HA52 number(2,0) HA53 number(4,0) HA54 number(2,0) HA55 number(2,0) HA56 number(4,0) HA57 number(2,0) HA58 char(1) HA60 char(1) HA61 char(1) HA62 char(1) HA63 char(1) HA64 char(1) HA65 number(2,0) HA66 number(2,0) HA67 number(3,0) HA68 number(2,0) HA69 char(1) HA70 char(1) +# ------------------------------------------------------------------------- +CSV_3_DEF REC31_All FileCode char(7) CASEID char(10) V301 char(1) V302 char(1) V302A number(2,0) REC31_GROUP number(2,0) V304A char(1) V304 char(1) V305 char(1) V307 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC84_All FileCode char(7) CASEID char(9) MMC1 number(3,0) MMC2 number(3,0) MMC3 char(1) REC84_GROUP char(1) MMC4 char(1) MMC5 number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC99_All FileCode char(7) CASEID char(9) IDX99 number(2,0) SH2 number(2,0) SH2D number(3,0) SH2M number(3,0) SH2Y number(5,0) SH3 number(2,0) SH3D number(3,0) SH3M number(3,0) SH3Y number(5,0) SH4 number(2,0) SH4D number(3,0) SH4M number(3,0) SH4Y number(5,0) SH5 number(2,0) SH5D number(3,0) SH5M number(3,0) SH5Y number(5,0) SH6 number(2,0) SH6D number(3,0) SH6M number(3,0) SH6Y number(5,0) SH7 number(2,0) SH7D number(3,0) SH7M number(3,0) SH7Y number(5,0) SH8 number(2,0) SH8D number(3,0) SH8M number(3,0) SH8Y number(5,0) SH9 number(2,0) SH9D number(3,0) SH9M number(3,0) SH9Y number(5,0) SH0 number(2,0) SH0D number(3,0) SH0M number(3,0) SH0Y number(5,0) SH33 number(2,0) SH33D number(3,0) SH33M number(3,0) SH33Y number(5,0) SHP4 number(2,0) SHP4D number(3,0) SHP4M number(3,0) SHP4Y number(5,0) SHD4 number(2,0) SHD4D number(3,0) SHD4M number(3,0) SHD4Y number(5,0) SHH1 number(2,0) SHH1D number(3,0) SHH1M number(3,0) SHH1Y number(5,0) SHH2 number(2,0) SHH2D number(3,0) SHH2M number(3,0) SHH2Y number(5,0) SHH3 number(2,0) SHH3D number(3,0) SHH3M number(3,0) SHH3Y number(5,0) SHT1 number(2,0) SHT1D number(3,0) SHT1M number(3,0) SHT1Y number(5,0) SHT2 number(2,0) SHT2D number(3,0) SHT2M number(3,0) SHT2Y number(5,0) SHT3 number(2,0) SHT3D number(3,0) SHT3M number(3,0) SHT3Y number(5,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHDP2_All FileCode char(7) HHID char(6) HDPIDX2 number(2,0) SH197B number(3,0) SH197C number(2,0) SH197D number(2,0) SH197E number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHML2_All FileCode char(7) HHID char(6) HMLIDX2 number(2,0) SH133A number(3,0) SH133B number(2,0) SH133C number(2,0) SHMLA number(3,0) SHMLB number(3,0) SHMLC number(3,0) SHMLD number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECH0_All FileCode char(7) HHID char(7) HV000 char(4) HV001 number(4,0) HV002 number(4,0) HV003 number(3,0) HV004 number(4,0) HV005 number(8,0) HV006 number(3,0) HV007 number(5,0) HV008 number(5,0) HV009 number(3,0) HV010 number(2,0) HV011 number(2,0) HV012 number(3,0) HV013 number(3,0) HV014 number(2,0) HV015 number(2,0) HV016 number(3,0) HV017 number(2,0) HV018 number(4,0) HV019 number(2,0) HV020 number(2,0) HV021 number(4,0) HV022 number(3,0) HV023 number(3,0) HV024 number(2,0) HV025 number(2,0) HV026 number(2,0) HV027 number(2,0) HV028 number(8,0) HV030 number(3,0) HV031 number(4,0) HV032 number(2,0) HV035 number(2,0) HV040 number(4,0) HV041 number(3,0) HV042 number(2,0) HV044 char(1) +# ------------------------------------------------------------------------- +CSV_3_DEF RECH9_All FileCode char(7) HHID number(9,0) SHIDX9 number(2,0) SH78O number(3,0) SH79 number(3,0) SH80 number(4,0) SH81 number(3,0) SH82 number(2,0) SH83 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC41_All FileCode char(7) CASEID char(10) MIDX number(2,0) M1 number(2,0) M1A number(2,0) M1B char(1) M1C char(1) M1D number(3,0) M1E number(5,0) M2A number(2,0) M2B number(2,0) M2C number(2,0) M2D number(2,0) M2E number(2,0) M2F number(2,0) M2G number(2,0) M2H number(2,0) M2I number(2,0) M2J char(1) M2K number(2,0) M2L number(2,0) M2M number(2,0) M2N number(2,0) M3A number(2,0) M3B number(2,0) M3C number(2,0) M3D number(2,0) M3E number(2,0) M3F number(2,0) M3G number(2,0) M3H number(2,0) M3I number(2,0) M3J number(2,0) M3K number(2,0) M3L number(2,0) M3M number(2,0) M3N number(2,0) M4 number(3,0) M5 number(3,0) M6 number(3,0) M7 number(3,0) M8 number(3,0) M9 number(3,0) M10 number(2,0) M11 number(4,0) M13 number(3,0) M14 number(3,0) M15 number(3,0) M17 number(2,0) M18 number(2,0) M19 number(5,0) M19A number(2,0) M27 number(2,0) M28 number(2,0) M29 number(2,0) M34 number(4,0) M35 char(1) M36 char(1) M38 number(2,0) M39A number(2,0) M39 number(2,0) M42A char(1) M42B char(1) M42C number(2,0) M42D number(2,0) M42E number(2,0) M43 number(2,0) M44 char(1) M45 number(2,0) M46 number(4,0) M47 char(1) M48 char(1) M49A number(2,0) M49B number(2,0) M49C char(1) M49D char(1) M49E char(1) M49F char(1) M49G char(1) M49X number(2,0) M49Z number(2,0) M49Y number(2,0) M50 number(2,0) M51 number(4,0) M52 number(3,0) M54 number(2,0) M55A number(2,0) M55B number(2,0) M55C number(2,0) M55D number(2,0) M55E number(2,0) M55F number(2,0) M55G number(2,0) M55H number(2,0) M55I number(2,0) M55J number(2,0) M55K number(2,0) M55L char(1) M55M char(1) M55N char(1) M55O char(1) M55X number(2,0) M55Z number(2,0) M57A number(2,0) M57B number(2,0) M57C char(1) M57D char(1) M57E number(2,0) M57F number(2,0) M57G number(2,0) M57H number(2,0) M57I number(2,0) M57J number(2,0) M57K number(2,0) M57L number(2,0) M57M number(2,0) M57N number(2,0) M57O number(2,0) M57P number(2,0) M57Q number(2,0) M57R number(2,0) M57S number(2,0) M57T number(2,0) M57U char(1) M57V char(1) M57X number(2,0) M60 number(2,0) M61 number(4,0) M62 number(2,0) M65A char(1) M65B char(1) M65C char(1) M65D char(1) M65E char(1) M65F char(1) M65G char(1) M65H char(1) M65I char(1) M65J char(1) M65K char(1) M65L char(1) M65X char(1) M66 number(2,0) M70 number(2,0) M71 number(4,0) M72 number(3,0) M73 number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECDV_All FileCode char(7) CASEID char(9) D005 number(8,0) D101A number(2,0) D101B number(2,0) D101C number(2,0) D101D number(2,0) D101E number(2,0) D101F number(2,0) D101G number(2,0) D101H char(1) D101I char(1) D101J char(1) D102 number(2,0) D103A number(2,0) D103B number(2,0) D103C char(1) D103D char(1) D103E char(1) D103F char(1) D104 number(2,0) D105A number(2,0) D105B number(2,0) D105C number(2,0) D105D number(2,0) D105E number(2,0) D105F number(2,0) D105G number(2,0) D105H number(2,0) D105I number(2,0) D105J char(1) D105K char(1) D105L char(1) D105M char(1) D105N char(1) D106 number(2,0) D107 number(2,0) D108 number(2,0) D109 number(3,0) D110A number(2,0) D110B number(2,0) D110C number(2,0) D110D char(1) D110E char(1) D110F char(1) D110G char(1) D110H char(1) D111 number(2,0) D112 number(2,0) D112A number(2,0) D113 number(2,0) D114 number(2,0) D115B number(2,0) D115C number(2,0) D115D number(2,0) D115E number(2,0) D115F number(2,0) D115G number(2,0) D115H char(1) D115I char(1) D115J number(2,0) D115K number(2,0) D115L number(2,0) D115M number(2,0) D115N number(2,0) D115O number(2,0) D115P number(2,0) D115Q number(2,0) D115R number(2,0) D115S number(2,0) D115T number(2,0) D115U char(1) D115V number(2,0) D115W number(2,0) D115X number(2,0) D115Y number(2,0) D115XA number(2,0) D115XB char(1) D115XC char(1) D115XD char(1) D115XE char(1) D115XF char(1) D115XG char(1) D115XH char(1) D115XI char(1) D115XJ char(1) D115XK char(1) D116 number(3,0) D117A number(2,0) D118A char(1) D118B number(2,0) D118C number(2,0) D118D number(2,0) D118E number(2,0) D118F number(2,0) D118G number(2,0) D118H char(1) D118I char(1) D118J number(2,0) D118K number(2,0) D118L number(2,0) D118M number(2,0) D118N number(2,0) D118O number(2,0) D118P number(2,0) D118Q number(2,0) D118R number(2,0) D118S number(2,0) D118T number(2,0) D118U char(1) D118V number(2,0) D118W number(2,0) D118X number(2,0) D118Y number(2,0) D118XA number(2,0) D118XB char(1) D118XC char(1) D118XD char(1) D118XE char(1) D118XF char(1) D118XG char(1) D118XH char(1) D118XI char(1) D118XJ char(1) D118XK char(1) D119A char(1) D119B number(2,0) D119C number(2,0) D119D number(2,0) D119E number(2,0) D119F number(2,0) D119G number(2,0) D119H char(1) D119I char(1) D119J number(2,0) D119K number(2,0) D119L number(2,0) D119M number(2,0) D119N number(2,0) D119O number(2,0) D119P number(2,0) D119Q number(2,0) D119R number(2,0) D119S number(2,0) D119T number(2,0) D119U char(1) D119V number(2,0) D119W number(2,0) D119X number(2,0) D119Y number(2,0) D119XA number(2,0) D119XB char(1) D119XC char(1) D119XD char(1) D119XE char(1) D119XF char(1) D119XG char(1) D119XH char(1) D119XI char(1) D119XJ char(1) D119XK char(1) D120 number(3,0) D121 number(2,0) D122A number(2,0) D122B number(2,0) D122C number(2,0) D123 char(1) D124 char(1) D125 char(1) D126 char(1) D127 char(1) D128 char(1) D129 char(1) D130A char(1) D130B char(1) D100A number(2,0) D100B number(2,0) D100C number(2,0) D100D number(2,0) D112N char(1) D117 char(1) D121A number(2,0) D1310A number(2,0) D1310B number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC94_All FileCode char(7) CASEID char(10) IDX94 number(2,0) S410J number(3,0) S433L number(3,0) S435C number(2,0) S435D number(2,0) S435E number(2,0) S435F number(2,0) S435GA number(2,0) S435GB number(2,0) S435GC number(2,0) S435GD number(2,0) S435GE number(2,0) S435GF number(2,0) S435GG number(2,0) S435GH number(2,0) S435GI number(2,0) S435GJ number(2,0) S435GK number(2,0) S435GL number(2,0) S435GM number(2,0) S435GN number(2,0) S435GX number(2,0) S435GZ number(2,0) S435H number(4,0) S435I number(2,0) S435J number(2,0) S439A number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECH4_All FileCode char(7) HHID char(6) IDXH4 number(3,0) SH08 number(2,0) SH13 number(2,0) SH18 number(2,0) SH19 number(2,0) SH20 number(2,0) SH21 number(2,0) SH22 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC83_All FileCode char(7) CASEID char(9) MMIDX number(3,0) MM1 number(2,0) MM2 number(2,0) MM3 number(3,0) MM4 number(5,0) MM5 char(1) MM6 number(3,0) MM7 number(3,0) MM8 number(5,0) MM9 number(3,0) MM10 char(1) MM11 char(1) MM12 char(1) MM13 char(1) MM14 number(3,0) MM15 char(1) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHDP_All FileCode char(7) HHID char(7) HDPIDX number(3,0) HD100 number(3,0) HD101 number(4,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHMH_All FileCode char(7) HHID char(6) HMHIDX number(3,0) HML12 number(2,0) HML13 number(2,0) HML14 number(2,0) HML15 char(1) HML16 number(3,0) HML16A number(3,0) HML17 number(2,0) HML18 number(2,0) HML19 number(2,0) HML20 number(2,0) HML30 number(3,0) HML31 number(2,0) HML32 number(2,0) HML32A char(1) HML32B char(1) HML32C char(1) HML32D char(1) HML32E char(1) HML32F char(1) HML32G char(1) HML33 char(1) HML34 char(6) HML35 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC51_All FileCode char(7) CASEID char(10) V501 number(2,0) V502 number(2,0) V503 number(2,0) V504 number(2,0) V505 char(1) V506 char(1) V507 number(3,0) V508 number(5,0) V509 number(5,0) V510 number(2,0) V511 number(3,0) V512 number(3,0) V513 number(2,0) V525 number(3,0) V527 number(4,0) V528 number(3,0) V529 number(4,0) V530 number(2,0) V531 number(3,0) V532 number(2,0) V535 number(2,0) V536 number(2,0) V537 number(3,0) V538 char(1) V539 char(1) V540 char(1) V541 char(1) +# ------------------------------------------------------------------------- +CSV_3_DEF REC98_All FileCode char(7) CASEID char(11) IDX98 number(2,0) S570 number(3,0) S571 number(3,0) S572 number(3,0) S573A number(2,0) S573B number(9,0) S573C number(3,0) S573D number(3,0) S573E number(5,0) S575 number(9,0) S576A number(3,0) S576B number(3,0) S576C number(5,0) S576D number(9,0) S576E number(3,0) S576F number(3,0) S576G number(5,0) S576H number(9,0) S576I number(3,0) S576J number(3,0) S577A number(5,0) S577B number(9,0) S577C number(3,0) S577D number(3,0) S577E number(5,0) S577F number(9,0) S577G number(3,0) S577G1 number(3,0) S577G2 number(5,0) S577H number(9,0) S577I number(3,0) S577J number(3,0) S577K number(5,0) S577L number(9,0) S577M number(3,0) S577N number(3,0) S577O number(5,0) S577P number(9,0) S577Q number(3,0) S577R number(3,0) S578A number(5,0) S578B number(9,0) S578C number(3,0) S578D number(3,0) S578E number(5,0) S578F number(9,0) S578G number(3,0) S578H number(3,0) S578I number(5,0) S578J number(9,0) S578K number(3,0) S578L number(3,0) S578M number(5,0) S578N number(9,0) S578O number(3,0) S578P number(3,0) S578P1 number(5,0) S578P2 number(9,0) S578Q number(3,0) S578R number(3,0) S578S number(5,0) S578T number(9,0) S578U number(3,0) S578V number(3,0) S578W number(5,0) S578X number(9,0) S578Y number(3,0) S579A number(3,0) S579B number(5,0) S579C number(9,0) S579D number(3,0) S579E number(3,0) S579F number(5,0) S579G number(9,0) S580 number(3,0) S581A number(3,0) S581B number(5,0) S581C number(2,0) S581D number(2,0) S581E number(2,0) S581F number(2,0) S581G number(2,0) S581H number(2,0) S581I number(2,0) S581J number(2,0) S581X number(2,0) S582 number(2,0) S583 number(3,0) S583B number(3,0) S584 number(3,0) S584B number(3,0) S585 number(2,0) S586 number(2,0) S587 number(3,0) S588 number(2,0) S589 number(3,0) S591 number(3,0) +# ------------------------------------------------------------------------- +CSV_3_DEF REC9A_All FileCode char(7) CASEID char(9) IDX9A number(3,0) S1113 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHG2_All FileCode char(7) HHID char(7) SG101 number(3,0) SG103 number(3,0) SG104 number(2,0) SG105 number(2,0) SG106 number(2,0) SG107 number(2,0) SG108 number(3,0) SG109 number(2,0) SG110 number(4,0) SG111 number(3,0) SG112A number(7,0) SG112B number(2,0) SG113A number(6,0) SG113B number(6,0) SG113C number(6,0) SG113D number(6,0) SG114A number(7,0) SG114B number(7,0) SG115 number(2,0) SG116A number(3,0) SG116B number(3,0) SG116C number(3,0) SG116D number(3,0) SG117A number(7,0) SG117B number(2,0) SG118A number(7,0) SG118B number(2,0) SG119A number(7,0) SG119B number(2,0) SG120A number(6,0) SG120B number(2,0) SG121 number(2,0) SG122 number(2,0) SG123A number(2,0) SG123B number(2,0) SG123C number(2,0) SG123D number(2,0) SG123E number(2,0) SG123F number(2,0) SG123G number(2,0) SG123H number(2,0) SG123I number(2,0) SG123J number(2,0) SG123X number(2,0) SG124 number(2,0) SG125 number(2,0) SG126 number(7,0) SG127 number(3,0) SG128 number(2,0) SG129 number(2,0) SG201A number(2,0) SG201B number(2,0) SG201C number(2,0) SG201D number(2,0) SG201E number(2,0) SG201F number(2,0) SG201G number(2,0) SG201H number(2,0) SG201I number(2,0) SG201J number(2,0) SG201K number(2,0) SG201L number(2,0) SG201M number(2,0) SG201N number(2,0) SG201X number(2,0) SG202A number(2,0) SG202B number(2,0) SG202C number(2,0) SG202D number(2,0) SG202E number(2,0) SG202F number(2,0) SG202G number(2,0) SG202H number(2,0) SG202I number(2,0) SG202J number(2,0) SG202K number(2,0) SG202L number(2,0) SG202M number(2,0) SG202N char(1) SG202X number(2,0) SG203A number(2,0) SG203B number(3,0) SG204M number(3,0) SG204A number(5,0) SG205 number(3,0) SG206A number(2,0) SG206B number(6,0) SG207 number(3,0) SG207B number(2,0) SG208A number(2,0) SG208B number(7,0) SG209 number(2,0) SG210 number(2,0) SG211 number(2,0) SG213A number(2,0) SG213B number(7,0) SG214 number(2,0) SG215 number(2,0) SG216A number(2,0) SG216B number(2,0) SG216C number(2,0) SG216D number(2,0) SG216E number(2,0) SG216F number(2,0) SG216G number(2,0) SG216H number(2,0) SG216I number(2,0) SG216X number(2,0) SG216Z number(2,0) SG217A number(2,0) SG217B number(2,0) SG217C number(2,0) SG217D number(2,0) SG217E number(2,0) SG217F number(2,0) SG217G number(2,0) SG217H number(2,0) SG217I number(2,0) SG217X number(2,0) SG217Y number(2,0) SG217Z number(2,0) SG218 number(2,0) SG219A number(2,0) SG219B number(7,0) SG220 number(2,0) SG221 number(2,0) SG222A number(2,0) SG222B number(2,0) SG222C number(2,0) SG222D number(2,0) SG222E number(2,0) SG222F number(2,0) SG222G number(2,0) SG222H number(2,0) SG222I number(2,0) SG222J number(2,0) SG222K number(2,0) SG222X number(2,0) SG222Z number(2,0) SG223A number(2,0) SG223B number(2,0) SG223C number(2,0) SG223D number(2,0) SG223E number(2,0) SG223F number(2,0) SG223G number(2,0) SG223H number(2,0) SG223I number(2,0) SG223J number(2,0) SG223K number(2,0) SG223X number(2,0) SG223Y number(2,0) SG223Z number(2,0) SG224 number(2,0) SG225A number(2,0) SG225B number(7,0) SG226 number(2,0) SG227 number(6,0) SG228A number(2,0) SG228B number(2,0) SG228C number(2,0) SG228D number(2,0) SG228E number(2,0) SG228F number(2,0) SG228G number(2,0) SG228H number(2,0) SG228I number(2,0) SG228J number(2,0) SG228X number(2,0) SG228Y number(2,0) SG228Z number(2,0) SG229 number(3,0) SG230M number(3,0) SG230A number(5,0) SG231 number(3,0) SG232A number(2,0) SG232B number(6,0) SG233 number(2,0) SG234 number(2,0) SG235 number(2,0) SG237A number(2,0) SG237B number(6,0) SG238 number(2,0) SG239 number(2,0) SG240A number(2,0) SG240B number(2,0) SG240C number(2,0) SG240D number(2,0) SG240E number(2,0) SG240F number(2,0) SG240G number(2,0) SG240H number(2,0) SG240I number(2,0) SG240X number(2,0) SG240Z number(2,0) SG241A number(2,0) SG241B number(2,0) SG241C number(2,0) SG241D number(2,0) SG241E number(2,0) SG241F number(2,0) SG241G number(2,0) SG241H number(2,0) SG241I number(2,0) SG241X number(2,0) SG241Y number(2,0) SG241Z number(2,0) SG242 number(2,0) SG243A number(2,0) SG243B number(7,0) SG244 number(2,0) SG245 number(2,0) SG246A number(2,0) SG246B number(2,0) SG246C number(2,0) SG246D number(2,0) SG246E number(2,0) SG246X number(2,0) SG246Z number(2,0) SG247A number(2,0) SG247B number(2,0) SG247C number(2,0) SG247D number(2,0) SG247E number(2,0) SG247X number(2,0) SG247Y number(2,0) SG247Z number(2,0) SG248 number(2,0) SG249A number(2,0) SG249B number(7,0) SG250 number(2,0) SG251 number(6,0) SG252 number(2,0) SG253A number(4,0) SG253B number(4,0) SG253C number(4,0) SG253 number(4,0) SG254 number(3,0) SG255 number(3,0) SG256A number(2,0) SG256B number(6,0) SG257 number(3,0) SG258A number(2,0) SG258B number(7,0) SG259 number(2,0) SG260 number(2,0) SG261 number(2,0) SG262A number(2,0) SG262B number(6,0) SG263 number(2,0) SG264 number(2,0) SG265A number(2,0) SG265B number(2,0) SG265C number(2,0) SG265D number(2,0) SG265E number(2,0) SG265F number(2,0) SG265G number(2,0) SG265H number(2,0) SG265I number(2,0) SG265X number(2,0) SG265Z number(2,0) SG265AA number(2,0) SG265AB number(2,0) SG265AC number(2,0) SG265AD number(2,0) SG265AE number(2,0) SG265AF number(2,0) SG265AG number(2,0) SG265AH number(2,0) SG265AI number(2,0) SG265AX number(2,0) SG265AY number(2,0) SG265AZ number(2,0) SG265BB number(2,0) SG266A number(2,0) SG266B number(7,0) SG267 number(2,0) SG268 number(2,0) SG269A number(2,0) SG269B number(2,0) SG269C number(2,0) SG269D number(2,0) SG269E number(2,0) SG269F number(2,0) SG269G number(2,0) SG269H number(2,0) SG269I number(2,0) SG269J number(2,0) SG269K number(2,0) SG269X number(2,0) SG269Z number(2,0) SG270A number(2,0) SG270B number(2,0) SG270C number(2,0) SG270D number(2,0) SG270E number(2,0) SG270F number(2,0) SG270G number(2,0) SG270H number(2,0) SG270I number(2,0) SG270J number(2,0) SG270K number(2,0) SG270X number(2,0) SG270Y number(2,0) SG270Z number(2,0) SG271 number(2,0) SG272A number(2,0) SG272B number(7,0) SG273 number(2,0) SG274 number(6,0) SG275 number(2,0) SG276 number(4,0) SG277 number(2,0) SG278 number(2,0) SG279U number(2,0) SG279N number(2,0) SG280A number(2,0) SG280B number(7,0) SG281 number(2,0) SG282A number(2,0) SG282B number(2,0) SG282C number(2,0) SG283 number(6,0) SG284 number(2,0) SG285 number(2,0) SG286 number(6,0) SG287 number(2,0) SG288 number(2,0) SG289 number(7,0) SG290 number(2,0) SG291 number(3,0) SG292 number(6,0) SG292A number(7,0) SG301A number(2,0) SG301B number(2,0) SG301C number(2,0) SG301D number(2,0) SG301E number(2,0) SG301F number(2,0) SG301G number(2,0) SG301H number(2,0) SG301X number(2,0) SG302 number(2,0) SG303A number(2,0) SG303B number(2,0) SG303C number(2,0) SG304A number(2,0) SG304B number(2,0) SG304C number(2,0) SG304D number(2,0) SG304E number(2,0) SG304X number(2,0) SG305 number(3,0) SG306 number(2,0) SG307 number(2,0) SG308 number(2,0) SG309 number(2,0) SG310 number(2,0) SG311 number(3,0) SINGRESOO number(8,0) SINGRESOE number(7,0) SREGALIAP number(7,0) SBONIFICA number(7,0) SIFUENTE1 number(8,0) SIFUENTE2 number(7,0) SIFUENTE3 number(7,0) SIFUENTE4 number(6,0) SINGRESOTP number(8,0) SINGRESOIP number(2,0) SINGRESOIB number(3,0) SGASTOTI char(1) SINGRESOIPA number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECH8_All FileCode char(7) HHID char(9) SHCOL3B number(3,0) SH223 number(3,0) SH225 number(3,0) SH226 number(3,0) SH227 number(6,0) SH227AA number(6,0) SH227AB number(6,0) SH227AC number(6,0) SH227AD number(6,0) SH227AE number(6,0) SH227AF number(6,0) SH227AG number(6,0) SH228 number(2,0) SH229 number(3,0) SH230 number(3,0) SH231 number(6,0) SH231AA number(6,0) SH231AB number(6,0) SH231AC number(6,0) SH231AD number(6,0) SH231AE number(6,0) SH231AF number(6,0) SH231AG number(6,0) SH232 number(2,0) SH233 number(3,0) SH234 number(3,0) SH235 number(6,0) SH235AA number(6,0) SH235AB number(6,0) SH235AC number(6,0) SH235AD number(6,0) SH235AE number(6,0) SH235AF number(6,0) SH235AG number(6,0) SH236 number(2,0) SH237 number(3,0) SH238 number(3,0) SH239 number(2,0) SH240 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHA_All FileCode char(7) HHID char(7) SHCOLA number(2,0) SH53 number(3,0) SH54 number(2,0) SH55 number(2,0) SH56 number(3,0) SH57 number(2,0) +# ------------------------------------------------------------------------- +CSV_3_DEF RECHS_All FileCode char(7) HHID char(7) SH67 number(3,0) SH68 number(2,0) SH69 number(2,0) SH70 number(3,0) SH71U number(2,0) SH71N number(7,0) SH72U number(2,0) SH72N number(7,0) SH73 number(2,0) SH74 number(3,0) SH75U number(2,0) SH75N number(7,0) SH76U number(2,0) SH76N number(7,0) SH77 number(2,0) SH78 number(3,0) SH79U number(2,0) SH79N number(7,0) SH80U number(2,0) SH80N number(7,0) +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" INPUT FEATURE_TYPE * ROUTE CSV CSV_3::RECHMC_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHMC_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHML_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHML_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECH4A_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECH4A_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC61_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC61_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHSK_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHSK_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECH3_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECH3_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHOV_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHOV_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHLB_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHLB_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC82_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC82_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC44_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC44_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHW_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHW_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHMG_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHMG_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC97_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC97_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECH11_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECH11_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECG2_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECG2_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECH5S_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECH5S_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHG1_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHG1_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC71_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC71_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHMH2_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHMH2_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECH7_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECH7_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHMCS_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHMCS_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHI_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHI_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC01_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC01_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECML_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECML_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC92_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC92_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHMT_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHMT_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHCH2_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHCH2_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC22_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC22_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC75_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC75_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECH2_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECH2_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECH6S_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECH6S_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC81_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC81_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC43_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC43_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC96_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC96_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC11_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC11_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECH10_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECH10_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECG1_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECG1_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECGC_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECGC_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECH6_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECH6_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC32_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC32_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHPC_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHPC_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHMLS_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHMLS_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECH5CS_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECH5CS_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHMA_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHMA_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC91_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC91_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC21_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC21_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHCHL_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHCHL_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECH1_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECH1_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHC_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHC_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC80_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC80_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC42_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC42_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC95_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC95_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECH5_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECH5_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC31_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC31_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC84_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC84_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC99_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC99_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHDP2_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHDP2_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHML2_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHML2_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECH0_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECH0_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECH9_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECH9_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC41_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC41_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECDV_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECDV_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC94_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC94_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECH4_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECH4_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC83_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC83_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHDP_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHDP_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHMH_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHMH_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC51_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC51_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC98_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC98_All ALIAS_GEOMETRY ROUTE CSV CSV_3::REC9A_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::REC9A_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHG2_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHG2_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECH8_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECH8_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHA_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHA_All ALIAS_GEOMETRY ROUTE CSV CSV_3::RECHS_All multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::RECHS_All ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * +$(DATASET_KEYWORD_CSV_1)_MERGE_DEF CSV_1::REC01.All GLOB_NOCASE * +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHMC_All EXACT RECHMC_All DEFLINE FileCode,char7,HHID,number60,IDXHML,number20,SH123A,number20,SH123B,number30,SH123C,number20,SH123D,number20,SH125A,number20,SH127A,number20,SH127B,number50,SH128,number30,SH128A,number20,SH128B,number50 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHML_All EXACT RECHML_All DEFLINE FileCode,char7,HHID,char6,HMLIDX,number20,HML3,number20,HML4,number30,HML5,number20,HML6,number20,HML7,number30,HML8,number20,HML9,number30,HML10,number20,HML11,number20,HML21,number20,HMLA,number30,HMLB,number30,HMLC,number30,HMLD,number30,HMLE,char1 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECH4A_All EXACT RECH4A_All DEFLINE FileCode,char7,HHID,char7,IDXH4A,number30,SH6XA,number20,SH6XB,number20,SH6XC,number20,SH6XX,number20,SH6XY,number20,SH6XZ,number20,SH62A,number20,SH62B,number60,SH63,number20,SH63B,number20,SH68A,number20,SH68B,number30,SH68C,number30,SH6YA,number20,SH6YB,number20,SH6YC,number20,SH6YD,number20,SH6YE,number20,SH6YF,number20,SH6YG,number20,SH6YH,number20,SH6YI,number20,SH6YJ,number20,SH6YX,number20,SH6YZ,number20,SH69A,number20,SH70,number60,SH71,number30,SH72,number60,SH73,number60,SH74,number60,SH75,number20,SH76,number60,SH77A,number60,SH77B,number60,SH77C,number60,SH78,number20,SH78A,number60,SH90,number20,SH91,number20,SH92,number30,SH93,number40,SH94,number60,SH94A,number20,SH95,number60,SH96A,number60,SH96B,number60,SH96C,number60 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC61_All EXACT REC61_All DEFLINE FileCode,char7,CASEID,char10,V602,number20,V603,number40,V604,number20,V605,number20,V613,number30,V614,number20,V616,number40,V621,number20,V623,number20,V624,number30,V625,number20,V626,number30,V625A,number20,V626A,number30,V627,number30,V628,number30,V629,number30,V631,char1,V632,number20,V633A,char1,V633B,char1,V633C,char1,V633D,char1,V633E,char1,V633F,char1,V633G,char1,V634,char1 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHSK_All EXACT RECHSK_All DEFLINE FileCode,char7,HHID,char7,HSKIDX,number30,HS100,number20,HS101,number20,HS102,number20,HS103,number20,HS104,number20,HS105,number20,HS106,number20,HS107,number20,HS108,number20,HS109,number20,HS110,number20,HS111,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECH3_All EXACT RECH3_All DEFLINE FileCode,char7,HHID,char7,SHDISTRICT,number30,SHUPAZILA,number30,SHADULT35,number20,SHHTEC,number40,SH104A,number20,SH104B,number30,SH110G,number20,SH110H,number20,SH110I,number20,SH110J,number20,SH110K,number20,SH110L,number20,SH118A,number20,SH118B,number20,SH122A,number20,SH122C,number52 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHOV_All EXACT RECHOV_All DEFLINE FileCode,char7,HHID,char7,HOVIDX,number30,HO100,number30,HO101,number20,HO102,number20,HO103,number20,HO104,number20,HO105,number20,HO106,number20,HO107,number20,HO108,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHLB_All EXACT RECHLB_All DEFLINE FileCode,char7,HHID,char7,SHCOL21A,number30,SH21,number30,SH22,number20,SH23,number30,SH24,number20,SH25,number20,SH26,number30,SH27,number20,SH28,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC82_All EXACT REC82_All DEFLINE FileCode,char7,CASEID,char10,VCOL,number20,VCAL,char73 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC44_All EXACT REC44_All DEFLINE FileCode,char7,CASEID,char10,HWIDX,number20,HW1,number30,HW2,number50,HW3,number50,HW4,number50,HW5,number50,HW6,number60,HW7,number50,HW8,number50,HW9,number60,HW10,number50,HW11,number50,HW12,number60,HW13,number20,HW15,number20,HW16,number30,HW17,number30,HW18,number30,HW19,number50,HW51,number30,HW52,number20,HW53,number40,HW55,number20,HW56,number50,HW57,number20,HW58,char1,HW70,number50,HW71,number50,HW72,number50,HW73,number50 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHW_All EXACT RECHW_All DEFLINE FileCode,char7,HHID,char7,SHCOLD,number20,SH215,number30,SH216,number60,SH217,number50,SH240,number40 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHMG_All EXACT RECHMG_All DEFLINE FileCode,char7,HHID,char9,SH_MIG,char15,SH22,number20,SH24,number20,SH25M,number30,SH25Y,number50,SH26,number30,SH27,number20,SH28C,number20,SH28D,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC97_All EXACT REC97_All DEFLINE FileCode,char7,CASEID,char12,S902,number20,S903A,number20,S903B,number20,S903C,number20,S903D,number20,S903E,number20,S903F,number20,S903G,number20,S903H,number20,S903X,number20,S903Z,number20,S904,number20,S905M,number30,S905Y,number50,S906,number20,S907,number20,S908,number30,S909,number20,S910,number20,S911,number20,S912,number20,S913,number30,S914,number20,S915,number30,S916,number20,S917,number30,S918,number20,S919,number30,S920,number20,S921,number20,S922,number20,S923,number20,S924,number30,S926,number20,S927,number20,S928,number20,S929,number20,S930,number30,S931,number20,S932,number20,S933,number20,S934,number20,S936,number20,S937A,number20,S937B,number20,S937C,number20,S937D,number20,S937E,number20,S937F,number20,S937G,number20,S937H,number20,S937X,number20,S937Z,number20,S938,number20,S939,number20,S940M,number30,S940Y,number50,S941,number20,S942,number30,S943,number20,S944,number20,S945,number20,S946,number20,S947,number20,S948,number30,S949,number20,S950,number30,S951,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECH11_All EXACT RECH11_All DEFLINE FileCode,char7,HHID,number100,SLNPM,number20,SHP216,number30,SHP218,number30,SHP220,number40,SHP220B,number40,SHP221,number40,SHP221B,number40,SHP221AH,number30,SHP221AM,number30,SHP222,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECG2_All EXACT RECG2_All DEFLINE FileCode,char7,CASEID,char9,GIDX,number20,G121,number20,G122,number30,G123,number20,G124,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECH5S_All EXACT RECH5S_All DEFLINE FileCode,char7,HHID,char7,SHC0,number30,SH505,number40,SH506,number50,SH515,number20,SH516,char6,SH517,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHG1_All EXACT RECHG1_All DEFLINE FileCode,char7,HHID,char7,SGCONGL,number50,SGHOGAR,number30,SGESTR,char1,SGPROVIN,number30,SGMUNIC,char1,SGZONA,number20,SGRESP,number30,SGINT,number90,SGINTD,number30,SGINTM,number30,SGINTA,number50,SGINTNUM,number40,SGRESULT,number30,SGVISITS,number20,SGSUPERV,number40,SGEDITC,number40,SGEDITO,number20,SGDIGIT,number30,SGHORAI,number30,SGMINUTI,number30,SGHORAF,number30,SGMINUTF,number30,SGWEIGHT,number90,SINGRTH,number90,SINGRTHP,number90,SINGRHI,number20,SVIVIG1,number20,SVIVIG2,number20,SVALPRO,number60,SQUINTIP,number20,SALLINCI,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC71_All EXACT REC71_All DEFLINE FileCode,char7,CASEID,char10,V701,number20,V702,number30,V704,number30,V705,char1,V714,number20,V714A,number20,V715,number30,V716,number30,V717,char1,V719,number20,V721,char1,V729,number20,V730,number30,V731,number20,V732,number20,V739,number20,V740,char1,V741,number20,V743A,number20,V743B,number20,V743C,char1,V743D,number20,V743E,char1,V743F,char1,V744A,number20,V744B,number20,V744C,number20,V744D,number20,V744E,number20,V745A,char1,V745B,char1,V746,char1 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHMH2_All EXACT RECHMH2_All DEFLINE FileCode,char7,HHID,char6,HMHIDX2,number30,SH212D,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECH7_All EXACT RECH7_All DEFLINE FileCode,char7,HHID,char7,SH230,number30,SH231,number30,SH232,number30,SH234,number30,SH234C,number60,SH235,number60,SH237,number60,SH238,number60,SH239,number60,SH241,number60,SH242A,number60,SH242B,number20,SH242C,number30,SH243,number30,SH244,number60,SH245,number60,SH246S,number60,SH246D,number60,SH248,number60,SH249,number60,SH250,number60,SH253,number50,SH254,number30,SH255S,number40,SH255D,number40,SH257,number30,SH258,number30,SH259,number60,SH260,number60,SH262,number60,SH263,number60,SH264S,number40,SH264D,number40,FSYSTO,number40,FDYSTO,number40,SH271,number50,SH273,number50,SH276,number20,SHWH,number20,SH1,number140,SH1D,number30,SH1MO,number30,SH1Y,number50,SH1H,number30,SH1M,number30,SH1X,number20,SH2,number140,SH2D,number30,SH2MO,number30,SH2Y,number50,SH2H,number30,SH2M,number30,SH2X,number20,SH3,number140,SH3D,number30,SH3MO,number30,SH3Y,number50,SH3H,number30,SH3M,number30,SH3X,number20,SH279,number20,SH280,number50,SH281,number50,SH283,number90,SH283D,number30,SH283M,number30,SH283Y,number50,SH283T,number50,SH284,number40,SH284A,number40,SH284G,number40,SH284B,number40,SHPC1,number50,SHSD1,number50,SHRM1,number60,SHRM3,number60,SHRM4,number60,SHRM5,number60,SHSD3,number50,SHBM,number50,SHRI,number50,SHCMC,number40,SHFLG,number20,SHSMK,char1,SHRESI,number20,SHED1,number20,SHED2,number30,SHED3,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHMCS_All EXACT RECHMCS_All DEFLINE FileCode,char7,HHID,char7,IDXMCS,number30,SH268,number20,SH268I,number40,SH278,number20,SH279,number20,SH279A,number20,SH286,number20,SH286I,number40,SH292,number20,SH295BC,char6,SH295,number20,SH295A,number90,SH295AD,number30,SH295AM,number30,SH295AY,number50,SH295B,number50,SH295BH,number30,SH295BM,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHI_All EXACT RECHI_All DEFLINE FileCode,char7,HHID,char7,SHCOLB,number20,SH61,number30,SH62,number20,SH63,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC01_All EXACT REC01_All DEFLINE FileCode,char7,CASEID,char18,V000,char4,V001,number40,V002,number40,V003,number30,V004,number40,V005,number80,V006,number30,V007,number50,V008,number50,V009,number30,V010,number50,V011,number50,V012,number30,V013,number20,V014,number20,V015,number20,V016,number30,V017,number50,V018,number30,V019,number30,V019A,number20,V020,number20,V021,number40,V022,number30,V023,number30,V024,number20,V025,number20,V026,number20,V027,number20,V028,number40,V029,number20,V030,number30,V031,number40,V032,number20,V034,number30,V040,number40,V042,number20,V044,char1 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECML_All EXACT RECML_All DEFLINE FileCode,char7,CASEID,char9,IDXML,number20,ML0,number20,ML1,number30,ML2,number20,ML11,char1,ML12,char1,ML13A,number20,ML13B,number20,ML13C,number20,ML13D,number20,ML13E,number20,ML13F,char1,ML13G,char1,ML13H,number20,ML13I,number20,ML13J,number20,ML13K,number20,ML13L,number20,ML13M,number20,ML13N,char1,ML13O,char1,ML13P,char1,ML13X,number20,ML13Y,number20,ML13Z,number20,ML14A,char1,ML14B,char1,ML14Y,char1,ML14Z,char1,ML15A,number20,ML15B,char1,ML15C,char1,ML16A,number20,ML16B,char1,ML16C,char1,ML17A,number20,ML17B,char1,ML17C,char1,ML18A,number20,ML18B,char1,ML18C,char1,ML19A,char1,ML19B,char1,ML19C,char1,ML19D,char1,ML19E,char1,ML19F,char1,ML19X,char1,ML19Y,char1,ML19Z,char1,ML20A,number20,ML20B,char1,ML20C,char1,ML21A,char1,ML21B,char1,ML21C,char1,ML22A,char1,ML22B,char1,ML22C,char1,ML23A,number20,ML23B,char1,ML23C,char1,ML24C,char1 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC92_All EXACT REC92_All DEFLINE FileCode,char7,CASEID,char12,IDX92,number30,S222,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHMT_All EXACT RECHMT_All DEFLINE FileCode,char7,HHID,char7,SHMTX,number20,SH78,number20,SH79,number30,SH80M,number30,SH80A,number50,SH81,number20,SH80MI,number30,SH80AI,number50,SH80C,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHCH2_All EXACT RECHCH2_All DEFLINE FileCode,char7,HHID,char6,IDXCH2,number30,SCHL145,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC22_All EXACT REC22_All DEFLINE FileCode,char7,CASEID,char10,V201,number30,V202,number20,V203,number20,V204,number20,V205,number20,V206,number30,V207,number20,V208,number20,V209,number20,V210,number20,V211,number50,V212,number30,V213,number20,V214,number20,V215,number40,V216,number20,V217,char1,V218,number30,V219,number30,V220,number20,V221,number40,V222,number40,V223,number20,V224,number30,V225,number20,V226,number40,V227,number20,V228,number20,V229,number30,V230,number50,V231,number50,V232,number20,V233,number20,V234,number20,V235,number20,V237,number20,V238,number20,V239,number20,V240,number30,V241,number50,V242,number50,V243,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC75_All EXACT REC75_All DEFLINE FileCode,char7,CASEID,char10,V750,number20,V751,number20,V754BP,char1,V754CP,number20,V754DP,number20,V754JP,number20,V754WP,number20,V756,number20,V761,char1,V761B,char1,V761C,char1,V762AA,char1,V762AB,char1,V762AC,char1,V762AD,char1,V762AE,char1,V762AF,char1,V762AG,char1,V762AH,char1,V762AI,char1,V762AJ,char1,V762AK,char1,V762AL,char1,V762AM,char1,V762AN,char1,V762AO,char1,V762AP,char1,V762AQ,char1,V762AR,char1,V762AS,char1,V762AT,char1,V762AU,char1,V762AV,char1,V762AW,char1,V762AX,char1,V762AZ,char1,V762BA,char1,V762BB,char1,V762BC,char1,V762BD,char1,V762BE,char1,V762BF,char1,V762BG,char1,V762BH,char1,V762BI,char1,V762BJ,char1,V762BK,char1,V762BL,char1,V762BM,char1,V762BN,char1,V762BO,char1,V762BP,char1,V762BQ,char1,V762BR,char1,V762BS,char1,V762BT,char1,V762BU,char1,V762BV,char1,V762BW,char1,V762BX,char1,V762BZ,char1,V763A,number20,V763B,number20,V763C,number20,V763D,char1,V763E,char1,V763F,char1,V763G,char1,V766A,char1,V766B,char1,V767A,char1,V767B,char1,V767C,char1,V768A,char1,V768B,char1,V768C,char1,V769,char1,V769A,char1,V770,number20,V770A,number20,V770B,number20,V770C,number20,V770D,number20,V770E,number20,V770F,number20,V770G,number20,V770H,number20,V770I,number20,V770J,number20,V770K,char1,V770L,number20,V770M,number20,V770N,number20,V770O,number20,V770P,number20,V770Q,number20,V770R,number20,V770S,number20,V770T,number20,V770U,number20,V770V,number20,V770W,number20,V770X,number20,V774A,number20,V774B,number20,V774C,number20,V775,char1,V777,char1,V778,char1,V779,char1,V780,char1,V781,char1,V783,char1,V784A,char1,V784B,char1,V784C,char1,V784D,char1,V784E,char1,V784F,char1,V784G,char1,V784H,char1,V784I,char1,V784J,char1,V784K,char1,V784L,char1,V784M,char1,V784N,char1,V784O,char1,V784P,char1,V784Q,char1,V784R,char1,V784S,char1,V784T,char1,V784U,char1,V784V,char1,V784X,char1,V785,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECH2_All EXACT RECH2_All DEFLINE FileCode,char7,HHID,char7,HV201,number30,HV202,char1,HV204,number40,HV205,number30,HV206,number20,HV207,number20,HV208,number20,HV209,number20,HV210,number20,HV211,number20,HV212,char1,HV213,number30,HV214,number30,HV215,number30,HV216,number30,HV217,number20,HV218,number20,HV219,number20,HV220,number30,HV221,number20,HV225,number20,HV226,number30,HV227,char1,HV228,char1,HV230A,number20,HV230B,number20,HV232,number20,HV232B,number20,HV232C,number20,HV232D,number20,HV232E,char1,HV232Y,number20,HV234,char1,HV234A,number20,HV235,number20,HV236,char1,HV237,number20,HV237A,number20,HV237B,number20,HV237C,number20,HV237D,number20,HV237E,number20,HV237F,number20,HV237G,number20,HV237H,char1,HV237I,char1,HV237J,char1,HV237K,char1,HV237X,number20,HV237Z,number20,HV238,number30,HV239,char1,HV240,char1,HV241,number20,HV242,number20,HV243A,number20,HV243B,char1,HV243C,char1,HV243D,char1,HV244,number20,HV245,number40,HV246,number20,HV246A,char1,HV246B,number30,HV246C,char1,HV246D,char1,HV246E,char1,HV246F,char1,HV246G,number30,HV246H,number30,HV246I,number30,HV246J,char1,HV246K,char1,HV247,number20,HV252,number20,HV253,char1,HV253A,char1,HV253B,char1,HV253C,char1,HV253D,char1,HV253E,char1,HV253F,char1,HV253G,char1,HV253H,char1,HV253X,char1,HV253Z,char1,HV270,number20,HV271,number80,HML1,char1,HML1A,char1,HML2,char1 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECH6S_All EXACT RECH6S_All DEFLINE FileCode,char7,HHID,char7,SHA0,number30,SH603,number60,SH604,number50,SH614,number20,SH615,char6,SH616,number20,SH617,number20,SH618,char6,SH619,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC81_All EXACT REC81_All DEFLINE FileCode,char7,CASEID,char10,V801,number50,V802,number50,V803,number30,V804,number20,V805,number40,V806,number20,V811,number20,V812,number20,V813,number20,V814,number20,V815A,char1,V815B,char1,V815C,char1 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC43_All EXACT REC43_All DEFLINE FileCode,char7,CASEID,char10,HIDX,number20,H1,number20,H2,number20,H2D,number30,H2M,number30,H2Y,number50,H3,number20,H3D,number30,H3M,number30,H3Y,number50,H4,number20,H4D,number30,H4M,number30,H4Y,number50,H5,number20,H5D,number30,H5M,number30,H5Y,number50,H6,number20,H6D,number30,H6M,number30,H6Y,number50,H7,number20,H7D,number30,H7M,number30,H7Y,number50,H8,number20,H8D,number30,H8M,number30,H8Y,number50,H9,number20,H9D,number30,H9M,number30,H9Y,number50,H0,number20,H0D,number30,H0M,number30,H0Y,number50,H10,number20,H11,number20,H11B,number20,H12A,number20,H12B,number20,H12C,number20,H12D,number20,H12E,number20,H12F,number20,H12G,number20,H12H,number20,H12I,number20,H12J,number20,H12K,number20,H12L,number20,H12M,number20,H12N,number20,H12O,number20,H12P,number20,H12Q,char1,H12R,char1,H12S,number20,H12T,number20,H12U,number20,H12V,number20,H12W,char1,H12X,number20,H12Y,number20,H12Z,number20,H13,number20,H13B,number20,H14,number20,H15,number20,H15A,number20,H15B,number20,H15C,number20,H15D,number20,H15E,number20,H15F,number20,H15G,number20,H15H,number20,H15I,number20,H15J,char1,H15K,char1,H15L,char1,H15M,char1,H20,number20,H21A,number20,H21,number20,H22,number20,H31,number20,H31B,number20,H31C,number20,H31D,number20,H31E,number20,H32A,number20,H32B,number20,H32C,number20,H32D,number20,H32E,number20,H32F,number20,H32G,number20,H32H,number20,H32I,number20,H32J,number20,H32K,number20,H32L,number20,H32M,number20,H32N,number20,H32O,number20,H32P,number20,H32Q,char1,H32R,char1,H32S,number20,H32T,number20,H32U,number20,H32V,number20,H32W,number20,H32X,number20,H32Y,number20,H32Z,number20,H33,number20,H33D,number30,H33M,number30,H33Y,number50,H34,number20,H35,char1,H36A,number20,H36B,number20,H36C,number20,H36D,number20,H36E,char1,H36F,char1,H37A,number20,H37B,number20,H37C,char1,H37D,number20,H37E,number20,H37F,char1,H37G,char1,H37H,number20,H37I,number20,H37J,number20,H37K,number20,H37L,number20,H37M,number20,H37N,number20,H37O,number20,H37P,number20,H37X,number20,H37Y,number20,H37Z,number20,H38,number20,H39,number20,H40,char1,H40D,char1,H40M,char1,H40Y,char1,H41A,char1,H41B,char1,H42,number20,H43,number20,H44A,number30,H44B,char1,H44C,char1,H45,char1,H46A,number30,H46B,char1,H47,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC96_All EXACT REC96_All DEFLINE FileCode,char7,CASEID,char12,IDX96,number20,S566,number20,S567,number30,S568A,number20,S568B,number20,S568C,number20,S568D,number20,S568E,number20,S569A,number20,S569B,number20,S569C,number20,S569D,number20,S569E,number20,S570A,number20,S570B,number20,S570C,number20,S570D,number20,S570X,number20,S571,number20,S572A,number20,S572B,number20,S572C,number20,S572D,number20,S572X,number20,S572Y,number20,S573,number30,S574,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC11_All EXACT REC11_All DEFLINE FileCode,char7,CASEID,char10,V101,number20,V102,number20,V103,char1,V104,char1,V105,char1,V106,number20,V107,number20,V113,number30,V115,number40,V116,number30,V119,number20,V120,number20,V121,number20,V122,number20,V123,number20,V124,number20,V125,char1,V127,number30,V128,number30,V129,number30,V130,number20,V131,char1,V133,number30,V134,number20,V135,number20,V136,number30,V137,number20,V138,number20,V139,number30,V140,number20,V141,number20,V149,number20,V150,number30,V151,number20,V152,number30,V153,number20,AWFACTT,number50,AWFACTU,number50,AWFACTR,number50,AWFACTE,number50,AWFACTW,number50,V155,number20,V156,char1,V157,number20,V158,number20,V159,number20,V160,number20,V161,number30,V166,char1,V167,char1,V168,char1,V190,number20,V191,number80,ML101,char1 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECH10_All EXACT RECH10_All DEFLINE FileCode,char7,HHID,number100,SLNWP,number20,SH216,number30,SH218,number30,SH220,number40,SH220B,char4,SH221,char4,SH221B,number40,SH221AH,number30,SH221AM,number30,SH222,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECG1_All EXACT RECG1_All DEFLINE FileCode,char7,CASEID,char9,G100,number20,G101,number20,G102,number20,G103,number20,G104,number20,G105,number20,G106,number30,G107,number30,G108,number30,G109,char1,G110,char1,G111,char1,G112,char1,G113,char1,G114,char1,G115,char1,G116,char1,G117A,char1,G117B,char1,G117C,char1,G117D,char1,G117E,char1,G117F,char1,G117G,char1,G117H,char1,G117I,char1,G117J,char1,G117X,char1,G117Y,char1,G118,number20,G119,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECGC_All EXACT RECGC_All DEFLINE FileCode,char7,CASEID,char10,G100,number20,G101,number20,G102,number20,G103,number20,G104,number20,G105,number20,G106,number30,G107,number30,G108,number30,G109,number30,G110,number20,G111,number20,G112,number20,G113,number30,G114,number30,G115,char1,G116,number20,G117A,char1,G117B,char1,G117C,char1,G117D,char1,G117E,char1,G117F,char1,G117G,char1,G117H,char1,G117I,char1,G117J,char1,G117X,char1,G117Y,char1,G118,char1,G119,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECH6_All EXACT RECH6_All DEFLINE FileCode,char7,HHID,char7,HC0,number30,HC1,number30,HC2,number50,HC3,number50,HC4,number50,HC5,number50,HC6,number60,HC7,number50,HC8,number50,HC9,number60,HC10,number50,HC11,number50,HC12,number60,HC13,number20,HC15,number20,HC16,number30,HC17,number30,HC18,number30,HC19,number50,HC27,number20,HC30,number30,HC31,number50,HC32,number50,HC33,number20,HC51,number30,HC52,number20,HC53,number40,HC55,number20,HC56,number40,HC57,number20,HC58,char1,HC60,number40,HC61,number20,HC62,number30,HC63,number40,HC64,number30,SHB13,number20,HC68,number50,HC70,number50,HC71,number50,HC72,number50,HC73,number50 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC32_All EXACT REC32_All DEFLINE FileCode,char7,CASEID,char10,V310,char1,V311,char1,V312,number30,V313,number20,V315,number30,V316,number50,V317,number50,V318,number20,V319,number20,V320,number20,V321,number20,V322,number20,V323,number30,V323A,number30,V325A,char1,V326,number30,V327,number20,V337,number30,V359,number30,V360,number30,V361,number20,V362,number20,V363,number30,V364,number20,V367,number20,V372,number20,V372A,number20,V375A,char1,V376,number30,V376A,char1,V379,char1,V380,char1,V384A,number20,V384B,number20,V384C,number20,V393,char1,V394,char1,V395,char1,V3A00A,number20,V3A00B,number20,V3A00C,number20,V3A00D,number20,V3A00E,number20,V3A00F,number20,V3A00G,number20,V3A00H,number20,V3A00I,number20,V3A00J,number20,V3A00K,number20,V3A00L,number20,V3A00M,number20,V3A00N,number20,V3A00O,number20,V3A00P,char1,V3A00Q,char1,V3A00R,char1,V3A00S,number20,V3A00T,char1,V3A00U,number20,V3A00V,number20,V3A00W,number20,V3A00X,number20,V3A00Y,number20,V3A00Z,number20,V3A01,char1,V3A02,char1,V3A03,char1,V3A04,char1,V3A05,char1,V3A06,char1,V3A07,number30,V3A08A,char1,V3A08B,number20,V3A08C,number20,V3A08D,number20,V3A08E,number20,V3A08F,number20,V3A08G,number20,V3A08H,number20,V3A08I,number20,V3A08J,number20,V3A08K,number20,V3A08L,number20,V3A08M,number20,V3A08N,number20,V3A08O,char1,V3A08P,number20,V3A08Q,number20,V3A08R,number20,V3A08S,number20,V3A08T,number20,V3A08U,number20,V3A08V,number20,V3A08W,char1,V3A08AA,char1,V3A08AB,char1,V3A08AC,char1,V3A08AD,char1,V3A08X,number20,V3A08Z,number20,V3A09A,char1,V3A09B,char1 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHPC_All EXACT RECHPC_All DEFLINE FileCode,char7,HHID,char6,HPCIDX,number30,SH198C,number20,SH198D,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHMLS_All EXACT RECHMLS_All DEFLINE FileCode,char7,HHID,char7,SHMLIDX,number20,SH136,number20,SH139A,number30,SH139B,number30,SH139C,number30,SH139D,number30,SH139E,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECH5CS_All EXACT RECH5CS_All DEFLINE FileCode,char7,HHID,char7,IDX5CS,number30,SH224,number20,SH224I,number40,SH234,number20,SH235,number20,SH235A,number20,SH242,number20,SH242I,number40,SH248,number20,SH251BC,char6,SH251,number20,SH251A,number90,SH251AD,number30,SH251AM,number30,SH251AY,number50,SH251B,number50,SH251BH,number30,SH251BM,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHMA_All EXACT RECHMA_All DEFLINE FileCode,char7,HHID,char7,HB0,number30,HB1,number30,HB2,number50,HB3,number50,HB4,number50,HB5,number50,HB6,number60,HB11,number50,HB12,number60,HB12A,number60,HB12B,number60,HB13,number20,HB32,number50,HB33,number20,HB35,number30,HB40,number50,HB41,number50,HB50,number20,HB51,number30,HB52,number20,HB53,number40,HB55,number20,HB56,number40,HB57,number20,HB58,char1,HB60,number20,HB61,number20,HB62,char6,HB63,number20,HB64,number20,HB65,number20,HB66,number20,HB67,number30,HB68,number20,HB69,number80,HB70,number40 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC91_All EXACT REC91_All DEFLINE FileCode,char7,CASEID,char10,S28DAYS,number20,S5YEARS,number20,S103A,number20,S104A,number20,S112A,number20,S112B,number20,S114A,number20,S114B,number20,S114C,number20,S114D,number20,S114E,number20,S114F,number20,S114G,number20,S114GX,number30,S223A,number20,S223B,number20,S229A,number20,S229B,number20,S229C,number20,S229D,number30,S306A,number20,S325J,number20,S325M,number20,S325N,number20,S325O,number20,S325A,number20,S325B,number20,S325CA,number20,S325CB,number20,S325CC,number20,S325CD,number20,S325CE,number20,S325CF,number20,S325CG,number20,S325CH,number20,S325CX,number20,S325CZ,number20,S325D,number20,S325E,number20,S325FA,number20,S325FB,number20,S325FC,number20,S325FD,number20,S325FE,number20,S325FF,number20,S325FH,number20,S325FX,number20,S325FZ,number20,S326,number20,S326AA,number20,S326AB,number20,S326AC,number20,S326AX,number20,S326B,number30,S326C,number20,S506A,char1,S604A,number30,S616,number30,S714AA,number20,S714BA,number20,S714BB,number20,S714BC,number20,S714D,number20,S714E,number20,S803A,number20,S823,number20,S823A,number20,S823B,number20,S906A,number20,S906B,number20,S937A,number20,S937B,number20,S945O,number20,S945A,number20,S1001,number20,S1002,number20,S1003,number20,S1004,number20,S1005,number20,SCORE,number30,AWFACTE2,number60,AWFACTE3,number60 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC21_All EXACT REC21_All DEFLINE FileCode,char7,CASEID,char10,BIDX,number30,BORD,number30,B0,number20,B1,number30,B2,number50,B3,number50,B4,number20,B5,number20,B6,number40,B7,number40,B8,number30,B9,number20,B10,number20,B11,number40,B12,number40,B13,number20,B15,number20,B16,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHCHL_All EXACT RECHCHL_All DEFLINE FileCode,char7,HHID,char10,IDXCHL,number30,CHL1,number20,CHL2,number30,CHL3,number20,CHL4,number30,CHL5,number20,CHL6,number30,CHL7,number20,CHL8,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECH1_All EXACT RECH1_All DEFLINE FileCode,char7,HHID,char6,HVIDX,number30,HV101,number30,HV102,number20,HV103,number20,HV104,number20,HV105,number30,HV106,number20,HV107,number20,HV108,number30,HV109,number20,HV110,char1,HV111,char1,HV112,char1,HV113,char1,HV114,char1,HV115,char1,HV116,number20,HV117,number20,HV118,number20,HV120,number20,HV121,number20,HV122,number20,HV123,number20,HV124,number30,HV125,char1,HV126,char1,HV127,char1,HV128,char1,HV129,char1,HV140,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHC_All EXACT RECHC_All DEFLINE FileCode,char7,HHID,char7,SHCOLC,number20,SH202,number30,SH205,number50,SH206,number50,SH212,number40 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC80_All EXACT REC80_All DEFLINE FileCode,char7,CASEID,char10,V820,char1,V821A,char1,V821B,char1,V821C,char1,V822,char1,V823,number20,V824,char1,V825,char1,V826,char1,V826A,char1,V827,char1,V828,char1,V829,char1,V830,char1,V831,char1,V832B,char1,V832C,char1,V833A,char1,V833B,char1,V833C,char1,V834A,char1,V834B,char1,V834C,char1,V835A,char1,V835B,char1,V835C,char1,V836,char1,V837,char1,V838A,char1,V838B,char1,V838C,char1,V839,char1,V839A,char1,V840,char1,V840A,char1,V841,char1,V841A,char1,V842,char1,V843,char1,V844,char1,V845,char1,V846,char1,V847,char1,V848,char1,V849,char1,V850A,char1,V850B,char1,V851A,char1,V851B,char1,V851C,char1,V851D,char1,V851E,char1,V851F,char1,V851G,char1,V851H,char1,V851I,char1,V851J,char1,V851K,char1,V851L,char1,V852A,char1,V852B,char1,V852C,char1,V853A,char1,V853B,char1,V853C,char1,V854A,char1,V854B,char1,V855,char1 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC42_All EXACT REC42_All DEFLINE FileCode,char7,CASEID,char10,V401,number20,V404,number20,V405,number20,V406,number20,V407,char1,V408,char1,V409,number20,V409A,char1,V410,number20,V410A,char1,V411,number20,V411A,number20,V412,char1,V412A,number20,V412B,char1,V412C,char1,V413,number20,V413A,char1,V413B,char1,V413C,char1,V413D,char1,V414A,char1,V414B,char1,V414C,char1,V414D,char1,V414E,number20,V414F,number20,V414G,number20,V414H,number20,V414I,number20,V414J,number20,V414K,number20,V414L,number20,V414M,number20,V414N,number20,V414O,number20,V414P,number20,V414Q,char1,V414R,char1,V414S,number20,V414T,char1,V414U,char1,V414V,number20,V414W,char1,V415,number20,V416,char1,V417,number20,V418,number20,V419,number20,V420,char1,V421,char1,V426,number40,V437,number50,V438,number50,V439,number50,V440,number50,V441,number60,V442,number60,V443,number60,V444,number60,V444A,number50,V445,number50,V446,number50,V447,number20,V447A,number30,V452A,char1,V452B,char1,V452C,number20,V453,number40,V454,number20,V455,number20,V456,number40,V457,number20,V458,char1,V459,char1,V460,char1,V461,char1,V462,char1,V463A,char1,V463B,char1,V463C,char1,V463D,char1,V463E,char1,V463F,char1,V463G,char1,V463X,char1,V463Z,char1,V464,char1,V465,char1,V466,char1,V467A,char1,V467B,char1,V467C,char1,V467D,char1,V467E,char1,V467F,char1,V467G,char1,V467H,char1,V467I,char1,V467J,char1,V467K,char1,V467L,char1,V467M,char1,V468,number20,V469E,number20,V469F,number20,V469X,number20,V471A,char1,V471B,char1,V471C,char1,V471D,char1,V471E,char1,V471F,char1,V471G,char1,V472A,char1,V472B,char1,V472C,char1,V472D,char1,V472E,char1,V472F,char1,V472G,char1,V472H,char1,V472I,char1,V472J,char1,V472K,char1,V472L,char1,V472M,char1,V472N,char1,V472O,char1,V472P,char1,V472Q,char1,V472R,char1,V472S,char1,V472T,char1,V472U,char1,V473A,char1,V473B,char1,V474,char1,V474A,char1,V474B,char1,V474C,char1,V474D,char1,V474E,char1,V474F,char1,V474G,char1,V474H,char1,V474I,char1,V474J,char1,V474X,char1,V474Z,char1,V475,char1,V476,char1,V477,char1,V478,char1,V479,char1,V480,char1,V481,char1,V481A,char1,V481B,char1,V481C,char1,V481D,char1,V481E,char1,V481F,char1,V481G,char1,V481H,char1,V481X,char1,V482A,char1,V482B,char1,V482C,char1 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC95_All EXACT REC95_All DEFLINE FileCode,char7,CASEID,char10,IDX95,number20,S506AD,number30,S506AM,number30,S506AY,number50,SHB1,number30,SHB1D,number30,SHB1M,number50,SHB1Y,number50,SHB2,number30,SHB2D,number50,SHB2M,number30,SHB2Y,number50,SHB3,number20,SHB3D,number30,SHB3M,number30,SHB3Y,number50,S510J,number20,S519J,number20,S522C,number20,S522D,number20,S523A,number20,S523B,number20,S523C,number20,S523D,number20,S523E,number20,S523F,number20,S523G,number20,S523H,number20,S523I,number20,S523J,number20,S523K,number20,S523L,number20,S523M,number20,S523N,number20,S523O,number20,S523P,number20,S523Q,number20,S523R,number20,S523S,number20,S523T,number20,S523U,number20,S523V,number20,S523W,number20,S523X,number20,S536A,number20,S536K,number20,S536B,number30,S536C,number30,S536D,number30,S538O,number20,S538P,number20,S539,number20,S540A,number20,S540B,number20,S540C,number20,S540D,number20,S540E,number20,S540F,number20,S540G,number20,S540H,number20,S540I,number20,S540J,number20,S540K,number20,S540L,number20,S540W,number20,S540X,number20,S541A,number20,S541B,number20,S541C,number20,S541D,number20,S541E,number20,S541F,number20,S541G,number20,S541H,number20,S541I,number20,S541J,number20,S541K,number20,S541L,number20,S541M,number20,S541N,number20,S541O,number20,S541P,number20,S541Q,number20,S541R,number20,S541S,number20,S541T,number20,S541U,number20,S541V,number20,S541W,number20,S541X,number20,S541Y,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECH5_All EXACT RECH5_All DEFLINE FileCode,char7,HHID,char7,HA0,number30,HA1,number30,HA2,number50,HA3,number50,HA4,number50,HA5,number50,HA6,number60,HA11,number50,HA12,number60,HA12A,number60,HA12B,number60,HA13,number20,HA32,number50,HA33,number20,HA35,char1,HA40,number50,HA41,number50,HA50,char1,HA51,char1,HA52,number20,HA53,number40,HA54,number20,HA55,number20,HA56,number40,HA57,number20,HA58,char1,HA60,char1,HA61,char1,HA62,char1,HA63,char1,HA64,char1,HA65,number20,HA66,number20,HA67,number30,HA68,number20,HA69,char1,HA70,char1 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC31_All EXACT REC31_All DEFLINE FileCode,char7,CASEID,char10,V301,char1,V302,char1,V302A,number20,REC31_GROUP,number20,V304A,char1,V304,char1,V305,char1,V307,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC84_All EXACT REC84_All DEFLINE FileCode,char7,CASEID,char9,MMC1,number30,MMC2,number30,MMC3,char1,REC84_GROUP,char1,MMC4,char1,MMC5,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC99_All EXACT REC99_All DEFLINE FileCode,char7,CASEID,char9,IDX99,number20,SH2,number20,SH2D,number30,SH2M,number30,SH2Y,number50,SH3,number20,SH3D,number30,SH3M,number30,SH3Y,number50,SH4,number20,SH4D,number30,SH4M,number30,SH4Y,number50,SH5,number20,SH5D,number30,SH5M,number30,SH5Y,number50,SH6,number20,SH6D,number30,SH6M,number30,SH6Y,number50,SH7,number20,SH7D,number30,SH7M,number30,SH7Y,number50,SH8,number20,SH8D,number30,SH8M,number30,SH8Y,number50,SH9,number20,SH9D,number30,SH9M,number30,SH9Y,number50,SH0,number20,SH0D,number30,SH0M,number30,SH0Y,number50,SH33,number20,SH33D,number30,SH33M,number30,SH33Y,number50,SHP4,number20,SHP4D,number30,SHP4M,number30,SHP4Y,number50,SHD4,number20,SHD4D,number30,SHD4M,number30,SHD4Y,number50,SHH1,number20,SHH1D,number30,SHH1M,number30,SHH1Y,number50,SHH2,number20,SHH2D,number30,SHH2M,number30,SHH2Y,number50,SHH3,number20,SHH3D,number30,SHH3M,number30,SHH3Y,number50,SHT1,number20,SHT1D,number30,SHT1M,number30,SHT1Y,number50,SHT2,number20,SHT2D,number30,SHT2M,number30,SHT2Y,number50,SHT3,number20,SHT3D,number30,SHT3M,number30,SHT3Y,number50 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHDP2_All EXACT RECHDP2_All DEFLINE FileCode,char7,HHID,char6,HDPIDX2,number20,SH197B,number30,SH197C,number20,SH197D,number20,SH197E,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHML2_All EXACT RECHML2_All DEFLINE FileCode,char7,HHID,char6,HMLIDX2,number20,SH133A,number30,SH133B,number20,SH133C,number20,SHMLA,number30,SHMLB,number30,SHMLC,number30,SHMLD,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECH0_All EXACT RECH0_All DEFLINE FileCode,char7,HHID,char7,HV000,char4,HV001,number40,HV002,number40,HV003,number30,HV004,number40,HV005,number80,HV006,number30,HV007,number50,HV008,number50,HV009,number30,HV010,number20,HV011,number20,HV012,number30,HV013,number30,HV014,number20,HV015,number20,HV016,number30,HV017,number20,HV018,number40,HV019,number20,HV020,number20,HV021,number40,HV022,number30,HV023,number30,HV024,number20,HV025,number20,HV026,number20,HV027,number20,HV028,number80,HV030,number30,HV031,number40,HV032,number20,HV035,number20,HV040,number40,HV041,number30,HV042,number20,HV044,char1 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECH9_All EXACT RECH9_All DEFLINE FileCode,char7,HHID,number90,SHIDX9,number20,SH78O,number30,SH79,number30,SH80,number40,SH81,number30,SH82,number20,SH83,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC41_All EXACT REC41_All DEFLINE FileCode,char7,CASEID,char10,MIDX,number20,M1,number20,M1A,number20,M1B,char1,M1C,char1,M1D,number30,M1E,number50,M2A,number20,M2B,number20,M2C,number20,M2D,number20,M2E,number20,M2F,number20,M2G,number20,M2H,number20,M2I,number20,M2J,char1,M2K,number20,M2L,number20,M2M,number20,M2N,number20,M3A,number20,M3B,number20,M3C,number20,M3D,number20,M3E,number20,M3F,number20,M3G,number20,M3H,number20,M3I,number20,M3J,number20,M3K,number20,M3L,number20,M3M,number20,M3N,number20,M4,number30,M5,number30,M6,number30,M7,number30,M8,number30,M9,number30,M10,number20,M11,number40,M13,number30,M14,number30,M15,number30,M17,number20,M18,number20,M19,number50,M19A,number20,M27,number20,M28,number20,M29,number20,M34,number40,M35,char1,M36,char1,M38,number20,M39A,number20,M39,number20,M42A,char1,M42B,char1,M42C,number20,M42D,number20,M42E,number20,M43,number20,M44,char1,M45,number20,M46,number40,M47,char1,M48,char1,M49A,number20,M49B,number20,M49C,char1,M49D,char1,M49E,char1,M49F,char1,M49G,char1,M49X,number20,M49Z,number20,M49Y,number20,M50,number20,M51,number40,M52,number30,M54,number20,M55A,number20,M55B,number20,M55C,number20,M55D,number20,M55E,number20,M55F,number20,M55G,number20,M55H,number20,M55I,number20,M55J,number20,M55K,number20,M55L,char1,M55M,char1,M55N,char1,M55O,char1,M55X,number20,M55Z,number20,M57A,number20,M57B,number20,M57C,char1,M57D,char1,M57E,number20,M57F,number20,M57G,number20,M57H,number20,M57I,number20,M57J,number20,M57K,number20,M57L,number20,M57M,number20,M57N,number20,M57O,number20,M57P,number20,M57Q,number20,M57R,number20,M57S,number20,M57T,number20,M57U,char1,M57V,char1,M57X,number20,M60,number20,M61,number40,M62,number20,M65A,char1,M65B,char1,M65C,char1,M65D,char1,M65E,char1,M65F,char1,M65G,char1,M65H,char1,M65I,char1,M65J,char1,M65K,char1,M65L,char1,M65X,char1,M66,number20,M70,number20,M71,number40,M72,number30,M73,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECDV_All EXACT RECDV_All DEFLINE FileCode,char7,CASEID,char9,D005,number80,D101A,number20,D101B,number20,D101C,number20,D101D,number20,D101E,number20,D101F,number20,D101G,number20,D101H,char1,D101I,char1,D101J,char1,D102,number20,D103A,number20,D103B,number20,D103C,char1,D103D,char1,D103E,char1,D103F,char1,D104,number20,D105A,number20,D105B,number20,D105C,number20,D105D,number20,D105E,number20,D105F,number20,D105G,number20,D105H,number20,D105I,number20,D105J,char1,D105K,char1,D105L,char1,D105M,char1,D105N,char1,D106,number20,D107,number20,D108,number20,D109,number30,D110A,number20,D110B,number20,D110C,number20,D110D,char1,D110E,char1,D110F,char1,D110G,char1,D110H,char1,D111,number20,D112,number20,D112A,number20,D113,number20,D114,number20,D115B,number20,D115C,number20,D115D,number20,D115E,number20,D115F,number20,D115G,number20,D115H,char1,D115I,char1,D115J,number20,D115K,number20,D115L,number20,D115M,number20,D115N,number20,D115O,number20,D115P,number20,D115Q,number20,D115R,number20,D115S,number20,D115T,number20,D115U,char1,D115V,number20,D115W,number20,D115X,number20,D115Y,number20,D115XA,number20,D115XB,char1,D115XC,char1,D115XD,char1,D115XE,char1,D115XF,char1,D115XG,char1,D115XH,char1,D115XI,char1,D115XJ,char1,D115XK,char1,D116,number30,D117A,number20,D118A,char1,D118B,number20,D118C,number20,D118D,number20,D118E,number20,D118F,number20,D118G,number20,D118H,char1,D118I,char1,D118J,number20,D118K,number20,D118L,number20,D118M,number20,D118N,number20,D118O,number20,D118P,number20,D118Q,number20,D118R,number20,D118S,number20,D118T,number20,D118U,char1,D118V,number20,D118W,number20,D118X,number20,D118Y,number20,D118XA,number20,D118XB,char1,D118XC,char1,D118XD,char1,D118XE,char1,D118XF,char1,D118XG,char1,D118XH,char1,D118XI,char1,D118XJ,char1,D118XK,char1,D119A,char1,D119B,number20,D119C,number20,D119D,number20,D119E,number20,D119F,number20,D119G,number20,D119H,char1,D119I,char1,D119J,number20,D119K,number20,D119L,number20,D119M,number20,D119N,number20,D119O,number20,D119P,number20,D119Q,number20,D119R,number20,D119S,number20,D119T,number20,D119U,char1,D119V,number20,D119W,number20,D119X,number20,D119Y,number20,D119XA,number20,D119XB,char1,D119XC,char1,D119XD,char1,D119XE,char1,D119XF,char1,D119XG,char1,D119XH,char1,D119XI,char1,D119XJ,char1,D119XK,char1,D120,number30,D121,number20,D122A,number20,D122B,number20,D122C,number20,D123,char1,D124,char1,D125,char1,D126,char1,D127,char1,D128,char1,D129,char1,D130A,char1,D130B,char1,D100A,number20,D100B,number20,D100C,number20,D100D,number20,D112N,char1,D117,char1,D121A,number20,D1310A,number20,D1310B,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC94_All EXACT REC94_All DEFLINE FileCode,char7,CASEID,char10,IDX94,number20,S410J,number30,S433L,number30,S435C,number20,S435D,number20,S435E,number20,S435F,number20,S435GA,number20,S435GB,number20,S435GC,number20,S435GD,number20,S435GE,number20,S435GF,number20,S435GG,number20,S435GH,number20,S435GI,number20,S435GJ,number20,S435GK,number20,S435GL,number20,S435GM,number20,S435GN,number20,S435GX,number20,S435GZ,number20,S435H,number40,S435I,number20,S435J,number20,S439A,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECH4_All EXACT RECH4_All DEFLINE FileCode,char7,HHID,char6,IDXH4,number30,SH08,number20,SH13,number20,SH18,number20,SH19,number20,SH20,number20,SH21,number20,SH22,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC83_All EXACT REC83_All DEFLINE FileCode,char7,CASEID,char9,MMIDX,number30,MM1,number20,MM2,number20,MM3,number30,MM4,number50,MM5,char1,MM6,number30,MM7,number30,MM8,number50,MM9,number30,MM10,char1,MM11,char1,MM12,char1,MM13,char1,MM14,number30,MM15,char1 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHDP_All EXACT RECHDP_All DEFLINE FileCode,char7,HHID,char7,HDPIDX,number30,HD100,number30,HD101,number40 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHMH_All EXACT RECHMH_All DEFLINE FileCode,char7,HHID,char6,HMHIDX,number30,HML12,number20,HML13,number20,HML14,number20,HML15,char1,HML16,number30,HML16A,number30,HML17,number20,HML18,number20,HML19,number20,HML20,number20,HML30,number30,HML31,number20,HML32,number20,HML32A,char1,HML32B,char1,HML32C,char1,HML32D,char1,HML32E,char1,HML32F,char1,HML32G,char1,HML33,char1,HML34,char6,HML35,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC51_All EXACT REC51_All DEFLINE FileCode,char7,CASEID,char10,V501,number20,V502,number20,V503,number20,V504,number20,V505,char1,V506,char1,V507,number30,V508,number50,V509,number50,V510,number20,V511,number30,V512,number30,V513,number20,V525,number30,V527,number40,V528,number30,V529,number40,V530,number20,V531,number30,V532,number20,V535,number20,V536,number20,V537,number30,V538,char1,V539,char1,V540,char1,V541,char1 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC98_All EXACT REC98_All DEFLINE FileCode,char7,CASEID,char11,IDX98,number20,S570,number30,S571,number30,S572,number30,S573A,number20,S573B,number90,S573C,number30,S573D,number30,S573E,number50,S575,number90,S576A,number30,S576B,number30,S576C,number50,S576D,number90,S576E,number30,S576F,number30,S576G,number50,S576H,number90,S576I,number30,S576J,number30,S577A,number50,S577B,number90,S577C,number30,S577D,number30,S577E,number50,S577F,number90,S577G,number30,S577G1,number30,S577G2,number50,S577H,number90,S577I,number30,S577J,number30,S577K,number50,S577L,number90,S577M,number30,S577N,number30,S577O,number50,S577P,number90,S577Q,number30,S577R,number30,S578A,number50,S578B,number90,S578C,number30,S578D,number30,S578E,number50,S578F,number90,S578G,number30,S578H,number30,S578I,number50,S578J,number90,S578K,number30,S578L,number30,S578M,number50,S578N,number90,S578O,number30,S578P,number30,S578P1,number50,S578P2,number90,S578Q,number30,S578R,number30,S578S,number50,S578T,number90,S578U,number30,S578V,number30,S578W,number50,S578X,number90,S578Y,number30,S579A,number30,S579B,number50,S579C,number90,S579D,number30,S579E,number30,S579F,number50,S579G,number90,S580,number30,S581A,number30,S581B,number50,S581C,number20,S581D,number20,S581E,number20,S581F,number20,S581G,number20,S581H,number20,S581I,number20,S581J,number20,S581X,number20,S582,number20,S583,number30,S583B,number30,S584,number30,S584B,number30,S585,number20,S586,number20,S587,number30,S588,number20,S589,number30,S591,number30 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::REC9A_All EXACT REC9A_All DEFLINE FileCode,char7,CASEID,char9,IDX9A,number30,S1113,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHG2_All EXACT RECHG2_All DEFLINE FileCode,char7,HHID,char7,SG101,number30,SG103,number30,SG104,number20,SG105,number20,SG106,number20,SG107,number20,SG108,number30,SG109,number20,SG110,number40,SG111,number30,SG112A,number70,SG112B,number20,SG113A,number60,SG113B,number60,SG113C,number60,SG113D,number60,SG114A,number70,SG114B,number70,SG115,number20,SG116A,number30,SG116B,number30,SG116C,number30,SG116D,number30,SG117A,number70,SG117B,number20,SG118A,number70,SG118B,number20,SG119A,number70,SG119B,number20,SG120A,number60,SG120B,number20,SG121,number20,SG122,number20,SG123A,number20,SG123B,number20,SG123C,number20,SG123D,number20,SG123E,number20,SG123F,number20,SG123G,number20,SG123H,number20,SG123I,number20,SG123J,number20,SG123X,number20,SG124,number20,SG125,number20,SG126,number70,SG127,number30,SG128,number20,SG129,number20,SG201A,number20,SG201B,number20,SG201C,number20,SG201D,number20,SG201E,number20,SG201F,number20,SG201G,number20,SG201H,number20,SG201I,number20,SG201J,number20,SG201K,number20,SG201L,number20,SG201M,number20,SG201N,number20,SG201X,number20,SG202A,number20,SG202B,number20,SG202C,number20,SG202D,number20,SG202E,number20,SG202F,number20,SG202G,number20,SG202H,number20,SG202I,number20,SG202J,number20,SG202K,number20,SG202L,number20,SG202M,number20,SG202N,char1,SG202X,number20,SG203A,number20,SG203B,number30,SG204M,number30,SG204A,number50,SG205,number30,SG206A,number20,SG206B,number60,SG207,number30,SG207B,number20,SG208A,number20,SG208B,number70,SG209,number20,SG210,number20,SG211,number20,SG213A,number20,SG213B,number70,SG214,number20,SG215,number20,SG216A,number20,SG216B,number20,SG216C,number20,SG216D,number20,SG216E,number20,SG216F,number20,SG216G,number20,SG216H,number20,SG216I,number20,SG216X,number20,SG216Z,number20,SG217A,number20,SG217B,number20,SG217C,number20,SG217D,number20,SG217E,number20,SG217F,number20,SG217G,number20,SG217H,number20,SG217I,number20,SG217X,number20,SG217Y,number20,SG217Z,number20,SG218,number20,SG219A,number20,SG219B,number70,SG220,number20,SG221,number20,SG222A,number20,SG222B,number20,SG222C,number20,SG222D,number20,SG222E,number20,SG222F,number20,SG222G,number20,SG222H,number20,SG222I,number20,SG222J,number20,SG222K,number20,SG222X,number20,SG222Z,number20,SG223A,number20,SG223B,number20,SG223C,number20,SG223D,number20,SG223E,number20,SG223F,number20,SG223G,number20,SG223H,number20,SG223I,number20,SG223J,number20,SG223K,number20,SG223X,number20,SG223Y,number20,SG223Z,number20,SG224,number20,SG225A,number20,SG225B,number70,SG226,number20,SG227,number60,SG228A,number20,SG228B,number20,SG228C,number20,SG228D,number20,SG228E,number20,SG228F,number20,SG228G,number20,SG228H,number20,SG228I,number20,SG228J,number20,SG228X,number20,SG228Y,number20,SG228Z,number20,SG229,number30,SG230M,number30,SG230A,number50,SG231,number30,SG232A,number20,SG232B,number60,SG233,number20,SG234,number20,SG235,number20,SG237A,number20,SG237B,number60,SG238,number20,SG239,number20,SG240A,number20,SG240B,number20,SG240C,number20,SG240D,number20,SG240E,number20,SG240F,number20,SG240G,number20,SG240H,number20,SG240I,number20,SG240X,number20,SG240Z,number20,SG241A,number20,SG241B,number20,SG241C,number20,SG241D,number20,SG241E,number20,SG241F,number20,SG241G,number20,SG241H,number20,SG241I,number20,SG241X,number20,SG241Y,number20,SG241Z,number20,SG242,number20,SG243A,number20,SG243B,number70,SG244,number20,SG245,number20,SG246A,number20,SG246B,number20,SG246C,number20,SG246D,number20,SG246E,number20,SG246X,number20,SG246Z,number20,SG247A,number20,SG247B,number20,SG247C,number20,SG247D,number20,SG247E,number20,SG247X,number20,SG247Y,number20,SG247Z,number20,SG248,number20,SG249A,number20,SG249B,number70,SG250,number20,SG251,number60,SG252,number20,SG253A,number40,SG253B,number40,SG253C,number40,SG253,number40,SG254,number30,SG255,number30,SG256A,number20,SG256B,number60,SG257,number30,SG258A,number20,SG258B,number70,SG259,number20,SG260,number20,SG261,number20,SG262A,number20,SG262B,number60,SG263,number20,SG264,number20,SG265A,number20,SG265B,number20,SG265C,number20,SG265D,number20,SG265E,number20,SG265F,number20,SG265G,number20,SG265H,number20,SG265I,number20,SG265X,number20,SG265Z,number20,SG265AA,number20,SG265AB,number20,SG265AC,number20,SG265AD,number20,SG265AE,number20,SG265AF,number20,SG265AG,number20,SG265AH,number20,SG265AI,number20,SG265AX,number20,SG265AY,number20,SG265AZ,number20,SG265BB,number20,SG266A,number20,SG266B,number70,SG267,number20,SG268,number20,SG269A,number20,SG269B,number20,SG269C,number20,SG269D,number20,SG269E,number20,SG269F,number20,SG269G,number20,SG269H,number20,SG269I,number20,SG269J,number20,SG269K,number20,SG269X,number20,SG269Z,number20,SG270A,number20,SG270B,number20,SG270C,number20,SG270D,number20,SG270E,number20,SG270F,number20,SG270G,number20,SG270H,number20,SG270I,number20,SG270J,number20,SG270K,number20,SG270X,number20,SG270Y,number20,SG270Z,number20,SG271,number20,SG272A,number20,SG272B,number70,SG273,number20,SG274,number60,SG275,number20,SG276,number40,SG277,number20,SG278,number20,SG279U,number20,SG279N,number20,SG280A,number20,SG280B,number70,SG281,number20,SG282A,number20,SG282B,number20,SG282C,number20,SG283,number60,SG284,number20,SG285,number20,SG286,number60,SG287,number20,SG288,number20,SG289,number70,SG290,number20,SG291,number30,SG292,number60,SG292A,number70,SG301A,number20,SG301B,number20,SG301C,number20,SG301D,number20,SG301E,number20,SG301F,number20,SG301G,number20,SG301H,number20,SG301X,number20,SG302,number20,SG303A,number20,SG303B,number20,SG303C,number20,SG304A,number20,SG304B,number20,SG304C,number20,SG304D,number20,SG304E,number20,SG304X,number20,SG305,number30,SG306,number20,SG307,number20,SG308,number20,SG309,number20,SG310,number20,SG311,number30,SINGRESOO,number80,SINGRESOE,number70,SREGALIAP,number70,SBONIFICA,number70,SIFUENTE1,number80,SIFUENTE2,number70,SIFUENTE3,number70,SIFUENTE4,number60,SINGRESOTP,number80,SINGRESOIP,number20,SINGRESOIB,number30,SGASTOTI,char1,SINGRESOIPA,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECH8_All EXACT RECH8_All DEFLINE FileCode,char7,HHID,char9,SHCOL3B,number30,SH223,number30,SH225,number30,SH226,number30,SH227,number60,SH227AA,number60,SH227AB,number60,SH227AC,number60,SH227AD,number60,SH227AE,number60,SH227AF,number60,SH227AG,number60,SH228,number20,SH229,number30,SH230,number30,SH231,number60,SH231AA,number60,SH231AB,number60,SH231AC,number60,SH231AD,number60,SH231AE,number60,SH231AF,number60,SH231AG,number60,SH232,number20,SH233,number30,SH234,number30,SH235,number60,SH235AA,number60,SH235AB,number60,SH235AC,number60,SH235AD,number60,SH235AE,number60,SH235AF,number60,SH235AG,number60,SH236,number20,SH237,number30,SH238,number30,SH239,number20,SH240,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHA_All EXACT RECHA_All DEFLINE FileCode,char7,HHID,char7,SHCOLA,number20,SH53,number30,SH54,number20,SH55,number20,SH56,number30,SH57,number20 +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::RECHS_All EXACT RECHS_All DEFLINE FileCode,char7,HHID,char7,SH67,number30,SH68,number20,SH69,number20,SH70,number30,SH71U,number20,SH71N,number70,SH72U,number20,SH72N,number70,SH73,number20,SH74,number30,SH75U,number20,SH75N,number70,SH76U,number20,SH76N,number70,SH77,number20,SH78,number30,SH79U,number20,SH79N,number70,SH80U,number20,SH80N,number70 +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "REC01.All (CSV_1) Splitter" INPUT FEATURE_TYPE REC01.All OUTPUT FEATURE_TYPE REC01.All_0_tdHQ0mtKw/c= OUTPUT FEATURE_TYPE REC01.All_1_tdHQ0mtKw/c= +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "RECHMC_All (CSV_3) Splitter" INPUT FEATURE_TYPE RECHMC_All OUTPUT FEATURE_TYPE RECHMC_All_0_DkSsZi3A2UQ= OUTPUT FEATURE_TYPE RECHMC_All_1_DkSsZi3A2UQ= +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "RECHML_All (CSV_3) Splitter" INPUT FEATURE_TYPE RECHML_All OUTPUT FEATURE_TYPE RECHML_All_0_UN8m0ZtWofw= OUTPUT FEATURE_TYPE RECHML_All_1_UN8m0ZtWofw= +DEFAULT_MACRO WB_CURRENT_CONTEXT +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_12 INPUT FEATURE_TYPE RECHW_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_12_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_6 INPUT FEATURE_TYPE RECHSK_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_6_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_8 INPUT FEATURE_TYPE RECHOV_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_8_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_3 INPUT FEATURE_TYPE RECHML_All_1_UN8m0ZtWofw= OUTPUT FEATURE_TYPE BulkAttributeRenamer_3_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_20 INPUT FEATURE_TYPE RECHMH2_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_20_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_13 INPUT FEATURE_TYPE RECHMG_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_13_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_2 INPUT FEATURE_TYPE RECHMC_All_1_DkSsZi3A2UQ= OUTPUT FEATURE_TYPE BulkAttributeRenamer_2_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- +Lookup FeatureTypeFilter_Lut "" notok ENCODED + +FACTORY_DEF * TestFactory FACTORY_NAME FeatureTypeFilter INPUT FEATURE_TYPE RECHML_All_0_UN8m0ZtWofw= INPUT FEATURE_TYPE RECHMC_All_0_DkSsZi3A2UQ= TEST @Lookup(FeatureTypeFilter_Lut,fme_feature_type,ENCODED_ATTR) == "ok" OUTPUT PASSED FEATURE_TYPE * @FeatureType(FeatureTypeFilter_&fme_feature_type) OUTPUT FAILED FEATURE_TYPE FeatureTypeFilter_ +FACTORY_DEF * TestFactory FACTORY_NAME FeatureTypeFilter_BlankFilter INPUT FEATURE_TYPE FeatureTypeFilter_ TEST @Value(fme_feature_type) == "" OUTPUT PASSED FEATURE_TYPE FeatureTypeFilter_ OUTPUT FAILED FEATURE_TYPE FeatureTypeFilter_ + +FACTORY_DEF * TeeFactory FACTORY_NAME "FeatureTypeFilter Output Nuker" INPUT FEATURE_TYPE FeatureTypeFilter_ +FACTORY_DEF * TeeFactory FACTORY_NAME "FeatureTypeFilter Output Nuker" INPUT FEATURE_TYPE FeatureTypeFilter_ +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_22 INPUT FEATURE_TYPE RECHMCS_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_22_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_9 INPUT FEATURE_TYPE RECHLB_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_9_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_23 INPUT FEATURE_TYPE RECHI_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_23_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_18 INPUT FEATURE_TYPE RECHG1_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_18_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_21 INPUT FEATURE_TYPE RECH7_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_21_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_17 INPUT FEATURE_TYPE RECH5S_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_17_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_4 INPUT FEATURE_TYPE RECH4A_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_4_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_7 INPUT FEATURE_TYPE RECH3_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_7_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_15 INPUT FEATURE_TYPE RECH11_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_15_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_16 INPUT FEATURE_TYPE RECG2_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_16_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_14 INPUT FEATURE_TYPE REC97_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_14_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_10 INPUT FEATURE_TYPE REC82_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_10_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_19 INPUT FEATURE_TYPE REC71_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_19_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_5 INPUT FEATURE_TYPE REC61_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_5_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer_11 INPUT FEATURE_TYPE REC44_All OUTPUT FEATURE_TYPE BulkAttributeRenamer_11_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME BulkAttributeRenamer INPUT FEATURE_TYPE REC01.All_1_tdHQ0mtKw/c= OUTPUT FEATURE_TYPE BulkAttributeRenamer_OUTPUT @RenameAttributes(PATTERN_REPLACE, CASECHANGE, , "", "", "lower", "", "-_") + +# ------------------------------------------------------------------------- + +# Expose all attributes. This ensures that if you expose fme_dataset, you will get it. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeExposer INPUT FEATURE_TYPE BulkAttributeRenamer_OUTPUT OUTPUT FEATURE_TYPE AttributeExposer_OUTPUT + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeCopier INPUT FEATURE_TYPE AttributeExposer_OUTPUT OUTPUT FEATURE_TYPE AttributeCopier_OUTPUT @CopyAttributes(ENCODED,ATTR_LIST_DEF_VAL, fme_feature_type,tbname,) + +# ------------------------------------------------------------------------- + +MACRO casemac +INCLUDE [ if { {NO} == {NO} } { puts {MACRO casemac -nocase}} ] +Tcl2 proc StringReplacer_bf30ff78_26a6_45ad_9cfe_6e4bef0a5b718_replacer { findText replaceText invalidValue} { set attrs [split \"tbname\" {,}]; set findValue [FME_DecodeText $findText]; set replaceValue [FME_DecodeText $replaceText]; foreach attr $attrs { set attrVal [FME_GetAttribute $attr]; set noMatch true; if {{NO} == {YES}} { set newAttrVal [regsub $(casemac) -all -- $findValue $attrVal $replaceValue]; } else { set newAttrVal [string map $(casemac) [list $findValue $replaceValue] $attrVal]; }; if { $newAttrVal ne $attrVal } { set noMatch false; FME_SetAttribute $attr $newAttrVal; }; if {$noMatch} { if { $invalidValue == {FME_NULL_VALUE} } { FME_SetAttributeNull $attr; } elseif { $invalidValue != {_FME_NO_OP_} } { FME_SetAttribute $attr [FME_DecodeText $invalidValue]; }; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME StringReplacer INPUT FEATURE_TYPE AttributeCopier_OUTPUT OUTPUT FEATURE_TYPE StringReplacer_OUTPUT @Tcl2("StringReplacer_bf30ff78_26a6_45ad_9cfe_6e4bef0a5b718_replacer {.} {_} {_FME_NO_OP_}") + +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {_All_} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME _All__DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME _All__DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME _All__FeatureDirector INPUT FEATURE_TYPE REC01.All_0_tdHQ0mtKw/c= TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE _All____NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE _All____RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME _All____FeatureDirector1 INPUT FEATURE_TYPE _All____NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE _All____VectorFeatures___ OUTPUT PASSED FEATURE_TYPE _All____PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME _All__VectorSetterUpper INPUT FEATURE_TYPE _All____VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc _All__9e7a328e_8b5f_4cb6_9bd5_d276fb8e050d6_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME _All____PointCloudThinner INPUT FEATURE_TYPE _All____PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("_All__9e7a328e_8b5f_4cb6_9bd5_d276fb8e050d6_thinPointCloud") +Tcl2 proc _All__9e7a328e_8b5f_4cb6_9bd5_d276fb8e050d6_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME _All__RasterSetterUpper INPUT FEATURE_TYPE _All____RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("_All__9e7a328e_8b5f_4cb6_9bd5_d276fb8e050d6_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# _All__9e7a328e_8b5f_4cb6_9bd5_d276fb8e050d6_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO _All__9e7a328e_8b5f_4cb6_9bd5_d276fb8e050d6_VIS_FEAT_TYPE _All_$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME _All__Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(_All__9e7a328e_8b5f_4cb6_9bd5_d276fb8e050d6_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA FileCode,varchar255,CASEID,varchar255,V000,varchar255,V001,varchar255,V002,varchar255,V003,varchar255,V004,varchar255,V005,varchar255,V006,varchar255,V007,varchar255,V008,varchar255,V009,varchar255,V010,varchar255,V011,varchar255,V012,varchar255,V013,varchar255,V014,varchar255,V015,varchar255,V016,varchar255,V017,varchar255,V018,varchar255,V019,varchar255,V019A,varchar255,V020,varchar255,V021,varchar255,V022,varchar255,V023,varchar255,V024,varchar255,V025,varchar255,V026,varchar255,V027,varchar255,V028,varchar255,V029,varchar255,V030,varchar255,V031,varchar255,V032,varchar255,V034,varchar255,V040,varchar255,V042,varchar255,V044,varchar255,G117B,varchar255,S903C,varchar255,V784X,varchar255,SH62B,varchar255,S326AB,varchar255,V763A,varchar255,S114E,varchar255,ML13F,varchar255,V504,varchar255,SHH1,varchar255,SH263,varchar255,V851E,varchar255,V3A08R,varchar255,SG265B,varchar255,V851A,varchar255,M65L,varchar255,D118T,varchar255,D118XC,varchar255,D119K,varchar255,SG234,varchar255,SG308,varchar255,V784L,varchar255,B7,varchar255,S539,varchar255,V845,varchar255,HV003,varchar255,ML22A,varchar255,V704,varchar255,SG292,varchar255,SG302,varchar255,M57M,varchar255,V767A,varchar255,SG116B,varchar255,MMC3,varchar255,D103F,varchar255,V472E,varchar255,D105H,varchar255,SG228B,varchar255,SG283,varchar255,V414J,varchar255,HV208,varchar255,H11B,varchar255,SG265AF,varchar255,S577D,varchar255,SG269I,varchar255,V474G,varchar255,SLNWP,varchar255,SH6YX,varchar255,SHH1M,varchar255,SHH2,varchar255,V471C,varchar255,HW53,varchar255,V414Q,varchar255,SHH2D,varchar255,SH617,varchar255,SH284,varchar255,SH235AG,varchar255,SG216D,varchar255,SG242,varchar255,D112N,varchar255,M42E,varchar255,SH6XY,varchar255,SH1X,varchar255,SH54,varchar255,HC60,varchar255,V481A,varchar255,V326,varchar255,V802,varchar255,CHL8,varchar255,HV212,varchar255,SG270I,varchar255,SINGRESOE,varchar255,SH246D,varchar255,HV001,varchar255,SG215,varchar255,SG265AZ,varchar255,H12I,varchar255,H32Q,varchar255,S523U,varchar255,SH_MIG,varchar255,H33Y,varchar255,V224,varchar255,M42A,varchar255,S506A,varchar255,V218,varchar255,SG201M,varchar255,S325J,varchar255,SG202D,varchar255,V161,varchar255,SH244,varchar255,V215,varchar255,SHD4M,varchar255,V509,varchar255,V510,varchar255,S435GE,varchar255,SG220,varchar255,M57C,varchar255,V414B,varchar255,SH284A,varchar255,HB5,varchar255,S325M,varchar255,HML3,varchar255,HC13,varchar255,H40M,varchar255,SHT2M,varchar255,SHT3D,varchar255,V231,varchar255,HW3,varchar255,HC61,varchar255,V768B,varchar255,SG228Y,varchar255,H6,varchar255,S538P,varchar255,S540G,varchar255,SH4,varchar255,ML13Y,varchar255,MM1,varchar255,S540D,varchar255,HV246F,varchar255,S567,varchar255,S577R,varchar255,S578I,varchar255,V474J,varchar255,HV105,varchar255,HA52,varchar255,SG201X,varchar255,SG257,varchar255,SG304A,varchar255,SG284,varchar255,S325FH,varchar255,V743A,varchar255,S435E,varchar255,HB2,varchar255,V302,varchar255,ML18C,varchar255,SG206A,varchar255,SH5,varchar255,M2A,varchar255,M38,varchar255,S433L,varchar255,V3A08O,varchar255,H32C,varchar255,V232,varchar255,SH230,varchar255,S937Z,varchar255,SH229,varchar255,ML19F,varchar255,S540K,varchar255,S541B,varchar255,HV031,varchar255,S325FD,varchar255,SG269D,varchar255,SG270D,varchar255,V843,varchar255,S577K,varchar255,S578B,varchar255,SH222,varchar255,H6Y,varchar255,V461,varchar255,HV129,varchar255,V3A08P,varchar255,S577P,varchar255,S578G,varchar255,V714,varchar255,HV243D,varchar255,B1,varchar255,S325D,varchar255,D118E,varchar255,HB13,varchar255,SH110J,varchar255,HV121,varchar255,M1C,varchar255,M8,varchar255,ML14Z,varchar255,D115O,varchar255,D100A,varchar255,S541D,varchar255,M55Z,varchar255,M57H,varchar255,M2I,varchar255,M47,varchar255,G117J,varchar255,SHMLC,varchar255,V414A,varchar255,SG228E,varchar255,SG115,varchar255,HC33,varchar255,SG222J,varchar255,SG223A,varchar255,M3G,varchar255,SG265AI,varchar255,IDXH4A,varchar255,SH9,varchar255,V225,varchar255,HC7,varchar255,MM3,varchar255,SH76U,varchar255,SG240E,varchar255,SG123H,varchar255,SG226,varchar255,M2M,varchar255,M3D,varchar255,M52,varchar255,S112A,varchar255,S541V,varchar255,SH19,varchar255,SH20,varchar255,SG251,varchar255,D119XH,varchar255,SG305,varchar255,HV247,varchar255,HML12,varchar255,S572C,varchar255,CHL4,varchar255,SHMLD,varchar255,V538,varchar255,S714BB,varchar255,S923,varchar255,S325FZ,varchar255,SG201F,varchar255,HML32A,varchar255,SH68B,varchar255,SHCOLA,varchar255,V467E,varchar255,M57D,varchar255,V770P,varchar255,S573C,varchar255,V472Q,varchar255,V778,varchar255,V478,varchar255,V754CP,varchar255,SH231AG,varchar255,SH232,varchar255,S540J,varchar255,M42C,varchar255,S541A,varchar255,SG216F,varchar255,SG304C,varchar255,V166,varchar255,HB41,varchar255,V744A,varchar255,V463B,varchar255,SH83,varchar255,SG261,varchar255,V770X,varchar255,SH292,varchar255,SH110H,varchar255,S523P,varchar255,SH110G,varchar255,V762AJ,varchar255,V762BA,varchar255,S578V,varchar255,S581D,varchar255,IDXCH2,varchar255,SG309,varchar255,D103E,varchar255,HV041,varchar255,SHRM4,varchar255,SG241Y,varchar255,SG310,varchar255,S435GB,varchar255,HV204,varchar255,V121,varchar255,S937F,varchar255,SG269Z,varchar255,AWFACTW,varchar255,SG270Z,varchar255,M6,varchar255,SH2M,varchar255,V472S,varchar255,V474A,varchar255,SH3D,varchar255,S903D,varchar255,G103,varchar255,HV253D,varchar255,SH197D,varchar255,HMHIDX2,varchar255,HO101,varchar255,ML16C,varchar255,SG253C,varchar255,H32D,varchar255,S523F,varchar255,SG241B,varchar255,HML32F,varchar255,S947,varchar255,SH93,varchar255,SG121,varchar255,HSKIDX,varchar255,D120,varchar255,V228,varchar255,D123,varchar255,HV115,varchar255,SG112A,varchar255,M19A,varchar255,D119XE,varchar255,S951,varchar255,SGRESULT,varchar255,S906A,varchar255,V233,varchar255,V3A00L,varchar255,V537,varchar255,HS102,varchar255,D118XI,varchar255,HB12A,varchar255,G124,varchar255,SH283T,varchar255,SH6YJ,varchar255,HV232B,varchar255,S523T,varchar255,HV243B,varchar255,D115H,varchar255,V784Q,varchar255,M49E,varchar255,CHL6,varchar255,SH123D,varchar255,D118XD,varchar255,M2G,varchar255,M45,varchar255,SG216H,varchar255,S577G1,varchar255,D115R,varchar255,HV012,varchar255,HB1,varchar255,V104,varchar255,SG228Z,varchar255,S938,varchar255,SH227,varchar255,HV017,varchar255,S903Z,varchar255,S538O,varchar255,S540F,varchar255,HV235,varchar255,SH202,varchar255,V379,varchar255,V380,varchar255,S948,varchar255,SG266B,varchar255,V413A,varchar255,HV027,varchar255,V3A00Z,varchar255,V762AK,varchar255,V762BB,varchar255,H4M,varchar255,H5D,varchar255,V851B,varchar255,HW72,varchar255,H37K,varchar255,S229C,varchar255,V844,varchar255,HV019,varchar255,HV020,varchar255,SG126,varchar255,SG228I,varchar255,V770I,varchar255,S906,varchar255,S937C,varchar255,SH231AE,varchar255,D119XI,varchar255,S919,varchar255,S920,varchar255,H0M,varchar255,D118XH,varchar255,ML13G,varchar255,S578X,varchar255,S581F,varchar255,D118W,varchar255,D119N,varchar255,SG275,varchar255,SH6YF,varchar255,M49X,varchar255,V212,varchar255,HV226,varchar255,HA57,varchar255,SHHTEC,varchar255,SG123B,varchar255,V784K,varchar255,SG246X,varchar255,V474,varchar255,H12H,varchar255,V412A,varchar255,M15,varchar255,SGMUNIC,varchar255,SH216,varchar255,ML13H,varchar255,ML15C,varchar255,V481C,varchar255,SH4Y,varchar255,SVALPRO,varchar255,V614,varchar255,V3A08Z,varchar255,H37O,varchar255,S941,varchar255,SG109,varchar255,SG110,varchar255,SG240I,varchar255,SH76,varchar255,SG222Z,varchar255,S944,varchar255,HC62,varchar255,SH71U,varchar255,SGINTNUM,varchar255,HB55,varchar255,S921,varchar255,HB66,varchar255,HA53,varchar255,S540X,varchar255,S541O,varchar255,SHB2M,varchar255,V119,varchar255,V120,varchar255,SHB1Y,varchar255,SHB3D,varchar255,SG303B,varchar255,V158,varchar255,S541M,varchar255,SH251AM,varchar255,V853C,varchar255,SG224,varchar255,SG265D,varchar255,V316,varchar255,SH68A,varchar255,SG246D,varchar255,HPCIDX,varchar255,S906B,varchar255,V204,varchar255,SINGRTH,varchar255,SG232B,varchar255,M57U,varchar255,S937G,varchar255,D103B,varchar255,HV014,varchar255,SREGALIAP,varchar255,H32L,varchar255,D117,varchar255,M3K,varchar255,M60,varchar255,HW18,varchar255,S326,varchar255,HC5,varchar255,SHCOLC,varchar255,V375A,varchar255,V851K,varchar255,M65K,varchar255,V852B,varchar255,D101C,varchar255,ML19E,varchar255,HV228,varchar255,HA11,varchar255,V633G,varchar255,SG262A,varchar255,SG222B,varchar255,H2Y,varchar255,ML19Z,varchar255,V471D,varchar255,V465,varchar255,SG258A,varchar255,V376,varchar255,V471E,varchar255,V775,varchar255,HMLIDX,varchar255,HS111,varchar255,SH53,varchar255,S540H,varchar255,SG246E,varchar255,S541S,varchar255,D110H,varchar255,HC73,varchar255,SG229,varchar255,S523I,varchar255,D110F,varchar255,S540L,varchar255,S541C,varchar255,V627,varchar255,SH221,varchar255,HV242,varchar255,SH6XC,varchar255,S578K,varchar255,S579B,varchar255,SG223F,varchar255,HS108,varchar255,SBONIFICA,varchar255,D118H,varchar255,HA12A,varchar255,SH80C,varchar255,H7Y,varchar255,ML13C,varchar255,SG127,varchar255,ML0,varchar255,V770C,varchar255,SGEDITO,varchar255,G113,varchar255,V472A,varchar255,S945O,varchar255,V625A,varchar255,V762AI,varchar255,V762AR,varchar255,V307,varchar255,V762BI,varchar255,D115XE,varchar255,S929,varchar255,V322,varchar255,S930,varchar255,G117D,varchar255,HV238,varchar255,SG247E,varchar255,V743F,varchar255,HV253A,varchar255,SHSMK,varchar255,SG279N,varchar255,S435GM,varchar255,SG123D,varchar255,H12C,varchar255,SHH2Y,varchar255,HB4,varchar255,HA3,varchar255,M65E,varchar255,S578P2,varchar255,M71,varchar255,B12,varchar255,SH1H,varchar255,SH283Y,varchar255,D115XI,varchar255,SH28D,varchar255,SG265BB,varchar255,H12D,varchar255,V237,varchar255,SG301A,varchar255,V855,varchar255,S578Q,varchar255,HV227,varchar255,SG123A,varchar255,V770J,varchar255,V219,varchar255,V220,varchar255,S572D,varchar255,SG252,varchar255,V438,varchar255,ML2,varchar255,SHT1D,varchar255,V815C,varchar255,M57J,varchar255,S577E,varchar255,V616,varchar255,H37J,varchar255,S903G,varchar255,SG204M,varchar255,D118A,varchar255,V820,varchar255,SH235AA,varchar255,H12U,varchar255,MM12,varchar255,S578W,varchar255,S581E,varchar255,SH235AF,varchar255,SG204A,varchar255,S541G,varchar255,HO104,varchar255,V414I,varchar255,V367,varchar255,SH133B,varchar255,HV113,varchar255,V761C,varchar255,V774C,varchar255,D105K,varchar255,SH231,varchar255,SG282B,varchar255,V762AX,varchar255,V762BO,varchar255,V238,varchar255,S577J,varchar255,S578A,varchar255,D116,varchar255,SH96C,varchar255,SG240A,varchar255,S229B,varchar255,SG216B,varchar255,SG216Z,varchar255,V3A00R,varchar255,S222,varchar255,HV237B,varchar255,SH242C,varchar255,V3A08S,varchar255,S578M,varchar255,S579D,varchar255,SHPC1,varchar255,H32E,varchar255,V131,varchar255,M49B,varchar255,H15I,varchar255,S572,varchar255,SG265Z,varchar255,ML13A,varchar255,G114,varchar255,V603,varchar255,S223B,varchar255,SG241D,varchar255,HV253Z,varchar255,SG123E,varchar255,V812,varchar255,SG249A,varchar255,V412C,varchar255,G123,varchar255,V321,varchar255,HW58,varchar255,HV253E,varchar255,SHSD1,varchar255,SHRM1,varchar255,HV237F,varchar255,SH9Y,varchar255,SH227AB,varchar255,V304,varchar255,SG241C,varchar255,M57P,varchar255,V3A08AB,varchar255,HV008,varchar255,H3M,varchar255,H4D,varchar255,SHB1M,varchar255,V604,varchar255,SHB2D,varchar255,D124,varchar255,ML13K,varchar255,ML14B,varchar255,SH614,varchar255,D119XJ,varchar255,V3A08AD,varchar255,SQUINTIP,varchar255,V784I,varchar255,S937A,varchar255,V129,varchar255,V130,varchar255,D118M,varchar255,V472T,varchar255,M55E,varchar255,V474B,varchar255,H38,varchar255,D119D,varchar255,HV030,varchar255,SH25M,varchar255,V471B,varchar255,V629,varchar255,SH80MI,varchar255,V838B,varchar255,S326AC,varchar255,MM10,varchar255,SH295A,varchar255,V770R,varchar255,V3A08X,varchar255,V784V,varchar255,HV230A,varchar255,S523L,varchar255,D119V,varchar255,SH515,varchar255,V203,varchar255,V784A,varchar255,SH249,varchar255,SH250,varchar255,SH70,varchar255,SH248,varchar255,H31,varchar255,SG217F,varchar255,V152,varchar255,IDX95,varchar255,SG280A,varchar255,SH295BH,varchar255,SH69,varchar255,V841,varchar255,D115I,varchar255,FDYSTO,varchar255,S939,varchar255,H41B,varchar255,H15L,varchar255,H2D,varchar255,H42,varchar255,V414T,varchar255,HV246C,varchar255,SH21,varchar255,SG265X,varchar255,ML13J,varchar255,ML14A,varchar255,SG269E,varchar255,SG270E,varchar255,HW6,varchar255,SGHORAF,varchar255,MM7,varchar255,SHIDX9,varchar255,HML14,varchar255,B8,varchar255,H8M,varchar255,H9D,varchar255,S435D,varchar255,SG216X,varchar255,H37F,varchar255,SH125A,varchar255,M1B,varchar255,M29,varchar255,D119XD,varchar255,SH6YA,varchar255,V3A08Q,varchar255,V827,varchar255,SG201E,varchar255,H9M,varchar255,HW12,varchar255,S325CH,varchar255,S931,varchar255,SG218,varchar255,V477,varchar255,V625,varchar255,H15M,varchar255,M4,varchar255,SH233,varchar255,SH615,varchar255,M13,varchar255,V463F,varchar255,SG247Z,varchar255,SH79U,varchar255,SH80U,varchar255,SIFUENTE3,varchar255,HV216,varchar255,HB0,varchar255,V103,varchar255,S1001,varchar255,SHT3,varchar255,V825,varchar255,D101B,varchar255,SG304E,varchar255,V847,varchar255,SH268,varchar255,H32G,varchar255,SG222X,varchar255,V714A,varchar255,SGRESP,varchar255,SHMTX,varchar255,S913,varchar255,SH3M,varchar255,SH4D,varchar255,HV244,varchar255,SH62,varchar255,SHP222,varchar255,V472D,varchar255,S911,varchar255,V822,varchar255,SG285,varchar255,ML21C,varchar255,H2M,varchar255,H3D,varchar255,M1,varchar255,SHH3M,varchar255,S943,varchar255,HV246I,varchar255,SG217H,varchar255,H15G,varchar255,H9,varchar255,HV102,varchar255,V739,varchar255,V740,varchar255,HV009,varchar255,S908,varchar255,HV010,varchar255,V839A,varchar255,V840A,varchar255,HML18,varchar255,IDXML,varchar255,V235,varchar255,ML13L,varchar255,M57I,varchar255,V762AS,varchar255,M49G,varchar255,V762BJ,varchar255,S572X,varchar255,HV219,varchar255,HV220,varchar255,SH197C,varchar255,SH110L,varchar255,SGHORAI,varchar255,HV253B,varchar255,SG265AX,varchar255,SG228G,varchar255,HV253,varchar255,M55J,varchar255,D110E,varchar255,V3A05,varchar255,D101G,varchar255,V823,varchar255,SG304X,varchar255,V842,varchar255,HML7,varchar255,D110A,varchar255,V408,varchar255,S937B,varchar255,HV140,varchar255,D115Y,varchar255,V784U,varchar255,SHT1Y,varchar255,M10,varchar255,V838C,varchar255,SH63,varchar255,V409,varchar255,V410,varchar255,D118XG,varchar255,HV011,varchar255,HA67,varchar255,V467K,varchar255,V743B,varchar255,SHD4Y,varchar255,HVIDX,varchar255,SG217C,varchar255,SG271,varchar255,HML1,varchar255,S506AY,varchar255,V835B,varchar255,D115N,varchar255,S714E,varchar255,SH118A,varchar255,SH251BH,varchar255,D105F,varchar255,SG240H,varchar255,D129,varchar255,SG240X,varchar255,S114GX,varchar255,V824,varchar255,S573D,varchar255,V395,varchar255,V405,varchar255,V851C,varchar255,D121,varchar255,S569B,varchar255,S570B,varchar255,SH251A,varchar255,V535,varchar255,V216,varchar255,HB11,varchar255,V850A,varchar255,S325O,varchar255,D118I,varchar255,SGMINUTI,varchar255,S326AX,varchar255,D119S,varchar255,D122A,varchar255,S903F,varchar255,SG119B,varchar255,SHB3,varchar255,SG120B,varchar255,SG272B,varchar255,SH26,varchar255,V829,varchar255,H14,varchar255,H12P,varchar255,V830,varchar255,H32I,varchar255,SH273,varchar255,AWFACTU,varchar255,SG247C,varchar255,HMLC,varchar255,SH80M,varchar255,SINGRTHP,varchar255,HV237K,varchar255,M39A,varchar255,V633A,varchar255,S523B,varchar255,S928,varchar255,SH118B,varchar255,HA50,varchar255,V3A08AC,varchar255,S583B,varchar255,V536,varchar255,S541R,varchar255,V762AN,varchar255,V762BE,varchar255,HV116,varchar255,SG235,varchar255,SH78A,varchar255,M55K,varchar255,HML32G,varchar255,V3A08B,varchar255,SH6YE,varchar255,SG222K,varchar255,M65D,varchar255,MMC4,varchar255,S577O,varchar255,S578F,varchar255,HV236,varchar255,SG223B,varchar255,SG304D,varchar255,SH80AI,varchar255,H8Y,varchar255,H12J,varchar255,S435GK,varchar255,SH284G,varchar255,SG254,varchar255,G106,varchar255,CHL7,varchar255,B10,varchar255,V217,varchar255,V472N,varchar255,D118P,varchar255,V527,varchar255,D119G,varchar255,V784B,varchar255,D101J,varchar255,V784C,varchar255,S578P,varchar255,S579G,varchar255,HA35,varchar255,SG118A,varchar255,SHBM,varchar255,SG208B,varchar255,SH3,varchar255,H12Z,varchar255,D125,varchar255,V472U,varchar255,V474C,varchar255,SG311,varchar255,S523S,varchar255,HC32,varchar255,SG301F,varchar255,V376A,varchar255,HV013,varchar255,HV237E,varchar255,SHDISTRICT,varchar255,V414F,varchar255,H4Y,varchar255,SG105,varchar255,SG269K,varchar255,S578Y,varchar255,S581G,varchar255,HV209,varchar255,D101H,varchar255,SHD4,varchar255,HV210,varchar255,SG270K,varchar255,SH1Y,varchar255,SH55,varchar255,V472R,varchar255,BORD,varchar255,HB58,varchar255,SH238,varchar255,HD101,varchar255,SG123C,varchar255,ML13P,varchar255,V631,varchar255,S28DAYS,varchar255,S714D,varchar255,H37G,varchar255,D105C,varchar255,SH9M,varchar255,ML15B,varchar255,SG256A,varchar255,V762BU,varchar255,MM14,varchar255,H37A,varchar255,S540E,varchar255,HV218,varchar255,SH234C,varchar255,HC52,varchar255,HB3,varchar255,V624,varchar255,S577L,varchar255,S578C,varchar255,V762AC,varchar255,MMC1,varchar255,SG222C,varchar255,S114B,varchar255,SH2X,varchar255,SG223E,varchar255,H5Y,varchar255,G117H,varchar255,M27,varchar255,SHT2Y,varchar255,M65X,varchar255,HC12,varchar255,V472G,varchar255,V415,varchar255,SH212D,varchar255,H43,varchar255,S435H,varchar255,V719,varchar255,V454,varchar255,B2,varchar255,S435GF,varchar255,ML24C,varchar255,V761B,varchar255,H3Y,varchar255,SINGRESOIB,varchar255,H12G,varchar255,HV118,varchar255,ML13Z,varchar255,S1004,varchar255,H7,varchar255,SH6YB,varchar255,HW51,varchar255,H32J,varchar255,SHB13,varchar255,V3A08L,varchar255,V613,varchar255,V414W,varchar255,ML19A,varchar255,ML20A,varchar255,SHA0,varchar255,SHRM3,varchar255,SHSD3,varchar255,SG241Z,varchar255,V468,varchar255,SG301E,varchar255,SH295BM,varchar255,V234,varchar255,V836,varchar255,G119,varchar255,HB32,varchar255,V3A01,varchar255,S584B,varchar255,M55C,varchar255,MM11,varchar255,HA33,varchar255,S937X,varchar255,HC11,varchar255,V412B,varchar255,HA6,varchar255,SH127B,varchar255,HA41,varchar255,H2,varchar255,S907,varchar255,S573E,varchar255,S576C,varchar255,V3A08G,varchar255,S581J,varchar255,D107,varchar255,V472H,varchar255,V784S,varchar255,SG237A,varchar255,IDX5CS,varchar255,V528,varchar255,V325A,varchar255,V832C,varchar255,V853B,varchar255,MM8,varchar255,D110C,varchar255,SH226,varchar255,SG123X,varchar255,V467M,varchar255,SG219A,varchar255,HO106,varchar255,V732,varchar255,HV253G,varchar255,SHH3Y,varchar255,B4,varchar255,HV230B,varchar255,D118XK,varchar255,HB40,varchar255,V763C,varchar255,V767C,varchar255,V419,varchar255,V420,varchar255,ML101,varchar255,S326AA,varchar255,S940M,varchar255,HV246J,varchar255,SG240D,varchar255,HB63,varchar255,S541X,varchar255,M70,varchar255,G112,varchar255,M36,varchar255,D115K,varchar255,M42B,varchar255,SG225B,varchar255,V762AF,varchar255,V744D,varchar255,SH127A,varchar255,B5,varchar255,S522D,varchar255,V467L,varchar255,V851F,varchar255,HW17,varchar255,H20,varchar255,SH80A,varchar255,SG278,varchar255,M3M,varchar255,M62,varchar255,S581I,varchar255,V157,varchar255,S1113,varchar255,S926,varchar255,SG113D,varchar255,V359,varchar255,V360,varchar255,V834C,varchar255,HV000,varchar255,SG233,varchar255,H36A,varchar255,SG223Z,varchar255,SG304B,varchar255,SH139C,varchar255,HV246H,varchar255,HC8,varchar255,V762AP,varchar255,V762BG,varchar255,D127,varchar255,D105E,varchar255,V481F,varchar255,HA62,varchar255,SG223G,varchar255,SH139B,varchar255,SH231AC,varchar255,H12S,varchar255,V469E,varchar255,V851D,varchar255,V815A,varchar255,SG207B,varchar255,V762AH,varchar255,V302A,varchar255,S578U,varchar255,H12Y,varchar255,S581C,varchar255,SG247X,varchar255,SG241G,varchar255,M55I,varchar255,V414P,varchar255,M57N,varchar255,M49Z,varchar255,SG202H,varchar255,V446,varchar255,V3A00K,varchar255,S573A,varchar255,HV239,varchar255,HV240,varchar255,HB35,varchar255,V413D,varchar255,V784O,varchar255,M57L,varchar255,H6M,varchar255,H7D,varchar255,V418,varchar255,S506AD,varchar255,HV213,varchar255,SH68C,varchar255,SH197E,varchar255,V211,varchar255,V311,varchar255,V784F,varchar255,V472K,varchar255,V473B,varchar255,S325CB,varchar255,HA5,varchar255,SG219B,varchar255,SINGRESOO,varchar255,M55L,varchar255,S577G2,varchar255,V848,varchar255,SG211,varchar255,ML23A,varchar255,V122,varchar255,S940Y,varchar255,D101E,varchar255,HW52,varchar255,SG243A,varchar255,HML31,varchar255,ML13X,varchar255,V414H,varchar255,VCAL,varchar255,S540I,varchar255,V805,varchar255,M2B,varchar255,M39,varchar255,G117Y,varchar255,SH128,varchar255,SH68,varchar255,HMLD,varchar255,D119T,varchar255,D122B,varchar255,H15C,varchar255,V750,varchar255,D118C,varchar255,V754JP,varchar255,S573,varchar255,SGINTM,varchar255,SH2D,varchar255,SH1M,varchar255,H37M,varchar255,V849,varchar255,SG269C,varchar255,V754BP,varchar255,SG270C,varchar255,M1D,varchar255,M57T,varchar255,SH251,varchar255,SH6XA,varchar255,HB51,varchar255,V846,varchar255,SG269B,varchar255,SG270B,varchar255,SG228C,varchar255,D118XJ,varchar255,SH215,varchar255,M57A,varchar255,SG223K,varchar255,V770D,varchar255,V134,varchar255,G109,varchar255,G110,varchar255,SH3H,varchar255,SH56,varchar255,SG258B,varchar255,S523R,varchar255,D118Y,varchar255,D119P,varchar255,S325FX,varchar255,HML32B,varchar255,SH74,varchar255,SH3X,varchar255,SG269X,varchar255,SG270X,varchar255,H32T,varchar255,S510J,varchar255,SH128B,varchar255,V3A00F,varchar255,HA69,varchar255,HA70,varchar255,V853A,varchar255,SGSUPERV,varchar255,G111,varchar255,D119XG,varchar255,H41A,varchar255,SH71,varchar255,D119W,varchar255,SG241I,varchar255,V409A,varchar255,V410A,varchar255,MMC5,varchar255,D115B,varchar255,SG201J,varchar255,SG202A,varchar255,SH69A,varchar255,V471F,varchar255,V437,varchar255,H32F,varchar255,HV023,varchar255,HV101,varchar255,ML19D,varchar255,SH279,varchar255,SH280,varchar255,V242,varchar255,D110D,varchar255,S523D,varchar255,S903H,varchar255,SG107,varchar255,HV040,varchar255,HML30,varchar255,V414V,varchar255,S577Q,varchar255,S578H,varchar255,V463X,varchar255,V472C,varchar255,SG264,varchar255,H37N,varchar255,S435F,varchar255,G117X,varchar255,SH6YI,varchar255,M55X,varchar255,M57F,varchar255,S924,varchar255,V769,varchar255,V770,varchar255,V3A02,varchar255,V3A00H,varchar255,V202,varchar255,SG227,varchar255,M2K,varchar255,M55M,varchar255,V141,varchar255,M3B,varchar255,M50,varchar255,V323A,varchar255,S572B,varchar255,SHP216,varchar255,V414E,varchar255,SGMINUTF,varchar255,SH6M,varchar255,S439A,varchar255,SH7D,varchar255,V462,varchar255,SH92,varchar255,SH259,varchar255,HA1,varchar255,SH260,varchar255,V837,varchar255,V213,varchar255,V458,varchar255,ML22B,varchar255,SH235AC,varchar255,S435GG,varchar255,H37Z,varchar255,SG113A,varchar255,HV106,varchar255,V701,varchar255,V633B,varchar255,V439,varchar255,V440,varchar255,V602,varchar255,SH7M,varchar255,SH8D,varchar255,D103D,varchar255,SG217E,varchar255,V634,varchar255,SG240Z,varchar255,S903E,varchar255,HB53,varchar255,V784D,varchar255,SH251BM,varchar255,HV232D,varchar255,SG222F,varchar255,HV237,varchar255,V312,varchar255,ML22C,varchar255,HA56,varchar255,SG116A,varchar255,ML13D,varchar255,D118L,varchar255,D119C,varchar255,H36F,varchar255,HML17,varchar255,SG201D,varchar255,MMIDX,varchar255,V774B,varchar255,D100D,varchar255,HML2,varchar255,H31C,varchar255,V502,varchar255,D105A,varchar255,SH1MO,varchar255,B11,varchar255,V833B,varchar255,M49Y,varchar255,HC51,varchar255,SGINT,varchar255,M55G,varchar255,H10,varchar255,ML13M,varchar255,V803,varchar255,SG240B,varchar255,SH67,varchar255,M57R,varchar255,HC19,varchar255,D115XJ,varchar255,ML16A,varchar255,SH77C,varchar255,SVIVIG2,varchar255,SG262B,varchar255,SH75U,varchar255,V384A,varchar255,S936,varchar255,SH268I,varchar255,HS107,varchar255,V756,varchar255,M73,varchar255,S114C,varchar255,D115G,varchar255,M65H,varchar255,V413B,varchar255,SH235AD,varchar255,HML11,varchar255,V754DP,varchar255,V768C,varchar255,HV109,varchar255,HW10,varchar255,HV110,varchar255,S591,varchar255,V745A,varchar255,G117C,varchar255,SHED3,varchar255,V3A00P,varchar255,V337,varchar255,V761,varchar255,V784H,varchar255,SG116C,varchar255,V784J,varchar255,SG217I,varchar255,SH8,varchar255,V762AE,varchar255,S568E,varchar255,HV246,varchar255,SVIVIG1,varchar255,SG208A,varchar255,HV237X,varchar255,SH79,varchar255,SH80,varchar255,V411A,varchar255,HO103,varchar255,V839,varchar255,V840,varchar255,SG265AB,varchar255,M3H,varchar255,SG247Y,varchar255,V457,varchar255,V472O,varchar255,SG279U,varchar255,SG282C,varchar255,V762AV,varchar255,V762BM,varchar255,SG111,varchar255,HV122,varchar255,HV225,varchar255,HW70,varchar255,HV127,varchar255,SG288,varchar255,SH78,varchar255,M5,varchar255,SH1,varchar255,V153,varchar255,V472L,varchar255,HB52,varchar255,MM5,varchar255,V814,varchar255,H0D,varchar255,H22,varchar255,S569D,varchar255,S435GL,varchar255,V159,varchar255,V160,varchar255,S570D,varchar255,S306A,varchar255,M2F,varchar255,M44,varchar255,SHCMC,varchar255,IDX92,varchar255,HV007,varchar255,SG256B,varchar255,SH3Y,varchar255,SH75,varchar255,V633E,varchar255,SH227AG,varchar255,ML13E,varchar255,V762AO,varchar255,M57V,varchar255,V762BF,varchar255,SH295AD,varchar255,V414C,varchar255,D118V,varchar255,D119M,varchar255,HML32D,varchar255,HA65,varchar255,V102,varchar255,SHT2,varchar255,V762BZ,varchar255,SH258,varchar255,SG217Y,varchar255,S114G,varchar255,H37L,varchar255,V762AQ,varchar255,V762BH,varchar255,SH271,varchar255,V3A00N,varchar255,SH94,varchar255,H32X,varchar255,S576A,varchar255,S823B,varchar255,D118X,varchar255,D119O,varchar255,SH122C,varchar255,HC17,varchar255,SG280B,varchar255,V124,varchar255,V482B,varchar255,D130A,varchar255,HV207,varchar255,SH91,varchar255,HV044,varchar255,SG216A,varchar255,H37D,varchar255,V467G,varchar255,SH133C,varchar255,SG265H,varchar255,V414D,varchar255,V3A00J,varchar255,V731,varchar255,S577C,varchar255,V3A08N,varchar255,S576H,varchar255,HW8,varchar255,SG202G,varchar255,ML1,varchar255,HB56,varchar255,SG228D,varchar255,BIDX,varchar255,H12K,varchar255,H13B,varchar255,V762AW,varchar255,V762BN,varchar255,SH8Y,varchar255,SH227AE,varchar255,SG222I,varchar255,SG237B,varchar255,SG241E,varchar255,V763E,varchar255,V137,varchar255,S325A,varchar255,SH516,varchar255,S541Y,varchar255,V138,varchar255,D119XA,varchar255,HV246G,varchar255,V128,varchar255,S536K,varchar255,SG281,varchar255,V476,varchar255,V207,varchar255,REC84_GROUP,varchar255,HML5,varchar255,G121,varchar255,G107,varchar255,HC58,varchar255,SH224I,varchar255,D115S,varchar255,D117A,varchar255,IDX99,varchar255,HIDX,varchar255,IDX96,varchar255,SG269F,varchar255,SG270F,varchar255,SG207,varchar255,HMLB,varchar255,S325CX,varchar255,HV103,varchar255,M49A,varchar255,H12L,varchar255,HV221,varchar255,HV246A,varchar255,HV237C,varchar255,HV246E,varchar255,V784T,varchar255,V744B,varchar255,S5YEARS,varchar255,V3A08A,varchar255,S325CE,varchar255,S916,varchar255,S570,varchar255,HC53,varchar255,CHL5,varchar255,V447A,varchar255,V3A04,varchar255,V414R,varchar255,S575,varchar255,HMLA,varchar255,SINGRESOTP,varchar255,S541E,varchar255,V784E,varchar255,V3A08F,varchar255,S103A,varchar255,SG277,varchar255,H32A,varchar255,SH73,varchar255,SG301H,varchar255,SG202X,varchar255,V227,varchar255,H32P,varchar255,V768A,varchar255,V481B,varchar255,HS104,varchar255,SG245,varchar255,V813,varchar255,SH2MO,varchar255,S578P1,varchar255,SG248,varchar255,S616,varchar255,SG104,varchar255,SH505,varchar255,M49C,varchar255,HML34,varchar255,SH79N,varchar255,SH80N,varchar255,G101,varchar255,SH6YC,varchar255,S927,varchar255,B13,varchar255,V762AM,varchar255,V762AA,varchar255,V541,varchar255,V481D,varchar255,V762BD,varchar255,SHB1D,varchar255,HC3,varchar255,SH255D,varchar255,SH257,varchar255,FSYSTO,varchar255,S904,varchar255,SG230M,varchar255,SG201I,varchar255,V832B,varchar255,SINGRESOIP,varchar255,HB60,varchar255,HB68,varchar255,S540W,varchar255,S541N,varchar255,V811,varchar255,V406,varchar255,SG214,varchar255,HML16A,varchar255,S714BC,varchar255,G118,varchar255,D118Q,varchar255,D119H,varchar255,D119X,varchar255,SG286,varchar255,V474D,varchar255,M55O,varchar255,SG253B,varchar255,S541L,varchar255,V466,varchar255,V784P,varchar255,H12R,varchar255,M3J,varchar255,SHP221,varchar255,SG202N,varchar255,HML16,varchar255,SH76N,varchar255,HV128,varchar255,HW5,varchar255,V414K,varchar255,V715,varchar255,V770V,varchar255,SG123J,varchar255,MIDX,varchar255,S909,varchar255,S910,varchar255,SHT3M,varchar255,D130B,varchar255,V444A,varchar255,SG216E,varchar255,D103C,varchar255,H31E,varchar255,D115E,varchar255,S903X,varchar255,SH110K,varchar255,SH295BC,varchar255,S582,varchar255,V3A00C,varchar255,S325FA,varchar255,S578J,varchar255,S579A,varchar255,SG117A,varchar255,S576J,varchar255,S577A,varchar255,SHADULT35,varchar255,SH242B,varchar255,SH223,varchar255,ML19X,varchar255,D114,varchar255,SHMLB,varchar255,SHED1,varchar255,V529,varchar255,V530,varchar255,V511,varchar255,IDXCHL,varchar255,SG225A,varchar255,S918,varchar255,SG239,varchar255,SIFUENTE2,varchar255,V770L,varchar255,V413C,varchar255,SH255S,varchar255,S523G,varchar255,V503,varchar255,S325CG,varchar255,H15H,varchar255,SHUPAZILA,varchar255,V3A00Q,varchar255,V763G,varchar255,SGZONA,varchar255,SH61,varchar255,D101D,varchar255,M57Q,varchar255,V774A,varchar255,V3A06,varchar255,V481E,varchar255,H12V,varchar255,SG201A,varchar255,D115XF,varchar255,SG201B,varchar255,AWFACTT,varchar255,SHP4D,varchar255,H32U,varchar255,V834B,varchar255,S541Q,varchar255,SH2,varchar255,M42D,varchar255,SG101,varchar255,HC1,varchar255,V826A,varchar255,H3,varchar255,S541K,varchar255,SH6YG,varchar255,V463G,varchar255,V3A00D,varchar255,D118S,varchar255,D119J,varchar255,D121A,varchar255,S522C,varchar255,SH231AD,varchar255,AWFACTE2,varchar255,S932,varchar255,HV206,varchar255,SH123A,varchar255,SH198C,varchar255,D005,varchar255,D119XK,varchar255,SH6YD,varchar255,H7M,varchar255,V3A00S,varchar255,M57X,varchar255,H8D,varchar255,V741,varchar255,M17,varchar255,V779,varchar255,V780,varchar255,MM15,varchar255,D105D,varchar255,SG125,varchar255,SG282A,varchar255,SH28C,varchar255,V464,varchar255,HS105,varchar255,SIFUENTE1,varchar255,MMC2,varchar255,REC31_GROUP,varchar255,V414N,varchar255,V3A03,varchar255,S572A,varchar255,SH234,varchar255,SH7,varchar255,HML15,varchar255,V507,varchar255,S566,varchar255,SHMLA,varchar255,ML13O,varchar255,SH283,varchar255,SG240C,varchar255,SG241A,varchar255,H15B,varchar255,S577G,varchar255,SG241F,varchar255,G117A,varchar255,G104,varchar255,D110G,varchar255,H31D,varchar255,SH283D,varchar255,D108,varchar255,SG265AC,varchar255,V762AB,varchar255,V3A00W,varchar255,D101I,varchar255,S604A,varchar255,S578N,varchar255,S579E,varchar255,HV245,varchar255,SH251B,varchar255,V838A,varchar255,HV237Z,varchar255,S922,varchar255,D115W,varchar255,H37E,varchar255,V482A,varchar255,H13,varchar255,HA13,varchar255,SH242A,varchar255,SH264D,varchar255,SG202M,varchar255,M55H,varchar255,V762AT,varchar255,V762BK,varchar255,G108,varchar255,H0,varchar255,V474E,varchar255,HV026,varchar255,SHP218,varchar255,SH228,varchar255,SG217Z,varchar255,M55B,varchar255,SHB2Y,varchar255,D115L,varchar255,V481H,varchar255,V455,varchar255,G115,varchar255,G122,varchar255,HV004,varchar255,SG114A,varchar255,SH139D,varchar255,D118D,varchar255,V763F,varchar255,V190,varchar255,D105I,varchar255,D118B,varchar255,S435GA,varchar255,S325CC,varchar255,SHB3M,varchar255,SH251AY,varchar255,M55N,varchar255,V744E,varchar255,S578S,varchar255,S581A,varchar255,S946,varchar255,SG241H,varchar255,HA12,varchar255,HB57,varchar255,V3A00V,varchar255,HS101,varchar255,S541I,varchar255,V372A,varchar255,V106,varchar255,H0Y,varchar255,H45,varchar255,HV202,varchar255,M2D,varchar255,SHB1,varchar255,V363,varchar255,SH94A,varchar255,M2N,varchar255,M3E,varchar255,D118XB,varchar255,SG247B,varchar255,M49F,varchar255,SH253,varchar255,HML32E,varchar255,D100B,varchar255,HO105,varchar255,HV234A,varchar255,HA54,varchar255,HV107,varchar255,SG244,varchar255,V3A08J,varchar255,V3A09A,varchar255,HV246D,varchar255,ML11,varchar255,S577F,varchar255,SG265AD,varchar255,V474H,varchar255,IDXHML,varchar255,SG238,varchar255,V208,varchar255,S576F,varchar255,S435C,varchar255,HS103,varchar255,HW13,varchar255,S577N,varchar255,S578E,varchar255,SHH2M,varchar255,SHH3D,varchar255,HV018,varchar255,V763D,varchar255,S578R,varchar255,HD100,varchar255,AWFACTE,varchar255,V632,varchar255,V412,varchar255,S569A,varchar255,S570A,varchar255,S576E,varchar255,V467H,varchar255,S580,varchar255,SH96A,varchar255,V472P,varchar255,HV032,varchar255,SH221AH,varchar255,HV237I,varchar255,HA55,varchar255,SH241,varchar255,V3A08V,varchar255,ML14Y,varchar255,V3A00A,varchar255,D119XB,varchar255,V3A08D,varchar255,HA0,varchar255,V243,varchar255,D115J,varchar255,SH0Y,varchar255,SGWEIGHT,varchar255,SG263,varchar255,SH104A,varchar255,CHL1,varchar255,HW56,varchar255,HV016,varchar255,S937E,varchar255,H37H,varchar255,SG265AY,varchar255,SG291,varchar255,SH28,varchar255,ML16B,varchar255,V414U,varchar255,SG269H,varchar255,S541P,varchar255,SG270H,varchar255,D1310A,varchar255,HC68,varchar255,SHB3Y,varchar255,SG265C,varchar255,SG287,varchar255,SH227AD,varchar255,ML19C,varchar255,SGPROVIN,varchar255,ML20C,varchar255,SHT1M,varchar255,H5M,varchar255,H6D,varchar255,SHT2D,varchar255,HV253X,varchar255,H32Y,varchar255,M65G,varchar255,D115U,varchar255,V3A08E,varchar255,SG119A,varchar255,SG120A,varchar255,ML19Y,varchar255,SH231AF,varchar255,HW71,varchar255,SG223Y,varchar255,HMHIDX,varchar255,S325CZ,varchar255,S540A,varchar255,S435J,varchar255,S934,varchar255,SH231AB,varchar255,SG221,varchar255,S229A,varchar255,S325CA,varchar255,SG202K,varchar255,V3A07,varchar255,SGINTD,varchar255,IDX9A,varchar255,SG203B,varchar255,V469X,varchar255,V472F,varchar255,AWFACTR,varchar255,V702,varchar255,HC10,varchar255,V417,varchar255,V834A,varchar255,S905Y,varchar255,H44C,varchar255,D119Q,varchar255,V474F,varchar255,HV006,varchar255,SH2H,varchar255,V851I,varchar255,V626,varchar255,SH231AA,varchar255,SG217B,varchar255,HA63,varchar255,S589,varchar255,S523J,varchar255,S569E,varchar255,D105M,varchar255,HV243C,varchar255,SCORE,varchar255,D115T,varchar255,B16,varchar255,SG202F,varchar255,SG123F,varchar255,H12M,varchar255,S506AM,varchar255,D115XD,varchar255,SH235AB,varchar255,HV246B,varchar255,SHFLG,varchar255,D118N,varchar255,D119E,varchar255,HV270,varchar255,S410J,varchar255,M57B,varchar255,SH90,varchar255,V362,varchar255,SH33,varchar255,V3A08T,varchar255,M2H,varchar255,M46,varchar255,V319,varchar255,V705,varchar255,V320,varchar255,HW2,varchar255,V826,varchar255,S823A,varchar255,M3F,varchar255,M54,varchar255,V301,varchar255,M49D,varchar255,S714BA,varchar255,V762BS,varchar255,V717,varchar255,V785,varchar255,S588,varchar255,SG117B,varchar255,M9,varchar255,SH23,varchar255,HB33,varchar255,SH286,varchar255,HO102,varchar255,H34,varchar255,SG223H,varchar255,V472I,varchar255,D115XA,varchar255,HML21,varchar255,HW57,varchar255,V770F,varchar255,M19,varchar255,SG253,varchar255,D115XB,varchar255,V721,varchar255,V421,varchar255,V318,varchar255,D119U,varchar255,D122C,varchar255,SH239,varchar255,SH240,varchar255,MM6,varchar255,V766A,varchar255,HML6,varchar255,SG268,varchar255,SH133A,varchar255,S573B,varchar255,D104,varchar255,HA32,varchar255,ML15A,varchar255,SH218,varchar255,V467A,varchar255,ML23B,varchar255,HA60,varchar255,S435GZ,varchar255,HV042,varchar255,V828,varchar255,MM2,varchar255,V445,varchar255,HV124,varchar255,H36C,varchar255,HC27,varchar255,HV237D,varchar255,V113,varchar255,SHH3,varchar255,SGHOGAR,varchar255,D115XH,varchar255,SG123I,varchar255,V123,varchar255,SG128,varchar255,HML8,varchar255,SH57,varchar255,V393,varchar255,HMLE,varchar255,S714AA,varchar255,V136,varchar255,S435GH,varchar255,S325B,varchar255,V532,varchar255,S1002,varchar255,SG213B,varchar255,SG307,varchar255,V833A,varchar255,SH4M,varchar255,SH5D,varchar255,HHID,varchar255,SH72,varchar255,MM4,varchar255,SH24,varchar255,SG265AG,varchar255,S523O,varchar255,SG201H,varchar255,SH62A,varchar255,V447,varchar255,V475,varchar255,S523A,varchar255,D118XE,varchar255,SH25,varchar255,HC15,varchar255,SG232A,varchar255,SH295,varchar255,SH25Y,varchar255,ML13B,varchar255,SH227AC,varchar255,S942,varchar255,SH616,varchar255,M1A,varchar255,M28,varchar255,HC0,varchar255,V115,varchar255,S523N,varchar255,D115M,varchar255,SH27,varchar255,H21A,varchar255,V139,varchar255,V140,varchar255,HO107,varchar255,H32V,varchar255,H33M,varchar255,H40D,varchar255,SH221B,varchar255,SG265AA,varchar255,V501,varchar255,HS106,varchar255,SG112B,varchar255,S523C,varchar255,HV237A,varchar255,B15,varchar255,SG223X,varchar255,M1E,varchar255,HML32,varchar255,S540B,varchar255,HA66,varchar255,H32N,varchar255,S541J,varchar255,V471G,varchar255,SCHL145,varchar255,V443,varchar255,S223A,varchar255,S326B,varchar255,HC2,varchar255,SG265G,varchar255,V801,varchar255,AWFACTE3,varchar255,SH72U,varchar255,HB65,varchar255,V474I,varchar255,SH72N,varchar255,S541T,varchar255,D119R,varchar255,SH251AD,varchar255,SGEDITC,varchar255,SG116D,varchar255,V777,varchar255,V411,varchar255,SG223I,varchar255,ML21A,varchar255,SG270Y,varchar255,HV123,varchar255,HV237G,varchar255,SH0,varchar255,SG301B,varchar255,D128,varchar255,H40Y,varchar255,H37Y,varchar255,S435I,varchar255,S577I,varchar255,SG202I,varchar255,S576I,varchar255,S945,varchar255,SGASTOTI,varchar255,SG231,varchar255,S902,varchar255,SG246B,varchar255,S325CD,varchar255,D119XF,varchar255,SH276,varchar255,V467B,varchar255,V831,varchar255,SHP221AH,varchar255,HV217,varchar255,D112A,varchar255,S569C,varchar255,S823,varchar255,S570C,varchar255,HV025,varchar255,SH220B,varchar255,S523E,varchar255,S905M,varchar255,SH77,varchar255,H32R,varchar255,SH77A,varchar255,SG122,varchar255,SG216I,varchar255,V414G,varchar255,HWIDX,varchar255,V762BR,varchar255,S933,varchar255,D101A,varchar255,V463Z,varchar255,IDX98,varchar255,V101,varchar255,S576D,varchar255,V414L,varchar255,SHT1,varchar255,H31B,varchar255,D115V,varchar255,HW15,varchar255,V626A,varchar255,V394,varchar255,V404,varchar255,V384C,varchar255,HML35,varchar255,SH251BC,varchar255,SHB2,varchar255,V531,varchar255,S577B,varchar255,V317,varchar255,V471A,varchar255,HA40,varchar255,M57G,varchar255,S325FE,varchar255,SH6YH,varchar255,H44A,varchar255,SH254,varchar255,SG228X,varchar255,SG269A,varchar255,HV232,varchar255,SG270A,varchar255,SG222D,varchar255,SG274,varchar255,V416,varchar255,SG303A,varchar255,SG113B,varchar255,V456,varchar255,SG114B,varchar255,HO100,varchar255,HML32C,varchar255,S587,varchar255,S581X,varchar255,V815B,varchar255,M2J,varchar255,M3A,varchar255,M48,varchar255,HW4,varchar255,S1003,varchar255,SHCOL21A,varchar255,HV126,varchar255,HV253C,varchar255,V467D,varchar255,HV205,varchar255,V444,varchar255,SHP4Y,varchar255,HV246K,varchar255,HA68,varchar255,SH286I,varchar255,SG222H,varchar255,SH295AM,varchar255,S803A,varchar255,V472B,varchar255,ML23C,varchar255,SG209,varchar255,SG210,varchar255,V835C,varchar255,SH5M,varchar255,SH6D,varchar255,SH227AA,varchar255,SH82,varchar255,SH264S,varchar255,V762AU,varchar255,V762BL,varchar255,SH224,varchar255,HV120,varchar255,V525,varchar255,SG222A,varchar255,H32S,varchar255,B0,varchar255,SH139E,varchar255,V762BT,varchar255,SH63B,varchar255,V770K,varchar255,SG228J,varchar255,SG230A,varchar255,SH295B,varchar255,SG241X,varchar255,V3A00X,varchar255,V223,varchar255,V767B,varchar255,V770U,varchar255,SHED2,varchar255,SG223C,varchar255,V3A08I,varchar255,D115X,varchar255,SH77B,varchar255,V743C,varchar255,HML33,varchar255,S114F,varchar255,S586,varchar255,V513,varchar255,V442,varchar255,SH33D,varchar255,SH6XX,varchar255,HW11,varchar255,SH13,varchar255,V804,varchar255,S578L,varchar255,S579C,varchar255,D115D,varchar255,H37P,varchar255,S523Q,varchar255,SG259,varchar255,SG260,varchar255,V441,varchar255,SG265F,varchar255,HV232E,varchar255,SH212,varchar255,V3A00B,varchar255,D115F,varchar255,G105,varchar255,HV237J,varchar255,H32M,varchar255,H33D,varchar255,D100C,varchar255,HB69,varchar255,HB70,varchar255,SH128A,varchar255,HS100,varchar255,SG202J,varchar255,SG203A,varchar255,M65F,varchar255,SH6Y,varchar255,MM9,varchar255,V229,varchar255,V230,varchar255,D118O,varchar255,D119F,varchar255,D112,varchar255,HC30,varchar255,S519J,varchar255,HML4,varchar255,HB12B,varchar255,V762AZ,varchar255,V762BQ,varchar255,V770M,varchar255,S912,varchar255,V226,varchar255,V481X,varchar255,H15F,varchar255,D118XA,varchar255,SH206,varchar255,SINGRHI,varchar255,SG217A,varchar255,CHL2,varchar255,SG289,varchar255,V784M,varchar255,SG290,varchar255,HA12B,varchar255,V835A,varchar255,HW1,varchar255,SH7Y,varchar255,V3A00U,varchar255,M57E,varchar255,M57K,varchar255,B6,varchar255,HDPIDX2,varchar255,SH198D,varchar255,S914,varchar255,M55F,varchar255,SH603,varchar255,G117G,varchar255,HC9,varchar255,SH6XZ,varchar255,S114A,varchar255,H12A,varchar255,SG269J,varchar255,SG270J,varchar255,V754WP,varchar255,M66,varchar255,SHCOLB,varchar255,HML13,varchar255,ML13I,varchar255,V806,varchar255,V221,varchar255,SG265I,varchar255,V770E,varchar255,S581H,varchar255,V3A00O,varchar255,H47,varchar255,V851J,varchar255,V852A,varchar255,V821C,varchar255,S571,varchar255,S584,varchar255,V168,varchar255,V133,varchar255,V191,varchar255,V201,varchar255,V3A08U,varchar255,H46A,varchar255,V414O,varchar255,H11,varchar255,V762AL,varchar255,V304A,varchar255,V762BC,varchar255,SG301X,varchar255,SH235,varchar255,HV112,varchar255,SH295AY,varchar255,V214,varchar255,V729,varchar255,V730,varchar255,H12N,varchar255,V467F,varchar255,S578T,varchar255,S581B,varchar255,D119XC,varchar255,H32W,varchar255,V474Z,varchar255,HC64,varchar255,SG265A,varchar255,SG265AE,varchar255,SG223J,varchar255,V426,varchar255,HW73,varchar255,S536A,varchar255,V327,varchar255,V784G,varchar255,S325E,varchar255,D118K,varchar255,D119B,varchar255,S523X,varchar255,V361,varchar255,SH2Y,varchar255,D118G,varchar255,SH618,varchar255,SH205,varchar255,SG201N,varchar255,SG202E,varchar255,SG223D,varchar255,HV271,varchar255,V481G,varchar255,V222,varchar255,SG222G,varchar255,SINGRESOIPA,varchar255,D115XK,varchar255,SH81,varchar255,SH0D,varchar255,SH22,varchar255,SG240G,varchar255,HC57,varchar255,SG265E,varchar255,S523H,varchar255,V467J,varchar255,V770H,varchar255,V467I,varchar255,S325FC,varchar255,V459,varchar255,V460,varchar255,S945A,varchar255,HC4,varchar255,H33,varchar255,HW19,varchar255,SG240F,varchar255,S541U,varchar255,H15J,varchar255,HDPIDX,varchar255,S229D,varchar255,V481,varchar255,V633C,varchar255,H12Q,varchar255,V850B,varchar255,D126,varchar255,V633D,varchar255,V762BP,varchar255,SH3MO,varchar255,V3A00M,varchar255,HA51,varchar255,M3N,varchar255,M3I,varchar255,SG265AH,varchar255,H37B,varchar255,S903A,varchar255,V769A,varchar255,V770A,varchar255,HV243A,varchar255,V156,varchar255,SHWH,varchar255,SG306,varchar255,D103A,varchar255,HC63,varchar255,V763B,varchar255,MM13,varchar255,S325FB,varchar255,SG205,varchar255,S574,varchar255,M65B,varchar255,V716,varchar255,D118XF,varchar255,HMLIDX2,varchar255,SG255,varchar255,SH123C,varchar255,ML18B,varchar255,SH619,varchar255,SH246S,varchar255,D105N,varchar255,V167,varchar255,S578O,varchar255,S579F,varchar255,D111,varchar255,V743D,varchar255,SG267,varchar255,SH8M,varchar255,SH9D,varchar255,V770O,varchar255,D1310B,varchar255,H1,varchar255,H21,varchar255,SH123B,varchar255,V746,varchar255,SH217,varchar255,SALLINCI,varchar255,V770S,varchar255,SIFUENTE4,varchar255,V463E,varchar255,IDXH4,varchar255,S435GC,varchar255,HML19,varchar255,H44B,varchar255,S541H,varchar255,HML20,varchar255,HV201,varchar255,H32B,varchar255,SH71N,varchar255,HS109,varchar255,HS110,varchar255,V323,varchar255,S435GN,varchar255,D106,varchar255,S576B,varchar255,SH235A,varchar255,M65A,varchar255,V851L,varchar255,V852C,varchar255,V474X,varchar255,SHP4M,varchar255,HV104,varchar255,SHP220B,varchar255,S540C,varchar255,ML19B,varchar255,ML20B,varchar255,HW9,varchar255,SG269G,varchar255,V851H,varchar255,S568D,varchar255,V851G,varchar255,D105L,varchar255,H37X,varchar255,V781,varchar255,SG270G,varchar255,HA2,varchar255,M65C,varchar255,HV015,varchar255,SH506,varchar255,SG246Z,varchar255,SG206B,varchar255,M2E,varchar255,H12O,varchar255,M43,varchar255,HV241,varchar255,V751,varchar255,S577H,varchar255,SG250,varchar255,M65I,varchar255,S104A,varchar255,HV237H,varchar255,HC18,varchar255,V305,varchar255,SH242,varchar255,SH227AF,varchar255,HML9,varchar255,SG228H,varchar255,V463A,varchar255,V384B,varchar255,H46B,varchar255,SG123G,varchar255,SG249B,varchar255,HV232Y,varchar255,HV253F,varchar255,HB50,varchar255,S937D,varchar255,V623,varchar255,V452A,varchar255,V833C,varchar255,V452C,varchar255,HB61,varchar255,V770W,varchar255,B9,varchar255,V506,varchar255,HV214,varchar255,HA4,varchar255,V762BV,varchar255,SG113C,varchar255,V3A08M,varchar255,SH0M,varchar255,SH1D,varchar255,SG108,varchar255,HB12,varchar255,S325CF,varchar255,S568A,varchar255,SG301G,varchar255,SH78O,varchar255,V479,varchar255,V480,varchar255,V3A00G,varchar255,HV111,varchar255,S114D,varchar255,SGESTR,varchar255,SH110I,varchar255,IDXMCS,varchar255,H12W,varchar255,HML1A,varchar255,SH262,varchar255,H32K,varchar255,S903B,varchar255,V3A00T,varchar255,SH6YZ,varchar255,SH136,varchar255,V821B,varchar255,SG118B,varchar255,V155,varchar255,HV215,varchar255,D115XC,varchar255,SH225,varchar255,HB62,varchar255,HC70,varchar255,S112B,varchar255,S435GI,varchar255,SG246C,varchar255,H39,varchar255,H40,varchar255,SH281,varchar255,V854B,varchar255,V413,varchar255,SG106,varchar255,SHT3Y,varchar255,V372,varchar255,HC72,varchar255,V467C,varchar255,SG246A,varchar255,HV022,varchar255,S1005,varchar255,H4,varchar255,V453,varchar255,HC16,varchar255,SHP4,varchar255,D115C,varchar255,G117F,varchar255,S536C,varchar255,VCOL,varchar255,D118F,varchar255,D118U,varchar255,D119L,varchar255,SLNPM,varchar255,M55D,varchar255,HC56,varchar255,D115Q,varchar255,D105G,varchar255,G100,varchar255,SHP221AM,varchar255,M3L,varchar255,M61,varchar255,SG301C,varchar255,SH33Y,varchar255,SHP221B,varchar255,ML13N,varchar255,SH242I,varchar255,V315,varchar255,H37I,varchar255,V762AD,varchar255,H15A,varchar255,V770G,varchar255,V633F,varchar255,SHC0,varchar255,V239,varchar255,V240,varchar255,V3A08AA,varchar255,HA61,varchar255,HW55,varchar255,V508,varchar255,M72,varchar255,V841A,varchar255,HV108,varchar255,H32O,varchar255,SH96B,varchar255,SHRM5,varchar255,SG217G,varchar255,SH243,varchar255,SG273,varchar255,ML17B,varchar255,S326C,varchar255,S435GX,varchar255,S583,varchar255,S577M,varchar255,S578D,varchar255,D115XG,varchar255,HV035,varchar255,SH221AM,varchar255,SGDIGIT,varchar255,S325FF,varchar255,HC6,varchar255,HW16,varchar255,SG222E,varchar255,V743E,varchar255,H32H,varchar255,S536B,varchar255,SG301D,varchar255,ML12,varchar255,H35,varchar255,H12F,varchar255,D110B,varchar255,M2L,varchar255,M3C,varchar255,M51,varchar255,V472J,varchar255,V463C,varchar255,V473A,varchar255,H36B,varchar255,V414S,varchar255,V3A08C,varchar255,S325N,varchar255,S541F,varchar255,HA58,varchar255,S523M,varchar255,SG201C,varchar255,SH220,varchar255,ML17A,varchar255,SGINTA,varchar255,HV021,varchar255,HV211,varchar255,SH236,varchar255,S949,varchar255,S950,varchar255,SG243B,varchar255,V105,varchar255,SH5Y,varchar255,HW7,varchar255,V762BW,varchar255,HV028,varchar255,V463D,varchar255,SH95,varchar255,HML10,varchar255,M11,varchar255,SHCOLD,varchar255,S435GD,varchar255,SG201K,varchar255,SG202B,varchar255,V621,varchar255,H12X,varchar255,SH08,varchar255,M65J,varchar255,HV125,varchar255,V469F,varchar255,V766B,varchar255,V206,varchar255,SG216C,varchar255,M7,varchar255,V539,varchar255,V540,varchar255,V770N,varchar255,V762BX,varchar255,SG276,varchar255,H15,varchar255,M57O,varchar255,S572Y,varchar255,SG129,varchar255,SHD4D,varchar255,SG272A,varchar255,H15K,varchar255,V3A00I,varchar255,V3A08K,varchar255,V3A09B,varchar255,CHL3,varchar255,D105B,varchar255,SG266A,varchar255,HV234,varchar255,S568B,varchar255,SG103,varchar255,SH283M,varchar255,S541W,varchar255,SH6XB,varchar255,SG217D,varchar255,SH278,varchar255,V770T,varchar255,H37C,varchar255,D119Y,varchar255,G117E,varchar255,M35,varchar255,ML21B,varchar255,S570X,varchar255,V452B,varchar255,S568C,varchar255,SG247A,varchar255,G102,varchar255,G117I,varchar255,SHRESI,varchar255,SG303C,varchar255,V407,varchar255,V3A08W,varchar255,SG124,varchar255,SH33M,varchar255,V205,varchar255,HB67,varchar255,SH6,varchar255,SH139A,varchar255,M57S,varchar255,SH604,varchar255,D118J,varchar255,D119A,varchar255,M34,varchar255,V116,varchar255,HV024,varchar255,HV005,varchar255,SG292A,varchar255,V310,varchar255,HOVIDX,varchar255,SG213A,varchar255,V107,varchar255,SH237,varchar255,V744C,varchar255,SHRI,varchar255,SG228F,varchar255,M14,varchar255,HC71,varchar255,ML17C,varchar255,HC31,varchar255,SH279A,varchar255,SH517,varchar255,V770Q,varchar255,S536D,varchar255,H15D,varchar255,D118R,varchar255,V209,varchar255,V210,varchar255,D119I,varchar255,IDX94,varchar255,V3A00Y,varchar255,S585,varchar255,V783,varchar255,HC55,varchar255,SG228A,varchar255,V241,varchar255,H8,varchar255,S915,varchar255,SH245,varchar255,SGCONGL,varchar255,V505,varchar255,H5,varchar255,D101F,varchar255,SH75N,varchar255,H36D,varchar255,S523V,varchar255,V784R,varchar255,H32Z,varchar255,S576G,varchar255,D102,varchar255,H9Y,varchar255,SG201G,varchar255,V745B,varchar255,H36E,varchar255,SG202L,varchar255,SH104B,varchar255,S435GJ,varchar255,V821A,varchar255,SG247D,varchar255,V151,varchar255,SH235AE,varchar255,SH284B,varchar255,V512,varchar255,SGVISITS,varchar255,SH18,varchar255,HV002,varchar255,HA64,varchar255,SHMLIDX,varchar255,V3A00E,varchar255,M18,varchar255,V125,varchar255,V605,varchar255,V3A08H,varchar255,D109,varchar255,HB6,varchar255,S523K,varchar255,M55A,varchar255,SH122A,varchar255,HV253H,varchar255,H12E,varchar255,SHH1Y,varchar255,V313,varchar255,SHCOL3B,varchar255,SG216G,varchar255,HO108,varchar255,ML18A,varchar255,H12T,varchar255,V364,varchar255,V472M,varchar255,H15E,varchar255,HV252,varchar255,SG253A,varchar255,S917,varchar255,H12B,varchar255,V762AG,varchar255,D115P,varchar255,V482C,varchar255,V149,varchar255,V150,varchar255,V628,varchar255,D113,varchar255,SHH1D,varchar255,V135,varchar255,SG201L,varchar255,SG202C,varchar255,V127,varchar255,V401,varchar255,V770B,varchar255,D105J,varchar255,V854A,varchar255,SG217X,varchar255,M2C,varchar255,HV232C,varchar255,SHP220,varchar255,V784N,varchar255,GIDX,varchar255,HB64,varchar255,HV117,varchar255,SH197B,varchar255,S523W,varchar255,G116,varchar255,V414M,varchar255,S937H,varchar255,B3,varchar255,HV114,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" INPUT FEATURE_TYPE * ROUTE FME_GENERIC BulkAttributeRenamer_2_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHMC_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_3_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHML_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_4_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH4A_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_5_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC61_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_6_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHSK_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_7_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH3_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_8_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHOV_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_9_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHLB_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_10_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC82_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_11_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC44_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_12_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHW_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_13_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHMG_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_14_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC97_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_15_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH11_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_16_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECG2_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_17_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH5S_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_18_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHG1_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_19_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC71_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_20_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHMH2_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_21_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH7_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_22_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHMCS_All GEOMETRY ROUTE FME_GENERIC BulkAttributeRenamer_23_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHI_All GEOMETRY ROUTE FME_GENERIC REC01_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC01_All GEOMETRY ROUTE FME_GENERIC RECML_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECML_All GEOMETRY ROUTE FME_GENERIC REC92_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC92_All GEOMETRY ROUTE FME_GENERIC RECHMT_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHMT_All GEOMETRY ROUTE FME_GENERIC RECHCH2_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHCH2_All GEOMETRY ROUTE FME_GENERIC REC22_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC22_All GEOMETRY ROUTE FME_GENERIC REC75_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC75_All GEOMETRY ROUTE FME_GENERIC RECH2_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH2_All GEOMETRY ROUTE FME_GENERIC RECH6S_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH6S_All GEOMETRY ROUTE FME_GENERIC REC81_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC81_All GEOMETRY ROUTE FME_GENERIC REC43_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC43_All GEOMETRY ROUTE FME_GENERIC REC96_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC96_All GEOMETRY ROUTE FME_GENERIC REC11_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC11_All GEOMETRY ROUTE FME_GENERIC RECH10_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH10_All GEOMETRY ROUTE FME_GENERIC RECG1_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECG1_All GEOMETRY ROUTE FME_GENERIC RECGC_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECGC_All GEOMETRY ROUTE FME_GENERIC RECH6_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH6_All GEOMETRY ROUTE FME_GENERIC REC32_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC32_All GEOMETRY ROUTE FME_GENERIC RECHPC_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHPC_All GEOMETRY ROUTE FME_GENERIC RECHMLS_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHMLS_All GEOMETRY ROUTE FME_GENERIC RECH5CS_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH5CS_All GEOMETRY ROUTE FME_GENERIC StringReplacer_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,__wb_out_feat_type__,__nuke_me__ GEOMETRY ROUTE FME_GENERIC RECHMA_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHMA_All GEOMETRY ROUTE FME_GENERIC REC91_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC91_All GEOMETRY ROUTE FME_GENERIC REC21_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC21_All GEOMETRY ROUTE FME_GENERIC RECHCHL_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHCHL_All GEOMETRY ROUTE FME_GENERIC RECH1_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH1_All GEOMETRY ROUTE FME_GENERIC RECHC_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHC_All GEOMETRY ROUTE FME_GENERIC REC80_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC80_All GEOMETRY ROUTE FME_GENERIC REC42_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC42_All GEOMETRY ROUTE FME_GENERIC REC95_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC95_All GEOMETRY ROUTE FME_GENERIC RECH5_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH5_All GEOMETRY ROUTE FME_GENERIC REC31_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC31_All GEOMETRY ROUTE FME_GENERIC REC84_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC84_All GEOMETRY ROUTE FME_GENERIC REC99_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC99_All GEOMETRY ROUTE FME_GENERIC RECHDP2_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHDP2_All GEOMETRY ROUTE FME_GENERIC RECHML2_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHML2_All GEOMETRY ROUTE FME_GENERIC RECH0_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH0_All GEOMETRY ROUTE FME_GENERIC RECH9_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH9_All GEOMETRY ROUTE FME_GENERIC REC41_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC41_All GEOMETRY ROUTE FME_GENERIC RECDV_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECDV_All GEOMETRY ROUTE FME_GENERIC REC94_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC94_All GEOMETRY ROUTE FME_GENERIC RECH4_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH4_All GEOMETRY ROUTE FME_GENERIC REC83_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC83_All GEOMETRY ROUTE FME_GENERIC RECHDP_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHDP_All GEOMETRY ROUTE FME_GENERIC RECHMH_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHMH_All GEOMETRY ROUTE FME_GENERIC REC51_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC51_All GEOMETRY ROUTE FME_GENERIC REC98_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC98_All GEOMETRY ROUTE FME_GENERIC REC9A_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__REC9A_All GEOMETRY ROUTE FME_GENERIC RECHG2_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHG2_All GEOMETRY ROUTE FME_GENERIC RECH8_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECH8_All GEOMETRY ROUTE FME_GENERIC RECHA_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHA_All GEOMETRY ROUTE FME_GENERIC RECHS_All TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__RECHS_All GEOMETRY OUTPUT ROUTED FEATURE_TYPE * @FeatureType(ENCODED,@Value(__wb_out_feat_type__)) @RemoveAttributes(__wb_out_feat_type__) OUTPUT NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__ + +# ------------------------------------------------------------------------- + +FACTORY_DEF * CreationFactory CREATE_AT_END OUTPUT FEATURE_TYPE __NUKEME__ @TCL("if [file exists {$(WORKSPACE_TEMP_DIR)}] {set files [glob -nocomplain -directory {$(WORKSPACE_TEMP_DIR)} -tails *.ffs]; if {[llength $files] == 1} { set theFile {$(WORKSPACE_TEMP_DIR)/}; append theFile [lindex $files 0]; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -f FFS $theFile & \175; } elseif { [llength $files] == 0 } { catch { file delete -force {$(WORKSPACE_TEMP_DIR)} }; } else { set filesNoExt {}; set lastfile {}; foreach {fileName} [lsort $files] { set fileNoExt [string trimright $fileName {.ffs}]; if [regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] { if { $fileNoExtBase == $lastfile } { continue } }; set lastfile $fileNoExt; lappend filesNoExt $fileNoExt }; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -d {$(WORKSPACE_TEMP_DIR)} -a ffs -f FFS $filesNoExt & \175; }; }; ") +FACTORY_DEF * TeeFactory INPUT FEATURE_TYPE __NUKEME__ +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHMC_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY hhid numeric(6,0),PRIKEY idxhml numeric(2,0),PRIKEY sh123a numeric(2,0) sh123b numeric(3,0) sh123c numeric(2,0) sh123d numeric(2,0) sh125a numeric(2,0) sh127a numeric(2,0) sh127b numeric(5,0) sh128 numeric(3,0) sh128a numeric(2,0) sh128b numeric(5,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHML_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY hhid char(6),PRIKEY hmlidx numeric(2,0),PRIKEY hml3 numeric(2,0) hml4 numeric(3,0) hml5 numeric(2,0) hml6 numeric(2,0) hml7 numeric(3,0) hml8 numeric(2,0) hml9 numeric(3,0) hml10 numeric(2,0) hml11 numeric(2,0) hml21 numeric(2,0) hmla numeric(3,0) hmlb numeric(3,0) hmlc numeric(3,0) hmld numeric(3,0) hmle char(1) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECH4A_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY hhid char(7),PRIKEY idxh4a numeric(3,0),PRIKEY sh6xa numeric(2,0) sh6xb numeric(2,0) sh6xc numeric(2,0) sh6xx numeric(2,0) sh6xy numeric(2,0) sh6xz numeric(2,0) sh62a numeric(2,0) sh62b numeric(6,0) sh63 numeric(2,0) sh63b numeric(2,0) sh68a numeric(2,0) sh68b numeric(3,0) sh68c numeric(3,0) sh6ya numeric(2,0) sh6yb numeric(2,0) sh6yc numeric(2,0) sh6yd numeric(2,0) sh6ye numeric(2,0) sh6yf numeric(2,0) sh6yg numeric(2,0) sh6yh numeric(2,0) sh6yi numeric(2,0) sh6yj numeric(2,0) sh6yx numeric(2,0) sh6yz numeric(2,0) sh69a numeric(2,0) sh70 numeric(6,0) sh71 numeric(3,0) sh72 numeric(6,0) sh73 numeric(6,0) sh74 numeric(6,0) sh75 numeric(2,0) sh76 numeric(6,0) sh77a numeric(6,0) sh77b numeric(6,0) sh77c numeric(6,0) sh78 numeric(2,0) sh78a numeric(6,0) sh90 numeric(2,0) sh91 numeric(2,0) sh92 numeric(3,0) sh93 numeric(4,0) sh94 numeric(6,0) sh94a numeric(2,0) sh95 numeric(6,0) sh96a numeric(6,0) sh96b numeric(6,0) sh96c numeric(6,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC61_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY caseid char(10),PRIKEY v602 numeric(2,0) v603 numeric(4,0) v604 numeric(2,0) v605 numeric(2,0) v613 numeric(3,0) v614 numeric(2,0) v616 numeric(4,0) v621 numeric(2,0) v623 numeric(2,0) v624 numeric(3,0) v625 numeric(2,0) v626 numeric(3,0) v625a numeric(2,0) v626a numeric(3,0) v627 numeric(3,0) v628 numeric(3,0) v629 numeric(3,0) v631 char(1) v632 numeric(2,0) v633a char(1) v633b char(1) v633c char(1) v633d char(1) v633e char(1) v633f char(1) v633g char(1) v634 char(1) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHSK_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY hhid char(7),PRIKEY hskidx numeric(3,0),PRIKEY hs100 numeric(2,0) hs101 numeric(2,0) hs102 numeric(2,0) hs103 numeric(2,0) hs104 numeric(2,0) hs105 numeric(2,0) hs106 numeric(2,0) hs107 numeric(2,0) hs108 numeric(2,0) hs109 numeric(2,0) hs110 numeric(2,0) hs111 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECH3_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY hhid char(7),PRIKEY shdistrict numeric(3,0) shupazila numeric(3,0) shadult35 numeric(2,0) shhtec numeric(4,0) sh104a numeric(2,0) sh104b numeric(3,0) sh110g numeric(2,0) sh110h numeric(2,0) sh110i numeric(2,0) sh110j numeric(2,0) sh110k numeric(2,0) sh110l numeric(2,0) sh118a numeric(2,0) sh118b numeric(2,0) sh122a numeric(2,0) sh122c numeric(5,2) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHOV_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY hhid char(7),PRIKEY hovidx numeric(3,0),PRIKEY ho100 numeric(3,0) ho101 numeric(2,0) ho102 numeric(2,0) ho103 numeric(2,0) ho104 numeric(2,0) ho105 numeric(2,0) ho106 numeric(2,0) ho107 numeric(2,0) ho108 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHLB_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY hhid char(7),PRIKEY shcol21a numeric(3,0) sh21 numeric(3,0) sh22 numeric(2,0) sh23 numeric(3,0) sh24 numeric(2,0) sh25 numeric(2,0) sh26 numeric(3,0) sh27 numeric(2,0) sh28 numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC82_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY caseid char(10),PRIKEY vcol numeric(2,0) vcal char(73) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC44_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY caseid char(10),PRIKEY hwidx numeric(2,0),PRIKEY hw1 numeric(3,0) hw2 numeric(5,0) hw3 numeric(5,0) hw4 numeric(5,0) hw5 numeric(5,0) hw6 numeric(6,0) hw7 numeric(5,0) hw8 numeric(5,0) hw9 numeric(6,0) hw10 numeric(5,0) hw11 numeric(5,0) hw12 numeric(6,0) hw13 numeric(2,0) hw15 numeric(2,0) hw16 numeric(3,0) hw17 numeric(3,0) hw18 numeric(3,0) hw19 numeric(5,0) hw51 numeric(3,0) hw52 numeric(2,0) hw53 numeric(4,0) hw55 numeric(2,0) hw56 numeric(5,0) hw57 numeric(2,0) hw58 char(1) hw70 numeric(5,0) hw71 numeric(5,0) hw72 numeric(5,0) hw73 numeric(5,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHW_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY hhid char(7),PRIKEY shcold numeric(2,0),PRIKEY sh215 numeric(3,0) sh216 numeric(6,0) sh217 numeric(5,0) sh240 numeric(4,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHMG_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY hhid char(9),PRIKEY sh_mig char(15) sh22 numeric(2,0) sh24 numeric(2,0) sh25m numeric(3,0) sh25y numeric(5,0) sh26 numeric(3,0) sh27 numeric(2,0) sh28c numeric(2,0) sh28d numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC97_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY caseid char(12),PRIKEY s902 numeric(2,0) s903a numeric(2,0) s903b numeric(2,0) s903c numeric(2,0) s903d numeric(2,0) s903e numeric(2,0) s903f numeric(2,0) s903g numeric(2,0) s903h numeric(2,0) s903x numeric(2,0) s903z numeric(2,0) s904 numeric(2,0) s905m numeric(3,0) s905y numeric(5,0) s906 numeric(2,0) s907 numeric(2,0) s908 numeric(3,0) s909 numeric(2,0) s910 numeric(2,0) s911 numeric(2,0) s912 numeric(2,0) s913 numeric(3,0) s914 numeric(2,0) s915 numeric(3,0) s916 numeric(2,0) s917 numeric(3,0) s918 numeric(2,0) s919 numeric(3,0) s920 numeric(2,0) s921 numeric(2,0) s922 numeric(2,0) s923 numeric(2,0) s924 numeric(3,0) s926 numeric(2,0) s927 numeric(2,0) s928 numeric(2,0) s929 numeric(2,0) s930 numeric(3,0) s931 numeric(2,0) s932 numeric(2,0) s933 numeric(2,0) s934 numeric(2,0) s936 numeric(2,0) s937a numeric(2,0) s937b numeric(2,0) s937c numeric(2,0) s937d numeric(2,0) s937e numeric(2,0) s937f numeric(2,0) s937g numeric(2,0) s937h numeric(2,0) s937x numeric(2,0) s937z numeric(2,0) s938 numeric(2,0) s939 numeric(2,0) s940m numeric(3,0) s940y numeric(5,0) s941 numeric(2,0) s942 numeric(3,0) s943 numeric(2,0) s944 numeric(2,0) s945 numeric(2,0) s946 numeric(2,0) s947 numeric(2,0) s948 numeric(3,0) s949 numeric(2,0) s950 numeric(3,0) s951 numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECH11_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY hhid numeric(10,0),PRIKEY slnpm numeric(2,0) shp216 numeric(3,0) shp218 numeric(3,0) shp220 numeric(4,0) shp220b numeric(4,0) shp221 numeric(4,0) shp221b numeric(4,0) shp221ah numeric(3,0) shp221am numeric(3,0) shp222 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECG2_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY caseid char(9),PRIKEY gidx numeric(2,0),PRIKEY g121 numeric(2,0) g122 numeric(3,0) g123 numeric(2,0) g124 numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECH5S_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY hhid char(7),PRIKEY shc0 numeric(3,0) sh505 numeric(4,0) sh506 numeric(5,0) sh515 numeric(2,0) sh516 char(6) sh517 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHG1_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY hhid char(7),PRIKEY sgcongl numeric(5,0) sghogar numeric(3,0) sgestr char(1) sgprovin numeric(3,0) sgmunic char(1) sgzona numeric(2,0) sgresp numeric(3,0) sgint numeric(9,0) sgintd numeric(3,0) sgintm numeric(3,0) sginta numeric(5,0) sgintnum numeric(4,0) sgresult numeric(3,0) sgvisits numeric(2,0) sgsuperv numeric(4,0) sgeditc numeric(4,0) sgedito numeric(2,0) sgdigit numeric(3,0) sghorai numeric(3,0) sgminuti numeric(3,0) sghoraf numeric(3,0) sgminutf numeric(3,0) sgweight numeric(9,0) singrth numeric(9,0) singrthp numeric(9,0) singrhi numeric(2,0) svivig1 numeric(2,0) svivig2 numeric(2,0) svalpro numeric(6,0) squintip numeric(2,0) sallinci numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC71_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY caseid char(10),PRIKEY v701 numeric(2,0) v702 numeric(3,0) v704 numeric(3,0) v705 char(1) v714 numeric(2,0) v714a numeric(2,0) v715 numeric(3,0) v716 numeric(3,0) v717 char(1) v719 numeric(2,0) v721 char(1) v729 numeric(2,0) v730 numeric(3,0) v731 numeric(2,0) v732 numeric(2,0) v739 numeric(2,0) v740 char(1) v741 numeric(2,0) v743a numeric(2,0) v743b numeric(2,0) v743c char(1) v743d numeric(2,0) v743e char(1) v743f char(1) v744a numeric(2,0) v744b numeric(2,0) v744c numeric(2,0) v744d numeric(2,0) v744e numeric(2,0) v745a char(1) v745b char(1) v746 char(1) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHMH2_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY hhid char(6),PRIKEY hmhidx2 numeric(3,0),PRIKEY sh212d numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECH7_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY hhid char(7),PRIKEY sh230 numeric(3,0) sh231 numeric(3,0) sh232 numeric(3,0) sh234 numeric(3,0) sh234c numeric(6,0) sh235 numeric(6,0) sh237 numeric(6,0) sh238 numeric(6,0) sh239 numeric(6,0) sh241 numeric(6,0) sh242a numeric(6,0) sh242b numeric(2,0) sh242c numeric(3,0) sh243 numeric(3,0) sh244 numeric(6,0) sh245 numeric(6,0) sh246s numeric(6,0) sh246d numeric(6,0) sh248 numeric(6,0) sh249 numeric(6,0) sh250 numeric(6,0) sh253 numeric(5,0) sh254 numeric(3,0) sh255s numeric(4,0) sh255d numeric(4,0) sh257 numeric(3,0) sh258 numeric(3,0) sh259 numeric(6,0) sh260 numeric(6,0) sh262 numeric(6,0) sh263 numeric(6,0) sh264s numeric(4,0) sh264d numeric(4,0) fsysto numeric(4,0) fdysto numeric(4,0) sh271 numeric(5,0) sh273 numeric(5,0) sh276 numeric(2,0) shwh numeric(2,0) sh1 numeric(14,0) sh1d numeric(3,0) sh1mo numeric(3,0) sh1y numeric(5,0) sh1h numeric(3,0) sh1m numeric(3,0) sh1x numeric(2,0) sh2 numeric(14,0) sh2d numeric(3,0) sh2mo numeric(3,0) sh2y numeric(5,0) sh2h numeric(3,0) sh2m numeric(3,0) sh2x numeric(2,0) sh3 numeric(14,0) sh3d numeric(3,0) sh3mo numeric(3,0) sh3y numeric(5,0) sh3h numeric(3,0) sh3m numeric(3,0) sh3x numeric(2,0) sh279 numeric(2,0) sh280 numeric(5,0) sh281 numeric(5,0) sh283 numeric(9,0) sh283d numeric(3,0) sh283m numeric(3,0) sh283y numeric(5,0) sh283t numeric(5,0) sh284 numeric(4,0) sh284a numeric(4,0) sh284g numeric(4,0) sh284b numeric(4,0) shpc1 numeric(5,0) shsd1 numeric(5,0) shrm1 numeric(6,0) shrm3 numeric(6,0) shrm4 numeric(6,0) shrm5 numeric(6,0) shsd3 numeric(5,0) shbm numeric(5,0) shri numeric(5,0) shcmc numeric(4,0) shflg numeric(2,0) shsmk char(1) shresi numeric(2,0) shed1 numeric(2,0) shed2 numeric(3,0) shed3 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHMCS_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY hhid char(7),PRIKEY idxmcs numeric(3,0),PRIKEY sh268 numeric(2,0) sh268i numeric(4,0) sh278 numeric(2,0) sh279 numeric(2,0) sh279a numeric(2,0) sh286 numeric(2,0) sh286i numeric(4,0) sh292 numeric(2,0) sh295bc char(6) sh295 numeric(2,0) sh295a numeric(9,0) sh295ad numeric(3,0) sh295am numeric(3,0) sh295ay numeric(5,0) sh295b numeric(5,0) sh295bh numeric(3,0) sh295bm numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHI_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY hhid char(7),PRIKEY shcolb numeric(2,0) sh61 numeric(3,0) sh62 numeric(2,0) sh63 numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC01_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY caseid char(18),PRIKEY v000 char(4) v001 numeric(4,0) v002 numeric(4,0) v003 numeric(3,0) v004 numeric(4,0) v005 numeric(8,0) v006 numeric(3,0) v007 numeric(5,0) v008 numeric(5,0) v009 numeric(3,0) v010 numeric(5,0) v011 numeric(5,0) v012 numeric(3,0) v013 numeric(2,0) v014 numeric(2,0) v015 numeric(2,0) v016 numeric(3,0) v017 numeric(5,0) v018 numeric(3,0) v019 numeric(3,0) v019a numeric(2,0) v020 numeric(2,0) v021 numeric(4,0) v022 numeric(3,0) v023 numeric(3,0) v024 numeric(2,0) v025 numeric(2,0) v026 numeric(2,0) v027 numeric(2,0) v028 numeric(4,0) v029 numeric(2,0) v030 numeric(3,0) v031 numeric(4,0) v032 numeric(2,0) v034 numeric(3,0) v040 numeric(4,0) v042 numeric(2,0) v044 char(1) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECML_All postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7),PRIKEY caseid char(9),PRIKEY idxml numeric(2,0),PRIKEY ml0 numeric(2,0) ml1 numeric(3,0) ml2 numeric(2,0) ml11 char(1) ml12 char(1) ml13a numeric(2,0) ml13b numeric(2,0) ml13c numeric(2,0) ml13d numeric(2,0) ml13e numeric(2,0) ml13f char(1) ml13g char(1) ml13h numeric(2,0) ml13i numeric(2,0) ml13j numeric(2,0) ml13k numeric(2,0) ml13l numeric(2,0) ml13m numeric(2,0) ml13n char(1) ml13o char(1) ml13p char(1) ml13x numeric(2,0) ml13y numeric(2,0) ml13z numeric(2,0) ml14a char(1) ml14b char(1) ml14y char(1) ml14z char(1) ml15a numeric(2,0) ml15b char(1) ml15c char(1) ml16a numeric(2,0) ml16b char(1) ml16c char(1) ml17a numeric(2,0) ml17b char(1) ml17c char(1) ml18a numeric(2,0) ml18b char(1) ml18c char(1) ml19a char(1) ml19b char(1) ml19c char(1) ml19d char(1) ml19e char(1) ml19f char(1) ml19x char(1) ml19y char(1) ml19z char(1) ml20a numeric(2,0) ml20b char(1) ml20c char(1) ml21a char(1) ml21b char(1) ml21c char(1) ml22a char(1) ml22b char(1) ml22c char(1) ml23a numeric(2,0) ml23b char(1) ml23c char(1) ml24c char(1) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC92_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(12) idx92 numeric(3,0) s222 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHMT_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(7) shmtx numeric(2,0) sh78 numeric(2,0) sh79 numeric(3,0) sh80m numeric(3,0) sh80a numeric(5,0) sh81 numeric(2,0) sh80mi numeric(3,0) sh80ai numeric(5,0) sh80c numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHCH2_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(6) idxch2 numeric(3,0) schl145 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC22_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(10) v201 numeric(3,0) v202 numeric(2,0) v203 numeric(2,0) v204 numeric(2,0) v205 numeric(2,0) v206 numeric(3,0) v207 numeric(2,0) v208 numeric(2,0) v209 numeric(2,0) v210 numeric(2,0) v211 numeric(5,0) v212 numeric(3,0) v213 numeric(2,0) v214 numeric(2,0) v215 numeric(4,0) v216 numeric(2,0) v217 char(1) v218 numeric(3,0) v219 numeric(3,0) v220 numeric(2,0) v221 numeric(4,0) v222 numeric(4,0) v223 numeric(2,0) v224 numeric(3,0) v225 numeric(2,0) v226 numeric(4,0) v227 numeric(2,0) v228 numeric(2,0) v229 numeric(3,0) v230 numeric(5,0) v231 numeric(5,0) v232 numeric(2,0) v233 numeric(2,0) v234 numeric(2,0) v235 numeric(2,0) v237 numeric(2,0) v238 numeric(2,0) v239 numeric(2,0) v240 numeric(3,0) v241 numeric(5,0) v242 numeric(5,0) v243 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC75_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(10) v750 numeric(2,0) v751 numeric(2,0) v754bp char(1) v754cp numeric(2,0) v754dp numeric(2,0) v754jp numeric(2,0) v754wp numeric(2,0) v756 numeric(2,0) v761 char(1) v761b char(1) v761c char(1) v762aa char(1) v762ab char(1) v762ac char(1) v762ad char(1) v762ae char(1) v762af char(1) v762ag char(1) v762ah char(1) v762ai char(1) v762aj char(1) v762ak char(1) v762al char(1) v762am char(1) v762an char(1) v762ao char(1) v762ap char(1) v762aq char(1) v762ar char(1) v762as char(1) v762at char(1) v762au char(1) v762av char(1) v762aw char(1) v762ax char(1) v762az char(1) v762ba char(1) v762bb char(1) v762bc char(1) v762bd char(1) v762be char(1) v762bf char(1) v762bg char(1) v762bh char(1) v762bi char(1) v762bj char(1) v762bk char(1) v762bl char(1) v762bm char(1) v762bn char(1) v762bo char(1) v762bp char(1) v762bq char(1) v762br char(1) v762bs char(1) v762bt char(1) v762bu char(1) v762bv char(1) v762bw char(1) v762bx char(1) v762bz char(1) v763a numeric(2,0) v763b numeric(2,0) v763c numeric(2,0) v763d char(1) v763e char(1) v763f char(1) v763g char(1) v766a char(1) v766b char(1) v767a char(1) v767b char(1) v767c char(1) v768a char(1) v768b char(1) v768c char(1) v769 char(1) v769a char(1) v770 numeric(2,0) v770a numeric(2,0) v770b numeric(2,0) v770c numeric(2,0) v770d numeric(2,0) v770e numeric(2,0) v770f numeric(2,0) v770g numeric(2,0) v770h numeric(2,0) v770i numeric(2,0) v770j numeric(2,0) v770k char(1) v770l numeric(2,0) v770m numeric(2,0) v770n numeric(2,0) v770o numeric(2,0) v770p numeric(2,0) v770q numeric(2,0) v770r numeric(2,0) v770s numeric(2,0) v770t numeric(2,0) v770u numeric(2,0) v770v numeric(2,0) v770w numeric(2,0) v770x numeric(2,0) v774a numeric(2,0) v774b numeric(2,0) v774c numeric(2,0) v775 char(1) v777 char(1) v778 char(1) v779 char(1) v780 char(1) v781 char(1) v783 char(1) v784a char(1) v784b char(1) v784c char(1) v784d char(1) v784e char(1) v784f char(1) v784g char(1) v784h char(1) v784i char(1) v784j char(1) v784k char(1) v784l char(1) v784m char(1) v784n char(1) v784o char(1) v784p char(1) v784q char(1) v784r char(1) v784s char(1) v784t char(1) v784u char(1) v784v char(1) v784x char(1) v785 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECH2_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(7) hv201 numeric(3,0) hv202 char(1) hv204 numeric(4,0) hv205 numeric(3,0) hv206 numeric(2,0) hv207 numeric(2,0) hv208 numeric(2,0) hv209 numeric(2,0) hv210 numeric(2,0) hv211 numeric(2,0) hv212 char(1) hv213 numeric(3,0) hv214 numeric(3,0) hv215 numeric(3,0) hv216 numeric(3,0) hv217 numeric(2,0) hv218 numeric(2,0) hv219 numeric(2,0) hv220 numeric(3,0) hv221 numeric(2,0) hv225 numeric(2,0) hv226 numeric(3,0) hv227 char(1) hv228 char(1) hv230a numeric(2,0) hv230b numeric(2,0) hv232 numeric(2,0) hv232b numeric(2,0) hv232c numeric(2,0) hv232d numeric(2,0) hv232e char(1) hv232y numeric(2,0) hv234 char(1) hv234a numeric(2,0) hv235 numeric(2,0) hv236 char(1) hv237 numeric(2,0) hv237a numeric(2,0) hv237b numeric(2,0) hv237c numeric(2,0) hv237d numeric(2,0) hv237e numeric(2,0) hv237f numeric(2,0) hv237g numeric(2,0) hv237h char(1) hv237i char(1) hv237j char(1) hv237k char(1) hv237x numeric(2,0) hv237z numeric(2,0) hv238 numeric(3,0) hv239 char(1) hv240 char(1) hv241 numeric(2,0) hv242 numeric(2,0) hv243a numeric(2,0) hv243b char(1) hv243c char(1) hv243d char(1) hv244 numeric(2,0) hv245 numeric(4,0) hv246 numeric(2,0) hv246a char(1) hv246b numeric(3,0) hv246c char(1) hv246d char(1) hv246e char(1) hv246f char(1) hv246g numeric(3,0) hv246h numeric(3,0) hv246i numeric(3,0) hv246j char(1) hv246k char(1) hv247 numeric(2,0) hv252 numeric(2,0) hv253 char(1) hv253a char(1) hv253b char(1) hv253c char(1) hv253d char(1) hv253e char(1) hv253f char(1) hv253g char(1) hv253h char(1) hv253x char(1) hv253z char(1) hv270 numeric(2,0) hv271 numeric(8,0) hml1 char(1) hml1a char(1) hml2 char(1) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECH6S_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(7) sha0 numeric(3,0) sh603 numeric(6,0) sh604 numeric(5,0) sh614 numeric(2,0) sh615 char(6) sh616 numeric(2,0) sh617 numeric(2,0) sh618 char(6) sh619 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC81_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(10) v801 numeric(5,0) v802 numeric(5,0) v803 numeric(3,0) v804 numeric(2,0) v805 numeric(4,0) v806 numeric(2,0) v811 numeric(2,0) v812 numeric(2,0) v813 numeric(2,0) v814 numeric(2,0) v815a char(1) v815b char(1) v815c char(1) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC43_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(10) hidx numeric(2,0) h1 numeric(2,0) h2 numeric(2,0) h2d numeric(3,0) h2m numeric(3,0) h2y numeric(5,0) h3 numeric(2,0) h3d numeric(3,0) h3m numeric(3,0) h3y numeric(5,0) h4 numeric(2,0) h4d numeric(3,0) h4m numeric(3,0) h4y numeric(5,0) h5 numeric(2,0) h5d numeric(3,0) h5m numeric(3,0) h5y numeric(5,0) h6 numeric(2,0) h6d numeric(3,0) h6m numeric(3,0) h6y numeric(5,0) h7 numeric(2,0) h7d numeric(3,0) h7m numeric(3,0) h7y numeric(5,0) h8 numeric(2,0) h8d numeric(3,0) h8m numeric(3,0) h8y numeric(5,0) h9 numeric(2,0) h9d numeric(3,0) h9m numeric(3,0) h9y numeric(5,0) h0 numeric(2,0) h0d numeric(3,0) h0m numeric(3,0) h0y numeric(5,0) h10 numeric(2,0) h11 numeric(2,0) h11b numeric(2,0) h12a numeric(2,0) h12b numeric(2,0) h12c numeric(2,0) h12d numeric(2,0) h12e numeric(2,0) h12f numeric(2,0) h12g numeric(2,0) h12h numeric(2,0) h12i numeric(2,0) h12j numeric(2,0) h12k numeric(2,0) h12l numeric(2,0) h12m numeric(2,0) h12n numeric(2,0) h12o numeric(2,0) h12p numeric(2,0) h12q char(1) h12r char(1) h12s numeric(2,0) h12t numeric(2,0) h12u numeric(2,0) h12v numeric(2,0) h12w char(1) h12x numeric(2,0) h12y numeric(2,0) h12z numeric(2,0) h13 numeric(2,0) h13b numeric(2,0) h14 numeric(2,0) h15 numeric(2,0) h15a numeric(2,0) h15b numeric(2,0) h15c numeric(2,0) h15d numeric(2,0) h15e numeric(2,0) h15f numeric(2,0) h15g numeric(2,0) h15h numeric(2,0) h15i numeric(2,0) h15j char(1) h15k char(1) h15l char(1) h15m char(1) h20 numeric(2,0) h21a numeric(2,0) h21 numeric(2,0) h22 numeric(2,0) h31 numeric(2,0) h31b numeric(2,0) h31c numeric(2,0) h31d numeric(2,0) h31e numeric(2,0) h32a numeric(2,0) h32b numeric(2,0) h32c numeric(2,0) h32d numeric(2,0) h32e numeric(2,0) h32f numeric(2,0) h32g numeric(2,0) h32h numeric(2,0) h32i numeric(2,0) h32j numeric(2,0) h32k numeric(2,0) h32l numeric(2,0) h32m numeric(2,0) h32n numeric(2,0) h32o numeric(2,0) h32p numeric(2,0) h32q char(1) h32r char(1) h32s numeric(2,0) h32t numeric(2,0) h32u numeric(2,0) h32v numeric(2,0) h32w numeric(2,0) h32x numeric(2,0) h32y numeric(2,0) h32z numeric(2,0) h33 numeric(2,0) h33d numeric(3,0) h33m numeric(3,0) h33y numeric(5,0) h34 numeric(2,0) h35 char(1) h36a numeric(2,0) h36b numeric(2,0) h36c numeric(2,0) h36d numeric(2,0) h36e char(1) h36f char(1) h37a numeric(2,0) h37b numeric(2,0) h37c char(1) h37d numeric(2,0) h37e numeric(2,0) h37f char(1) h37g char(1) h37h numeric(2,0) h37i numeric(2,0) h37j numeric(2,0) h37k numeric(2,0) h37l numeric(2,0) h37m numeric(2,0) h37n numeric(2,0) h37o numeric(2,0) h37p numeric(2,0) h37x numeric(2,0) h37y numeric(2,0) h37z numeric(2,0) h38 numeric(2,0) h39 numeric(2,0) h40 char(1) h40d char(1) h40m char(1) h40y char(1) h41a char(1) h41b char(1) h42 numeric(2,0) h43 numeric(2,0) h44a numeric(3,0) h44b char(1) h44c char(1) h45 char(1) h46a numeric(3,0) h46b char(1) h47 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC96_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(12) idx96 numeric(2,0) s566 numeric(2,0) s567 numeric(3,0) s568a numeric(2,0) s568b numeric(2,0) s568c numeric(2,0) s568d numeric(2,0) s568e numeric(2,0) s569a numeric(2,0) s569b numeric(2,0) s569c numeric(2,0) s569d numeric(2,0) s569e numeric(2,0) s570a numeric(2,0) s570b numeric(2,0) s570c numeric(2,0) s570d numeric(2,0) s570x numeric(2,0) s571 numeric(2,0) s572a numeric(2,0) s572b numeric(2,0) s572c numeric(2,0) s572d numeric(2,0) s572x numeric(2,0) s572y numeric(2,0) s573 numeric(3,0) s574 numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC11_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(10) v101 numeric(2,0) v102 numeric(2,0) v103 char(1) v104 char(1) v105 char(1) v106 numeric(2,0) v107 numeric(2,0) v113 numeric(3,0) v115 numeric(4,0) v116 numeric(3,0) v119 numeric(2,0) v120 numeric(2,0) v121 numeric(2,0) v122 numeric(2,0) v123 numeric(2,0) v124 numeric(2,0) v125 char(1) v127 numeric(3,0) v128 numeric(3,0) v129 numeric(3,0) v130 numeric(2,0) v131 char(1) v133 numeric(3,0) v134 numeric(2,0) v135 numeric(2,0) v136 numeric(3,0) v137 numeric(2,0) v138 numeric(2,0) v139 numeric(3,0) v140 numeric(2,0) v141 numeric(2,0) v149 numeric(2,0) v150 numeric(3,0) v151 numeric(2,0) v152 numeric(3,0) v153 numeric(2,0) awfactt numeric(5,0) awfactu numeric(5,0) awfactr numeric(5,0) awfacte numeric(5,0) awfactw numeric(5,0) v155 numeric(2,0) v156 char(1) v157 numeric(2,0) v158 numeric(2,0) v159 numeric(2,0) v160 numeric(2,0) v161 numeric(3,0) v166 char(1) v167 char(1) v168 char(1) v190 numeric(2,0) v191 numeric(8,0) ml101 char(1) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECH10_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid numeric(10,0) slnwp numeric(2,0) sh216 numeric(3,0) sh218 numeric(3,0) sh220 numeric(4,0) sh220b char(4) sh221 char(4) sh221b numeric(4,0) sh221ah numeric(3,0) sh221am numeric(3,0) sh222 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECG1_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(9) g100 numeric(2,0) g101 numeric(2,0) g102 numeric(2,0) g103 numeric(2,0) g104 numeric(2,0) g105 numeric(2,0) g106 numeric(3,0) g107 numeric(3,0) g108 numeric(3,0) g109 char(1) g110 char(1) g111 char(1) g112 char(1) g113 char(1) g114 char(1) g115 char(1) g116 char(1) g117a char(1) g117b char(1) g117c char(1) g117d char(1) g117e char(1) g117f char(1) g117g char(1) g117h char(1) g117i char(1) g117j char(1) g117x char(1) g117y char(1) g118 numeric(2,0) g119 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECGC_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(10) g100 numeric(2,0) g101 numeric(2,0) g102 numeric(2,0) g103 numeric(2,0) g104 numeric(2,0) g105 numeric(2,0) g106 numeric(3,0) g107 numeric(3,0) g108 numeric(3,0) g109 numeric(3,0) g110 numeric(2,0) g111 numeric(2,0) g112 numeric(2,0) g113 numeric(3,0) g114 numeric(3,0) g115 char(1) g116 numeric(2,0) g117a char(1) g117b char(1) g117c char(1) g117d char(1) g117e char(1) g117f char(1) g117g char(1) g117h char(1) g117i char(1) g117j char(1) g117x char(1) g117y char(1) g118 char(1) g119 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECH6_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(7) hc0 numeric(3,0) hc1 numeric(3,0) hc2 numeric(5,0) hc3 numeric(5,0) hc4 numeric(5,0) hc5 numeric(5,0) hc6 numeric(6,0) hc7 numeric(5,0) hc8 numeric(5,0) hc9 numeric(6,0) hc10 numeric(5,0) hc11 numeric(5,0) hc12 numeric(6,0) hc13 numeric(2,0) hc15 numeric(2,0) hc16 numeric(3,0) hc17 numeric(3,0) hc18 numeric(3,0) hc19 numeric(5,0) hc27 numeric(2,0) hc30 numeric(3,0) hc31 numeric(5,0) hc32 numeric(5,0) hc33 numeric(2,0) hc51 numeric(3,0) hc52 numeric(2,0) hc53 numeric(4,0) hc55 numeric(2,0) hc56 numeric(4,0) hc57 numeric(2,0) hc58 char(1) hc60 numeric(4,0) hc61 numeric(2,0) hc62 numeric(3,0) hc63 numeric(4,0) hc64 numeric(3,0) shb13 numeric(2,0) hc68 numeric(5,0) hc70 numeric(5,0) hc71 numeric(5,0) hc72 numeric(5,0) hc73 numeric(5,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC32_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(10) v310 char(1) v311 char(1) v312 numeric(3,0) v313 numeric(2,0) v315 numeric(3,0) v316 numeric(5,0) v317 numeric(5,0) v318 numeric(2,0) v319 numeric(2,0) v320 numeric(2,0) v321 numeric(2,0) v322 numeric(2,0) v323 numeric(3,0) v323a numeric(3,0) v325a char(1) v326 numeric(3,0) v327 numeric(2,0) v337 numeric(3,0) v359 numeric(3,0) v360 numeric(3,0) v361 numeric(2,0) v362 numeric(2,0) v363 numeric(3,0) v364 numeric(2,0) v367 numeric(2,0) v372 numeric(2,0) v372a numeric(2,0) v375a char(1) v376 numeric(3,0) v376a char(1) v379 char(1) v380 char(1) v384a numeric(2,0) v384b numeric(2,0) v384c numeric(2,0) v393 char(1) v394 char(1) v395 char(1) v3a00a numeric(2,0) v3a00b numeric(2,0) v3a00c numeric(2,0) v3a00d numeric(2,0) v3a00e numeric(2,0) v3a00f numeric(2,0) v3a00g numeric(2,0) v3a00h numeric(2,0) v3a00i numeric(2,0) v3a00j numeric(2,0) v3a00k numeric(2,0) v3a00l numeric(2,0) v3a00m numeric(2,0) v3a00n numeric(2,0) v3a00o numeric(2,0) v3a00p char(1) v3a00q char(1) v3a00r char(1) v3a00s numeric(2,0) v3a00t char(1) v3a00u numeric(2,0) v3a00v numeric(2,0) v3a00w numeric(2,0) v3a00x numeric(2,0) v3a00y numeric(2,0) v3a00z numeric(2,0) v3a01 char(1) v3a02 char(1) v3a03 char(1) v3a04 char(1) v3a05 char(1) v3a06 char(1) v3a07 numeric(3,0) v3a08a char(1) v3a08b numeric(2,0) v3a08c numeric(2,0) v3a08d numeric(2,0) v3a08e numeric(2,0) v3a08f numeric(2,0) v3a08g numeric(2,0) v3a08h numeric(2,0) v3a08i numeric(2,0) v3a08j numeric(2,0) v3a08k numeric(2,0) v3a08l numeric(2,0) v3a08m numeric(2,0) v3a08n numeric(2,0) v3a08o char(1) v3a08p numeric(2,0) v3a08q numeric(2,0) v3a08r numeric(2,0) v3a08s numeric(2,0) v3a08t numeric(2,0) v3a08u numeric(2,0) v3a08v numeric(2,0) v3a08w char(1) v3a08aa char(1) v3a08ab char(1) v3a08ac char(1) v3a08ad char(1) v3a08x numeric(2,0) v3a08z numeric(2,0) v3a09a char(1) v3a09b char(1) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHPC_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(6) hpcidx numeric(3,0) sh198c numeric(2,0) sh198d numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHMLS_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(7) shmlidx numeric(2,0) sh136 numeric(2,0) sh139a numeric(3,0) sh139b numeric(3,0) sh139c numeric(3,0) sh139d numeric(3,0) sh139e numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECH5CS_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(7) idx5cs numeric(3,0) sh224 numeric(2,0) sh224i numeric(4,0) sh234 numeric(2,0) sh235 numeric(2,0) sh235a numeric(2,0) sh242 numeric(2,0) sh242i numeric(4,0) sh248 numeric(2,0) sh251bc char(6) sh251 numeric(2,0) sh251a numeric(9,0) sh251ad numeric(3,0) sh251am numeric(3,0) sh251ay numeric(5,0) sh251b numeric(5,0) sh251bh numeric(3,0) sh251bm numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHMA_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(7) hb0 numeric(3,0) hb1 numeric(3,0) hb2 numeric(5,0) hb3 numeric(5,0) hb4 numeric(5,0) hb5 numeric(5,0) hb6 numeric(6,0) hb11 numeric(5,0) hb12 numeric(6,0) hb12a numeric(6,0) hb12b numeric(6,0) hb13 numeric(2,0) hb32 numeric(5,0) hb33 numeric(2,0) hb35 numeric(3,0) hb40 numeric(5,0) hb41 numeric(5,0) hb50 numeric(2,0) hb51 numeric(3,0) hb52 numeric(2,0) hb53 numeric(4,0) hb55 numeric(2,0) hb56 numeric(4,0) hb57 numeric(2,0) hb58 char(1) hb60 numeric(2,0) hb61 numeric(2,0) hb62 char(6) hb63 numeric(2,0) hb64 numeric(2,0) hb65 numeric(2,0) hb66 numeric(2,0) hb67 numeric(3,0) hb68 numeric(2,0) hb69 numeric(8,0) hb70 numeric(4,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC91_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(10) s28days numeric(2,0) s5years numeric(2,0) s103a numeric(2,0) s104a numeric(2,0) s112a numeric(2,0) s112b numeric(2,0) s114a numeric(2,0) s114b numeric(2,0) s114c numeric(2,0) s114d numeric(2,0) s114e numeric(2,0) s114f numeric(2,0) s114g numeric(2,0) s114gx numeric(3,0) s223a numeric(2,0) s223b numeric(2,0) s229a numeric(2,0) s229b numeric(2,0) s229c numeric(2,0) s229d numeric(3,0) s306a numeric(2,0) s325j numeric(2,0) s325m numeric(2,0) s325n numeric(2,0) s325o numeric(2,0) s325a numeric(2,0) s325b numeric(2,0) s325ca numeric(2,0) s325cb numeric(2,0) s325cc numeric(2,0) s325cd numeric(2,0) s325ce numeric(2,0) s325cf numeric(2,0) s325cg numeric(2,0) s325ch numeric(2,0) s325cx numeric(2,0) s325cz numeric(2,0) s325d numeric(2,0) s325e numeric(2,0) s325fa numeric(2,0) s325fb numeric(2,0) s325fc numeric(2,0) s325fd numeric(2,0) s325fe numeric(2,0) s325ff numeric(2,0) s325fh numeric(2,0) s325fx numeric(2,0) s325fz numeric(2,0) s326 numeric(2,0) s326aa numeric(2,0) s326ab numeric(2,0) s326ac numeric(2,0) s326ax numeric(2,0) s326b numeric(3,0) s326c numeric(2,0) s506a char(1) s604a numeric(3,0) s616 numeric(3,0) s714aa numeric(2,0) s714ba numeric(2,0) s714bb numeric(2,0) s714bc numeric(2,0) s714d numeric(2,0) s714e numeric(2,0) s803a numeric(2,0) s823 numeric(2,0) s823a numeric(2,0) s823b numeric(2,0) s906a numeric(2,0) s906b numeric(2,0) s937a numeric(2,0) s937b numeric(2,0) s945o numeric(2,0) s945a numeric(2,0) s1001 numeric(2,0) s1002 numeric(2,0) s1003 numeric(2,0) s1004 numeric(2,0) s1005 numeric(2,0) score numeric(3,0) awfacte2 numeric(6,0) awfacte3 numeric(6,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC21_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(10) bidx numeric(3,0) bord numeric(3,0) b0 numeric(2,0) b1 numeric(3,0) b2 numeric(5,0) b3 numeric(5,0) b4 numeric(2,0) b5 numeric(2,0) b6 numeric(4,0) b7 numeric(4,0) b8 numeric(3,0) b9 numeric(2,0) b10 numeric(2,0) b11 numeric(4,0) b12 numeric(4,0) b13 numeric(2,0) b15 numeric(2,0) b16 numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHCHL_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(10) idxchl numeric(3,0) chl1 numeric(2,0) chl2 numeric(3,0) chl3 numeric(2,0) chl4 numeric(3,0) chl5 numeric(2,0) chl6 numeric(3,0) chl7 numeric(2,0) chl8 numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECH1_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(6) hvidx numeric(3,0) hv101 numeric(3,0) hv102 numeric(2,0) hv103 numeric(2,0) hv104 numeric(2,0) hv105 numeric(3,0) hv106 numeric(2,0) hv107 numeric(2,0) hv108 numeric(3,0) hv109 numeric(2,0) hv110 char(1) hv111 char(1) hv112 char(1) hv113 char(1) hv114 char(1) hv115 char(1) hv116 numeric(2,0) hv117 numeric(2,0) hv118 numeric(2,0) hv120 numeric(2,0) hv121 numeric(2,0) hv122 numeric(2,0) hv123 numeric(2,0) hv124 numeric(3,0) hv125 char(1) hv126 char(1) hv127 char(1) hv128 char(1) hv129 char(1) hv140 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHC_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(7) shcolc numeric(2,0) sh202 numeric(3,0) sh205 numeric(5,0) sh206 numeric(5,0) sh212 numeric(4,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC80_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(10) v820 char(1) v821a char(1) v821b char(1) v821c char(1) v822 char(1) v823 numeric(2,0) v824 char(1) v825 char(1) v826 char(1) v826a char(1) v827 char(1) v828 char(1) v829 char(1) v830 char(1) v831 char(1) v832b char(1) v832c char(1) v833a char(1) v833b char(1) v833c char(1) v834a char(1) v834b char(1) v834c char(1) v835a char(1) v835b char(1) v835c char(1) v836 char(1) v837 char(1) v838a char(1) v838b char(1) v838c char(1) v839 char(1) v839a char(1) v840 char(1) v840a char(1) v841 char(1) v841a char(1) v842 char(1) v843 char(1) v844 char(1) v845 char(1) v846 char(1) v847 char(1) v848 char(1) v849 char(1) v850a char(1) v850b char(1) v851a char(1) v851b char(1) v851c char(1) v851d char(1) v851e char(1) v851f char(1) v851g char(1) v851h char(1) v851i char(1) v851j char(1) v851k char(1) v851l char(1) v852a char(1) v852b char(1) v852c char(1) v853a char(1) v853b char(1) v853c char(1) v854a char(1) v854b char(1) v855 char(1) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC42_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(10) v401 numeric(2,0) v404 numeric(2,0) v405 numeric(2,0) v406 numeric(2,0) v407 char(1) v408 char(1) v409 numeric(2,0) v409a char(1) v410 numeric(2,0) v410a char(1) v411 numeric(2,0) v411a numeric(2,0) v412 char(1) v412a numeric(2,0) v412b char(1) v412c char(1) v413 numeric(2,0) v413a char(1) v413b char(1) v413c char(1) v413d char(1) v414a char(1) v414b char(1) v414c char(1) v414d char(1) v414e numeric(2,0) v414f numeric(2,0) v414g numeric(2,0) v414h numeric(2,0) v414i numeric(2,0) v414j numeric(2,0) v414k numeric(2,0) v414l numeric(2,0) v414m numeric(2,0) v414n numeric(2,0) v414o numeric(2,0) v414p numeric(2,0) v414q char(1) v414r char(1) v414s numeric(2,0) v414t char(1) v414u char(1) v414v numeric(2,0) v414w char(1) v415 numeric(2,0) v416 char(1) v417 numeric(2,0) v418 numeric(2,0) v419 numeric(2,0) v420 char(1) v421 char(1) v426 numeric(4,0) v437 numeric(5,0) v438 numeric(5,0) v439 numeric(5,0) v440 numeric(5,0) v441 numeric(6,0) v442 numeric(6,0) v443 numeric(6,0) v444 numeric(6,0) v444a numeric(5,0) v445 numeric(5,0) v446 numeric(5,0) v447 numeric(2,0) v447a numeric(3,0) v452a char(1) v452b char(1) v452c numeric(2,0) v453 numeric(4,0) v454 numeric(2,0) v455 numeric(2,0) v456 numeric(4,0) v457 numeric(2,0) v458 char(1) v459 char(1) v460 char(1) v461 char(1) v462 char(1) v463a char(1) v463b char(1) v463c char(1) v463d char(1) v463e char(1) v463f char(1) v463g char(1) v463x char(1) v463z char(1) v464 char(1) v465 char(1) v466 char(1) v467a char(1) v467b char(1) v467c char(1) v467d char(1) v467e char(1) v467f char(1) v467g char(1) v467h char(1) v467i char(1) v467j char(1) v467k char(1) v467l char(1) v467m char(1) v468 numeric(2,0) v469e numeric(2,0) v469f numeric(2,0) v469x numeric(2,0) v471a char(1) v471b char(1) v471c char(1) v471d char(1) v471e char(1) v471f char(1) v471g char(1) v472a char(1) v472b char(1) v472c char(1) v472d char(1) v472e char(1) v472f char(1) v472g char(1) v472h char(1) v472i char(1) v472j char(1) v472k char(1) v472l char(1) v472m char(1) v472n char(1) v472o char(1) v472p char(1) v472q char(1) v472r char(1) v472s char(1) v472t char(1) v472u char(1) v473a char(1) v473b char(1) v474 char(1) v474a char(1) v474b char(1) v474c char(1) v474d char(1) v474e char(1) v474f char(1) v474g char(1) v474h char(1) v474i char(1) v474j char(1) v474x char(1) v474z char(1) v475 char(1) v476 char(1) v477 char(1) v478 char(1) v479 char(1) v480 char(1) v481 char(1) v481a char(1) v481b char(1) v481c char(1) v481d char(1) v481e char(1) v481f char(1) v481g char(1) v481h char(1) v481x char(1) v482a char(1) v482b char(1) v482c char(1) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC95_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(10) idx95 numeric(2,0) s506ad numeric(3,0) s506am numeric(3,0) s506ay numeric(5,0) shb1 numeric(3,0) shb1d numeric(3,0) shb1m numeric(5,0) shb1y numeric(5,0) shb2 numeric(3,0) shb2d numeric(5,0) shb2m numeric(3,0) shb2y numeric(5,0) shb3 numeric(2,0) shb3d numeric(3,0) shb3m numeric(3,0) shb3y numeric(5,0) s510j numeric(2,0) s519j numeric(2,0) s522c numeric(2,0) s522d numeric(2,0) s523a numeric(2,0) s523b numeric(2,0) s523c numeric(2,0) s523d numeric(2,0) s523e numeric(2,0) s523f numeric(2,0) s523g numeric(2,0) s523h numeric(2,0) s523i numeric(2,0) s523j numeric(2,0) s523k numeric(2,0) s523l numeric(2,0) s523m numeric(2,0) s523n numeric(2,0) s523o numeric(2,0) s523p numeric(2,0) s523q numeric(2,0) s523r numeric(2,0) s523s numeric(2,0) s523t numeric(2,0) s523u numeric(2,0) s523v numeric(2,0) s523w numeric(2,0) s523x numeric(2,0) s536a numeric(2,0) s536k numeric(2,0) s536b numeric(3,0) s536c numeric(3,0) s536d numeric(3,0) s538o numeric(2,0) s538p numeric(2,0) s539 numeric(2,0) s540a numeric(2,0) s540b numeric(2,0) s540c numeric(2,0) s540d numeric(2,0) s540e numeric(2,0) s540f numeric(2,0) s540g numeric(2,0) s540h numeric(2,0) s540i numeric(2,0) s540j numeric(2,0) s540k numeric(2,0) s540l numeric(2,0) s540w numeric(2,0) s540x numeric(2,0) s541a numeric(2,0) s541b numeric(2,0) s541c numeric(2,0) s541d numeric(2,0) s541e numeric(2,0) s541f numeric(2,0) s541g numeric(2,0) s541h numeric(2,0) s541i numeric(2,0) s541j numeric(2,0) s541k numeric(2,0) s541l numeric(2,0) s541m numeric(2,0) s541n numeric(2,0) s541o numeric(2,0) s541p numeric(2,0) s541q numeric(2,0) s541r numeric(2,0) s541s numeric(2,0) s541t numeric(2,0) s541u numeric(2,0) s541v numeric(2,0) s541w numeric(2,0) s541x numeric(2,0) s541y numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECH5_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(7) ha0 numeric(3,0) ha1 numeric(3,0) ha2 numeric(5,0) ha3 numeric(5,0) ha4 numeric(5,0) ha5 numeric(5,0) ha6 numeric(6,0) ha11 numeric(5,0) ha12 numeric(6,0) ha12a numeric(6,0) ha12b numeric(6,0) ha13 numeric(2,0) ha32 numeric(5,0) ha33 numeric(2,0) ha35 char(1) ha40 numeric(5,0) ha41 numeric(5,0) ha50 char(1) ha51 char(1) ha52 numeric(2,0) ha53 numeric(4,0) ha54 numeric(2,0) ha55 numeric(2,0) ha56 numeric(4,0) ha57 numeric(2,0) ha58 char(1) ha60 char(1) ha61 char(1) ha62 char(1) ha63 char(1) ha64 char(1) ha65 numeric(2,0) ha66 numeric(2,0) ha67 numeric(3,0) ha68 numeric(2,0) ha69 char(1) ha70 char(1) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC31_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(10) v301 char(1) v302 char(1) v302a numeric(2,0) rec31_group numeric(2,0) v304a char(1) v304 char(1) v305 char(1) v307 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC84_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(9) mmc1 numeric(3,0) mmc2 numeric(3,0) mmc3 char(1) rec84_group char(1) mmc4 char(1) mmc5 numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC99_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(9) idx99 numeric(2,0) sh2 numeric(2,0) sh2d numeric(3,0) sh2m numeric(3,0) sh2y numeric(5,0) sh3 numeric(2,0) sh3d numeric(3,0) sh3m numeric(3,0) sh3y numeric(5,0) sh4 numeric(2,0) sh4d numeric(3,0) sh4m numeric(3,0) sh4y numeric(5,0) sh5 numeric(2,0) sh5d numeric(3,0) sh5m numeric(3,0) sh5y numeric(5,0) sh6 numeric(2,0) sh6d numeric(3,0) sh6m numeric(3,0) sh6y numeric(5,0) sh7 numeric(2,0) sh7d numeric(3,0) sh7m numeric(3,0) sh7y numeric(5,0) sh8 numeric(2,0) sh8d numeric(3,0) sh8m numeric(3,0) sh8y numeric(5,0) sh9 numeric(2,0) sh9d numeric(3,0) sh9m numeric(3,0) sh9y numeric(5,0) sh0 numeric(2,0) sh0d numeric(3,0) sh0m numeric(3,0) sh0y numeric(5,0) sh33 numeric(2,0) sh33d numeric(3,0) sh33m numeric(3,0) sh33y numeric(5,0) shp4 numeric(2,0) shp4d numeric(3,0) shp4m numeric(3,0) shp4y numeric(5,0) shd4 numeric(2,0) shd4d numeric(3,0) shd4m numeric(3,0) shd4y numeric(5,0) shh1 numeric(2,0) shh1d numeric(3,0) shh1m numeric(3,0) shh1y numeric(5,0) shh2 numeric(2,0) shh2d numeric(3,0) shh2m numeric(3,0) shh2y numeric(5,0) shh3 numeric(2,0) shh3d numeric(3,0) shh3m numeric(3,0) shh3y numeric(5,0) sht1 numeric(2,0) sht1d numeric(3,0) sht1m numeric(3,0) sht1y numeric(5,0) sht2 numeric(2,0) sht2d numeric(3,0) sht2m numeric(3,0) sht2y numeric(5,0) sht3 numeric(2,0) sht3d numeric(3,0) sht3m numeric(3,0) sht3y numeric(5,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHDP2_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(6) hdpidx2 numeric(2,0) sh197b numeric(3,0) sh197c numeric(2,0) sh197d numeric(2,0) sh197e numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHML2_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(6) hmlidx2 numeric(2,0) sh133a numeric(3,0) sh133b numeric(2,0) sh133c numeric(2,0) shmla numeric(3,0) shmlb numeric(3,0) shmlc numeric(3,0) shmld numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECH0_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(7) hv000 char(4) hv001 numeric(4,0) hv002 numeric(4,0) hv003 numeric(3,0) hv004 numeric(4,0) hv005 numeric(8,0) hv006 numeric(3,0) hv007 numeric(5,0) hv008 numeric(5,0) hv009 numeric(3,0) hv010 numeric(2,0) hv011 numeric(2,0) hv012 numeric(3,0) hv013 numeric(3,0) hv014 numeric(2,0) hv015 numeric(2,0) hv016 numeric(3,0) hv017 numeric(2,0) hv018 numeric(4,0) hv019 numeric(2,0) hv020 numeric(2,0) hv021 numeric(4,0) hv022 numeric(3,0) hv023 numeric(3,0) hv024 numeric(2,0) hv025 numeric(2,0) hv026 numeric(2,0) hv027 numeric(2,0) hv028 numeric(8,0) hv030 numeric(3,0) hv031 numeric(4,0) hv032 numeric(2,0) hv035 numeric(2,0) hv040 numeric(4,0) hv041 numeric(3,0) hv042 numeric(2,0) hv044 char(1) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECH9_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid numeric(9,0) shidx9 numeric(2,0) sh78o numeric(3,0) sh79 numeric(3,0) sh80 numeric(4,0) sh81 numeric(3,0) sh82 numeric(2,0) sh83 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC41_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(10) midx numeric(2,0) m1 numeric(2,0) m1a numeric(2,0) m1b char(1) m1c char(1) m1d numeric(3,0) m1e numeric(5,0) m2a numeric(2,0) m2b numeric(2,0) m2c numeric(2,0) m2d numeric(2,0) m2e numeric(2,0) m2f numeric(2,0) m2g numeric(2,0) m2h numeric(2,0) m2i numeric(2,0) m2j char(1) m2k numeric(2,0) m2l numeric(2,0) m2m numeric(2,0) m2n numeric(2,0) m3a numeric(2,0) m3b numeric(2,0) m3c numeric(2,0) m3d numeric(2,0) m3e numeric(2,0) m3f numeric(2,0) m3g numeric(2,0) m3h numeric(2,0) m3i numeric(2,0) m3j numeric(2,0) m3k numeric(2,0) m3l numeric(2,0) m3m numeric(2,0) m3n numeric(2,0) m4 numeric(3,0) m5 numeric(3,0) m6 numeric(3,0) m7 numeric(3,0) m8 numeric(3,0) m9 numeric(3,0) m10 numeric(2,0) m11 numeric(4,0) m13 numeric(3,0) m14 numeric(3,0) m15 numeric(3,0) m17 numeric(2,0) m18 numeric(2,0) m19 numeric(5,0) m19a numeric(2,0) m27 numeric(2,0) m28 numeric(2,0) m29 numeric(2,0) m34 numeric(4,0) m35 char(1) m36 char(1) m38 numeric(2,0) m39a numeric(2,0) m39 numeric(2,0) m42a char(1) m42b char(1) m42c numeric(2,0) m42d numeric(2,0) m42e numeric(2,0) m43 numeric(2,0) m44 char(1) m45 numeric(2,0) m46 numeric(4,0) m47 char(1) m48 char(1) m49a numeric(2,0) m49b numeric(2,0) m49c char(1) m49d char(1) m49e char(1) m49f char(1) m49g char(1) m49x numeric(2,0) m49z numeric(2,0) m49y numeric(2,0) m50 numeric(2,0) m51 numeric(4,0) m52 numeric(3,0) m54 numeric(2,0) m55a numeric(2,0) m55b numeric(2,0) m55c numeric(2,0) m55d numeric(2,0) m55e numeric(2,0) m55f numeric(2,0) m55g numeric(2,0) m55h numeric(2,0) m55i numeric(2,0) m55j numeric(2,0) m55k numeric(2,0) m55l char(1) m55m char(1) m55n char(1) m55o char(1) m55x numeric(2,0) m55z numeric(2,0) m57a numeric(2,0) m57b numeric(2,0) m57c char(1) m57d char(1) m57e numeric(2,0) m57f numeric(2,0) m57g numeric(2,0) m57h numeric(2,0) m57i numeric(2,0) m57j numeric(2,0) m57k numeric(2,0) m57l numeric(2,0) m57m numeric(2,0) m57n numeric(2,0) m57o numeric(2,0) m57p numeric(2,0) m57q numeric(2,0) m57r numeric(2,0) m57s numeric(2,0) m57t numeric(2,0) m57u char(1) m57v char(1) m57x numeric(2,0) m60 numeric(2,0) m61 numeric(4,0) m62 numeric(2,0) m65a char(1) m65b char(1) m65c char(1) m65d char(1) m65e char(1) m65f char(1) m65g char(1) m65h char(1) m65i char(1) m65j char(1) m65k char(1) m65l char(1) m65x char(1) m66 numeric(2,0) m70 numeric(2,0) m71 numeric(4,0) m72 numeric(3,0) m73 numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECDV_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(9) d005 numeric(8,0) d101a numeric(2,0) d101b numeric(2,0) d101c numeric(2,0) d101d numeric(2,0) d101e numeric(2,0) d101f numeric(2,0) d101g numeric(2,0) d101h char(1) d101i char(1) d101j char(1) d102 numeric(2,0) d103a numeric(2,0) d103b numeric(2,0) d103c char(1) d103d char(1) d103e char(1) d103f char(1) d104 numeric(2,0) d105a numeric(2,0) d105b numeric(2,0) d105c numeric(2,0) d105d numeric(2,0) d105e numeric(2,0) d105f numeric(2,0) d105g numeric(2,0) d105h numeric(2,0) d105i numeric(2,0) d105j char(1) d105k char(1) d105l char(1) d105m char(1) d105n char(1) d106 numeric(2,0) d107 numeric(2,0) d108 numeric(2,0) d109 numeric(3,0) d110a numeric(2,0) d110b numeric(2,0) d110c numeric(2,0) d110d char(1) d110e char(1) d110f char(1) d110g char(1) d110h char(1) d111 numeric(2,0) d112 numeric(2,0) d112a numeric(2,0) d113 numeric(2,0) d114 numeric(2,0) d115b numeric(2,0) d115c numeric(2,0) d115d numeric(2,0) d115e numeric(2,0) d115f numeric(2,0) d115g numeric(2,0) d115h char(1) d115i char(1) d115j numeric(2,0) d115k numeric(2,0) d115l numeric(2,0) d115m numeric(2,0) d115n numeric(2,0) d115o numeric(2,0) d115p numeric(2,0) d115q numeric(2,0) d115r numeric(2,0) d115s numeric(2,0) d115t numeric(2,0) d115u char(1) d115v numeric(2,0) d115w numeric(2,0) d115x numeric(2,0) d115y numeric(2,0) d115xa numeric(2,0) d115xb char(1) d115xc char(1) d115xd char(1) d115xe char(1) d115xf char(1) d115xg char(1) d115xh char(1) d115xi char(1) d115xj char(1) d115xk char(1) d116 numeric(3,0) d117a numeric(2,0) d118a char(1) d118b numeric(2,0) d118c numeric(2,0) d118d numeric(2,0) d118e numeric(2,0) d118f numeric(2,0) d118g numeric(2,0) d118h char(1) d118i char(1) d118j numeric(2,0) d118k numeric(2,0) d118l numeric(2,0) d118m numeric(2,0) d118n numeric(2,0) d118o numeric(2,0) d118p numeric(2,0) d118q numeric(2,0) d118r numeric(2,0) d118s numeric(2,0) d118t numeric(2,0) d118u char(1) d118v numeric(2,0) d118w numeric(2,0) d118x numeric(2,0) d118y numeric(2,0) d118xa numeric(2,0) d118xb char(1) d118xc char(1) d118xd char(1) d118xe char(1) d118xf char(1) d118xg char(1) d118xh char(1) d118xi char(1) d118xj char(1) d118xk char(1) d119a char(1) d119b numeric(2,0) d119c numeric(2,0) d119d numeric(2,0) d119e numeric(2,0) d119f numeric(2,0) d119g numeric(2,0) d119h char(1) d119i char(1) d119j numeric(2,0) d119k numeric(2,0) d119l numeric(2,0) d119m numeric(2,0) d119n numeric(2,0) d119o numeric(2,0) d119p numeric(2,0) d119q numeric(2,0) d119r numeric(2,0) d119s numeric(2,0) d119t numeric(2,0) d119u char(1) d119v numeric(2,0) d119w numeric(2,0) d119x numeric(2,0) d119y numeric(2,0) d119xa numeric(2,0) d119xb char(1) d119xc char(1) d119xd char(1) d119xe char(1) d119xf char(1) d119xg char(1) d119xh char(1) d119xi char(1) d119xj char(1) d119xk char(1) d120 numeric(3,0) d121 numeric(2,0) d122a numeric(2,0) d122b numeric(2,0) d122c numeric(2,0) d123 char(1) d124 char(1) d125 char(1) d126 char(1) d127 char(1) d128 char(1) d129 char(1) d130a char(1) d130b char(1) d100a numeric(2,0) d100b numeric(2,0) d100c numeric(2,0) d100d numeric(2,0) d112n char(1) d117 char(1) d121a numeric(2,0) d1310a numeric(2,0) d1310b numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC94_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(10) idx94 numeric(2,0) s410j numeric(3,0) s433l numeric(3,0) s435c numeric(2,0) s435d numeric(2,0) s435e numeric(2,0) s435f numeric(2,0) s435ga numeric(2,0) s435gb numeric(2,0) s435gc numeric(2,0) s435gd numeric(2,0) s435ge numeric(2,0) s435gf numeric(2,0) s435gg numeric(2,0) s435gh numeric(2,0) s435gi numeric(2,0) s435gj numeric(2,0) s435gk numeric(2,0) s435gl numeric(2,0) s435gm numeric(2,0) s435gn numeric(2,0) s435gx numeric(2,0) s435gz numeric(2,0) s435h numeric(4,0) s435i numeric(2,0) s435j numeric(2,0) s439a numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECH4_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(6) idxh4 numeric(3,0) sh08 numeric(2,0) sh13 numeric(2,0) sh18 numeric(2,0) sh19 numeric(2,0) sh20 numeric(2,0) sh21 numeric(2,0) sh22 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC83_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(9) mmidx numeric(3,0) mm1 numeric(2,0) mm2 numeric(2,0) mm3 numeric(3,0) mm4 numeric(5,0) mm5 char(1) mm6 numeric(3,0) mm7 numeric(3,0) mm8 numeric(5,0) mm9 numeric(3,0) mm10 char(1) mm11 char(1) mm12 char(1) mm13 char(1) mm14 numeric(3,0) mm15 char(1) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHDP_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(7) hdpidx numeric(3,0) hd100 numeric(3,0) hd101 numeric(4,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHMH_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(6) hmhidx numeric(3,0) hml12 numeric(2,0) hml13 numeric(2,0) hml14 numeric(2,0) hml15 char(1) hml16 numeric(3,0) hml16a numeric(3,0) hml17 numeric(2,0) hml18 numeric(2,0) hml19 numeric(2,0) hml20 numeric(2,0) hml30 numeric(3,0) hml31 numeric(2,0) hml32 numeric(2,0) hml32a char(1) hml32b char(1) hml32c char(1) hml32d char(1) hml32e char(1) hml32f char(1) hml32g char(1) hml33 char(1) hml34 char(6) hml35 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC51_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(10) v501 numeric(2,0) v502 numeric(2,0) v503 numeric(2,0) v504 numeric(2,0) v505 char(1) v506 char(1) v507 numeric(3,0) v508 numeric(5,0) v509 numeric(5,0) v510 numeric(2,0) v511 numeric(3,0) v512 numeric(3,0) v513 numeric(2,0) v525 numeric(3,0) v527 numeric(4,0) v528 numeric(3,0) v529 numeric(4,0) v530 numeric(2,0) v531 numeric(3,0) v532 numeric(2,0) v535 numeric(2,0) v536 numeric(2,0) v537 numeric(3,0) v538 char(1) v539 char(1) v540 char(1) v541 char(1) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC98_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(11) idx98 numeric(2,0) s570 numeric(3,0) s571 numeric(3,0) s572 numeric(3,0) s573a numeric(2,0) s573b numeric(9,0) s573c numeric(3,0) s573d numeric(3,0) s573e numeric(5,0) s575 numeric(9,0) s576a numeric(3,0) s576b numeric(3,0) s576c numeric(5,0) s576d numeric(9,0) s576e numeric(3,0) s576f numeric(3,0) s576g numeric(5,0) s576h numeric(9,0) s576i numeric(3,0) s576j numeric(3,0) s577a numeric(5,0) s577b numeric(9,0) s577c numeric(3,0) s577d numeric(3,0) s577e numeric(5,0) s577f numeric(9,0) s577g numeric(3,0) s577g1 numeric(3,0) s577g2 numeric(5,0) s577h numeric(9,0) s577i numeric(3,0) s577j numeric(3,0) s577k numeric(5,0) s577l numeric(9,0) s577m numeric(3,0) s577n numeric(3,0) s577o numeric(5,0) s577p numeric(9,0) s577q numeric(3,0) s577r numeric(3,0) s578a numeric(5,0) s578b numeric(9,0) s578c numeric(3,0) s578d numeric(3,0) s578e numeric(5,0) s578f numeric(9,0) s578g numeric(3,0) s578h numeric(3,0) s578i numeric(5,0) s578j numeric(9,0) s578k numeric(3,0) s578l numeric(3,0) s578m numeric(5,0) s578n numeric(9,0) s578o numeric(3,0) s578p numeric(3,0) s578p1 numeric(5,0) s578p2 numeric(9,0) s578q numeric(3,0) s578r numeric(3,0) s578s numeric(5,0) s578t numeric(9,0) s578u numeric(3,0) s578v numeric(3,0) s578w numeric(5,0) s578x numeric(9,0) s578y numeric(3,0) s579a numeric(3,0) s579b numeric(5,0) s579c numeric(9,0) s579d numeric(3,0) s579e numeric(3,0) s579f numeric(5,0) s579g numeric(9,0) s580 numeric(3,0) s581a numeric(3,0) s581b numeric(5,0) s581c numeric(2,0) s581d numeric(2,0) s581e numeric(2,0) s581f numeric(2,0) s581g numeric(2,0) s581h numeric(2,0) s581i numeric(2,0) s581j numeric(2,0) s581x numeric(2,0) s582 numeric(2,0) s583 numeric(3,0) s583b numeric(3,0) s584 numeric(3,0) s584b numeric(3,0) s585 numeric(2,0) s586 numeric(2,0) s587 numeric(3,0) s588 numeric(2,0) s589 numeric(3,0) s591 numeric(3,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF REC9A_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) caseid char(9) idx9a numeric(3,0) s1113 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHG2_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(7) sg101 numeric(3,0) sg103 numeric(3,0) sg104 numeric(2,0) sg105 numeric(2,0) sg106 numeric(2,0) sg107 numeric(2,0) sg108 numeric(3,0) sg109 numeric(2,0) sg110 numeric(4,0) sg111 numeric(3,0) sg112a numeric(7,0) sg112b numeric(2,0) sg113a numeric(6,0) sg113b numeric(6,0) sg113c numeric(6,0) sg113d numeric(6,0) sg114a numeric(7,0) sg114b numeric(7,0) sg115 numeric(2,0) sg116a numeric(3,0) sg116b numeric(3,0) sg116c numeric(3,0) sg116d numeric(3,0) sg117a numeric(7,0) sg117b numeric(2,0) sg118a numeric(7,0) sg118b numeric(2,0) sg119a numeric(7,0) sg119b numeric(2,0) sg120a numeric(6,0) sg120b numeric(2,0) sg121 numeric(2,0) sg122 numeric(2,0) sg123a numeric(2,0) sg123b numeric(2,0) sg123c numeric(2,0) sg123d numeric(2,0) sg123e numeric(2,0) sg123f numeric(2,0) sg123g numeric(2,0) sg123h numeric(2,0) sg123i numeric(2,0) sg123j numeric(2,0) sg123x numeric(2,0) sg124 numeric(2,0) sg125 numeric(2,0) sg126 numeric(7,0) sg127 numeric(3,0) sg128 numeric(2,0) sg129 numeric(2,0) sg201a numeric(2,0) sg201b numeric(2,0) sg201c numeric(2,0) sg201d numeric(2,0) sg201e numeric(2,0) sg201f numeric(2,0) sg201g numeric(2,0) sg201h numeric(2,0) sg201i numeric(2,0) sg201j numeric(2,0) sg201k numeric(2,0) sg201l numeric(2,0) sg201m numeric(2,0) sg201n numeric(2,0) sg201x numeric(2,0) sg202a numeric(2,0) sg202b numeric(2,0) sg202c numeric(2,0) sg202d numeric(2,0) sg202e numeric(2,0) sg202f numeric(2,0) sg202g numeric(2,0) sg202h numeric(2,0) sg202i numeric(2,0) sg202j numeric(2,0) sg202k numeric(2,0) sg202l numeric(2,0) sg202m numeric(2,0) sg202n char(1) sg202x numeric(2,0) sg203a numeric(2,0) sg203b numeric(3,0) sg204m numeric(3,0) sg204a numeric(5,0) sg205 numeric(3,0) sg206a numeric(2,0) sg206b numeric(6,0) sg207 numeric(3,0) sg207b numeric(2,0) sg208a numeric(2,0) sg208b numeric(7,0) sg209 numeric(2,0) sg210 numeric(2,0) sg211 numeric(2,0) sg213a numeric(2,0) sg213b numeric(7,0) sg214 numeric(2,0) sg215 numeric(2,0) sg216a numeric(2,0) sg216b numeric(2,0) sg216c numeric(2,0) sg216d numeric(2,0) sg216e numeric(2,0) sg216f numeric(2,0) sg216g numeric(2,0) sg216h numeric(2,0) sg216i numeric(2,0) sg216x numeric(2,0) sg216z numeric(2,0) sg217a numeric(2,0) sg217b numeric(2,0) sg217c numeric(2,0) sg217d numeric(2,0) sg217e numeric(2,0) sg217f numeric(2,0) sg217g numeric(2,0) sg217h numeric(2,0) sg217i numeric(2,0) sg217x numeric(2,0) sg217y numeric(2,0) sg217z numeric(2,0) sg218 numeric(2,0) sg219a numeric(2,0) sg219b numeric(7,0) sg220 numeric(2,0) sg221 numeric(2,0) sg222a numeric(2,0) sg222b numeric(2,0) sg222c numeric(2,0) sg222d numeric(2,0) sg222e numeric(2,0) sg222f numeric(2,0) sg222g numeric(2,0) sg222h numeric(2,0) sg222i numeric(2,0) sg222j numeric(2,0) sg222k numeric(2,0) sg222x numeric(2,0) sg222z numeric(2,0) sg223a numeric(2,0) sg223b numeric(2,0) sg223c numeric(2,0) sg223d numeric(2,0) sg223e numeric(2,0) sg223f numeric(2,0) sg223g numeric(2,0) sg223h numeric(2,0) sg223i numeric(2,0) sg223j numeric(2,0) sg223k numeric(2,0) sg223x numeric(2,0) sg223y numeric(2,0) sg223z numeric(2,0) sg224 numeric(2,0) sg225a numeric(2,0) sg225b numeric(7,0) sg226 numeric(2,0) sg227 numeric(6,0) sg228a numeric(2,0) sg228b numeric(2,0) sg228c numeric(2,0) sg228d numeric(2,0) sg228e numeric(2,0) sg228f numeric(2,0) sg228g numeric(2,0) sg228h numeric(2,0) sg228i numeric(2,0) sg228j numeric(2,0) sg228x numeric(2,0) sg228y numeric(2,0) sg228z numeric(2,0) sg229 numeric(3,0) sg230m numeric(3,0) sg230a numeric(5,0) sg231 numeric(3,0) sg232a numeric(2,0) sg232b numeric(6,0) sg233 numeric(2,0) sg234 numeric(2,0) sg235 numeric(2,0) sg237a numeric(2,0) sg237b numeric(6,0) sg238 numeric(2,0) sg239 numeric(2,0) sg240a numeric(2,0) sg240b numeric(2,0) sg240c numeric(2,0) sg240d numeric(2,0) sg240e numeric(2,0) sg240f numeric(2,0) sg240g numeric(2,0) sg240h numeric(2,0) sg240i numeric(2,0) sg240x numeric(2,0) sg240z numeric(2,0) sg241a numeric(2,0) sg241b numeric(2,0) sg241c numeric(2,0) sg241d numeric(2,0) sg241e numeric(2,0) sg241f numeric(2,0) sg241g numeric(2,0) sg241h numeric(2,0) sg241i numeric(2,0) sg241x numeric(2,0) sg241y numeric(2,0) sg241z numeric(2,0) sg242 numeric(2,0) sg243a numeric(2,0) sg243b numeric(7,0) sg244 numeric(2,0) sg245 numeric(2,0) sg246a numeric(2,0) sg246b numeric(2,0) sg246c numeric(2,0) sg246d numeric(2,0) sg246e numeric(2,0) sg246x numeric(2,0) sg246z numeric(2,0) sg247a numeric(2,0) sg247b numeric(2,0) sg247c numeric(2,0) sg247d numeric(2,0) sg247e numeric(2,0) sg247x numeric(2,0) sg247y numeric(2,0) sg247z numeric(2,0) sg248 numeric(2,0) sg249a numeric(2,0) sg249b numeric(7,0) sg250 numeric(2,0) sg251 numeric(6,0) sg252 numeric(2,0) sg253a numeric(4,0) sg253b numeric(4,0) sg253c numeric(4,0) sg253 numeric(4,0) sg254 numeric(3,0) sg255 numeric(3,0) sg256a numeric(2,0) sg256b numeric(6,0) sg257 numeric(3,0) sg258a numeric(2,0) sg258b numeric(7,0) sg259 numeric(2,0) sg260 numeric(2,0) sg261 numeric(2,0) sg262a numeric(2,0) sg262b numeric(6,0) sg263 numeric(2,0) sg264 numeric(2,0) sg265a numeric(2,0) sg265b numeric(2,0) sg265c numeric(2,0) sg265d numeric(2,0) sg265e numeric(2,0) sg265f numeric(2,0) sg265g numeric(2,0) sg265h numeric(2,0) sg265i numeric(2,0) sg265x numeric(2,0) sg265z numeric(2,0) sg265aa numeric(2,0) sg265ab numeric(2,0) sg265ac numeric(2,0) sg265ad numeric(2,0) sg265ae numeric(2,0) sg265af numeric(2,0) sg265ag numeric(2,0) sg265ah numeric(2,0) sg265ai numeric(2,0) sg265ax numeric(2,0) sg265ay numeric(2,0) sg265az numeric(2,0) sg265bb numeric(2,0) sg266a numeric(2,0) sg266b numeric(7,0) sg267 numeric(2,0) sg268 numeric(2,0) sg269a numeric(2,0) sg269b numeric(2,0) sg269c numeric(2,0) sg269d numeric(2,0) sg269e numeric(2,0) sg269f numeric(2,0) sg269g numeric(2,0) sg269h numeric(2,0) sg269i numeric(2,0) sg269j numeric(2,0) sg269k numeric(2,0) sg269x numeric(2,0) sg269z numeric(2,0) sg270a numeric(2,0) sg270b numeric(2,0) sg270c numeric(2,0) sg270d numeric(2,0) sg270e numeric(2,0) sg270f numeric(2,0) sg270g numeric(2,0) sg270h numeric(2,0) sg270i numeric(2,0) sg270j numeric(2,0) sg270k numeric(2,0) sg270x numeric(2,0) sg270y numeric(2,0) sg270z numeric(2,0) sg271 numeric(2,0) sg272a numeric(2,0) sg272b numeric(7,0) sg273 numeric(2,0) sg274 numeric(6,0) sg275 numeric(2,0) sg276 numeric(4,0) sg277 numeric(2,0) sg278 numeric(2,0) sg279u numeric(2,0) sg279n numeric(2,0) sg280a numeric(2,0) sg280b numeric(7,0) sg281 numeric(2,0) sg282a numeric(2,0) sg282b numeric(2,0) sg282c numeric(2,0) sg283 numeric(6,0) sg284 numeric(2,0) sg285 numeric(2,0) sg286 numeric(6,0) sg287 numeric(2,0) sg288 numeric(2,0) sg289 numeric(7,0) sg290 numeric(2,0) sg291 numeric(3,0) sg292 numeric(6,0) sg292a numeric(7,0) sg301a numeric(2,0) sg301b numeric(2,0) sg301c numeric(2,0) sg301d numeric(2,0) sg301e numeric(2,0) sg301f numeric(2,0) sg301g numeric(2,0) sg301h numeric(2,0) sg301x numeric(2,0) sg302 numeric(2,0) sg303a numeric(2,0) sg303b numeric(2,0) sg303c numeric(2,0) sg304a numeric(2,0) sg304b numeric(2,0) sg304c numeric(2,0) sg304d numeric(2,0) sg304e numeric(2,0) sg304x numeric(2,0) sg305 numeric(3,0) sg306 numeric(2,0) sg307 numeric(2,0) sg308 numeric(2,0) sg309 numeric(2,0) sg310 numeric(2,0) sg311 numeric(3,0) singresoo numeric(8,0) singresoe numeric(7,0) sregaliap numeric(7,0) sbonifica numeric(7,0) sifuente1 numeric(8,0) sifuente2 numeric(7,0) sifuente3 numeric(7,0) sifuente4 numeric(6,0) singresotp numeric(8,0) singresoip numeric(2,0) singresoib numeric(3,0) sgastoti char(1) singresoipa numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECH8_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(9) shcol3b numeric(3,0) sh223 numeric(3,0) sh225 numeric(3,0) sh226 numeric(3,0) sh227 numeric(6,0) sh227aa numeric(6,0) sh227ab numeric(6,0) sh227ac numeric(6,0) sh227ad numeric(6,0) sh227ae numeric(6,0) sh227af numeric(6,0) sh227ag numeric(6,0) sh228 numeric(2,0) sh229 numeric(3,0) sh230 numeric(3,0) sh231 numeric(6,0) sh231aa numeric(6,0) sh231ab numeric(6,0) sh231ac numeric(6,0) sh231ad numeric(6,0) sh231ae numeric(6,0) sh231af numeric(6,0) sh231ag numeric(6,0) sh232 numeric(2,0) sh233 numeric(3,0) sh234 numeric(3,0) sh235 numeric(6,0) sh235aa numeric(6,0) sh235ab numeric(6,0) sh235ac numeric(6,0) sh235ad numeric(6,0) sh235ae numeric(6,0) sh235af numeric(6,0) sh235ag numeric(6,0) sh236 numeric(2,0) sh237 numeric(3,0) sh238 numeric(3,0) sh239 numeric(2,0) sh240 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHA_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(7) shcola numeric(2,0) sh53 numeric(3,0) sh54 numeric(2,0) sh55 numeric(2,0) sh56 numeric(3,0) sh57 numeric(2,0) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF RECHS_All postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO filecode char(7) hhid char(7) sh67 numeric(3,0) sh68 numeric(2,0) sh69 numeric(2,0) sh70 numeric(3,0) sh71u numeric(2,0) sh71n numeric(7,0) sh72u numeric(2,0) sh72n numeric(7,0) sh73 numeric(2,0) sh74 numeric(3,0) sh75u numeric(2,0) sh75n numeric(7,0) sh76u numeric(2,0) sh76n numeric(7,0) sh77 numeric(2,0) sh78 numeric(3,0) sh79u numeric(2,0) sh79n numeric(7,0) sh80u numeric(2,0) sh80n numeric(7,0) diff --git a/MetadataManagement/DCF_Parser.ipynb b/MetadataManagement/DCF_Parser.ipynb new file mode 100644 index 0000000..76c3206 --- /dev/null +++ b/MetadataManagement/DCF_Parser.ipynb @@ -0,0 +1,224 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:c70d856f77ff2b705ce5243c084382a76a141e74fdad058e03eae66edabafdb8" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from collections import defaultdict\n", + "import re\n", + "import os\n", + "import glob\n", + "import csv" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": {}, + "source": [ + "Parse Recode (.DCF file) into dictionary" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# code moved to external file so that FME can also read it\n", + "from DCF_Parser_Main import parseDCF" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#r'C:\\Users\\zool1301\\Documents\\DHS\\RecodeManuals\\Recode6.dcf" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Parse all DCF files in a directory and write spec to CSV (for db import etc)" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Specify what columns the CSV should have - these must be things that the DCF parser generates\n", + "reqfieldnames = ['FileCode','RecordName','RecordTypeValue','RecordLabel','Name','Label','Start','Len','Occurrences',\n", + " 'ZeroFill', 'DecimalChar', 'Decimal', 'FMETYPE']\n", + "valfieldnames = ['FileCode','Name','Value','ValueDesc', 'ValueType']\n", + "inDir = r'C:\\Users\\zool1301\\Documents\\DHS\\Acquisition\\20150626_FullSiteScrape\\downloads\\358'\n", + "outDir = r'C:\\Users\\zool1301\\Documents\\DHS\\Acquisition\\20150626_FullSiteScrape\\ParsedSpecs'\n", + "#inDir = r'C:\\Users\\zool1301\\Documents\\DHS\\RecodeManuals'\n", + "#outDir = r'C:\\Users\\zool1301\\Documents\\DHS\\RecodeManuals\\Parsed'\n", + "\n", + "inputDCFs = glob.glob(os.path.join(inDir,'*.dcf'))" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Specify what columns the CSV should have - these must be things that the DCF parser generates\n", + "reqfieldnames = ['FileCode','RecordName','RecordTypeValue','RecordLabel','Name','Label','Start','Len','Occurrences',\n", + " 'ZeroFill', 'DecimalChar', 'Decimal', 'FMETYPE']\n", + "valfieldnames = ['FileCode','Name','Value','ValueDesc', 'ValueType']\n", + "inDir = r'C:\\Users\\zool1301\\Documents\\DHS\\Acquisition\\20150626_FullSiteScrape\\downloads\\358'\n", + "outDir = r'C:\\Users\\zool1301\\Documents\\DHS\\Acquisition\\20150626_FullSiteScrape\\ParsedSpecs'\n", + "#inDir = r'C:\\Users\\zool1301\\Documents\\DHS\\RecodeManuals'\n", + "#outDir = r'C:\\Users\\zool1301\\Documents\\DHS\\RecodeManuals\\Parsed'\n", + "\n", + "inputDCFs = glob.glob(os.path.join(inDir,'*','*.dcf'))\n", + "for inputDCF in inputDCFs:\n", + " print inputDCF\n", + " parsedDCF = parseDCF(inputDCF)\n", + " inBase = os.path.extsep.join(os.path.basename(inputDCF).split(os.path.extsep)[:-1])\n", + " #inBase = os.path.basename(inputDCF).split(os.path.extsep)[0]\n", + " outBase = inBase+'.FlatRecordSpec.csv'\n", + " outValsBase = inBase+'.FlatValuesSpec.csv'\n", + " outFileName = os.path.join(outDir,outBase)\n", + " outValsFileName = os.path.join(outDir, outValsBase)\n", + " #item = parsedDCF[0]\n", + " #write.writerow([item['FileCode'], item['])\n", + " with open (outFileName, 'wb') as fout, open(outValsFileName, 'wb') as fValsOut:\n", + " wri = csv.writer(fout)\n", + " wri.writerow(reqfieldnames)\n", + " wriVals = csv.writer(fValsOut)\n", + " wriVals.writerow(valfieldnames)\n", + " \n", + " for item in parsedDCF:\n", + " item['FMETYPE'] = \"fme_char({0!s})\".format(item['Len'])\n", + " # write the row using the fieldnames given in reqfieldnames\n", + " # not all items have \"occurrences\", \"range_low_value\", etc so write blank value if not\n", + " wri.writerow([item[k] if item.has_key(k) else '' for k in reqfieldnames])\n", + " # write the value sets to a separate file\n", + " if 'Values' in item and len(item['Values'])>0:\n", + " vals = item['Values']\n", + " for val in vals:\n", + " wriVals.writerow([item['FileCode'],item['Name'], val[0], val[1], val[2]])\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Rename files to include survey id number\n", + "allFiles = glob.glob(os.path.join(inDir,'*','*'))\n", + "for fn in allFiles:\n", + " if str.lower(fn).find('.zip') != -1:\n", + " continue\n", + " basename = os.path.basename(fn)\n", + " dirname = os.path.dirname(fn)\n", + " idname = os.path.basename(dirname)\n", + " newname = idname+'.'+basename\n", + " newpath = os.path.join(dirname,newname)\n", + " #print fn\n", + " #print newpath\n", + " os.rename(fn,newpath)" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "Naive sql generation of output (not used: use FME if loading to DB; this workbook creates CSVs)" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "levelsInserts = []\n", + "recordsInserts = []\n", + "itemsInserts = []\n", + "valuesInserts = []\n", + "\n", + "# i think a straightforward bit of sql formatting will do here, nobody malicious will get chance to run...\n", + "\n", + "# levels is straightforward, just name and label\n", + "for name, label in allLevels.iteritems():\n", + " insertLevelsSQL = 'INSERT INTO dhs_levels '\\\n", + " '(record_name, record_label)' \\\n", + " ' VALUES '\\\n", + " '(\"{0!s}\", \"{1!s}\");'.format(name, label)\n", + " levelsInserts.append(insertLevelsSQL)\n", + " \n", + "# records may be country specific, impute this from the presence of a word followed by \"specific\"\n", + "# in the label. E.g. \"Country specific\", \"Survey specific\"\n", + "for name, label in allRecords.iteritems():\n", + " m = re.match('^\\w+ specific', label)\n", + " if m:\n", + " specificText = m.group(0)\n", + " else:\n", + " specificText = \"No\"\n", + " \n", + " insertRecordsSQL = 'INSERT INTO dhs_records '\\\n", + " '(record_name, record_label, c_or_s_specific)' \\\n", + " ' VALUES '\\\n", + " '(\"{0!s}\", \"{1!s}\", \"{2!s}\");'.format(name, label, specificText)\n", + " recordsInserts.append(insertRecordsSQL)\n", + " \n", + "# items is the main thingy\n", + "for item in allItems:\n", + " insertItemsSQL = 'INSERT INTO dhs_recodes '\\\n", + " '(level_id, record_id, recode_id, recode_description, start, len, data_type, item_type, range_low_value, range_high_value)'\\\n", + " ' VALUES '\\\n", + " '(\"{0!s}\", \"{1!s}\", \"{2!s}\", \"{3!s}\", {4!s}, {5!s}, {6!s}, {7!s}, {8!s}, {9!s});'.format(\n", + " item['LevelName'], item['RecordName'], item['Name'], item['Label'], item['Start'], item['Len'], \n", + " '\"A\"', '\"B\"', # TODO change these\n", + " item['Range_Low_Value'] if item.has_key('Range_Low_Value') else '',\n", + " item['Range_High_Value'] if item.has_key('Range_High_Value') else '',\n", + " )\n", + " itemsInserts.append(insertItemsSQL)\n", + " if item.has_key('Values') and len(item['Values'])>0:\n", + " for valtuple in item['Values']:\n", + " insertValueSQL = 'INSERT INTO dhs_recode_values '\\\n", + " '(recode_id, value_code, value_description)' \\\n", + " ' VALUES '\\\n", + " '(\"{0!s}\", \"{1!s}\", \"{2!s}\");'.format(\n", + " item['Name'], valtuple[0], valtuple[1])\n", + " valuesInserts.append(insertValueSQL)\n", + "#print insertSQL\n", + "\n", + "\n" + ], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file diff --git a/MetadataManagement/DCF_Parser_Main.py b/MetadataManagement/DCF_Parser_Main.py new file mode 100644 index 0000000..222c432 --- /dev/null +++ b/MetadataManagement/DCF_Parser_Main.py @@ -0,0 +1,356 @@ +import re +import os +from difflib import SequenceMatcher as SM + +def parseDCF(self, dcfFile): + ''' + Parse a .DCF file (CSPro dictionary specification) into a structured object + + The result is a list where each item is a dictionary that represents a "DHS Recode" + i.e. column name in a given table. + This dictionary is suitable for writing out to a CSV file. + The item dictionary may have a "Values" key, whose value is itself a list of + dictionaries. Each of these subdictionaries represents a value that the associated + column can have (its value domain). The contents of the values key, if present, should be + written out to a separate CSV file. + + For example: + schemafields = ['FileCode','RecordName','RecordTypeValue', + 'RecordLabel','Name','Label','Start','Len', + 'Occurrences', 'ZeroFill', 'DecimalChar', 'Decimal'] + valfields = ['FileCode','Name','Value','ValueDesc', 'ValueType'] + res = parseDCF (dcfFileName) + for item in res: + outWriter.writerow([item[k]] if item.has_key[k] else '' for k in schemafields) + if 'Values' in item and len(item['Values'] > 0): + vals = item['Values'] + for val in vals: + valWriter.writerow([item['FileCode'], item['Name'], + val[0], val[1], val[2]]) + ''' + # We simply read the .DCF format file in line order, imputing the hierarchical structure from the order + # of things, i.e. the level and record of an item is the previous found level or record + # We also take advantage of the blank line between chunks as a line delimiter. + global parsedLines + parsedLines = 0 + + # within-survey "globals" i.e. things we need to keep track of between items + currentRecordName = 'N/A' + currentRecordLabel = 'N/A' + currentRecordType = 'N/A' + currentLevelName = '' + currentLevelLabel = '' + currentSurveyDecChar = False + currentSurveyZeroFill = False + + currentValues = [] + skippingChunk = False + + currentlyParsing = "None" + currentIdName = "None" + currentIdLabel = "None" + currentIdStart = 0 + currentIdLength = 0 + + myRecords = {} + myLevels = {} + myItems = [] + myCountries = {} + mySkippedChunks = [] + #currentSurveyCode = os.path.basename(dcfFile).split(os.extsep)[0] + currentSurveyCode = os.path.extsep.join(os.path.basename(dcfFile).split(os.path.extsep)[:-1]) + chunkInfo = { + 'FileCode':currentSurveyCode + } + + #with open(r'C:\Users\zool1301\Documents\DHS\Namibia_Test\Hierarchical Format\NMIR60.DCF') as fileIn: + with open(dcfFile) as fileIn: + #with open(r'C:\Users\zool1301\Documents\DHS\RecodeManuals\MRecode6.dcf') as fileIn: + + for line in fileIn: + parsedLines +=1 + # Are we on a chunk start (a line with something in [Brackets])? + if line.find('[Level]') != -1: + currentChunkType = "Level" + skippingChunk = False + chunkInfo = {} + elif line.find('[Record]') != -1: + currentChunkType = "Record" + currentlyParsing = "Records" + skippingChunk = False + chunkInfo = {} + elif line.find('[Item]') != -1: + currentChunkType = "Item" + skippingChunk = False + chunkInfo = {} + elif line.find('[ValueSet]') != -1: + currentChunkType = "ValueSet" + skippingChunk = False + chunkInfo = {} + elif line.find('[IdItems]') != -1: + currentChunkType = "IdItems" + skippingChunk = False + currentlyParsing = "IdItems" + currentIdStart = 0 + currentIdLength = 0 + currentIdName = "None" + chunkInfo = {} + elif line.find('[Dictionary]') != -1: + currentChunkType = "Dictionary" + currentlyParsing = "Dictionary" + skippingChunk = False + recordTypeStart = 0 + recordTypeLen = 0 + + elif line.find('[') != -1 and line.find(']') != -1: + # This is some chunk we don't know and/or care about. + skippingChunk = True + mySkippedChunks.append(line) + + # Or are we on the end of a chunk, marked by a blank line? + elif line == '\n': + if skippingChunk: + # this was a bunch of lines we skip (e.g. those following '[Dictionary]') + skippingChunk = False + else: + + if currentChunkType == 'Dictionary': + # This will be the first item in the file and will be written to the first + # row of the output. It's an item that describes for all lines of the data file + # where the record type can be found (start/len). It's a fudge to make this fit + # the overall row format which is designed to describe an item + chunkInfo['RecordName'] = '*' + chunkInfo['RecordLabel'] = '*' + chunkInfo['RecordTypeValue'] = '*' + # the record type positioning is labelled in the DCF as "RecordTypeStart"(Len) + # but we want to record it into the standard Start/Len columns of the output CSV + # so just copy it over + chunkInfo['Start'] = chunkInfo['RecordTypeStart'] + chunkInfo['Len'] = chunkInfo['RecordTypeLen'] + myItems.append(chunkInfo) + # set the default values for the item parsing info + currentSurveyZeroFill = chunkInfo['ZeroFill'] + currentSurveyDecChar = chunkInfo['DecimalChar'] + + # If we're at the end of a chunk defining a level or record then place the + # info into the globals so that the item parser will read them for items 7 + # that FOLLOW afterward + elif currentChunkType == 'Level': + currentLevelName = chunkInfo['Name'] + currentLevelLabel = chunkInfo['Label'] + if myLevels.has_key(currentLevelName): + if myLevels[currentLevelName] == currentLevelLabel: + print "Warning, duplicate level name/label encountered at line "+str(parsedLines) + else: + raise ValueError("Duplicate level name encountered at line {0!s} with non-matched label". + format(parsedLines)) + myLevels[currentLevelName] = currentLevelLabel + + elif currentChunkType == 'Record': + # save into dirty globals so the subsequent items know what record they belong to + currentRecordName = chunkInfo['Name'] + currentRecordLabel = chunkInfo['Label'] + currentRecordType = chunkInfo['RecordTypeValue'] + + # save an "item" with the new record name/type/label reflecting the + # id item for this record. In other words the first output row of each record + # will describe the record itself and in particular the start/len of the id item + chunkInfo['FileCode']=currentSurveyCode + chunkInfo['Name'] = currentIdName + chunkInfo['Label'] = currentIdLabel + chunkInfo['Start'] = currentIdStart + chunkInfo['Len'] = currentIdLength + # apply the parent hierarchical labels, just stored in simple globals + chunkInfo['RecordName'] = currentRecordName + chunkInfo['RecordLabel'] = currentRecordLabel + chunkInfo['RecordTypeValue'] = currentRecordType.strip("'") + chunkInfo['LevelName'] = currentLevelName + chunkInfo['LevelLabel'] = currentLevelLabel + myItems.append(chunkInfo) + + if myRecords.has_key(currentRecordName): + if myRecords[currentRecordName] == currentRecordLabel: + print "Warning, duplicate record name/label encountered at line "+str(parsedLines) + else: + raise ValueError("Duplicate record name encountered at line {0!s} with non-matched label". + format(parsedLines)) + myRecords[currentRecordName] = currentRecordLabel + + #elif currentChunkType == 'Dictionary' + + # If we're at the end of a chunk defining a valueset then place the info + # into the last-processed item - valueset comes AFTER the item and a blank line, + # so the item will have already been added to the output list myItems + elif currentChunkType == 'ValueSet': + # check it matches-ish. Either starts the same or text similarity is high + # - sometimes they abbreviate the valueset but not the previous label + s1 = chunkInfo['Label'] + s2 = myItems[-1]['Label'] + simRatio = SM(None,s1,s2).ratio() + if not (simRatio > 0.7 or chunkInfo['Label'].find(myItems[-1]['Label']) == 0): + print ("Warning, valueset did not seem to match item at line {0!s} of file {1!s} - please check!". + format(parsedLines,dcfFile)) + + if 'ValueRanges' in chunkInfo: + # If there was more than one range then expand each out to the individual values + # This occurs with something like 1:12=age in months, 13:112 = (age in years +12) + if len(chunkInfo['ValueRanges']) > 1: + for rangeInfo in chunkInfo['ValueRanges']: + thisRangeMin = int(rangeInfo[0]) + thisRangeMax = int(rangeInfo[1]) + thisRangeDesc = rangeInfo[2] + assert thisRangeMax > thisRangeMin + for expandedVal in range(thisRangeMin, thisRangeMax+1): + currentValues.append((expandedVal, thisRangeDesc, "ExpandedRange")) + else: + rangeInfo = chunkInfo['ValueRanges'][0] + currentValues.append((rangeInfo[0],rangeInfo[2],"RangeMin")) + currentValues.append((rangeInfo[1],rangeInfo[2],"RangeMax")) + #myItems[-1]['Range_Low_Value'] = rangeInfo[0] + #myItems[-1]['Range_High_Value'] = rangeInfo[1] + #myItems[-1]['Range_Desc'] = rangeInfo[2] + + if myItems[-1].has_key('Values'): + # one item in the file (potentially more in others?) has two valueset chunks! + myItems[-1]['Values'].extend(currentValues) + else: + myItems[-1]['Values'] = currentValues + #if chunkInfo.has_key('Range_Low_Value'): + # myItems[-1]['Range_Low_Value'] = chunkInfo['Range_Low_Value'] + #if chunkInfo.has_key('Range_High_Value'): + # myItems[-1]['Range_High_Value'] = chunkInfo['Range_High_Value'] + #if chunkInfo.has_key('Range_Desc'): + # myItems[-1]['Range_Desc'] = chunkInfo['Range_Desc'] + currentValues = [] + #else: + # raise ValueError("Error parsing valueset at line "+str(parsedLines)) + + + # Otherwise we are at the end of a chunk defining an actual item (recode) + elif currentChunkType == 'Item': + if currentlyParsing == "Records": + # apply the parent hierarchical labels, just stored in simple globals + # info of the + chunkInfo['RecordName'] = currentRecordName + chunkInfo['RecordLabel'] = currentRecordLabel + chunkInfo['RecordTypeValue'] = currentRecordType.strip("'") + chunkInfo['LevelName'] = currentLevelName + chunkInfo['LevelLabel'] = currentLevelLabel + chunkInfo['FileCode']=currentSurveyCode + if not 'ZeroFill' in chunkInfo: + chunkInfo['ZeroFill'] = currentSurveyZeroFill + if not 'DecimalChar' in chunkInfo: + chunkInfo['DecimalChar'] = currentSurveyDecChar + + # "save" the information to the output list + myItems.append(chunkInfo) + elif currentlyParsing == "IdItems": + # this is a special case; it needs to be written out as an "item" for + # each record. In the .dcf, IdItems comes after level info but before record + # info. So save the info into dirty globals so that when we parse the record + # info that follows we have access to it. + currentIdName = chunkInfo['Name'] + currentIdLabel = chunkInfo['Label'] + currentIdStart = chunkInfo['Start'] + currentIdLength = chunkInfo['Len'] + else: + # We are "within" a chunk of information + # add item key / value to the current chunk dictionary + # There are sometimes lines with more than one equals sign in (as it can appear in the + # description) so split at the FIRST = position only and clear up a bit (carriage return) + splitPos = line.find('=') + fieldName = line[0:splitPos].strip() + fieldVal = line[splitPos+1:].strip() + #fieldName,fieldVal = line.split('=') + + if fieldName == 'Value': + # we don't explicitly check that we're in a valueset chunk, but we will be(?) + + # Look for a description first. Because if a description contains a time + # then this would be seen as a range below + # e.g. Value=1;Yes: between 2:00 and 6:00 pm + descMatch = re.split(';(.*)$', fieldVal) + if len(descMatch) > 1: + valDesc = descMatch[1] + fieldVal = descMatch[0] + else: + valDesc = '' + + # match value ranges based on pattern "digits-colon-digits" + # Add these to a separate list of valueranges, because we will write them out differently + # depending on whether there is one or more than one range specified + match = re.search('\d+:\d+', fieldVal) + if match: + try: + # the right hand side sometimes contains a description of the range values + # after a semicolon + #descMatch = re.search('^(.*);(\w+)$', fieldVal) + #if descMatch: + # valDesc = descMatch.group(1) + #else: + # valDesc = '' + + # again don't just split and unpack, in case there is a colon in the description too + # also sometimes we see multiple ranges on one line e.g. line 35629 of COIR53.DCF: + # 100:101 102:198;Days + rangesOnLine = re.findall('\d+:\d+', fieldVal) + for minmax in rangesOnLine: + splitPos = minmax.find(':') + vMin = minmax[0:splitPos].strip() + vMax = minmax[splitPos+1:].strip() + if not 'ValueRanges' in chunkInfo: + chunkInfo['ValueRanges'] = [] + chunkInfo['ValueRanges'].append((vMin, vMax, valDesc.strip())) + + #if re.match('\d+;', vMax): + # splitPos = vMax.find(';') + # vMaxNew = vMax[0:splitPos] + # valDesc = vMax[splitPos+1:] + # vMax = vMaxNew + # if it doesn't then use the valueset label instead + #else: + # valDesc = chunkInfo['Label'] + # valDesc = '' + except: + print "uhoh!" + print fieldVal + print chunkInfo + + valRange, otherCrap = fieldVal.split(';') + vMin,vMax = valRange.split(':') + if not 'ValueRanges' in chunkInfo: + chunkInfo['ValueRanges'] = [] + chunkInfo['ValueRanges'].append((vMin, vMax, valDesc.strip())) + + # match "normal" value/description pairs based on digits-semicolon + #elif re.match('\d+', fieldVal): + # split at pos of first semicolon + #scPos = fieldVal.find(';') + #val = fieldVal[0:scPos] + #valDesc = fieldVal[scPos+1:] + # do not just split at semicolon because semicolon might also occur within the desc + #val, valDesc = fieldVal.split(';') + # m = re.match('\d+', fieldVal) + # val = m.group() + # currentValues.append((val.strip(),valDesc.strip(), "ExplicitValue")) + + # match horrible lines with VALUE given as string with quotes (see VCAL_VS1) + #elif re.match('.+;', fieldVal): + # scPos = fieldVal.find(';') + # val = fieldVal[0:scPos] + # valDesc = fieldVal[scPos+1:] + #val, valDesc = fieldVal.split(';') + # currentValues.append((val.strip("'").strip(),valDesc.strip("'").strip(), "ExplicitValue")) + + # else save whatever we've got, presumably there is a value with no desc + else: + currentValues.append((fieldVal,valDesc.strip(), "ExplicitValue")) + + + + + elif not chunkInfo.has_key(fieldName): + # append the first occurrence of other labels. Subsequent ones will be silently discarded + chunkInfo[fieldName] = fieldVal + print "Parsed {0!s} lines into {1!s} items".format(parsedLines,len(myItems)) + return myItems \ No newline at end of file diff --git a/MetadataManagement/README.md b/MetadataManagement/README.md new file mode 100644 index 0000000..45b6697 --- /dev/null +++ b/MetadataManagement/README.md @@ -0,0 +1,9 @@ +DHS / CSPro schema extraction +----------------------------- + +This directory contains code to extract schema information from the .DCF CSPro format data specification files, and save this information to CSV files or to the MAP database. + +The main code to parse a DCF file is in DCF_Parser_Main.py. + +This can be called either from an IPython notebook (DCF_Parser.ipynb) or from an FME workbench (import_dhs_survey_metadata_from_dcfs.fmw) + diff --git a/MetadataManagement/import_dhs_survey_metadata.fmw b/MetadataManagement/import_dhs_survey_metadata.fmw new file mode 100644 index 0000000..f7ddb43 --- /dev/null +++ b/MetadataManagement/import_dhs_survey_metadata.fmw @@ -0,0 +1,4247 @@ +#! +#! localhost:5432dhs" +# --DestDataset_POSTGRES_3 "postgreslocalhost:5432dhs" +# --dcf_file "C:\Users\zool1301\Documents\DHS\Phase6\ExtractedSurveysAndShapes\BFIR62.DCF" +# +# +#! FME_GEOMETRY_HANDLING="Enhanced" +#! FME_BUILD_NUM="15479" +#! ATTR_TYPE_ENCODING="SDF" +#! DESTINATION_ROUTING_FILE="" +#! LOG_FILE="" +#! CATEGORY="" +#! END_TCL="" +#! REQUIREMENTS_KEYWORD="" +#! LOG_MAX_PRECISION="Yes" +#! BEGIN_TCL="" +#! WORKSPACE_VERSION="1" +#! BEGIN_PYTHON="" +#! FME_DOCUMENT_GUID="2d45fc6d-2c99-4131-ae40-a3669fbc9021" +#! DESTINATION="NONE" +#! SHOW_INFO_NODES="true" +#! VIEW_POSITION="-1972.15 1126.24" +#! FME_SERVER_SERVICES="" +#! TITLE="" +#! DESCRIPTION="" +#! REDIRECT_TERMINATORS="NONE" +#! LEGAL_TERMS_CONDITIONS="" +#! END_PYTHON="" +#! SOURCE="NONE" +#! DOC_TOP_LEFT="-654.096 -4135.06" +#! SOURCE_ROUTING_FILE="" +#! LAST_SAVE_DATE="2015-05-15T15:47:55" +#! HISTORY="" +#! ZOOM_SCALE="61" +#! MAX_LOG_FEATURES="200" +#! MULTI_WRITER_DATASET_ORDER="BY_ID" +#! LOG_MAX_RECORDED_FEATURES="200" +#! LAST_SAVE_BUILD="FME(R) 2015.1.0.0 (20150426 - Build 15479 - WIN64)" +#! FME_IMPLICIT_CSMAP_REPROJECTION_MODE="Auto" +#! PASSWORD="" +#! IGNORE_READER_FAILURE="No" +#! SHOW_ANNOTATIONS="true" +#! DOC_EXTENTS="7573.8 5133.43" +#! USAGE="" +#! FME_REPROJECTION_ENGINE="FME" +#! FME_STROKE_MAX_DEVIATION="0" +#! FME_DOCUMENT_PRIORGUID="7068a455-0aa6-45f0-8de5-3a36265d1d4e,cd768d5e-d6ab-4b1b-a327-184aee2f6e1f" +#! WARN_INVALID_XFORM_PARAM="Yes" +#! REQUIREMENTS="" +#! > +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +GUI IGNORE SourceDataset_CSV_3,CSV_IN_NETWORK_AUTHENTICATION_CSV_3,_SKIP_LINES_CSV_3,_SKIP_FOOTER_CSV_3,_STRIP_QUOTES_CSV_3,_DUPLICATE_DELIMS_CSV_3,SORT_GROUP_CSV_3,_SORT_PARAMS_CSV_3,FILTER_GROUP_CSV_3,_FILTER_PARAMS_CSV_3,_ENCODING_CSV_3,SourceDataset_CSV_1,CSV_IN_NETWORK_AUTHENTICATION_CSV_1,_SKIP_LINES_CSV_1,_SKIP_FOOTER_CSV_1,_STRIP_QUOTES_CSV_1,_DUPLICATE_DELIMS_CSV_1,SORT_GROUP_CSV_1,_SORT_PARAMS_CSV_1,FILTER_GROUP_CSV_1,_FILTER_PARAMS_CSV_1,_ENCODING_CSV_1,SourceDataset_CSV_2,CSV_IN_NETWORK_AUTHENTICATION_CSV_2,_SKIP_LINES_CSV_2,_SKIP_FOOTER_CSV_2,_STRIP_QUOTES_CSV_2,_DUPLICATE_DELIMS_CSV_2,SORT_GROUP_CSV_2,_SORT_PARAMS_CSV_2,FILTER_GROUP_CSV_2,_FILTER_PARAMS_CSV_2,_ENCODING_CSV_2,DestDataset_POSTGRES_1,POSTGRES_OUT_WRITER_MODE_POSTGRES_1,POSTGRES_OUT_START_TRANSACTION_POSTGRES_1,POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_1,POSTGRES_OUT_BULK_COPY_POSTGRES_1,POSTGRES_OUT_BEGIN_SQL_POSTGRES_1,POSTGRES_OUT_END_SQL_POSTGRES_1,DestDataset_POSTGRES_2,POSTGRES_OUT_WRITER_MODE_POSTGRES_2,POSTGRES_OUT_START_TRANSACTION_POSTGRES_2,POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_2,POSTGRES_OUT_BULK_COPY_POSTGRES_2,POSTGRES_OUT_BEGIN_SQL_POSTGRES_2,POSTGRES_OUT_END_SQL_POSTGRES_2 +DEFAULT_MACRO SourceDataset_CSV C:\Users\zool1301\Documents\DHS\Phase5\SurveySpecs_Final\ALIR50.FlatRecordSpec.csv +GUI MULTIFILE SourceDataset_CSV CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +DEFAULT_MACRO SourceDataset_CSV_5 C:\Users\zool1301\Documents\DHS\Phase5\SurveySpecs_Final\ALIR50.FlatValuesSpec.csv +GUI MULTIFILE SourceDataset_CSV_5 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +DEFAULT_MACRO SourceDataset_CSV_4 C:\Users\zool1301\Documents\DHS\DHS_Info\SurveyIdsByFile_P5.csv +GUI MULTIFILE SourceDataset_CSV_4 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +DEFAULT_MACRO DestDataset_POSTGRES postgreslocalhost:5432dhs +GUI NAMED_DB_CONNECTION_ENCODED DestDataset_POSTGRES FMT:POSTGRES Connection: +DEFAULT_MACRO DestDataset_POSTGRES_3 postgreslocalhost:5432dhs +GUI NAMED_DB_CONNECTION_ENCODED DestDataset_POSTGRES_3 FMT:POSTGRES Connection: +DEFAULT_MACRO dcf_file C:\Users\zool1301\Documents\DHS\Phase6\ExtractedSurveysAndShapes\BFIR62.DCF +GUI FILENAME_EXISTING dcf_file dcf_files|*.dcf dcf filename: +INCLUDE [ if {{$(SourceDataset_CSV)} == {}} { puts_real {Parameter 'SourceDataset_CSV' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(SourceDataset_CSV_5)} == {}} { puts_real {Parameter 'SourceDataset_CSV_5' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(SourceDataset_CSV_4)} == {}} { puts_real {Parameter 'SourceDataset_CSV_4' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(DestDataset_POSTGRES)} == {}} { puts_real {Parameter 'DestDataset_POSTGRES' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(DestDataset_POSTGRES_3)} == {}} { puts_real {Parameter 'DestDataset_POSTGRES_3' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(dcf_file)} == {}} { puts_real {Parameter 'dcf_file' must be given a value.}; exit 1; }; ] +#! START_HEADER +#! START_WB_HEADER +READER_TYPE MULTI_READER +MULTI_READER_TYPE{0} CSV +MULTI_READER_KEYWORD{0} CSV_3 +MULTI_READER_GEN_DIRECTIVES{0} groupBox_6,,groupBox,,SCAN_MAX_FEATURES,1000,_FIELD_NAMES_AFTER_HEADER,no,_ENCODING,,_FILTER_PARAMS,,FILTER_GROUP,NO,_SCHEMA,char7char7char4char50char12char77number40number30number30number50char40char13,SORT_GROUP,NO,_FILTER_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTES%%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no,_SORT_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTES%%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending,_SKIP_FOOTER,0,_DUPLICATE_DELIMS,no,_IN_FIELD_NAMES,YES,_SCHEMA_WITH_COL_NAMES,FileCodechar7RecordNamechar7RecordTypeValuechar4RecordLabelchar50Namechar12Labelchar77Startnumber40Lennumber30Occurrencesnumber30Range_Low_Valuenumber50Range_High_Valuechar40FMETYPEchar13,_GROUP_BY_DATASET,no,_STRIP_QUOTES,yes,_MERGE_SCHEMAS,YES,_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_SKIP_LINES,1,_SORT_PARAMS,,groupBox_2,,groupBox_4,,groupBox_5,,_IN_SEPARATOR, +MULTI_READER_TYPE{1} CSV +MULTI_READER_KEYWORD{1} CSV_1 +MULTI_READER_GEN_DIRECTIVES{1} groupBox_6,,groupBox,,SCAN_MAX_FEATURES,1000,_FIELD_NAMES_AFTER_HEADER,no,_ENCODING,,_FILTER_PARAMS,,FILTER_GROUP,NO,_SCHEMA,char7char7char4char50char12char77number40number30number30number50char40char13,SORT_GROUP,NO,_FILTER_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%RecordName%RecordTypeValue%RecordLabel%Name%Label%Start%Len%Occurrences%Range_Low_Value%Range_High_Value%FMETYPE%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no,_SORT_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%RecordName%RecordTypeValue%RecordLabel%Name%Label%Start%Len%Occurrences%Range_Low_Value%Range_High_Value%FMETYPE%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending,_SKIP_FOOTER,0,_DUPLICATE_DELIMS,no,_IN_FIELD_NAMES,YES,_SCHEMA_WITH_COL_NAMES,FileCodechar7RecordNamechar7RecordTypeValuechar4RecordLabelchar50Namechar12Labelchar77Startnumber40Lennumber30Occurrencesnumber30Range_Low_Valuenumber50Range_High_Valuechar40FMETYPEchar13,_GROUP_BY_DATASET,no,_STRIP_QUOTES,yes,_MERGE_SCHEMAS,YES,_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_SKIP_LINES,1,_SORT_PARAMS,,groupBox_2,,groupBox_4,,groupBox_5,,_IN_SEPARATOR, +MULTI_READER_TYPE{2} CSV +MULTI_READER_KEYWORD{2} CSV_2 +MULTI_READER_GEN_DIRECTIVES{2} groupBox_6,,groupBox,,SCAN_MAX_FEATURES,1000,_FIELD_NAMES_AFTER_HEADER,no,_ENCODING,,_FILTER_PARAMS,,FILTER_GROUP,NO,_SCHEMA,char7char7char4char50char12char77number40number30number30number50char40char13,SORT_GROUP,NO,_FILTER_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTES%%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no,_SORT_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTES%%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending,_SKIP_FOOTER,0,_DUPLICATE_DELIMS,no,_IN_FIELD_NAMES,YES,_SCHEMA_WITH_COL_NAMES,FileCodechar7RecordNamechar7RecordTypeValuechar4RecordLabelchar50Namechar12Labelchar77Startnumber40Lennumber30Occurrencesnumber30Range_Low_Valuenumber50Range_High_Valuechar40FMETYPEchar13,_GROUP_BY_DATASET,no,_STRIP_QUOTES,yes,_MERGE_SCHEMAS,YES,_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_SKIP_LINES,1,_SORT_PARAMS,,groupBox_2,,groupBox_4,,groupBox_5,,_IN_SEPARATOR, +WRITER_TYPE MULTI_WRITER +MULTI_WRITER_DATASET_ORDER BY_ID +MULTI_WRITER_FIRST_WRITER_ID 0 +MULTI_WRITER_TYPE{0} POSTGRES +MULTI_WRITER_KEYWORD{0} POSTGRES_1 +MULTI_WRITER_TYPE{1} POSTGRES +MULTI_WRITER_KEYWORD{1} POSTGRES_2 +#! END_WB_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_3" +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_3 +# ============================================================================ +# The following GUI line prompts for a folder to be used as the +# source of the CSV files. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_CSV_3 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_3 +DEFAULT_MACRO SourceDataset_CSV_3 $(SourceDataset_CSV_4) +GUI MULTIFILE SourceDataset_CSV_3 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +# ============================================================================ +# Hardcode the settings that were used to generate this mapping file +# +DEFAULT_MACRO _SCHEMA_CSV_3 char,7,,char,7,,char,4,,char,50,,char,12,,char,77,,number,4,0,number,3,0,number,3,0,number,5,0,char,40,,char,13, +DEFAULT_MACRO _IN_FIELD_NAMES_CSV_3 YES +DEFAULT_MACRO _FIELD_NAMES_AFTER_HEADER_CSV_3 no +DEFAULT_MACRO _EXTENSION_CSV_3 CSV +DEFAULT_MACRO _ALLOW_SPACES_IN_COLUMN_NAMES_CSV_3 yes +DEFAULT_MACRO _GROUP_BY_DATASET_CSV_3 no +CSV_3_SCHEMA char,7,,char,7,,char,4,,char,50,,char,12,,char,77,,number,4,0,number,3,0,number,3,0,number,5,0,char,40,,char,13, +DEFAULT_MACRO _SKIP_LINES_CSV_3 1 +CSV_3_SKIP_LINES $(_SKIP_LINES_CSV_3) +DEFAULT_MACRO _SKIP_FOOTER_CSV_3 0 +CSV_3_SKIP_FOOTER $(_SKIP_FOOTER_CSV_3) +CSV_3_FIELD_NAMES $(_IN_FIELD_NAMES_CSV_3) +CSV_3_FIELD_NAMES_AFTER_HEADER $(_FIELD_NAMES_AFTER_HEADER_CSV_3) +DEFAULT_MACRO _STRIP_QUOTES_CSV_3 yes +CSV_3_STRIP_QUOTES $(_STRIP_QUOTES_CSV_3) +CSV_3_SEPARATOR (",") +CSV_3_EXTENSION CSV +DEFAULT_MACRO _DUPLICATE_DELIMS_CSV_3 no +CSV_3_DUPLICATE_DELIMS $(_DUPLICATE_DELIMS_CSV_3) +CSV_3_SEQUENCED no +CSV_3_ALLOW_SPACES_IN_COLUMN_NAMES $(_ALLOW_SPACES_IN_COLUMN_NAMES_CSV_3) +CSV_3_GROUP_BY_DATASET $(_GROUP_BY_DATASET_CSV_3) +DEFAULT_MACRO SORT_GROUP_CSV_3 NO +CSV_3_SORT_GROUP $(SORT_GROUP_CSV_3) +DEFAULT_MACRO _SORT_PARAMS_CSV_3 +CSV_3_SORT_PARAMS $(_SORT_PARAMS_CSV_3) +DEFAULT_MACRO FILTER_GROUP_CSV_3 NO +CSV_3_FILTER_GROUP $(FILTER_GROUP_CSV_3) +DEFAULT_MACRO _FILTER_PARAMS_CSV_3 +CSV_3_FILTER_PARAMS $(_FILTER_PARAMS_CSV_3) +# ===================================================================== +# Provide some control over what attributes have the user-selected +# encoding applied. Normally all attributes are updated after being +# read, but the following lines exclude from this treatment all +# attributes whose names start with fme_ or csv_. +CSV_3_UNENCODED_ATTR_PREFIX fme_ csv_ +# =========================================================================== +DEFAULT_MACRO CSV_IN_NETWORK_AUTHENTICATION_CSV_3 +CSV_3_NETWORK_AUTHENTICATION "$(CSV_IN_NETWORK_AUTHENTICATION_CSV_3)" +GUI OPTIONAL AUTHENTICATOR CSV_IN_NETWORK_AUTHENTICATION_CSV_3 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI INTEGER _SKIP_LINES_CSV_3 Number of Lines to Skip: +GUI INTEGER _SKIP_FOOTER_CSV_3 Number of Footer Lines to Skip: +# GUI CHOICE _IN_FIELD_NAMES yes%no Field Names in File: +# GUI CHOICE _FIELD_NAMES_AFTER_HEADER yes%no Field After Header: +GUI CHOICE _STRIP_QUOTES_CSV_3 yes%no Strip Quotes From Fields: +# GUI TEXT _IN_SEPARATOR Field Delimiter: +# GUI TEXT _EXTENSION Default File Extension: +GUI CHOICE _DUPLICATE_DELIMS_CSV_3 yes%no Skip Duplicate Delimiters: +GUI CHOICE SORT_GROUP_CSV_3 yes%no Sorting Enabled: +GUI OPTIONAL GUI_LINE_TABLE _SORT_PARAMS_CSV_3 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Attribute"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES %"%%"Alpha/Num"%"LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric"%alphabetic%"Order"%"LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending"%ascending Sorting Parameters: +GUI CHOICE FILTER_GROUP_CSV_3 yes%no Filter Enabled: +GUI OPTIONAL GUI_LINE_TABLE _FILTER_PARAMS_CSV_3 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Field Name"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES %"%%"Filter"%"STRING_ENCODED _FILTER_REGEX "%%"Invert Filter"%"CHECKBOX _FILTER_UNMATCHED yes%no"%no Filter Parameters: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO _ENCODING_CSV_3 +GUI OPTIONAL STRING_OR_ENCODING _ENCODING_CSV_3 SYSTEM%* Character Encoding: +CSV_3_ENCODING $(_ENCODING_CSV_3) +CSV_3_DATASET "$(SourceDataset_CSV_3)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_1 +# ============================================================================ +# The following GUI line prompts for a folder to be used as the +# source of the CSV files. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_CSV_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_1 +DEFAULT_MACRO SourceDataset_CSV_1 $(SourceDataset_CSV) +GUI MULTIFILE SourceDataset_CSV_1 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +# ============================================================================ +# Hardcode the settings that were used to generate this mapping file +# +DEFAULT_MACRO _SCHEMA_CSV_1 char,7,,char,7,,char,4,,char,50,,char,12,,char,77,,number,4,0,number,3,0,number,3,0,number,5,0,char,40,,char,13, +DEFAULT_MACRO _IN_FIELD_NAMES_CSV_1 YES +DEFAULT_MACRO _FIELD_NAMES_AFTER_HEADER_CSV_1 no +DEFAULT_MACRO _EXTENSION_CSV_1 CSV +DEFAULT_MACRO _ALLOW_SPACES_IN_COLUMN_NAMES_CSV_1 yes +DEFAULT_MACRO _GROUP_BY_DATASET_CSV_1 no +CSV_1_SCHEMA char,7,,char,7,,char,4,,char,50,,char,12,,char,77,,number,4,0,number,3,0,number,3,0,number,5,0,char,40,,char,13, +DEFAULT_MACRO _SKIP_LINES_CSV_1 1 +CSV_1_SKIP_LINES $(_SKIP_LINES_CSV_1) +DEFAULT_MACRO _SKIP_FOOTER_CSV_1 0 +CSV_1_SKIP_FOOTER $(_SKIP_FOOTER_CSV_1) +CSV_1_FIELD_NAMES $(_IN_FIELD_NAMES_CSV_1) +CSV_1_FIELD_NAMES_AFTER_HEADER $(_FIELD_NAMES_AFTER_HEADER_CSV_1) +DEFAULT_MACRO _STRIP_QUOTES_CSV_1 yes +CSV_1_STRIP_QUOTES $(_STRIP_QUOTES_CSV_1) +CSV_1_SEPARATOR (",") +CSV_1_EXTENSION CSV +DEFAULT_MACRO _DUPLICATE_DELIMS_CSV_1 no +CSV_1_DUPLICATE_DELIMS $(_DUPLICATE_DELIMS_CSV_1) +CSV_1_SEQUENCED no +CSV_1_ALLOW_SPACES_IN_COLUMN_NAMES $(_ALLOW_SPACES_IN_COLUMN_NAMES_CSV_1) +CSV_1_GROUP_BY_DATASET $(_GROUP_BY_DATASET_CSV_1) +DEFAULT_MACRO SORT_GROUP_CSV_1 NO +CSV_1_SORT_GROUP $(SORT_GROUP_CSV_1) +DEFAULT_MACRO _SORT_PARAMS_CSV_1 +CSV_1_SORT_PARAMS $(_SORT_PARAMS_CSV_1) +DEFAULT_MACRO FILTER_GROUP_CSV_1 NO +CSV_1_FILTER_GROUP $(FILTER_GROUP_CSV_1) +DEFAULT_MACRO _FILTER_PARAMS_CSV_1 +CSV_1_FILTER_PARAMS $(_FILTER_PARAMS_CSV_1) +# ===================================================================== +# Provide some control over what attributes have the user-selected +# encoding applied. Normally all attributes are updated after being +# read, but the following lines exclude from this treatment all +# attributes whose names start with fme_ or csv_. +CSV_1_UNENCODED_ATTR_PREFIX fme_ csv_ +# =========================================================================== +DEFAULT_MACRO CSV_IN_NETWORK_AUTHENTICATION_CSV_1 +CSV_1_NETWORK_AUTHENTICATION "$(CSV_IN_NETWORK_AUTHENTICATION_CSV_1)" +GUI OPTIONAL AUTHENTICATOR CSV_IN_NETWORK_AUTHENTICATION_CSV_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI INTEGER _SKIP_LINES_CSV_1 Number of Lines to Skip: +GUI INTEGER _SKIP_FOOTER_CSV_1 Number of Footer Lines to Skip: +# GUI CHOICE _IN_FIELD_NAMES yes%no Field Names in File: +# GUI CHOICE _FIELD_NAMES_AFTER_HEADER yes%no Field After Header: +GUI CHOICE _STRIP_QUOTES_CSV_1 yes%no Strip Quotes From Fields: +# GUI TEXT _IN_SEPARATOR Field Delimiter: +# GUI TEXT _EXTENSION Default File Extension: +GUI CHOICE _DUPLICATE_DELIMS_CSV_1 yes%no Skip Duplicate Delimiters: +GUI CHOICE SORT_GROUP_CSV_1 yes%no Sorting Enabled: +GUI OPTIONAL GUI_LINE_TABLE _SORT_PARAMS_CSV_1 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Attribute"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%RecordName%RecordTypeValue%RecordLabel%Name%Label%Start%Len%Occurrences%Range_Low_Value%Range_High_Value%FMETYPE"%%"Alpha/Num"%"LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric"%alphabetic%"Order"%"LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending"%ascending Sorting Parameters: +GUI CHOICE FILTER_GROUP_CSV_1 yes%no Filter Enabled: +GUI OPTIONAL GUI_LINE_TABLE _FILTER_PARAMS_CSV_1 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Field Name"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%RecordName%RecordTypeValue%RecordLabel%Name%Label%Start%Len%Occurrences%Range_Low_Value%Range_High_Value%FMETYPE"%%"Filter"%"STRING_ENCODED _FILTER_REGEX "%%"Invert Filter"%"CHECKBOX _FILTER_UNMATCHED yes%no"%no Filter Parameters: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO _ENCODING_CSV_1 +GUI OPTIONAL STRING_OR_ENCODING _ENCODING_CSV_1 SYSTEM%* Character Encoding: +CSV_1_ENCODING $(_ENCODING_CSV_1) +CSV_1_DATASET "$(SourceDataset_CSV_1)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_2" +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_2 +# ============================================================================ +# The following GUI line prompts for a folder to be used as the +# source of the CSV files. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_CSV_2 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_2 +DEFAULT_MACRO SourceDataset_CSV_2 $(SourceDataset_CSV_5) +GUI MULTIFILE SourceDataset_CSV_2 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +# ============================================================================ +# Hardcode the settings that were used to generate this mapping file +# +DEFAULT_MACRO _SCHEMA_CSV_2 char,7,,char,7,,char,4,,char,50,,char,12,,char,77,,number,4,0,number,3,0,number,3,0,number,5,0,char,40,,char,13, +DEFAULT_MACRO _IN_FIELD_NAMES_CSV_2 YES +DEFAULT_MACRO _FIELD_NAMES_AFTER_HEADER_CSV_2 no +DEFAULT_MACRO _EXTENSION_CSV_2 CSV +DEFAULT_MACRO _ALLOW_SPACES_IN_COLUMN_NAMES_CSV_2 yes +DEFAULT_MACRO _GROUP_BY_DATASET_CSV_2 no +CSV_2_SCHEMA char,7,,char,7,,char,4,,char,50,,char,12,,char,77,,number,4,0,number,3,0,number,3,0,number,5,0,char,40,,char,13, +DEFAULT_MACRO _SKIP_LINES_CSV_2 1 +CSV_2_SKIP_LINES $(_SKIP_LINES_CSV_2) +DEFAULT_MACRO _SKIP_FOOTER_CSV_2 0 +CSV_2_SKIP_FOOTER $(_SKIP_FOOTER_CSV_2) +CSV_2_FIELD_NAMES $(_IN_FIELD_NAMES_CSV_2) +CSV_2_FIELD_NAMES_AFTER_HEADER $(_FIELD_NAMES_AFTER_HEADER_CSV_2) +DEFAULT_MACRO _STRIP_QUOTES_CSV_2 yes +CSV_2_STRIP_QUOTES $(_STRIP_QUOTES_CSV_2) +CSV_2_SEPARATOR (",") +CSV_2_EXTENSION CSV +DEFAULT_MACRO _DUPLICATE_DELIMS_CSV_2 no +CSV_2_DUPLICATE_DELIMS $(_DUPLICATE_DELIMS_CSV_2) +CSV_2_SEQUENCED no +CSV_2_ALLOW_SPACES_IN_COLUMN_NAMES $(_ALLOW_SPACES_IN_COLUMN_NAMES_CSV_2) +CSV_2_GROUP_BY_DATASET $(_GROUP_BY_DATASET_CSV_2) +DEFAULT_MACRO SORT_GROUP_CSV_2 NO +CSV_2_SORT_GROUP $(SORT_GROUP_CSV_2) +DEFAULT_MACRO _SORT_PARAMS_CSV_2 +CSV_2_SORT_PARAMS $(_SORT_PARAMS_CSV_2) +DEFAULT_MACRO FILTER_GROUP_CSV_2 NO +CSV_2_FILTER_GROUP $(FILTER_GROUP_CSV_2) +DEFAULT_MACRO _FILTER_PARAMS_CSV_2 +CSV_2_FILTER_PARAMS $(_FILTER_PARAMS_CSV_2) +# ===================================================================== +# Provide some control over what attributes have the user-selected +# encoding applied. Normally all attributes are updated after being +# read, but the following lines exclude from this treatment all +# attributes whose names start with fme_ or csv_. +CSV_2_UNENCODED_ATTR_PREFIX fme_ csv_ +# =========================================================================== +DEFAULT_MACRO CSV_IN_NETWORK_AUTHENTICATION_CSV_2 +CSV_2_NETWORK_AUTHENTICATION "$(CSV_IN_NETWORK_AUTHENTICATION_CSV_2)" +GUI OPTIONAL AUTHENTICATOR CSV_IN_NETWORK_AUTHENTICATION_CSV_2 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI INTEGER _SKIP_LINES_CSV_2 Number of Lines to Skip: +GUI INTEGER _SKIP_FOOTER_CSV_2 Number of Footer Lines to Skip: +# GUI CHOICE _IN_FIELD_NAMES yes%no Field Names in File: +# GUI CHOICE _FIELD_NAMES_AFTER_HEADER yes%no Field After Header: +GUI CHOICE _STRIP_QUOTES_CSV_2 yes%no Strip Quotes From Fields: +# GUI TEXT _IN_SEPARATOR Field Delimiter: +# GUI TEXT _EXTENSION Default File Extension: +GUI CHOICE _DUPLICATE_DELIMS_CSV_2 yes%no Skip Duplicate Delimiters: +GUI CHOICE SORT_GROUP_CSV_2 yes%no Sorting Enabled: +GUI OPTIONAL GUI_LINE_TABLE _SORT_PARAMS_CSV_2 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Attribute"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES %"%%"Alpha/Num"%"LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric"%alphabetic%"Order"%"LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending"%ascending Sorting Parameters: +GUI CHOICE FILTER_GROUP_CSV_2 yes%no Filter Enabled: +GUI OPTIONAL GUI_LINE_TABLE _FILTER_PARAMS_CSV_2 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Field Name"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES %"%%"Filter"%"STRING_ENCODED _FILTER_REGEX "%%"Invert Filter"%"CHECKBOX _FILTER_UNMATCHED yes%no"%no Filter Parameters: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO _ENCODING_CSV_2 +GUI OPTIONAL STRING_OR_ENCODING _ENCODING_CSV_2 SYSTEM%* Character Encoding: +CSV_2_ENCODING $(_ENCODING_CSV_2) +CSV_2_DATASET "$(SourceDataset_CSV_2)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "POSTGRES_1" +#! END_WB_HEADER +#! START_DEST_HEADER POSTGRES POSTGRES_1 +#! END_DEST_HEADER +#! START_WB_HEADER +DEFAULT_MACRO DestDataset +INCLUDE [ if {"$(DestDataset)" != ""} { \ + puts {DEFAULT_MACRO DestDataset_POSTGRES_1 $(DestDataset)} \ + } ] +#! END_WB_HEADER +#! START_DEST_HEADER POSTGRES POSTGRES_1 +DEFAULT_MACRO DestDataset_POSTGRES_1 $(DestDataset_POSTGRES) +GUI NAMED_DB_CONNECTION_ENCODED DestDataset_POSTGRES_1 FMT:POSTGRES Connection: +# ============================================================================ +# Opt in for destination dataset type vs format type validation +DEFAULT_MACRO POSTGRES_OUT_DESTINATION_DATASETTYPE_VALIDATION_POSTGRES_1 Yes +POSTGRES_1_DESTINATION_DATASETTYPE_VALIDATION "$(POSTGRES_OUT_DESTINATION_DATASETTYPE_VALIDATION_POSTGRES_1)" +DEFAULT_MACRO POSTGRES_OUT_WRITER_MODE_POSTGRES_1 INSERT +GUI CHOICE POSTGRES_OUT_WRITER_MODE_POSTGRES_1 INSERT%UPDATE%DELETE Writer Mode: +POSTGRES_1_WRITER_MODE $(POSTGRES_OUT_WRITER_MODE_POSTGRES_1) +DEFAULT_MACRO POSTGRES_OUT_START_TRANSACTION_POSTGRES_1 0 +GUI TEXT POSTGRES_OUT_START_TRANSACTION_POSTGRES_1 Starting Feature: +POSTGRES_1_START_TRANSACTION $(POSTGRES_OUT_START_TRANSACTION_POSTGRES_1) +DEFAULT_MACRO POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_1 1000 +GUI TEXT POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_1 Features Per Transaction: +POSTGRES_1_TRANSACTION_INTERVAL $(POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_1) +DEFAULT_MACRO POSTGRES_OUT_BULK_COPY_POSTGRES_1 YES +GUI CHOICE POSTGRES_OUT_BULK_COPY_POSTGRES_1 YES%NO Bulk Copy Insert: +POSTGRES_1_BULK_COPY $(POSTGRES_OUT_BULK_COPY_POSTGRES_1) +DEFAULT_MACRO POSTGRES_OUT_BEGIN_SQL_POSTGRES_1 +GUI OPTIONAL TEXT_EDIT_SQL POSTGRES_OUT_BEGIN_SQL_POSTGRES_1 SQL Statement to Execute Before Translation: +POSTGRES_1_BEGIN_SQL "$(POSTGRES_OUT_BEGIN_SQL_POSTGRES_1)" +DEFAULT_MACRO POSTGRES_OUT_END_SQL_POSTGRES_1 +GUI OPTIONAL TEXT_EDIT_SQL POSTGRES_OUT_END_SQL_POSTGRES_1 SQL Statement to Execute After Translation: +POSTGRES_1_END_SQL "$(POSTGRES_OUT_END_SQL_POSTGRES_1)" +POSTGRES_1_DATASET "$(DestDataset_POSTGRES_1)" +#! END_DEST_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "POSTGRES_2" +#! END_WB_HEADER +#! START_DEST_HEADER POSTGRES POSTGRES_2 +#! END_DEST_HEADER +#! START_WB_HEADER +DEFAULT_MACRO DestDataset +INCLUDE [ if {"$(DestDataset)" != ""} { \ + puts {DEFAULT_MACRO DestDataset_POSTGRES_2 $(DestDataset)} \ + } ] +#! END_WB_HEADER +#! START_DEST_HEADER POSTGRES POSTGRES_2 +DEFAULT_MACRO DestDataset_POSTGRES_2 $(DestDataset_POSTGRES_3) +GUI NAMED_DB_CONNECTION_ENCODED DestDataset_POSTGRES_2 FMT:POSTGRES Connection: +# ============================================================================ +# Opt in for destination dataset type vs format type validation +DEFAULT_MACRO POSTGRES_OUT_DESTINATION_DATASETTYPE_VALIDATION_POSTGRES_2 Yes +POSTGRES_2_DESTINATION_DATASETTYPE_VALIDATION "$(POSTGRES_OUT_DESTINATION_DATASETTYPE_VALIDATION_POSTGRES_2)" +DEFAULT_MACRO POSTGRES_OUT_WRITER_MODE_POSTGRES_2 INSERT +GUI CHOICE POSTGRES_OUT_WRITER_MODE_POSTGRES_2 INSERT%UPDATE%DELETE Writer Mode: +POSTGRES_2_WRITER_MODE $(POSTGRES_OUT_WRITER_MODE_POSTGRES_2) +DEFAULT_MACRO POSTGRES_OUT_START_TRANSACTION_POSTGRES_2 0 +GUI TEXT POSTGRES_OUT_START_TRANSACTION_POSTGRES_2 Starting Feature: +POSTGRES_2_START_TRANSACTION $(POSTGRES_OUT_START_TRANSACTION_POSTGRES_2) +DEFAULT_MACRO POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_2 1000 +GUI TEXT POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_2 Features Per Transaction: +POSTGRES_2_TRANSACTION_INTERVAL $(POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_2) +DEFAULT_MACRO POSTGRES_OUT_BULK_COPY_POSTGRES_2 YES +GUI CHOICE POSTGRES_OUT_BULK_COPY_POSTGRES_2 YES%NO Bulk Copy Insert: +POSTGRES_2_BULK_COPY $(POSTGRES_OUT_BULK_COPY_POSTGRES_2) +DEFAULT_MACRO POSTGRES_OUT_BEGIN_SQL_POSTGRES_2 +GUI OPTIONAL TEXT_EDIT_SQL POSTGRES_OUT_BEGIN_SQL_POSTGRES_2 SQL Statement to Execute Before Translation: +POSTGRES_2_BEGIN_SQL "$(POSTGRES_OUT_BEGIN_SQL_POSTGRES_2)" +DEFAULT_MACRO POSTGRES_OUT_END_SQL_POSTGRES_2 +GUI OPTIONAL TEXT_EDIT_SQL POSTGRES_OUT_END_SQL_POSTGRES_2 SQL Statement to Execute After Translation: +POSTGRES_2_END_SQL "$(POSTGRES_OUT_END_SQL_POSTGRES_2)" +POSTGRES_2_DATASET "$(DestDataset_POSTGRES_2)" +#! END_DEST_HEADER +#! END_HEADER + +LOG_FILENAME "$(FME_MF_DIR)import_dhs_survey_metadata.log" +LOG_APPEND NO +LOG_MAX_FEATURES 200 +LOG_MAX_RECORDED_FEATURES 200 +LOG_MAX_PRECISION Yes +FME_REPROJECTION_ENGINE FME +FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto +FME_GEOMETRY_HANDLING Enhanced +FME_STROKE_MAX_DEVIATION 0 +LOG_FILTER_MASK -1 +DEFAULT_MACRO DATASET_KEYWORD_CSV_3 CSV_3 +DEFAULT_MACRO DATASET_KEYWORD_CSV_1 CSV_1 +DEFAULT_MACRO DATASET_KEYWORD_CSV_2 CSV_2 +DEFAULT_MACRO DATASET_KEYWORD_POSTGRES_1 POSTGRES_1 +DEFAULT_MACRO DATASET_KEYWORD_POSTGRES_2 POSTGRES_2 +# ------------------------------------------------------------------------- + +CSV_3_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +CSV_1_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +CSV_2_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +MULTI_READER_CONTINUE_ON_READER_FAILURE No + +# ------------------------------------------------------------------------- + +MACRO WORKSPACE_NAME import_dhs_survey_metadata +MACRO FME_VIEWER_APP fmedatainspector +# ------------------------------------------------------------------------- + +INCLUDE [ if {[info exists env(FME_TEMP)] && [file isdirectory $env(FME_TEMP)]} {set gVisualizerTemp $env(FME_TEMP)} elseif {[info exists env(TEMP)] && [file isdirectory $env(TEMP)]} {set gVisualizerTemp $env(TEMP)} elseif { $tcl_platform(platform) == "unix" } {set gVisualizerTemp "/tmp"} else {set gVisualizerTemp c:}; regsub -all {[ ,&]} {$(WORKSPACE_NAME)} {_} wsname; set gVisualizerTemp $gVisualizerTemp/${wsname}_[clock format [clock seconds] -format %H%M%S]; puts "MACRO WORKSPACE_TEMP_DIR $gVisualizerTemp"; +MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/inspector.ffs +MACRO VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector.fsc +MACRO VISUALIZER_CREATE_SPATIAL_INDEX YES +# ------------------------------------------------------------------------- +CSV_3_DEF CSV SurveyFilename char(7) Country char(22) Year char(8) Survey_ID_num number(4,0) SurveyAPI_ID char(10) Type char(4) +# ------------------------------------------------------------------------- +CSV_1_DEF CSV FileCode char(7) RecordName char(7) RecordTypeValue char(4) RecordLabel char(50) Name char(12) Label char(77) Start number(4,0) Len number(3,0) Occurrences number(3,0) Range_Low_Value number(5,0) Range_High_Value number(7,0) Range_Desc char(35) FMETYPE char(13) +# ------------------------------------------------------------------------- +CSV_2_DEF CSV FileCode char(7) Name char(10) Value number(6,0) ValueDesc char(53) +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" INPUT FEATURE_TYPE * ROUTE CSV CSV_3::CSV multi_reader_keyword,$(DATASET_KEYWORD_CSV_3) TO FME_GENERIC ::CSV ALIAS_GEOMETRY ROUTE CSV CSV_1::CSV multi_reader_keyword,$(DATASET_KEYWORD_CSV_1) TO FME_GENERIC ::CSV ALIAS_GEOMETRY ROUTE CSV CSV_2::CSV multi_reader_keyword,$(DATASET_KEYWORD_CSV_2) TO FME_GENERIC ::CSV ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * +$(DATASET_KEYWORD_CSV_3)_MERGE_DEF CSV_3::CSV EXACT CSV DEFLINE SurveyFilename,char7,Country,char22,Year,char8,Survey_ID_num,number40,SurveyAPI_ID,char10,Type,char4 +$(DATASET_KEYWORD_CSV_1)_MERGE_DEF CSV_1::CSV EXACT CSV DEFLINE FileCode,char7,RecordName,char7,RecordTypeValue,char4,RecordLabel,char50,Name,char12,Label,char77,Start,number40,Len,number30,Occurrences,number30,Range_Low_Value,number50,Range_High_Value,number70,Range_Desc,char35,FMETYPE,char13 +$(DATASET_KEYWORD_CSV_2)_MERGE_DEF CSV_2::CSV EXACT CSV DEFLINE FileCode,char7,Name,char10,Value,number60,ValueDesc,char53 +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "CSV (CSV_1) Splitter" INPUT FEATURE_TYPE CSV multi_reader_keyword $(DATASET_KEYWORD_CSV_1) OUTPUT FEATURE_TYPE CSV_CSV_1 +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "CSV (CSV_2) Splitter" INPUT FEATURE_TYPE CSV multi_reader_keyword $(DATASET_KEYWORD_CSV_2) OUTPUT FEATURE_TYPE CSV_CSV_2 +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "CSV (CSV_3) Splitter" INPUT FEATURE_TYPE CSV multi_reader_keyword $(DATASET_KEYWORD_CSV_3) OUTPUT FEATURE_TYPE CSV_CSV_3 +DEFAULT_MACRO WB_CURRENT_CONTEXT +# ------------------------------------------------------------------------- + +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {PythonCreator_Output} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME PythonCreator_Output_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME PythonCreator_Output_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME PythonCreator_Output_FeatureDirector INPUT FEATURE_TYPE PythonCreator_OUTPUT_1_aNUkg7O8h04= TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE PythonCreator_Output___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE PythonCreator_Output___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME PythonCreator_Output___FeatureDirector1 INPUT FEATURE_TYPE PythonCreator_Output___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE PythonCreator_Output___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE PythonCreator_Output___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME PythonCreator_Output_VectorSetterUpper INPUT FEATURE_TYPE PythonCreator_Output___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc PythonCreator_Output_6e1b5af0_23a4_4442_b640_ac358f2b155910_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME PythonCreator_Output___PointCloudThinner INPUT FEATURE_TYPE PythonCreator_Output___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("PythonCreator_Output_6e1b5af0_23a4_4442_b640_ac358f2b155910_thinPointCloud") +Tcl2 proc PythonCreator_Output_6e1b5af0_23a4_4442_b640_ac358f2b155910_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME PythonCreator_Output_RasterSetterUpper INPUT FEATURE_TYPE PythonCreator_Output___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("PythonCreator_Output_6e1b5af0_23a4_4442_b640_ac358f2b155910_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# PythonCreator_Output_6e1b5af0_23a4_4442_b640_ac358f2b155910_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO PythonCreator_Output_6e1b5af0_23a4_4442_b640_ac358f2b155910_VIS_FEAT_TYPE PythonCreator_Output$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME PythonCreator_Output_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(PythonCreator_Output_6e1b5af0_23a4_4442_b640_ac358f2b155910_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA FileCode,varchar255,RecordName,varchar255,RecordTypeValue,varchar255,RecordLabel,varchar255,Name,varchar255,Label,varchar255,Start,varchar255,Len,varchar255,Occurrences,varchar255,Range_Low_Value,varchar255,Range_High_Value,varchar255,Range_Desc,varchar255,FMETYPE,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +Tcl2 proc DuplicateRemover_fde9043c_1b36_457d_bf9b_4d687615987139_dupKeyCount { attrList } { set attrList [string trim $attrList {()}]; set attrs [split $attrList { } ]; set attrVal {___DuplicateRemover_fde9043c_1b36_457d_bf9b_4d687615987139___}; foreach {attrName} $attrs { set attrName [FME_DecodeText $attrName]; append attrVal [FME_GetAttribute $attrName] {_fmebreak_}; }; return [expr [incr ::__DuplicateRemover_fde9043c_1b36_457d_bf9b_4d687615987139__KeySeenCount($attrVal)] - 1]; }; +FACTORY_DEF * TestFactory FACTORY_NAME DuplicateRemover INPUT FEATURE_TYPE CSV_CSV_2 TEST @Tcl2("DuplicateRemover_fde9043c_1b36_457d_bf9b_4d687615987139_dupKeyCount {(FileCode Name Value)}") > 0 OUTPUT PASSED FEATURE_TYPE DuplicateRemover_DUPLICATE OUTPUT FAILED FEATURE_TYPE DuplicateRemover_UNIQUE + +FACTORY_DEF * TeeFactory FACTORY_NAME "DuplicateRemover UNIQUE Splitter" INPUT FEATURE_TYPE DuplicateRemover_UNIQUE OUTPUT FEATURE_TYPE DuplicateRemover_UNIQUE_0_0BaZcVvtjAI= OUTPUT FEATURE_TYPE DuplicateRemover_UNIQUE_1_0BaZcVvtjAI= +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {WARNING_Duplicfate_Values_Discarded} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME WARNING_Duplicfate_Values_Discarded_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME WARNING_Duplicfate_Values_Discarded_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME WARNING_Duplicfate_Values_Discarded_FeatureDirector INPUT FEATURE_TYPE DuplicateRemover_DUPLICATE TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE WARNING_Duplicfate_Values_Discarded___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE WARNING_Duplicfate_Values_Discarded___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME WARNING_Duplicfate_Values_Discarded___FeatureDirector1 INPUT FEATURE_TYPE WARNING_Duplicfate_Values_Discarded___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE WARNING_Duplicfate_Values_Discarded___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE WARNING_Duplicfate_Values_Discarded___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME WARNING_Duplicfate_Values_Discarded_VectorSetterUpper INPUT FEATURE_TYPE WARNING_Duplicfate_Values_Discarded___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc WARNING_Duplicfate_Values_Discarded_86305857_1d4d_4106_99f8_b6bda9233e4b39_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME WARNING_Duplicfate_Values_Discarded___PointCloudThinner INPUT FEATURE_TYPE WARNING_Duplicfate_Values_Discarded___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("WARNING_Duplicfate_Values_Discarded_86305857_1d4d_4106_99f8_b6bda9233e4b39_thinPointCloud") +Tcl2 proc WARNING_Duplicfate_Values_Discarded_86305857_1d4d_4106_99f8_b6bda9233e4b39_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME WARNING_Duplicfate_Values_Discarded_RasterSetterUpper INPUT FEATURE_TYPE WARNING_Duplicfate_Values_Discarded___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("WARNING_Duplicfate_Values_Discarded_86305857_1d4d_4106_99f8_b6bda9233e4b39_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# WARNING_Duplicfate_Values_Discarded_86305857_1d4d_4106_99f8_b6bda9233e4b39_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO WARNING_Duplicfate_Values_Discarded_86305857_1d4d_4106_99f8_b6bda9233e4b39_VIS_FEAT_TYPE WARNING_Duplicfate_Values_Discarded$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME WARNING_Duplicfate_Values_Discarded_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(WARNING_Duplicfate_Values_Discarded_86305857_1d4d_4106_99f8_b6bda9233e4b39_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA FileCode,varchar255,Name,varchar255,Value,varchar255,ValueDesc,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +DEFAULT_MACRO __StatisticsCalculator_457f18dc_931d_4d37_bfdc_6e7293c1b44120_GROUP_BY +MACRO __StatisticsCalculator_457f18dc_931d_4d37_bfdc_6e7293c1b44120_GROUP_BY FileCode Name +DYNAMIC_FUNCTION_CONFIGURATION Python FMEOBJECTS +DYNAMIC_FUNCTION_CONFIGURATION Python import StatisticsCalculator +DYNAMIC_FUNCTION_CONFIGURATION Python "StatisticsCalculator.connectTransformer( 'StatisticsCalculator',{ 'GROUP_BY_MACRO':'__StatisticsCalculator_457f18dc_931d_4d37_bfdc_6e7293c1b44120_GROUP_BY', 'GROUP_BY':'FileCode Name', 'STATS_ATTRS':'Value', 'MIN_ATTR':'_vals_min', 'MAX_ATTR':'_vals_max', 'COUNT_ATTR':'_vals_count', 'NUMERIC_ATTR':'_vals_numeric_count', 'COMPUTE_HISTOGRAM':'NO', 'HISTO_ATTR':'', 'PREPEND_ATTR_NAME':'No', 'encoded_result_attrs':True, None:None})" +FACTORY_DEF * TeeFactory FACTORY_NAME StatisticsCalculator_InputProcessor INPUT FEATURE_TYPE DuplicateRemover_UNIQUE_0_0BaZcVvtjAI= OUTPUT FEATURE_TYPE __ORIGINAL__ @Python(StatisticsCalculator.recordFeature,StatisticsCalculator) +FACTORY_DEF * TeeFactory FACTORY_NAME StatisticsCalculator_UnneededInputNuker INPUT FEATURE_TYPE __ORIGINAL__ +FACTORY_DEF * SortFactory FACTORY_NAME StatisticsCalculator_CompleteOutputter INPUT FEATURE_TYPE __UNUSED_INPUT_TO_GUARANTEE_FACTORY_DOESNT_CONSUME_EVERYTHING__ +FACTORY_DEF * CreationFactory FACTORY_NAME StatisticsCalculator_SummaryCreator CREATE_AT_END NUMBER_TO_CREATE 1 OUTPUT FEATURE_TYPE StatisticsCalculator_SUMMARY +FACTORY_DEF * ElementFactory FACTORY_NAME StatisticsCalculator_SummaryExploder LIST_NAME StatisticsCalculator_stats{} MODE LEAN_AND_MEAN CLONE_GEOMETRY no INPUT FEATURE_TYPE __UNUSED_INPUT_TO_GUARANTEE_FACTORY_DOESNT_CONSUME_EVERYTHING__ INPUT FEATURE_TYPE StatisticsCalculator_SUMMARY @Python(StatisticsCalculator.summarizeStatistics,StatisticsCalculator,__SINGLE_GUY__) OUTPUT ELEMENT FEATURE_TYPE StatisticsCalculator_SUMMARY + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TestFactory FACTORY_NAME Tester_2 INPUT FEATURE_TYPE StatisticsCalculator_SUMMARY TEST @EvaluateExpression(FDIV,STRING_ENCODED,Value_vals_count,Tester_2) < 3 ENCODED TEST @EvaluateExpression(FDIV,STRING_ENCODED,Value_vals_min,Tester_2) > 7 ENCODED BOOLEAN_OPERATOR AND OUTPUT PASSED FEATURE_TYPE Tester_2_PASSED +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer INPUT FEATURE_TYPE CSV_CSV_1 INPUT FEATURE_TYPE PythonCreator_OUTPUT_0_aNUkg7O8h04= OUTPUT FEATURE_TYPE AttributeRenamer_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, FileCode,dhs_file_code,,Label,recode_description,,Len,len,,Start,start,,Occurrences,occ,,Range_High_Value,range_high_value,,Range_Low_Value,range_low_value,,RecordName,record_code,,Range_Desc,range_units,) + + +# ------------------------------------------------------------------------- + +INCLUDE [ puts "MACRO REAL_RATE [expr 1 * -1 ]" ] +FACTORY_DEF * SamplingFactory FACTORY_NAME Sampler SAMPLE_RATE $(REAL_RATE) INPUT FEATURE_TYPE AttributeRenamer_OUTPUT OUTPUT SAMPLED FEATURE_TYPE ___SAMPLED___ OUTPUT NOT_SAMPLED FEATURE_TYPE Sampler_NOT_SAMPLED +# This TeeFactory is needed because Sampler will still output features if it has no OUTPUT clauses specified. +# This way we behave nicely even if there are no output connections on the transformer. See PR#28886. + +FACTORY_DEF * TeeFactory FACTORY_NAME Sampler_Sampled INPUT FEATURE_TYPE ___SAMPLED___ OUTPUT FEATURE_TYPE Sampler_SAMPLED + + +# ------------------------------------------------------------------------- +FACTORY_DEF * TransformFact:1:Sampler FACTORY_NAME Sampler_2 FACTORY_META_PARAMS TRANSFORMER_NAME:Sampler_2 TRANSFORMER_PARAMS:XFORMER_NAME,Sampler_2,TRANSFORMER_GROUP,,GROUP_BY,record_codedhs_file_code,PARAMETERS_GROUP,,RATE,1,SAMPLE_TYPE_LONG,FirstNFeatures PROCESS_GROUP_BY record_code dhs_file_code MULTI_PROCESS NO_PARALLELISM GROUPS_ARE_ORDERED YES INPUT FEATURE_TYPE Sampler_NOT_SAMPLED OUTPUT SAMPLED FEATURE_TYPE Sampler_2_SAMPLED OUTPUT NOT_SAMPLED FEATURE_TYPE Sampler_2_NOT_SAMPLED +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer_3 INPUT FEATURE_TYPE Sampler_2_SAMPLED OUTPUT FEATURE_TYPE AttributeRenamer_3_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, Name,id_var_name,,start,id_var_start,,len,id_var_len,,RecordTypeValue,record_type_val,,RecordLabel,record_desc,) + + +# ------------------------------------------------------------------------- + +INCLUDE [if { {ATTRIBUTES} == {ATTRIBUTES} } { puts "MACRO FeatureMerger_REFERENCE_INFO ATTRIBUTES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} } { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} } { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } else {}; ] + +FACTORY_DEF * ReferenceFactory FACTORY_NAME FeatureMerger INPUT REFERENCER FEATURE_TYPE Sampler_SAMPLED INPUT REFERENCEE FEATURE_TYPE CSV_CSV_3 REFERENCE_INFO $(FeatureMerger_REFERENCE_INFO) REFERENCE_TABLE @EvaluateExpression(FDIV,STRING_ENCODED,Valuedhs_file_code,FeatureMerger) @EvaluateExpression(FDIV,STRING_ENCODED,ValueSurveyFilename,FeatureMerger) AUTO ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "REQUESTOR_IF_CONFLICT" IGNORE_NULLS "No" MERGE_ATTRIBUTES Yes MANAGE_FME_TYPE Yes MODE COMPLETE PROCESS_DUPLICATE_REFERENCEES No REFERENCEES_FIRST Yes OUTPUT COMPLETE FEATURE_TYPE FeatureMerger_MERGED + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer_2 INPUT FEATURE_TYPE FeatureMerger_MERGED OUTPUT FEATURE_TYPE AttributeRenamer_2_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, start,record_type_start,,len,record_type_len,,SurveyAPI_ID,dhs_api_id,,Survey_ID_num,dhs_numeric_id,) + + +FACTORY_DEF * TeeFactory FACTORY_NAME "AttributeRenamer_2 OUTPUT Splitter" INPUT FEATURE_TYPE AttributeRenamer_2_OUTPUT OUTPUT FEATURE_TYPE AttributeRenamer_2_OUTPUT_0_g+OaL7DIfGA= OUTPUT FEATURE_TYPE AttributeRenamer_2_OUTPUT_1_g+OaL7DIfGA= +# ------------------------------------------------------------------------- + +INCLUDE [ set macroLine "MACRO AttributeKeeper_800d400f_deec_4d7a_850d_149dc2ff4e6945_LIST_EXP "; foreach attr [split ""] { set attr [FME_DecodeText $attr]; set attr [regsub "{}$" $attr "{}.*"]; set attr [regsub -all "{}" $attr "\\{\[0-9\]+\\}"]; append macroLine ",^$attr$"; }; puts $macroLine; ] + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeKeeper INPUT FEATURE_TYPE AttributeRenamer_2_OUTPUT_1_g+OaL7DIfGA= OUTPUT FEATURE_TYPE AttributeKeeper_OUTPUT @KeepAttributes(fme_encoded,dhs_file_code,fme_pcre_match,"^fme_$(AttributeKeeper_800d400f_deec_4d7a_850d_149dc2ff4e6945_LIST_EXP)") + +# ------------------------------------------------------------------------- + +INCLUDE [if { {ATTRIBUTES} == {ATTRIBUTES} } { puts "MACRO FeatureMerger_2_REFERENCE_INFO ATTRIBUTES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_2_REFERENCE_INFO GEOM_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_2_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_2_REFERENCE_INFO GEOM_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_2_REFERENCE_INFO GEOM_AND_ATTR_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_2_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_2_REFERENCE_INFO GEOM_AND_ATTR_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} } { puts "MACRO FeatureMerger_2_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} } { puts "MACRO FeatureMerger_2_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } else {}; ] + +FACTORY_DEF * ReferenceFactory FACTORY_NAME FeatureMerger_2 INPUT REFERENCER FEATURE_TYPE AttributeRenamer_3_OUTPUT INPUT REFERENCEE FEATURE_TYPE AttributeKeeper_OUTPUT REFERENCE_INFO $(FeatureMerger_2_REFERENCE_INFO) REFERENCE_TABLE @EvaluateExpression(FDIV,STRING_ENCODED,Valuedhs_file_code,FeatureMerger_2) @EvaluateExpression(FDIV,STRING_ENCODED,Valuedhs_file_code,FeatureMerger_2) AUTO ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "REQUESTOR_IF_CONFLICT" IGNORE_NULLS "No" MERGE_ATTRIBUTES Yes MANAGE_FME_TYPE Yes MODE COMPLETE PROCESS_DUPLICATE_REFERENCEES No REFERENCEES_FIRST Yes OUTPUT COMPLETE FEATURE_TYPE FeatureMerger_2_MERGED OUTPUT INCOMPLETE FEATURE_TYPE FeatureMerger_2_NOT_MERGED + +# ------------------------------------------------------------------------- + +# The default behaviour is to abort on any feature entering the transformer. +# If Workbench has set the _WB_BYPASS_TERMINATION macro to a value of "Yes", +# then the features will instead be passed through with a feature type of +# __WB_BYPASS_TERMINATOR__, which Workbench will send to a visualizer or +# somesuch. + +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TestFactory FACTORY_NAME Terminator INPUT FEATURE_TYPE FeatureMerger_2_NOT_MERGED TEST "$(_WB_BYPASS_TERMINATION)" == Yes OUTPUT PASSED FEATURE_TYPE __WB_BYPASS_TERMINATOR__ @SupplyAttributes(_wb_termination_feature_type,@FeatureType()) @SupplyAttributes(ENCODED,_wb_termination_message,"@EvaluateExpression(FDIV,STRING_ENCODED,TranslationTerminated!NocorrespondingsurveyinfofoundforrecordValuerecord_codeinfileValuedhs_file_code,Terminator)") @SupplyAttributes(_wb_termination_xformer,"Terminator") @SupplyAttributes(_wb_termination_feature,Yes) OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED,"@EvaluateExpression(FDIV,STRING_ENCODED,TranslationTerminated!NocorrespondingsurveyinfofoundforrecordValuerecord_codeinfileValuedhs_file_code,Terminator)") + +# ------------------------------------------------------------------------- +MACRO SQLExecutor_3_DIRECTIVES NAMED_CONNECTION postgreslocalhost:5432dhs QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS Yes + +FACTORY_DEF * QueryFactory FACTORY_NAME SQLExecutor_3 INPUT FEATURE_TYPE FeatureMerger_2_MERGED QUERY_SQL "selectnextvaldhs.dhs_gen_id_seq::regclassasid" READER_TYPE POSTGRES READER_DATASET "@EvaluateExpression(FDIV,STRING_ENCODED,postgreslocalhost:5432dhs,SQLExecutor_3)" COMBINE_ATTRIBUTES PREFER_QUERY COMBINE_GEOMETRY QUERY_ONLY READER_PARAMS $(SQLExecutor_3_DIRECTIVES) OUTPUT RESULT FEATURE_TYPE SQLExecutor_3_RESULT OUTPUT QUERY FEATURE_TYPE SQLExecutor_3_INITIATOR + +FACTORY_DEF * TeeFactory FACTORY_NAME "SQLExecutor_3 RESULT Splitter" INPUT FEATURE_TYPE SQLExecutor_3_RESULT OUTPUT FEATURE_TYPE SQLExecutor_3_RESULT_0_9wlugf9npY0= OUTPUT FEATURE_TYPE SQLExecutor_3_RESULT_1_9wlugf9npY0= +FACTORY_DEF * TeeFactory FACTORY_NAME "SQLExecutor_3 INITIATOR Output Nuker" INPUT FEATURE_TYPE SQLExecutor_3_INITIATOR +# ------------------------------------------------------------------------- + +INCLUDE [ set macroLine "MACRO AttributeKeeper_2_79b2fe0e_5421_4a4e_bd8e_bf61c792b83444_LIST_EXP "; foreach attr [split ""] { set attr [FME_DecodeText $attr]; set attr [regsub "{}$" $attr "{}.*"]; set attr [regsub -all "{}" $attr "\\{\[0-9\]+\\}"]; append macroLine ",^$attr$"; }; puts $macroLine; ] + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeKeeper_2 INPUT FEATURE_TYPE SQLExecutor_3_RESULT_0_9wlugf9npY0= OUTPUT FEATURE_TYPE AttributeKeeper_2_OUTPUT @KeepAttributes(fme_encoded,dhs_file_code,id,record_code,fme_pcre_match,"^fme_$(AttributeKeeper_2_79b2fe0e_5421_4a4e_bd8e_bf61c792b83444_LIST_EXP)") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer_4 INPUT FEATURE_TYPE AttributeKeeper_2_OUTPUT OUTPUT FEATURE_TYPE AttributeRenamer_4_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, id,record_id,) + + +# ------------------------------------------------------------------------- + +INCLUDE [if { {ATTRIBUTES} == {ATTRIBUTES} } { puts "MACRO FeatureMerger_3_REFERENCE_INFO ATTRIBUTES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_3_REFERENCE_INFO GEOM_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_3_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_3_REFERENCE_INFO GEOM_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_3_REFERENCE_INFO GEOM_AND_ATTR_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_3_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_3_REFERENCE_INFO GEOM_AND_ATTR_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} } { puts "MACRO FeatureMerger_3_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} } { puts "MACRO FeatureMerger_3_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } else {}; ] + +FACTORY_DEF * ReferenceFactory FACTORY_NAME FeatureMerger_3 INPUT REFERENCER FEATURE_TYPE Sampler_2_NOT_SAMPLED INPUT REFERENCEE FEATURE_TYPE AttributeRenamer_4_OUTPUT REFERENCE_INFO $(FeatureMerger_3_REFERENCE_INFO) REFERENCE_TABLE @EvaluateExpression(FDIV,STRING_ENCODED,Valuedhs_file_code,FeatureMerger_3) @EvaluateExpression(FDIV,STRING_ENCODED,Valuedhs_file_code,FeatureMerger_3) AUTO @EvaluateExpression(FDIV,STRING_ENCODED,Valuerecord_code,FeatureMerger_3) @EvaluateExpression(FDIV,STRING_ENCODED,Valuerecord_code,FeatureMerger_3) AUTO ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "REQUESTOR_IF_CONFLICT" IGNORE_NULLS "No" MERGE_ATTRIBUTES Yes MANAGE_FME_TYPE Yes MODE COMPLETE PROCESS_DUPLICATE_REFERENCEES No REFERENCEES_FIRST No OUTPUT COMPLETE FEATURE_TYPE FeatureMerger_3_MERGED OUTPUT INCOMPLETE FEATURE_TYPE FeatureMerger_3_NOT_MERGED + +# ------------------------------------------------------------------------- + +# The default behaviour is to abort on any feature entering the transformer. +# If Workbench has set the _WB_BYPASS_TERMINATION macro to a value of "Yes", +# then the features will instead be passed through with a feature type of +# __WB_BYPASS_TERMINATOR__, which Workbench will send to a visualizer or +# somesuch. + +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TestFactory FACTORY_NAME Terminator_2 INPUT FEATURE_TYPE FeatureMerger_3_NOT_MERGED TEST "$(_WB_BYPASS_TERMINATION)" == Yes OUTPUT PASSED FEATURE_TYPE __WB_BYPASS_TERMINATOR__ @SupplyAttributes(_wb_termination_feature_type,@FeatureType()) @SupplyAttributes(ENCODED,_wb_termination_message,"@EvaluateExpression(FDIV,STRING_ENCODED,TranslationTerminated!NocorrespondingrecordinfofoundforitemValueNameinfileValuedhs_file_code,Terminator_2)") @SupplyAttributes(_wb_termination_xformer,"Terminator_2") @SupplyAttributes(_wb_termination_feature,Yes) OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED,"@EvaluateExpression(FDIV,STRING_ENCODED,TranslationTerminated!NocorrespondingrecordinfofoundforitemValueNameinfileValuedhs_file_code,Terminator_2)") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer_7 INPUT FEATURE_TYPE FeatureMerger_3_MERGED OUTPUT FEATURE_TYPE AttributeRenamer_7_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, Name,recode,) + + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TestFactory FACTORY_NAME Tester INPUT FEATURE_TYPE AttributeRenamer_7_OUTPUT TEST range_low_value NOT_ATTRIBUTE_VALUE_NULL "" ENCODED TEST range_high_value NOT_ATTRIBUTE_VALUE_NULL "" ENCODED TEST range_low_value NOT_ATTRIBUTE_IS_MISSING "" ENCODED TEST range_high_value NOT_ATTRIBUTE_IS_MISSING "" ENCODED TEST range_low_value NOT_ATTRIBUTE_IS_EMPTY "" ENCODED TEST range_high_value NOT_ATTRIBUTE_IS_EMPTY "" ENCODED BOOLEAN_OPERATOR AND OUTPUT PASSED FEATURE_TYPE Tester_PASSED OUTPUT FAILED FEATURE_TYPE Tester_FAILED +# ------------------------------------------------------------------------- + +INCLUDE [if { {ATTRIBUTES} == {ATTRIBUTES} } { puts "MACRO FeatureMerger_5_REFERENCE_INFO ATTRIBUTES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_5_REFERENCE_INFO GEOM_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_5_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_5_REFERENCE_INFO GEOM_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_5_REFERENCE_INFO GEOM_AND_ATTR_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_5_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_5_REFERENCE_INFO GEOM_AND_ATTR_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} } { puts "MACRO FeatureMerger_5_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} } { puts "MACRO FeatureMerger_5_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } else {}; ] + +FACTORY_DEF * ReferenceFactory FACTORY_NAME FeatureMerger_5 INPUT REFERENCER FEATURE_TYPE Tester_FAILED INPUT REFERENCEE FEATURE_TYPE Tester_2_PASSED REFERENCE_INFO $(FeatureMerger_5_REFERENCE_INFO) REFERENCE_TABLE @EvaluateExpression(FDIV,STRING_ENCODED,Valuedhs_file_code,FeatureMerger_5) @EvaluateExpression(FDIV,STRING_ENCODED,ValueFileCode,FeatureMerger_5) AUTO @EvaluateExpression(FDIV,STRING_ENCODED,Valuerecode,FeatureMerger_5) @EvaluateExpression(FDIV,STRING_ENCODED,ValueName,FeatureMerger_5) AUTO ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "REQUESTOR_IF_CONFLICT" IGNORE_NULLS "No" MERGE_ATTRIBUTES Yes MANAGE_FME_TYPE Yes MODE COMPLETE PROCESS_DUPLICATE_REFERENCEES No REFERENCEES_FIRST No OUTPUT COMPLETE FEATURE_TYPE FeatureMerger_5_MERGED OUTPUT INCOMPLETE FEATURE_TYPE FeatureMerger_5_NOT_MERGED + +# ------------------------------------------------------------------------- +FACTORY_DEF * AttrSetFactory FACTORY_NAME AttributeCreator_3 ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV INPUT FEATURE_TYPE FeatureMerger_5_NOT_MERGED ATTR recode_data_type L OUTPUT OUTPUT FEATURE_TYPE AttributeCreator_3_OUTPUT +# ------------------------------------------------------------------------- +FACTORY_DEF * AttrSetFactory FACTORY_NAME AttributeCreator_2 ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV INPUT FEATURE_TYPE FeatureMerger_5_MERGED ATTR recode_data_type F OUTPUT OUTPUT FEATURE_TYPE AttributeCreator_2_OUTPUT +# ------------------------------------------------------------------------- +FACTORY_DEF * AttrSetFactory FACTORY_NAME AttributeCreator ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV INPUT FEATURE_TYPE Tester_PASSED ATTR recode_data_type R OUTPUT OUTPUT FEATURE_TYPE AttributeCreator_OUTPUT +# ------------------------------------------------------------------------- +MACRO SQLExecutor_2_DIRECTIVES NAMED_CONNECTION postgreslocalhost:5432dhs QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS Yes + +FACTORY_DEF * QueryFactory FACTORY_NAME SQLExecutor_2 INPUT FEATURE_TYPE AttributeCreator_2_OUTPUT INPUT FEATURE_TYPE AttributeCreator_3_OUTPUT INPUT FEATURE_TYPE AttributeCreator_OUTPUT QUERY_SQL "selectnextvaldhs.dhs_gen_id_seq::regclassasid" READER_TYPE POSTGRES READER_DATASET "@EvaluateExpression(FDIV,STRING_ENCODED,postgreslocalhost:5432dhs,SQLExecutor_2)" COMBINE_ATTRIBUTES PREFER_QUERY COMBINE_GEOMETRY QUERY_ONLY READER_PARAMS $(SQLExecutor_2_DIRECTIVES) OUTPUT RESULT FEATURE_TYPE SQLExecutor_2_RESULT OUTPUT QUERY FEATURE_TYPE SQLExecutor_2_INITIATOR + +FACTORY_DEF * TeeFactory FACTORY_NAME "SQLExecutor_2 RESULT Splitter" INPUT FEATURE_TYPE SQLExecutor_2_RESULT OUTPUT FEATURE_TYPE SQLExecutor_2_RESULT_0_eSdfAvmxLjw= OUTPUT FEATURE_TYPE SQLExecutor_2_RESULT_1_eSdfAvmxLjw= +FACTORY_DEF * TeeFactory FACTORY_NAME "SQLExecutor_2 INITIATOR Output Nuker" INPUT FEATURE_TYPE SQLExecutor_2_INITIATOR +# ------------------------------------------------------------------------- + +INCLUDE [ set macroLine "MACRO AttributeKeeper_3_0935f672_08f4_4b48_bb73_36c72f9e1dbc43_LIST_EXP "; foreach attr [split ""] { set attr [FME_DecodeText $attr]; set attr [regsub "{}$" $attr "{}.*"]; set attr [regsub -all "{}" $attr "\\{\[0-9\]+\\}"]; append macroLine ",^$attr$"; }; puts $macroLine; ] + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeKeeper_3 INPUT FEATURE_TYPE SQLExecutor_2_RESULT_1_eSdfAvmxLjw= OUTPUT FEATURE_TYPE AttributeKeeper_3_OUTPUT @KeepAttributes(fme_encoded,dhs_file_code,id,recode,fme_pcre_match,"^fme_$(AttributeKeeper_3_0935f672_08f4_4b48_bb73_36c72f9e1dbc43_LIST_EXP)") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer_5 INPUT FEATURE_TYPE AttributeKeeper_3_OUTPUT OUTPUT FEATURE_TYPE AttributeRenamer_5_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, id,recode_id,) + + +# ------------------------------------------------------------------------- + +INCLUDE [if { {ATTRIBUTES} == {ATTRIBUTES} } { puts "MACRO FeatureMerger_4_REFERENCE_INFO ATTRIBUTES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_4_REFERENCE_INFO GEOM_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_4_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_4_REFERENCE_INFO GEOM_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_4_REFERENCE_INFO GEOM_AND_ATTR_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_4_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_4_REFERENCE_INFO GEOM_AND_ATTR_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} } { puts "MACRO FeatureMerger_4_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} } { puts "MACRO FeatureMerger_4_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } else {}; ] + +FACTORY_DEF * ReferenceFactory FACTORY_NAME FeatureMerger_4 INPUT REFERENCER FEATURE_TYPE DuplicateRemover_UNIQUE_1_0BaZcVvtjAI= INPUT REFERENCEE FEATURE_TYPE AttributeRenamer_5_OUTPUT REFERENCE_INFO $(FeatureMerger_4_REFERENCE_INFO) REFERENCE_TABLE @EvaluateExpression(FDIV,STRING_ENCODED,ValueFileCode,FeatureMerger_4) @EvaluateExpression(FDIV,STRING_ENCODED,Valuedhs_file_code,FeatureMerger_4) AUTO @EvaluateExpression(FDIV,STRING_ENCODED,ValueName,FeatureMerger_4) @EvaluateExpression(FDIV,STRING_ENCODED,Valuerecode,FeatureMerger_4) AUTO ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "REQUESTOR_IF_CONFLICT" IGNORE_NULLS "No" MERGE_ATTRIBUTES Yes MANAGE_FME_TYPE Yes MODE COMPLETE PROCESS_DUPLICATE_REFERENCEES No REFERENCEES_FIRST No OUTPUT COMPLETE FEATURE_TYPE FeatureMerger_4_MERGED OUTPUT INCOMPLETE FEATURE_TYPE FeatureMerger_4_NOT_MERGED + +# ------------------------------------------------------------------------- + +# The default behaviour is to abort on any feature entering the transformer. +# If Workbench has set the _WB_BYPASS_TERMINATION macro to a value of "Yes", +# then the features will instead be passed through with a feature type of +# __WB_BYPASS_TERMINATOR__, which Workbench will send to a visualizer or +# somesuch. + +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TestFactory FACTORY_NAME Terminator_3 INPUT FEATURE_TYPE FeatureMerger_4_NOT_MERGED TEST "$(_WB_BYPASS_TERMINATION)" == Yes OUTPUT PASSED FEATURE_TYPE __WB_BYPASS_TERMINATOR__ @SupplyAttributes(_wb_termination_feature_type,@FeatureType()) @SupplyAttributes(ENCODED,_wb_termination_message,"@EvaluateExpression(FDIV,STRING_ENCODED,TranslationTerminated!NocorrespondingrecodeinfofoundforvalueValueName-ValueValueinfileValueFileCode,Terminator_3)") @SupplyAttributes(_wb_termination_xformer,"Terminator_3") @SupplyAttributes(_wb_termination_feature,Yes) OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED,"@EvaluateExpression(FDIV,STRING_ENCODED,TranslationTerminated!NocorrespondingrecodeinfofoundforvalueValueName-ValueValueinfileValueFileCode,Terminator_3)") + +# ------------------------------------------------------------------------- +MACRO SQLExecutor_DIRECTIVES NAMED_CONNECTION postgreslocalhost:5432dhs QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS Yes + +FACTORY_DEF * QueryFactory FACTORY_NAME SQLExecutor INPUT FEATURE_TYPE FeatureMerger_4_MERGED QUERY_SQL "selectnextvaldhs.dhs_gen_id_seq::regclassasid" READER_TYPE POSTGRES READER_DATASET "@EvaluateExpression(FDIV,STRING_ENCODED,postgreslocalhost:5432dhs,SQLExecutor)" COMBINE_ATTRIBUTES PREFER_QUERY COMBINE_GEOMETRY QUERY_ONLY READER_PARAMS $(SQLExecutor_DIRECTIVES) OUTPUT RESULT FEATURE_TYPE SQLExecutor_RESULT OUTPUT QUERY FEATURE_TYPE SQLExecutor_INITIATOR + +FACTORY_DEF * TeeFactory FACTORY_NAME "SQLExecutor INITIATOR Output Nuker" INPUT FEATURE_TYPE SQLExecutor_INITIATOR +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer_6 INPUT FEATURE_TYPE SQLExecutor_RESULT OUTPUT FEATURE_TYPE AttributeRenamer_6_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, Value,value_code,,ValueDesc,value_description,) + + +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" INPUT FEATURE_TYPE * ROUTE FME_GENERIC AttributeRenamer_2_OUTPUT_0_g+OaL7DIfGA= TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__dhs.dhs_surveys GEOMETRY ROUTE FME_GENERIC SQLExecutor_3_RESULT_1_9wlugf9npY0= TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__dhs.dhs_records GEOMETRY ROUTE FME_GENERIC AttributeRenamer_6_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ EvaluateExpressionATTR_CREATE_EXPR_PROPAGATE_MISSING_FDIVcountry_specificFalseATTR_SET,multi_writer_id,1,SupplyAttributesENCODED__wb_out_feat_type__dhs.dhs_recode_values GEOMETRY ROUTE FME_GENERIC SQLExecutor_2_RESULT_0_eSdfAvmxLjw= TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ EvaluateExpressionATTR_CREATE_EXPR_PROPAGATE_MISSING_FDIVcountry_codeALphase_number6survey_type_codeDScountry_specificTruedata_typeNAitem_typeNAdhs_dec-1dec_charNAzero_fillNAATTR_SET,multi_writer_id,1,SupplyAttributesENCODED__wb_out_feat_type__dhs.dhs_recodes GEOMETRY ROUTE FME_GENERIC __WB_BYPASS_TERMINATOR__ Tcl2FME_StatMessage818062Value_wb_termination_messageValue_wb_termination_xformer818063 TO FME_GENERIC __WB_BYPASS_TERMINATOR__ __wb_out_feat_type__,__WB_BYPASS_TERMINATOR__ GEOMETRY OUTPUT ROUTED FEATURE_TYPE * @FeatureType(ENCODED,@Value(__wb_out_feat_type__)) @RemoveAttributes(__wb_out_feat_type__) OUTPUT NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__ + +# ------------------------------------------------------------------------- + +FACTORY_DEF * CreationFactory CREATE_AT_END OUTPUT FEATURE_TYPE __NUKEME__ @TCL("if [file exists {$(WORKSPACE_TEMP_DIR)}] {set files [glob -nocomplain -directory {$(WORKSPACE_TEMP_DIR)} -tails *.ffs]; if {[llength $files] == 1} { set theFile {$(WORKSPACE_TEMP_DIR)/}; append theFile [lindex $files 0]; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -f FFS $theFile & \175; } elseif { [llength $files] == 0 } { catch { file delete -force {$(WORKSPACE_TEMP_DIR)} }; } else { set filesNoExt {}; set lastfile {}; foreach {fileName} [lsort $files] { set fileNoExt [string trimright $fileName {.ffs}]; if [regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] { if { $fileNoExtBase == $lastfile } { continue } }; set lastfile $fileNoExt; lappend filesNoExt $fileNoExt }; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -d {$(WORKSPACE_TEMP_DIR)} -a ffs -f FFS $filesNoExt & \175; }; }; ") +FACTORY_DEF * TeeFactory INPUT FEATURE_TYPE __NUKEME__ +# ------------------------------------------------------------------------- +POSTGRES_1_DEF dhs.dhs_surveys postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO dhs_numeric_id int4 dhs_api_id varchar(10) record_type_start int4 record_type_len int4 dhs_file_code varchar(8) +# ------------------------------------------------------------------------- +POSTGRES_1_DEF dhs.dhs_records postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO record_code varchar(10) record_desc varchar(120) dhs_file_code varchar(80) record_type_val varchar(4) id_var_name varchar(30) id_var_start int4 id_var_len int4 id int4 +# ------------------------------------------------------------------------- +POSTGRES_2_DEF dhs.dhs_recode_values postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO id int4,PRIKEY recode_id int4,BTREE value_code varchar(10) value_description varchar(120) country_specific bool +# ------------------------------------------------------------------------- +POSTGRES_2_DEF dhs.dhs_recodes postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO recode varchar(12),BTREE country_code varchar(2),BTREE phase_number varchar(2),PRIKEY survey_type_code varchar(2),BTREE recode_data_type varchar(2),BTREE country_specific bool recode_description varchar(100) start int4 len int4 data_type char(2) item_type char(2) occ int4 dhs_dec int4 dec_char varchar(3) zero_fill varchar(3) range_low_value int4 range_high_value int4 record_code varchar(10),BTREE record_id int4 id int4,PRIKEY range_units varchar(60) diff --git a/MetadataManagement/import_dhs_survey_metadata_from_dcfs.fmw b/MetadataManagement/import_dhs_survey_metadata_from_dcfs.fmw new file mode 100644 index 0000000..33872bd --- /dev/null +++ b/MetadataManagement/import_dhs_survey_metadata_from_dcfs.fmw @@ -0,0 +1,5962 @@ +#! +#! map.zoo.ox.ac.uk:5434staging" +# --dcf_file "C:\Users\zool1301\Documents\DHS\RecodeManuals\Recode6.dcf" +# --SourceDataset_PATH "C:\Users\zool1301\Documents\DHS\Phase5\ExtractedSurveysAndShapes" +# --SourceDataset_POSTGRES "staging_rwmap.zoo.ox.ac.uk:5434staging" +# --CountrySpecific "True" +# +# +#! END_TCL="" +#! SOURCE_ROUTING_FILE="" +#! SOURCE="NONE" +#! REQUIREMENTS="" +#! MAX_LOG_FEATURES="200" +#! ZOOM_SCALE="100" +#! FME_BUILD_NUM="15485" +#! DESTINATION="NONE" +#! DESTINATION_ROUTING_FILE="" +#! LEGAL_TERMS_CONDITIONS="" +#! FME_DOCUMENT_GUID="05319f91-4ea8-4dad-bfac-12d35801e093" +#! SHOW_ANNOTATIONS="true" +#! DESCRIPTION="" +#! FME_DOCUMENT_PRIORGUID="7068a455-0aa6-45f0-8de5-3a36265d1d4e,cd768d5e-d6ab-4b1b-a327-184aee2f6e1f,2d45fc6d-2c99-4131-ae40-a3669fbc9021,52bd79a4-a5bb-4e59-9885-1d4439b1788c,51bc44c0-1969-448e-a0ad-49f430dcb5c9,0a359b19-b521-4273-a8d8-f6cad75b1275,a0f8a396-6c5a-41fe-9798-df8ba41da62d,ca48c86c-1a5d-4c64-971a-ecfbdab82191,efec4615-b59b-481e-b998-133e964eec02,843247e8-6331-47c4-93e3-646a3d2c49c9,69748d17-12b0-4f12-a437-c531e60ad58f,679b6916-a25e-442c-a400-c99f6f2ffdcf,8e74a5db-2d01-4943-8dad-048f26de4da0" +#! VIEW_POSITION="-591.006 1848.02" +#! HISTORY="" +#! BEGIN_PYTHON="" +#! FME_GEOMETRY_HANDLING="Enhanced" +#! LOG_MAX_RECORDED_FEATURES="200" +#! MULTI_WRITER_DATASET_ORDER="BY_ID" +#! TITLE="" +#! WARN_INVALID_XFORM_PARAM="Yes" +#! PASSWORD="" +#! CATEGORY="" +#! LAST_SAVE_BUILD="FME(R) 2015.1.0.3 (20150623 - Build 15485 - WIN64)" +#! END_PYTHON="" +#! DOC_TOP_LEFT="-600 -4135.06" +#! FME_REPROJECTION_ENGINE="FME" +#! SHOW_INFO_NODES="true" +#! DOC_EXTENTS="7519.7 5982.22" +#! LOG_MAX_PRECISION="Yes" +#! REQUIREMENTS_KEYWORD="" +#! WORKSPACE_VERSION="1" +#! REDIRECT_TERMINATORS="NONE" +#! FME_STROKE_MAX_DEVIATION="0" +#! FME_SERVER_SERVICES="" +#! IGNORE_READER_FAILURE="No" +#! LAST_SAVE_DATE="2015-08-14T14:26:59" +#! USAGE="" +#! ATTR_TYPE_ENCODING="SDF" +#! FME_IMPLICIT_CSMAP_REPROJECTION_MODE="Auto" +#! BEGIN_TCL="" +#! LOG_FILE="" +#! > +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +GUI IGNORE SourceDataset_CSV_1,CSV_IN_NETWORK_AUTHENTICATION_CSV_1,_SKIP_LINES_CSV_1,_SKIP_FOOTER_CSV_1,_STRIP_QUOTES_CSV_1,_DUPLICATE_DELIMS_CSV_1,SORT_GROUP_CSV_1,_SORT_PARAMS_CSV_1,FILTER_GROUP_CSV_1,_FILTER_PARAMS_CSV_1,_ENCODING_CSV_1,SourceDataset_CSV_2,CSV_IN_NETWORK_AUTHENTICATION_CSV_2,_SKIP_LINES_CSV_2,_SKIP_FOOTER_CSV_2,_STRIP_QUOTES_CSV_2,_DUPLICATE_DELIMS_CSV_2,SORT_GROUP_CSV_2,_SORT_PARAMS_CSV_2,FILTER_GROUP_CSV_2,_FILTER_PARAMS_CSV_2,_ENCODING_CSV_2,SourceDataset_CSV_3,CSV_IN_NETWORK_AUTHENTICATION_CSV_3,_SKIP_LINES_CSV_3,_SKIP_FOOTER_CSV_3,_STRIP_QUOTES_CSV_3,_DUPLICATE_DELIMS_CSV_3,SORT_GROUP_CSV_3,_SORT_PARAMS_CSV_3,FILTER_GROUP_CSV_3,_FILTER_PARAMS_CSV_3,_ENCODING_CSV_3,PATH_IN_GLOB_PATTERN_PATH_1,PATH_IN_TYPE_PATH_1,PATH_IN_RETRIEVE_FILE_PROPERTIES_PATH_1,SourceDataset_PATH_1,PATH_IN_NETWORK_AUTHENTICATION_PATH_1,SourceDataset_POSTGRES_1,POSTGRES_IN_EXPOSE_ATTRS_GROUP_POSTGRES_1,POSTGRES_IN_FEATURES_PER_FETCH_POSTGRES_1,POSTGRES_IN_BEGIN_SQL_POSTGRES_1,POSTGRES_IN_END_SQL_POSTGRES_1,DestDataset_POSTGRES_2,POSTGRES_OUT_WRITER_MODE_POSTGRES_2,POSTGRES_OUT_START_TRANSACTION_POSTGRES_2,POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_2,POSTGRES_OUT_BULK_COPY_POSTGRES_2,POSTGRES_OUT_BEGIN_SQL_POSTGRES_2,POSTGRES_OUT_END_SQL_POSTGRES_2,DestDataset_POSTGRES_3,POSTGRES_OUT_WRITER_MODE_POSTGRES_3,POSTGRES_OUT_START_TRANSACTION_POSTGRES_3,POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_3,POSTGRES_OUT_BULK_COPY_POSTGRES_3,POSTGRES_OUT_BEGIN_SQL_POSTGRES_3,POSTGRES_OUT_END_SQL_POSTGRES_3 +DEFAULT_MACRO CSV_RecordSpec C:\Users\zool1301\Documents\DHS\Phase5\SurveySpecs_Final\ALIR50.FlatRecordSpec.csv +GUI OPTIONAL MULTIFILE CSV_RecordSpec CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Optional: Pre-parsed CSV record spec file, or NA: +DEFAULT_MACRO CSV_ValueSpec C:\Users\zool1301\Documents\DHS\Phase5\SurveySpecs_Final\ALIR50.FlatValuesSpec.csv +GUI OPTIONAL MULTIFILE CSV_ValueSpec CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Optional: Pre-parsed CSV value spec file, or NA: +DEFAULT_MACRO SurveyIDMapFile C:\Users\zool1301\Documents\DHS\DHS_Info\SurveyIdsByFile_P5.csv +GUI MULTIFILE SurveyIDMapFile CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* CSV file containing mapping between different survey ID systems: +DEFAULT_MACRO DestDataset_POSTGRES staging_rwmap.zoo.ox.ac.uk:5434staging +GUI NAMED_DB_CONNECTION_ENCODED DestDataset_POSTGRES FMT:POSTGRES Output DB connection: +DEFAULT_MACRO dcf_file C:\Users\zool1301\Documents\DHS\RecodeManuals\Recode6.dcf +GUI OPTIONAL FILENAME_EXISTING dcf_file dcf_files|*.dcf Optional: Run for a single DCF file, or NA: +DEFAULT_MACRO SourceDataset_PATH C:\Users\zool1301\Documents\DHS\Phase5\ExtractedSurveysAndShapes +GUI OPTIONAL MULTIDIR SourceDataset_PATH Optional: Run for all DCFs in this folder, or NA: +DEFAULT_MACRO SourceDataset_POSTGRES staging_rwmap.zoo.ox.ac.uk:5434staging +GUI NAMED_DB_CONNECTION_ENCODED SourceDataset_POSTGRES FMT:POSTGRES Connection: +DEFAULT_MACRO CountrySpecific True +GUI OPTIONAL CHOICE CountrySpecific True%False Is this DCF file country specific?: +INCLUDE [ if {{$(SurveyIDMapFile)} == {}} { puts_real {Parameter 'SurveyIDMapFile' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(DestDataset_POSTGRES)} == {}} { puts_real {Parameter 'DestDataset_POSTGRES' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(SourceDataset_POSTGRES)} == {}} { puts_real {Parameter 'SourceDataset_POSTGRES' must be given a value.}; exit 1; }; ] +#! START_HEADER +#! START_WB_HEADER +READER_TYPE MULTI_READER +MULTI_READER_TYPE{0} CSV +MULTI_READER_KEYWORD{0} CSV_1 +MULTI_READER_GEN_DIRECTIVES{0} groupBox_6,,groupBox,,SCAN_MAX_FEATURES,1000,_FIELD_NAMES_AFTER_HEADER,no,_ENCODING,,_FILTER_PARAMS,,FILTER_GROUP,NO,_SCHEMA,char7char7char4char50char12char77number40number30number30number50char40char13,SORT_GROUP,NO,_FILTER_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%RecordName%RecordTypeValue%RecordLabel%Name%Label%Start%Len%Occurrences%Range_Low_Value%Range_High_Value%FMETYPE%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no,_SORT_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTESFileCode%RecordName%RecordTypeValue%RecordLabel%Name%Label%Start%Len%Occurrences%Range_Low_Value%Range_High_Value%FMETYPE%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending,_SKIP_FOOTER,0,_DUPLICATE_DELIMS,no,_IN_FIELD_NAMES,YES,_SCHEMA_WITH_COL_NAMES,FileCodechar7RecordNamechar7RecordTypeValuechar4RecordLabelchar50Namechar12Labelchar77Startnumber40Lennumber30Occurrencesnumber30Range_Low_Valuenumber50Range_High_Valuechar40FMETYPEchar13,_GROUP_BY_DATASET,no,_STRIP_QUOTES,yes,_MERGE_SCHEMAS,YES,_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_SKIP_LINES,1,_SORT_PARAMS,,groupBox_2,,groupBox_4,,groupBox_5,,_IN_SEPARATOR, +MULTI_READER_TYPE{1} NULL +MULTI_READER_FORMAT{1} NULL +MULTI_READER_KEYWORD{1} CSV_2 +MULTI_READER_GEN_DIRECTIVES{1} groupBox_6,,groupBox,,SCAN_MAX_FEATURES,1000,_FIELD_NAMES_AFTER_HEADER,no,_ENCODING,,_FILTER_PARAMS,,FILTER_GROUP,NO,_SCHEMA,char7char7char4char50char12char77number40number30number30number50char40char13,SORT_GROUP,NO,_FILTER_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTES%%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no,_SORT_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTES%%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending,_SKIP_FOOTER,0,_DUPLICATE_DELIMS,no,_IN_FIELD_NAMES,YES,_SCHEMA_WITH_COL_NAMES,FileCodechar7RecordNamechar7RecordTypeValuechar4RecordLabelchar50Namechar12Labelchar77Startnumber40Lennumber30Occurrencesnumber30Range_Low_Valuenumber50Range_High_Valuechar40FMETYPEchar13,_GROUP_BY_DATASET,no,_STRIP_QUOTES,yes,_MERGE_SCHEMAS,YES,_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_SKIP_LINES,1,_SORT_PARAMS,,groupBox_2,,groupBox_4,,groupBox_5,,_IN_SEPARATOR, +MULTI_READER_TYPE{2} NULL +MULTI_READER_FORMAT{2} NULL +MULTI_READER_KEYWORD{2} CSV_3 +MULTI_READER_GEN_DIRECTIVES{2} groupBox_6,,groupBox,,SCAN_MAX_FEATURES,1000,_FIELD_NAMES_AFTER_HEADER,no,_ENCODING,,_FILTER_PARAMS,,FILTER_GROUP,NO,_SCHEMA,char7char7char4char50char12char77number40number30number30number50char40char13,SORT_GROUP,NO,_FILTER_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTES%%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no,_SORT_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTES%%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending,_SKIP_FOOTER,0,_DUPLICATE_DELIMS,no,_IN_FIELD_NAMES,YES,_SCHEMA_WITH_COL_NAMES,FileCodechar7RecordNamechar7RecordTypeValuechar4RecordLabelchar50Namechar12Labelchar77Startnumber40Lennumber30Occurrencesnumber30Range_Low_Valuenumber50Range_High_Valuechar40FMETYPEchar13,_GROUP_BY_DATASET,no,_STRIP_QUOTES,yes,_MERGE_SCHEMAS,YES,_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_SKIP_LINES,1,_SORT_PARAMS,,groupBox_2,,groupBox_4,,groupBox_5,,_IN_SEPARATOR, +MULTI_READER_TYPE{3} NULL +MULTI_READER_FORMAT{3} PATH +MULTI_READER_KEYWORD{3} PATH_1 +MULTI_READER_GEN_DIRECTIVES{3} GLOB_PATTERN,*.dcf,RETRIEVE_FILE_PROPERTIES,NO,TYPE,FILE,_MERGE_SCHEMAS,YES +MULTI_READER_TYPE{4} POSTGRES +MULTI_READER_KEYWORD{4} POSTGRES_1 +MULTI_READER_GEN_DIRECTIVES{4} EXPOSE_ATTRS_GROUP,,QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS,Yes,FME_CONNECTION_GROUP,,_MERGE_SCHEMAS,YES,TABLELIST,dhs.dhs_recode_value_types,SCHEMALIST,dhs,POSTGRES_EXPOSE_FORMAT_ATTRS,,NAMED_CONNECTION,staging_rwatmap.zoo.ox.ac.uk:5434solidusstaging +WRITER_TYPE MULTI_WRITER +MULTI_WRITER_DATASET_ORDER BY_ID +MULTI_WRITER_FIRST_WRITER_ID 0 +MULTI_WRITER_TYPE{0} POSTGRES +MULTI_WRITER_KEYWORD{0} POSTGRES_2 +MULTI_WRITER_TYPE{1} POSTGRES +MULTI_WRITER_KEYWORD{1} POSTGRES_3 +#! END_WB_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_1 +# ============================================================================ +# The following GUI line prompts for a folder to be used as the +# source of the CSV files. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_CSV_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_1 +DEFAULT_MACRO SourceDataset_CSV_1 $(SurveyIDMapFile) +GUI MULTIFILE SourceDataset_CSV_1 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +# ============================================================================ +# Hardcode the settings that were used to generate this mapping file +# +DEFAULT_MACRO _SCHEMA_CSV_1 char,7,,char,7,,char,4,,char,50,,char,12,,char,77,,number,4,0,number,3,0,number,3,0,number,5,0,char,40,,char,13, +DEFAULT_MACRO _IN_FIELD_NAMES_CSV_1 YES +DEFAULT_MACRO _FIELD_NAMES_AFTER_HEADER_CSV_1 no +DEFAULT_MACRO _EXTENSION_CSV_1 CSV +DEFAULT_MACRO _ALLOW_SPACES_IN_COLUMN_NAMES_CSV_1 yes +DEFAULT_MACRO _GROUP_BY_DATASET_CSV_1 no +CSV_1_SCHEMA char,7,,char,7,,char,4,,char,50,,char,12,,char,77,,number,4,0,number,3,0,number,3,0,number,5,0,char,40,,char,13, +DEFAULT_MACRO _SKIP_LINES_CSV_1 1 +CSV_1_SKIP_LINES $(_SKIP_LINES_CSV_1) +DEFAULT_MACRO _SKIP_FOOTER_CSV_1 0 +CSV_1_SKIP_FOOTER $(_SKIP_FOOTER_CSV_1) +CSV_1_FIELD_NAMES $(_IN_FIELD_NAMES_CSV_1) +CSV_1_FIELD_NAMES_AFTER_HEADER $(_FIELD_NAMES_AFTER_HEADER_CSV_1) +DEFAULT_MACRO _STRIP_QUOTES_CSV_1 yes +CSV_1_STRIP_QUOTES $(_STRIP_QUOTES_CSV_1) +CSV_1_SEPARATOR (",") +CSV_1_EXTENSION CSV +DEFAULT_MACRO _DUPLICATE_DELIMS_CSV_1 no +CSV_1_DUPLICATE_DELIMS $(_DUPLICATE_DELIMS_CSV_1) +CSV_1_SEQUENCED no +CSV_1_ALLOW_SPACES_IN_COLUMN_NAMES $(_ALLOW_SPACES_IN_COLUMN_NAMES_CSV_1) +CSV_1_GROUP_BY_DATASET $(_GROUP_BY_DATASET_CSV_1) +DEFAULT_MACRO SORT_GROUP_CSV_1 NO +CSV_1_SORT_GROUP $(SORT_GROUP_CSV_1) +DEFAULT_MACRO _SORT_PARAMS_CSV_1 +CSV_1_SORT_PARAMS $(_SORT_PARAMS_CSV_1) +DEFAULT_MACRO FILTER_GROUP_CSV_1 NO +CSV_1_FILTER_GROUP $(FILTER_GROUP_CSV_1) +DEFAULT_MACRO _FILTER_PARAMS_CSV_1 +CSV_1_FILTER_PARAMS $(_FILTER_PARAMS_CSV_1) +# ===================================================================== +# Provide some control over what attributes have the user-selected +# encoding applied. Normally all attributes are updated after being +# read, but the following lines exclude from this treatment all +# attributes whose names start with fme_ or csv_. +CSV_1_UNENCODED_ATTR_PREFIX fme_ csv_ +# =========================================================================== +DEFAULT_MACRO CSV_IN_NETWORK_AUTHENTICATION_CSV_1 +CSV_1_NETWORK_AUTHENTICATION "$(CSV_IN_NETWORK_AUTHENTICATION_CSV_1)" +GUI OPTIONAL AUTHENTICATOR CSV_IN_NETWORK_AUTHENTICATION_CSV_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI INTEGER _SKIP_LINES_CSV_1 Number of Lines to Skip: +GUI INTEGER _SKIP_FOOTER_CSV_1 Number of Footer Lines to Skip: +# GUI CHOICE _IN_FIELD_NAMES yes%no Field Names in File: +# GUI CHOICE _FIELD_NAMES_AFTER_HEADER yes%no Field After Header: +GUI CHOICE _STRIP_QUOTES_CSV_1 yes%no Strip Quotes From Fields: +# GUI TEXT _IN_SEPARATOR Field Delimiter: +# GUI TEXT _EXTENSION Default File Extension: +GUI CHOICE _DUPLICATE_DELIMS_CSV_1 yes%no Skip Duplicate Delimiters: +GUI CHOICE SORT_GROUP_CSV_1 yes%no Sorting Enabled: +GUI OPTIONAL GUI_LINE_TABLE _SORT_PARAMS_CSV_1 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Attribute"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES %"%%"Alpha/Num"%"LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric"%alphabetic%"Order"%"LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending"%ascending Sorting Parameters: +GUI CHOICE FILTER_GROUP_CSV_1 yes%no Filter Enabled: +GUI OPTIONAL GUI_LINE_TABLE _FILTER_PARAMS_CSV_1 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Field Name"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES %"%%"Filter"%"STRING_ENCODED _FILTER_REGEX "%%"Invert Filter"%"CHECKBOX _FILTER_UNMATCHED yes%no"%no Filter Parameters: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO _ENCODING_CSV_1 +GUI OPTIONAL STRING_OR_ENCODING _ENCODING_CSV_1 SYSTEM%* Character Encoding: +CSV_1_ENCODING $(_ENCODING_CSV_1) +CSV_1_DATASET "$(SourceDataset_CSV_1)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_2" +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_2 +# ============================================================================ +# The following GUI line prompts for a folder to be used as the +# source of the CSV files. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_CSV_2 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_2 +DEFAULT_MACRO SourceDataset_CSV_2 $(CSV_RecordSpec) +GUI MULTIFILE SourceDataset_CSV_2 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +# ============================================================================ +# Hardcode the settings that were used to generate this mapping file +# +DEFAULT_MACRO _SCHEMA_CSV_2 char,7,,char,7,,char,4,,char,50,,char,12,,char,77,,number,4,0,number,3,0,number,3,0,number,5,0,char,40,,char,13, +DEFAULT_MACRO _IN_FIELD_NAMES_CSV_2 YES +DEFAULT_MACRO _FIELD_NAMES_AFTER_HEADER_CSV_2 no +DEFAULT_MACRO _EXTENSION_CSV_2 CSV +DEFAULT_MACRO _ALLOW_SPACES_IN_COLUMN_NAMES_CSV_2 yes +DEFAULT_MACRO _GROUP_BY_DATASET_CSV_2 no +CSV_2_SCHEMA char,7,,char,7,,char,4,,char,50,,char,12,,char,77,,number,4,0,number,3,0,number,3,0,number,5,0,char,40,,char,13, +DEFAULT_MACRO _SKIP_LINES_CSV_2 1 +CSV_2_SKIP_LINES $(_SKIP_LINES_CSV_2) +DEFAULT_MACRO _SKIP_FOOTER_CSV_2 0 +CSV_2_SKIP_FOOTER $(_SKIP_FOOTER_CSV_2) +CSV_2_FIELD_NAMES $(_IN_FIELD_NAMES_CSV_2) +CSV_2_FIELD_NAMES_AFTER_HEADER $(_FIELD_NAMES_AFTER_HEADER_CSV_2) +DEFAULT_MACRO _STRIP_QUOTES_CSV_2 yes +CSV_2_STRIP_QUOTES $(_STRIP_QUOTES_CSV_2) +CSV_2_SEPARATOR (",") +CSV_2_EXTENSION CSV +DEFAULT_MACRO _DUPLICATE_DELIMS_CSV_2 no +CSV_2_DUPLICATE_DELIMS $(_DUPLICATE_DELIMS_CSV_2) +CSV_2_SEQUENCED no +CSV_2_ALLOW_SPACES_IN_COLUMN_NAMES $(_ALLOW_SPACES_IN_COLUMN_NAMES_CSV_2) +CSV_2_GROUP_BY_DATASET $(_GROUP_BY_DATASET_CSV_2) +DEFAULT_MACRO SORT_GROUP_CSV_2 NO +CSV_2_SORT_GROUP $(SORT_GROUP_CSV_2) +DEFAULT_MACRO _SORT_PARAMS_CSV_2 +CSV_2_SORT_PARAMS $(_SORT_PARAMS_CSV_2) +DEFAULT_MACRO FILTER_GROUP_CSV_2 NO +CSV_2_FILTER_GROUP $(FILTER_GROUP_CSV_2) +DEFAULT_MACRO _FILTER_PARAMS_CSV_2 +CSV_2_FILTER_PARAMS $(_FILTER_PARAMS_CSV_2) +# ===================================================================== +# Provide some control over what attributes have the user-selected +# encoding applied. Normally all attributes are updated after being +# read, but the following lines exclude from this treatment all +# attributes whose names start with fme_ or csv_. +CSV_2_UNENCODED_ATTR_PREFIX fme_ csv_ +# =========================================================================== +DEFAULT_MACRO CSV_IN_NETWORK_AUTHENTICATION_CSV_2 +CSV_2_NETWORK_AUTHENTICATION "$(CSV_IN_NETWORK_AUTHENTICATION_CSV_2)" +GUI OPTIONAL AUTHENTICATOR CSV_IN_NETWORK_AUTHENTICATION_CSV_2 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI INTEGER _SKIP_LINES_CSV_2 Number of Lines to Skip: +GUI INTEGER _SKIP_FOOTER_CSV_2 Number of Footer Lines to Skip: +# GUI CHOICE _IN_FIELD_NAMES yes%no Field Names in File: +# GUI CHOICE _FIELD_NAMES_AFTER_HEADER yes%no Field After Header: +GUI CHOICE _STRIP_QUOTES_CSV_2 yes%no Strip Quotes From Fields: +# GUI TEXT _IN_SEPARATOR Field Delimiter: +# GUI TEXT _EXTENSION Default File Extension: +GUI CHOICE _DUPLICATE_DELIMS_CSV_2 yes%no Skip Duplicate Delimiters: +GUI CHOICE SORT_GROUP_CSV_2 yes%no Sorting Enabled: +GUI OPTIONAL GUI_LINE_TABLE _SORT_PARAMS_CSV_2 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Attribute"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%RecordName%RecordTypeValue%RecordLabel%Name%Label%Start%Len%Occurrences%Range_Low_Value%Range_High_Value%FMETYPE"%%"Alpha/Num"%"LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric"%alphabetic%"Order"%"LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending"%ascending Sorting Parameters: +GUI CHOICE FILTER_GROUP_CSV_2 yes%no Filter Enabled: +GUI OPTIONAL GUI_LINE_TABLE _FILTER_PARAMS_CSV_2 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Field Name"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES FileCode%RecordName%RecordTypeValue%RecordLabel%Name%Label%Start%Len%Occurrences%Range_Low_Value%Range_High_Value%FMETYPE"%%"Filter"%"STRING_ENCODED _FILTER_REGEX "%%"Invert Filter"%"CHECKBOX _FILTER_UNMATCHED yes%no"%no Filter Parameters: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO _ENCODING_CSV_2 +GUI OPTIONAL STRING_OR_ENCODING _ENCODING_CSV_2 SYSTEM%* Character Encoding: +CSV_2_ENCODING $(_ENCODING_CSV_2) +CSV_2_DATASET "$(SourceDataset_CSV_2)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_3" +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_3 +# ============================================================================ +# The following GUI line prompts for a folder to be used as the +# source of the CSV files. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_CSV_3 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_3 +DEFAULT_MACRO SourceDataset_CSV_3 $(CSV_ValueSpec) +GUI MULTIFILE SourceDataset_CSV_3 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +# ============================================================================ +# Hardcode the settings that were used to generate this mapping file +# +DEFAULT_MACRO _SCHEMA_CSV_3 char,7,,char,7,,char,4,,char,50,,char,12,,char,77,,number,4,0,number,3,0,number,3,0,number,5,0,char,40,,char,13, +DEFAULT_MACRO _IN_FIELD_NAMES_CSV_3 YES +DEFAULT_MACRO _FIELD_NAMES_AFTER_HEADER_CSV_3 no +DEFAULT_MACRO _EXTENSION_CSV_3 CSV +DEFAULT_MACRO _ALLOW_SPACES_IN_COLUMN_NAMES_CSV_3 yes +DEFAULT_MACRO _GROUP_BY_DATASET_CSV_3 no +CSV_3_SCHEMA char,7,,char,7,,char,4,,char,50,,char,12,,char,77,,number,4,0,number,3,0,number,3,0,number,5,0,char,40,,char,13, +DEFAULT_MACRO _SKIP_LINES_CSV_3 1 +CSV_3_SKIP_LINES $(_SKIP_LINES_CSV_3) +DEFAULT_MACRO _SKIP_FOOTER_CSV_3 0 +CSV_3_SKIP_FOOTER $(_SKIP_FOOTER_CSV_3) +CSV_3_FIELD_NAMES $(_IN_FIELD_NAMES_CSV_3) +CSV_3_FIELD_NAMES_AFTER_HEADER $(_FIELD_NAMES_AFTER_HEADER_CSV_3) +DEFAULT_MACRO _STRIP_QUOTES_CSV_3 yes +CSV_3_STRIP_QUOTES $(_STRIP_QUOTES_CSV_3) +CSV_3_SEPARATOR (",") +CSV_3_EXTENSION CSV +DEFAULT_MACRO _DUPLICATE_DELIMS_CSV_3 no +CSV_3_DUPLICATE_DELIMS $(_DUPLICATE_DELIMS_CSV_3) +CSV_3_SEQUENCED no +CSV_3_ALLOW_SPACES_IN_COLUMN_NAMES $(_ALLOW_SPACES_IN_COLUMN_NAMES_CSV_3) +CSV_3_GROUP_BY_DATASET $(_GROUP_BY_DATASET_CSV_3) +DEFAULT_MACRO SORT_GROUP_CSV_3 NO +CSV_3_SORT_GROUP $(SORT_GROUP_CSV_3) +DEFAULT_MACRO _SORT_PARAMS_CSV_3 +CSV_3_SORT_PARAMS $(_SORT_PARAMS_CSV_3) +DEFAULT_MACRO FILTER_GROUP_CSV_3 NO +CSV_3_FILTER_GROUP $(FILTER_GROUP_CSV_3) +DEFAULT_MACRO _FILTER_PARAMS_CSV_3 +CSV_3_FILTER_PARAMS $(_FILTER_PARAMS_CSV_3) +# ===================================================================== +# Provide some control over what attributes have the user-selected +# encoding applied. Normally all attributes are updated after being +# read, but the following lines exclude from this treatment all +# attributes whose names start with fme_ or csv_. +CSV_3_UNENCODED_ATTR_PREFIX fme_ csv_ +# =========================================================================== +DEFAULT_MACRO CSV_IN_NETWORK_AUTHENTICATION_CSV_3 +CSV_3_NETWORK_AUTHENTICATION "$(CSV_IN_NETWORK_AUTHENTICATION_CSV_3)" +GUI OPTIONAL AUTHENTICATOR CSV_IN_NETWORK_AUTHENTICATION_CSV_3 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI INTEGER _SKIP_LINES_CSV_3 Number of Lines to Skip: +GUI INTEGER _SKIP_FOOTER_CSV_3 Number of Footer Lines to Skip: +# GUI CHOICE _IN_FIELD_NAMES yes%no Field Names in File: +# GUI CHOICE _FIELD_NAMES_AFTER_HEADER yes%no Field After Header: +GUI CHOICE _STRIP_QUOTES_CSV_3 yes%no Strip Quotes From Fields: +# GUI TEXT _IN_SEPARATOR Field Delimiter: +# GUI TEXT _EXTENSION Default File Extension: +GUI CHOICE _DUPLICATE_DELIMS_CSV_3 yes%no Skip Duplicate Delimiters: +GUI CHOICE SORT_GROUP_CSV_3 yes%no Sorting Enabled: +GUI OPTIONAL GUI_LINE_TABLE _SORT_PARAMS_CSV_3 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Attribute"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES %"%%"Alpha/Num"%"LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric"%alphabetic%"Order"%"LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending"%ascending Sorting Parameters: +GUI CHOICE FILTER_GROUP_CSV_3 yes%no Filter Enabled: +GUI OPTIONAL GUI_LINE_TABLE _FILTER_PARAMS_CSV_3 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Field Name"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES %"%%"Filter"%"STRING_ENCODED _FILTER_REGEX "%%"Invert Filter"%"CHECKBOX _FILTER_UNMATCHED yes%no"%no Filter Parameters: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO _ENCODING_CSV_3 +GUI OPTIONAL STRING_OR_ENCODING _ENCODING_CSV_3 SYSTEM%* Character Encoding: +CSV_3_ENCODING $(_ENCODING_CSV_3) +CSV_3_DATASET "$(SourceDataset_CSV_3)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "PATH_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER PATH PATH_1 +# ============================================================================= +DEFAULT_MACRO PATH_IN_GLOB_PATTERN_PATH_1 *.dcf +PATH_1_GLOB_PATTERN "$(PATH_IN_GLOB_PATTERN_PATH_1)" +GUI OPTIONAL TEXT_ENCODED PATH_IN_GLOB_PATTERN_PATH_1 Path Filter: +# ============================================================================= +DEFAULT_MACRO PATH_IN_TYPE_PATH_1 FILE +PATH_1_TYPE "$(PATH_IN_TYPE_PATH_1)" +GUI CHOICE PATH_IN_TYPE_PATH_1 ANY%DIRECTORY%FILE Allowed Path Type: +# ============================================================================= +DEFAULT_MACRO PATH_IN_RETRIEVE_FILE_PROPERTIES_PATH_1 NO +PATH_1_RETRIEVE_FILE_PROPERTIES "$(PATH_IN_RETRIEVE_FILE_PROPERTIES_PATH_1)" +GUI CHOICE PATH_IN_RETRIEVE_FILE_PROPERTIES_PATH_1 YES%NO Retrieve file properties: +# ===================================================================== +# The following GUI line prompts for the folder from which to +# read +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_PATH_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER PATH PATH_1 +DEFAULT_MACRO SourceDataset_PATH_1 $(SourceDataset_PATH) +GUI MULTIDIR SourceDataset_PATH_1 Source Folder and File Pathnames Folder: +# =========================================================================== +DEFAULT_MACRO PATH_IN_NETWORK_AUTHENTICATION_PATH_1 +PATH_1_NETWORK_AUTHENTICATION "$(PATH_IN_NETWORK_AUTHENTICATION_PATH_1)" +GUI OPTIONAL AUTHENTICATOR PATH_IN_NETWORK_AUTHENTICATION_PATH_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +PATH_1_DATASET "$(SourceDataset_PATH_1)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "POSTGRES_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER POSTGRES POSTGRES_1 +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_POSTGRES_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER POSTGRES POSTGRES_1 +DEFAULT_MACRO SourceDataset_POSTGRES_1 $(SourceDataset_POSTGRES) +GUI NAMED_DB_CONNECTION_ENCODED SourceDataset_POSTGRES_1 FMT:POSTGRES Connection: +DEFAULT_MACRO POSTGRES_IN_QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS_POSTGRES_1 Yes +POSTGRES_1_QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS "$(POSTGRES_IN_QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS_POSTGRES_1)" +DEFAULT_MACRO POSTGRES_IN_EXPOSE_ATTRS_GROUP_POSTGRES_1 +POSTGRES_1_EXPOSE_ATTRS_GROUP "$(POSTGRES_IN_EXPOSE_ATTRS_GROUP_POSTGRES_1)" +GUI DISCLOSUREGROUP POSTGRES_IN_EXPOSE_ATTRS_GROUP_POSTGRES_1 POSTGRES_EXPOSE_FORMAT_ATTRS Schema Attributes +DEFAULT_MACRO POSTGRES_IN_FEATURES_PER_FETCH_POSTGRES_1 10000 +GUI FLOAT POSTGRES_IN_FEATURES_PER_FETCH_POSTGRES_1 Number Of Records To Fetch At A Time: +POSTGRES_1_FEATURES_PER_FETCH $(POSTGRES_IN_FEATURES_PER_FETCH_POSTGRES_1) +DEFAULT_MACRO POSTGRES_IN_BEGIN_SQL_POSTGRES_1 +GUI OPTIONAL TEXT_EDIT_SQL POSTGRES_IN_BEGIN_SQL_POSTGRES_1 SQL Statement to Execute Before Translation: +POSTGRES_1_BEGIN_SQL "$(POSTGRES_IN_BEGIN_SQL_POSTGRES_1)" +DEFAULT_MACRO POSTGRES_IN_END_SQL_POSTGRES_1 +GUI OPTIONAL TEXT_EDIT_SQL POSTGRES_IN_END_SQL_POSTGRES_1 SQL Statement to Execute After Translation: +POSTGRES_1_END_SQL "$(POSTGRES_IN_END_SQL_POSTGRES_1)" +POSTGRES_1_DATASET "$(SourceDataset_POSTGRES_1)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "POSTGRES_2" +#! END_WB_HEADER +#! START_DEST_HEADER POSTGRES POSTGRES_2 +#! END_DEST_HEADER +#! START_WB_HEADER +DEFAULT_MACRO DestDataset +INCLUDE [ if {"$(DestDataset)" != ""} { \ + puts {DEFAULT_MACRO DestDataset_POSTGRES_2 $(DestDataset)} \ + } ] +#! END_WB_HEADER +#! START_DEST_HEADER POSTGRES POSTGRES_2 +DEFAULT_MACRO DestDataset_POSTGRES_2 $(DestDataset_POSTGRES) +GUI NAMED_DB_CONNECTION_ENCODED DestDataset_POSTGRES_2 FMT:POSTGRES Connection: +# ============================================================================ +# Opt in for destination dataset type vs format type validation +DEFAULT_MACRO POSTGRES_OUT_DESTINATION_DATASETTYPE_VALIDATION_POSTGRES_2 Yes +POSTGRES_2_DESTINATION_DATASETTYPE_VALIDATION "$(POSTGRES_OUT_DESTINATION_DATASETTYPE_VALIDATION_POSTGRES_2)" +DEFAULT_MACRO POSTGRES_OUT_WRITER_MODE_POSTGRES_2 INSERT +GUI CHOICE POSTGRES_OUT_WRITER_MODE_POSTGRES_2 INSERT%UPDATE%DELETE Writer Mode: +POSTGRES_2_WRITER_MODE $(POSTGRES_OUT_WRITER_MODE_POSTGRES_2) +DEFAULT_MACRO POSTGRES_OUT_START_TRANSACTION_POSTGRES_2 0 +GUI TEXT POSTGRES_OUT_START_TRANSACTION_POSTGRES_2 Starting Feature: +POSTGRES_2_START_TRANSACTION $(POSTGRES_OUT_START_TRANSACTION_POSTGRES_2) +DEFAULT_MACRO POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_2 1000 +GUI TEXT POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_2 Features Per Transaction: +POSTGRES_2_TRANSACTION_INTERVAL $(POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_2) +DEFAULT_MACRO POSTGRES_OUT_BULK_COPY_POSTGRES_2 YES +GUI CHOICE POSTGRES_OUT_BULK_COPY_POSTGRES_2 YES%NO Bulk Copy Insert: +POSTGRES_2_BULK_COPY $(POSTGRES_OUT_BULK_COPY_POSTGRES_2) +DEFAULT_MACRO POSTGRES_OUT_BEGIN_SQL_POSTGRES_2 +GUI OPTIONAL TEXT_EDIT_SQL POSTGRES_OUT_BEGIN_SQL_POSTGRES_2 SQL Statement to Execute Before Translation: +POSTGRES_2_BEGIN_SQL "$(POSTGRES_OUT_BEGIN_SQL_POSTGRES_2)" +DEFAULT_MACRO POSTGRES_OUT_END_SQL_POSTGRES_2 +GUI OPTIONAL TEXT_EDIT_SQL POSTGRES_OUT_END_SQL_POSTGRES_2 SQL Statement to Execute After Translation: +POSTGRES_2_END_SQL "$(POSTGRES_OUT_END_SQL_POSTGRES_2)" +POSTGRES_2_DATASET "$(DestDataset_POSTGRES_2)" +#! END_DEST_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "POSTGRES_3" +#! END_WB_HEADER +#! START_DEST_HEADER POSTGRES POSTGRES_3 +#! END_DEST_HEADER +#! START_WB_HEADER +DEFAULT_MACRO DestDataset +INCLUDE [ if {"$(DestDataset)" != ""} { \ + puts {DEFAULT_MACRO DestDataset_POSTGRES_3 $(DestDataset)} \ + } ] +#! END_WB_HEADER +#! START_DEST_HEADER POSTGRES POSTGRES_3 +DEFAULT_MACRO DestDataset_POSTGRES_3 $(DestDataset_POSTGRES) +GUI NAMED_DB_CONNECTION_ENCODED DestDataset_POSTGRES_3 FMT:POSTGRES Connection: +# ============================================================================ +# Opt in for destination dataset type vs format type validation +DEFAULT_MACRO POSTGRES_OUT_DESTINATION_DATASETTYPE_VALIDATION_POSTGRES_3 Yes +POSTGRES_3_DESTINATION_DATASETTYPE_VALIDATION "$(POSTGRES_OUT_DESTINATION_DATASETTYPE_VALIDATION_POSTGRES_3)" +DEFAULT_MACRO POSTGRES_OUT_WRITER_MODE_POSTGRES_3 INSERT +GUI CHOICE POSTGRES_OUT_WRITER_MODE_POSTGRES_3 INSERT%UPDATE%DELETE Writer Mode: +POSTGRES_3_WRITER_MODE $(POSTGRES_OUT_WRITER_MODE_POSTGRES_3) +DEFAULT_MACRO POSTGRES_OUT_START_TRANSACTION_POSTGRES_3 0 +GUI TEXT POSTGRES_OUT_START_TRANSACTION_POSTGRES_3 Starting Feature: +POSTGRES_3_START_TRANSACTION $(POSTGRES_OUT_START_TRANSACTION_POSTGRES_3) +DEFAULT_MACRO POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_3 1000 +GUI TEXT POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_3 Features Per Transaction: +POSTGRES_3_TRANSACTION_INTERVAL $(POSTGRES_OUT_TRANSACTION_INTERVAL_POSTGRES_3) +DEFAULT_MACRO POSTGRES_OUT_BULK_COPY_POSTGRES_3 YES +GUI CHOICE POSTGRES_OUT_BULK_COPY_POSTGRES_3 YES%NO Bulk Copy Insert: +POSTGRES_3_BULK_COPY $(POSTGRES_OUT_BULK_COPY_POSTGRES_3) +DEFAULT_MACRO POSTGRES_OUT_BEGIN_SQL_POSTGRES_3 +GUI OPTIONAL TEXT_EDIT_SQL POSTGRES_OUT_BEGIN_SQL_POSTGRES_3 SQL Statement to Execute Before Translation: +POSTGRES_3_BEGIN_SQL "$(POSTGRES_OUT_BEGIN_SQL_POSTGRES_3)" +DEFAULT_MACRO POSTGRES_OUT_END_SQL_POSTGRES_3 +GUI OPTIONAL TEXT_EDIT_SQL POSTGRES_OUT_END_SQL_POSTGRES_3 SQL Statement to Execute After Translation: +POSTGRES_3_END_SQL "$(POSTGRES_OUT_END_SQL_POSTGRES_3)" +POSTGRES_3_DATASET "$(DestDataset_POSTGRES_3)" +#! END_DEST_HEADER +#! END_HEADER + +LOG_FILENAME "$(FME_MF_DIR)import_dhs_survey_metadata_from_dcfs.log" +LOG_APPEND NO +LOG_MAX_FEATURES 200 +LOG_MAX_RECORDED_FEATURES 200 +LOG_MAX_PRECISION Yes +FME_REPROJECTION_ENGINE FME +FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto +FME_GEOMETRY_HANDLING Enhanced +FME_STROKE_MAX_DEVIATION 0 +LOG_FILTER_MASK -1 +DEFAULT_MACRO DATASET_KEYWORD_CSV_1 CSV_1 +DEFAULT_MACRO DATASET_KEYWORD_CSV_2 CSV_2 +DEFAULT_MACRO DATASET_KEYWORD_CSV_3 CSV_3 +DEFAULT_MACRO DATASET_KEYWORD_PATH_1 PATH_1 +DEFAULT_MACRO DATASET_KEYWORD_POSTGRES_1 POSTGRES_1 +DEFAULT_MACRO DATASET_KEYWORD_POSTGRES_2 POSTGRES_2 +DEFAULT_MACRO DATASET_KEYWORD_POSTGRES_3 POSTGRES_3 +# ------------------------------------------------------------------------- + +CSV_1_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +CSV_2_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +CSV_3_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +PATH_1_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +POSTGRES_1_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +MULTI_READER_CONTINUE_ON_READER_FAILURE No + +# ------------------------------------------------------------------------- + +MACRO WORKSPACE_NAME import_dhs_survey_metadata_from_dcfs +MACRO FME_VIEWER_APP fmedatainspector +# ------------------------------------------------------------------------- + +INCLUDE [ if {[info exists env(FME_TEMP)] && [file isdirectory $env(FME_TEMP)]} {set gVisualizerTemp $env(FME_TEMP)} elseif {[info exists env(TEMP)] && [file isdirectory $env(TEMP)]} {set gVisualizerTemp $env(TEMP)} elseif { $tcl_platform(platform) == "unix" } {set gVisualizerTemp "/tmp"} else {set gVisualizerTemp c:}; regsub -all {[ ,&]} {$(WORKSPACE_NAME)} {_} wsname; set gVisualizerTemp $gVisualizerTemp/${wsname}_[clock format [clock seconds] -format %H%M%S]; puts "MACRO WORKSPACE_TEMP_DIR $gVisualizerTemp"; +MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/inspector.ffs +MACRO VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector.fsc +MACRO VISUALIZER_CREATE_SPATIAL_INDEX YES +# ------------------------------------------------------------------------- +CSV_1_DEF CSV SurveyFilename char(7) Country char(22) Year char(8) Survey_ID_num number(4,0) SurveyAPI_ID char(10) Type char(4) +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" INPUT FEATURE_TYPE * ROUTE CSV CSV_1::CSV multi_reader_keyword,$(DATASET_KEYWORD_CSV_1) TO FME_GENERIC ::CSV ALIAS_GEOMETRY ROUTE POSTGRES POSTGRES_1::dhs.dhs_recode_value_types multi_reader_keyword,$(DATASET_KEYWORD_POSTGRES_1) TO FME_GENERIC ::dhs.dhs_recode_value_types ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * +CSV_1_MERGE_DEF CSV_1::CSV EXACT CSV +CSV_2_MERGE_DEF CSV_2::CSV EXACT CSV +CSV_3_MERGE_DEF CSV_3::CSV EXACT CSV +PATH_1_MERGE_DEF PATH_1::PATH EXACT PATH +POSTGRES_1_MERGE_DEF POSTGRES_1::dhs.dhs_recode_value_types EXACT dhs.dhs_recode_value_types DEFLINE postgres_type,postgres_none,postgres_sql_where_clause,,postgres_sql_statement,,value_type,int4PRIKEY,value_type_desc,varchar50,value_type_short_desc,varchar15PRIKEY +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "CSV (CSV_2) Splitter" INPUT FEATURE_TYPE CSV multi_reader_keyword $(DATASET_KEYWORD_CSV_2) OUTPUT FEATURE_TYPE CSV_CSV_2 +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "CSV (CSV_3) Splitter" INPUT FEATURE_TYPE CSV multi_reader_keyword $(DATASET_KEYWORD_CSV_3) OUTPUT FEATURE_TYPE CSV_CSV_3 +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "CSV (CSV_1) Splitter" INPUT FEATURE_TYPE CSV multi_reader_keyword $(DATASET_KEYWORD_CSV_1) OUTPUT FEATURE_TYPE CSV_CSV_1 +DEFAULT_MACRO WB_CURRENT_CONTEXT +# ------------------------------------------------------------------------- + +Tcl2 proc Creator_CoordSysRemover {} { global FME_CoordSys; set FME_CoordSys {}; } +MACRO Creator_XML NOT_ACTIVATED +MACRO Creator_CLASSIC NOT_ACTIVATED +MACRO Creator_2D3D 2D_GEOMETRY +MACRO Creator_COORDS +INCLUDE [ if { {Geometry Object} == {Geometry Object} } { puts {MACRO Creator_XML *} } ] +INCLUDE [ if { {Geometry Object} == {2D Coordinate List} } { puts {MACRO Creator_2D3D 2D_GEOMETRY}; puts {MACRO Creator_CLASSIC *} } ] +INCLUDE [ if { {Geometry Object} == {3D Coordinate List} } { puts {MACRO Creator_2D3D 3D_GEOMETRY}; puts {MACRO Creator_CLASSIC *} } ] +INCLUDE [ if { {Geometry Object} == {2D Min/Max Box} } { set comment { We need to turn the COORDS which are minX minY maxX maxY into a full polygon list of coordinates }; set splitCoords [split [string trim {}]]; if { [llength $splitCoords] > 4} { set trimmedCoords {}; foreach item $splitCoords { if { $item != {} } {lappend trimmedCoords $item} }; set splitCoords $trimmedCoords; }; if { [llength $splitCoords] != 4 } { error {Creator: Coordinate list is expected to be a space delimited list of four numbers as 'minx miny maxx maxy' - `' is invalid}; }; set minX [lindex $splitCoords 0]; set minY [lindex $splitCoords 1]; set maxX [lindex $splitCoords 2]; set maxY [lindex $splitCoords 3]; puts "MACRO Creator_COORDS $minX $minY $minX $maxY $maxX $maxY $maxX $minY $minX $minY"; puts {MACRO Creator_2D3D 2D_GEOMETRY}; puts {MACRO Creator_CLASSIC *} } ] +FACTORY_DEF $(Creator_XML) CreationFactory FACTORY_NAME Creator_XML_Creator CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ @Geometry(FROM_ENCODED_STRING,?xmlversion=1.0encoding=US_ASCIIstandalone=no?geometrydimension=2nullgeometry) +FACTORY_DEF $(Creator_CLASSIC) CreationFactory FACTORY_NAME Creator_CLASSIC_Creator $(Creator_2D3D) $(Creator_COORDS) CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ +FACTORY_DEF * TeeFactory FACTORY_NAME Creator_Cloner INPUT FEATURE_TYPE _____CREATED______ NUMBER_OF_COPIES 1 OUTPUT FEATURE_TYPE Creator_CREATED @Tcl2(Creator_CoordSysRemover) @CoordSys() fme_feature_type Creator + +# ------------------------------------------------------------------------- + +Tcl2 proc ParameterFetcher_doFetch {} { foreach {name val} {"dcfFN {$(dcf_file$encode)}"} { if { [string match {**} $val] == 1 } { set val [FME_Execute EvaluateExpression {STRING} $val {ParameterFetcher}]; } elseif {[string match {*FME_CONDITIONAL*} $val] == 1} { set val [FME_Execute EvaluateExpression {STRING} $val {ParameterFetcher}]; } else { set val [FME_DecodeTextOrAttr $val]; }; FME_SetAttribute [FME_DecodeText $name] $val } } +FACTORY_DEF * TeeFactory FACTORY_NAME ParameterFetcher INPUT FEATURE_TYPE Creator_CREATED OUTPUT FEATURE_TYPE ParameterFetcher_OUTPUT @Tcl2(ParameterFetcher_doFetch) + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer_8 INPUT FEATURE_TYPE PATH OUTPUT FEATURE_TYPE AttributeRenamer_8_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, path_windows,dcfFN,) + + +# ------------------------------------------------------------------------- + +INCLUDE [ set macroLine "MACRO AttributeKeeper_4_a44825ae_b61c_45d8_8680_e462af1ce6d80_LIST_EXP "; foreach attr [split ""] { set attr [FME_DecodeText $attr]; set attr [regsub "{}$" $attr "{}.*"]; set attr [regsub -all "{}" $attr "\\{\[0-9\]+\\}"]; append macroLine ",^$attr$"; }; puts $macroLine; ] + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeKeeper_4 INPUT FEATURE_TYPE AttributeRenamer_8_OUTPUT INPUT FEATURE_TYPE ParameterFetcher_OUTPUT OUTPUT FEATURE_TYPE AttributeKeeper_4_OUTPUT @KeepAttributes(fme_encoded,dcfFN,fme_pcre_match,"^fme_$(AttributeKeeper_4_a44825ae_b61c_45d8_8680_e462af1ce6d80_LIST_EXP)") + +FACTORY_DEF * TeeFactory FACTORY_NAME "AttributeKeeper_4 OUTPUT Splitter" INPUT FEATURE_TYPE AttributeKeeper_4_OUTPUT OUTPUT FEATURE_TYPE AttributeKeeper_4_OUTPUT_0_pr/LkR+4DTY= OUTPUT FEATURE_TYPE AttributeKeeper_4_OUTPUT_1_pr/LkR+4DTY= +# ------------------------------------------------------------------------- + + +FME_PYTHON_PATH "$(FME_MF_DIR)" + +FACTORY_DEF * PythonFactory FACTORY_NAME PythonCaller INPUT FEATURE_TYPE AttributeKeeper_4_OUTPUT_1_pr/LkR+4DTY= SYMBOL_NAME FeatureCreator PYTHON_NAMESPACE FMEOBJECTS SOURCE_CODE importfmeobjectsfromoperatorimportitemgetterimportreimportosfromdifflibimportSequenceMatcherasSM#DCF_Parser_Main.pyshouldbeinsamedirasworkbenchfilefromDCF_Parser_MainimportparseDCFclassFeatureCreatorobject:definputselffeature:self.dcfFile=feature.getAttributedcfFNparsedDCF=parseDCFself.dcfFilereqFieldNames=FileCodeRecordNameRecordTypeValueRecordLabelNameLabelStartLenOccurrencesZeroFillDecimalCharDecimalFMETYPEforiteminparsedDCF:feature=fmeobjects.FMEFeatureforfinreqFieldNames:iffinitem:feature.setAttributefitemffeature.setAttributeFMETYPEfme_char0!s.formatitemLenself.pyoutputfeaturedef__init__self:passdefcloseself:pass OUTPUT PYOUTPUT FEATURE_TYPE PythonCaller_OUTPUT + +# ------------------------------------------------------------------------- + + +FME_PYTHON_PATH "$(FME_MF_DIR)" + +FACTORY_DEF * PythonFactory FACTORY_NAME PythonCaller_2 INPUT FEATURE_TYPE AttributeKeeper_4_OUTPUT_0_pr/LkR+4DTY= SYMBOL_NAME FeatureCreator PYTHON_NAMESPACE FMEOBJECTS SOURCE_CODE importfmeobjectsfromoperatorimportitemgetterimportreimportosfromdifflibimportSequenceMatcherasSM#DCF_Parser_Main.pyshouldbeinsamedirasworkbenchfilefromDCF_Parser_MainimportparseDCFclassFeatureCreatorobject:definputselffeature:self.dcfFile=feature.getAttributedcfFNparsedDCF=parseDCFself.dcfFilereqFieldNames=FileCodeRecordNameRecordTypeValueRecordLabelNameLabelStartLenOccurrencesZeroFillDecimalCharDecimalFMETYPEforiteminparsedDCF:ifValuesinitemandlenitemValues0:vals=itemValuesforvalinvals:feature=fmeobjects.FMEFeaturefeature.setAttributeFileCodeitemFileCodefeature.setAttributeNameitemNamefeature.setAttributeValueval0feature.setAttributeValueDescval1feature.setAttributeValueTypeval2self.pyoutputfeaturedef__init__self:passdefcloseself:pass OUTPUT PYOUTPUT FEATURE_TYPE PythonCaller_2_OUTPUT + +# ------------------------------------------------------------------------- + +Tcl2 proc DuplicateRemover_77f3c117_fc8d_4883_808c_3d5a083850200_dupKeyCount { attrList } { set attrList [string trim $attrList {()}]; set attrs [split $attrList { } ]; set attrVal {___DuplicateRemover_77f3c117_fc8d_4883_808c_3d5a083850200___}; foreach {attrName} $attrs { set attrName [FME_DecodeText $attrName]; append attrVal [FME_GetAttribute $attrName] {_fmebreak_}; }; return [expr [incr ::__DuplicateRemover_77f3c117_fc8d_4883_808c_3d5a083850200__KeySeenCount($attrVal)] - 1]; }; +FACTORY_DEF * TestFactory FACTORY_NAME DuplicateRemover INPUT FEATURE_TYPE PythonCaller_2_OUTPUT INPUT FEATURE_TYPE CSV_CSV_3 TEST @Tcl2("DuplicateRemover_77f3c117_fc8d_4883_808c_3d5a083850200_dupKeyCount {(FileCode Name Value)}") > 0 OUTPUT PASSED FEATURE_TYPE DuplicateRemover_DUPLICATE OUTPUT FAILED FEATURE_TYPE DuplicateRemover_UNIQUE + +FACTORY_DEF * TeeFactory FACTORY_NAME "DuplicateRemover UNIQUE Splitter" INPUT FEATURE_TYPE DuplicateRemover_UNIQUE OUTPUT FEATURE_TYPE DuplicateRemover_UNIQUE_0_0BaZcVvtjAI= OUTPUT FEATURE_TYPE DuplicateRemover_UNIQUE_1_0BaZcVvtjAI= +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {WARNING_Duplicate_Values_Discarded} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME WARNING_Duplicate_Values_Discarded_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME WARNING_Duplicate_Values_Discarded_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME WARNING_Duplicate_Values_Discarded_FeatureDirector INPUT FEATURE_TYPE DuplicateRemover_DUPLICATE TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE WARNING_Duplicate_Values_Discarded___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE WARNING_Duplicate_Values_Discarded___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME WARNING_Duplicate_Values_Discarded___FeatureDirector1 INPUT FEATURE_TYPE WARNING_Duplicate_Values_Discarded___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE WARNING_Duplicate_Values_Discarded___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE WARNING_Duplicate_Values_Discarded___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME WARNING_Duplicate_Values_Discarded_VectorSetterUpper INPUT FEATURE_TYPE WARNING_Duplicate_Values_Discarded___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc WARNING_Duplicate_Values_Discarded_bfcd9bcc_6e0e_4021_8304_3d66cc021d400_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME WARNING_Duplicate_Values_Discarded___PointCloudThinner INPUT FEATURE_TYPE WARNING_Duplicate_Values_Discarded___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("WARNING_Duplicate_Values_Discarded_bfcd9bcc_6e0e_4021_8304_3d66cc021d400_thinPointCloud") +Tcl2 proc WARNING_Duplicate_Values_Discarded_bfcd9bcc_6e0e_4021_8304_3d66cc021d400_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME WARNING_Duplicate_Values_Discarded_RasterSetterUpper INPUT FEATURE_TYPE WARNING_Duplicate_Values_Discarded___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("WARNING_Duplicate_Values_Discarded_bfcd9bcc_6e0e_4021_8304_3d66cc021d400_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# WARNING_Duplicate_Values_Discarded_bfcd9bcc_6e0e_4021_8304_3d66cc021d400_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO WARNING_Duplicate_Values_Discarded_bfcd9bcc_6e0e_4021_8304_3d66cc021d400_VIS_FEAT_TYPE WARNING_Duplicate_Values_Discarded$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME WARNING_Duplicate_Values_Discarded_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(WARNING_Duplicate_Values_Discarded_bfcd9bcc_6e0e_4021_8304_3d66cc021d400_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA dcfFN,varchar255,FileCode,varchar255,Name,varchar255,Value,varchar255,ValueDesc,varchar255,ValueType,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +DEFAULT_MACRO __StatisticsCalculator_2400ac46_8b7d_4557_813f_dc1cb47fc2260_GROUP_BY +MACRO __StatisticsCalculator_2400ac46_8b7d_4557_813f_dc1cb47fc2260_GROUP_BY FileCode Name ValueType +DYNAMIC_FUNCTION_CONFIGURATION Python FMEOBJECTS +DYNAMIC_FUNCTION_CONFIGURATION Python import StatisticsCalculator +DYNAMIC_FUNCTION_CONFIGURATION Python "StatisticsCalculator.connectTransformer( 'StatisticsCalculator',{ 'GROUP_BY_MACRO':'__StatisticsCalculator_2400ac46_8b7d_4557_813f_dc1cb47fc2260_GROUP_BY', 'GROUP_BY':'FileCode Name ValueType', 'STATS_ATTRS':'Value', 'COUNT_ATTR':'_vals_count', 'COMPUTE_HISTOGRAM':'NO', 'HISTO_ATTR':'', 'PREPEND_ATTR_NAME':'No', 'encoded_result_attrs':True, None:None})" +FACTORY_DEF * TeeFactory FACTORY_NAME StatisticsCalculator_InputProcessor INPUT FEATURE_TYPE DuplicateRemover_UNIQUE_0_0BaZcVvtjAI= OUTPUT FEATURE_TYPE __ORIGINAL__ @Python(StatisticsCalculator.recordFeature,StatisticsCalculator) +FACTORY_DEF * TeeFactory FACTORY_NAME StatisticsCalculator_UnneededInputNuker INPUT FEATURE_TYPE __ORIGINAL__ +FACTORY_DEF * SortFactory FACTORY_NAME StatisticsCalculator_CompleteOutputter INPUT FEATURE_TYPE __UNUSED_INPUT_TO_GUARANTEE_FACTORY_DOESNT_CONSUME_EVERYTHING__ +FACTORY_DEF * CreationFactory FACTORY_NAME StatisticsCalculator_SummaryCreator CREATE_AT_END NUMBER_TO_CREATE 1 OUTPUT FEATURE_TYPE StatisticsCalculator_SUMMARY +FACTORY_DEF * ElementFactory FACTORY_NAME StatisticsCalculator_SummaryExploder LIST_NAME StatisticsCalculator_stats{} MODE LEAN_AND_MEAN CLONE_GEOMETRY no INPUT FEATURE_TYPE __UNUSED_INPUT_TO_GUARANTEE_FACTORY_DOESNT_CONSUME_EVERYTHING__ INPUT FEATURE_TYPE StatisticsCalculator_SUMMARY @Python(StatisticsCalculator.summarizeStatistics,StatisticsCalculator,__SINGLE_GUY__) OUTPUT ELEMENT FEATURE_TYPE StatisticsCalculator_SUMMARY + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TestFactory FACTORY_NAME Tester INPUT FEATURE_TYPE StatisticsCalculator_SUMMARY TEST @EvaluateExpression(FDIV,STRING_ENCODED,Value_vals_count,Tester) > 0 ENCODED BOOLEAN_OPERATOR OR OUTPUT PASSED FEATURE_TYPE Tester_PASSED +# ------------------------------------------------------------------------- + +FACTORY_DEF * TestFactory FACTORY_NAME Tester_2 INPUT FEATURE_TYPE Tester_PASSED TEST @EvaluateExpression(FDIV,STRING_ENCODED,ValueValueType,Tester_2) = RangeMin ENCODED TEST @EvaluateExpression(FDIV,STRING_ENCODED,ValueValueType,Tester_2) = RangeMax ENCODED TEST @EvaluateExpression(FDIV,STRING_ENCODED,ValueValueType,Tester_2) = ExpandedRange ENCODED BOOLEAN_OPERATOR OR OUTPUT PASSED FEATURE_TYPE Tester_2_PASSED OUTPUT FAILED FEATURE_TYPE Tester_2_FAILED +# ------------------------------------------------------------------------- + +FACTORY_DEF * TestFactory FACTORY_NAME Tester_3 INPUT FEATURE_TYPE Tester_2_FAILED TEST @EvaluateExpression(FDIV,STRING_ENCODED,ValueValueType,Tester_3) = ExplicitValue ENCODED BOOLEAN_OPERATOR OR OUTPUT PASSED FEATURE_TYPE Tester_3_PASSED +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer INPUT FEATURE_TYPE CSV_CSV_2 INPUT FEATURE_TYPE PythonCaller_OUTPUT OUTPUT FEATURE_TYPE AttributeRenamer_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, FileCode,dhs_file_code,,Label,recode_description,,Len,len,,Start,start,,Occurrences,occurrences,,RecordName,record_code,,DecimalChar,has_decimal_char,,Decimal,dhs_dec,,ZeroFill,zero_fill,) + + +# ------------------------------------------------------------------------- + +INCLUDE [ puts "MACRO REAL_RATE [expr 1 * -1 ]" ] +FACTORY_DEF * SamplingFactory FACTORY_NAME Sampler SAMPLE_RATE $(REAL_RATE) GROUP_BY dhs_file_code INPUT FEATURE_TYPE AttributeRenamer_OUTPUT OUTPUT SAMPLED FEATURE_TYPE ___SAMPLED___ OUTPUT NOT_SAMPLED FEATURE_TYPE Sampler_NOT_SAMPLED +# This TeeFactory is needed because Sampler will still output features if it has no OUTPUT clauses specified. +# This way we behave nicely even if there are no output connections on the transformer. See PR#28886. + +FACTORY_DEF * TeeFactory FACTORY_NAME Sampler_Sampled INPUT FEATURE_TYPE ___SAMPLED___ OUTPUT FEATURE_TYPE Sampler_SAMPLED + + +FACTORY_DEF * TeeFactory FACTORY_NAME "Sampler SAMPLED Splitter" INPUT FEATURE_TYPE Sampler_SAMPLED OUTPUT FEATURE_TYPE Sampler_SAMPLED_0_6aAHubM4BFE= OUTPUT FEATURE_TYPE Sampler_SAMPLED_1_6aAHubM4BFE= +# ------------------------------------------------------------------------- +FACTORY_DEF * TransformFact:1:Sampler FACTORY_NAME Sampler_2 FACTORY_META_PARAMS TRANSFORMER_NAME:Sampler_2 TRANSFORMER_PARAMS:XFORMER_NAME,Sampler_2,TRANSFORMER_GROUP,,GROUP_BY,record_codedhs_file_code,PARAMETERS_GROUP,,RATE,1,SAMPLE_TYPE_LONG,FirstNFeatures PROCESS_GROUP_BY record_code dhs_file_code MULTI_PROCESS NO_PARALLELISM GROUPS_ARE_ORDERED YES INPUT FEATURE_TYPE Sampler_NOT_SAMPLED OUTPUT SAMPLED FEATURE_TYPE Sampler_2_SAMPLED OUTPUT NOT_SAMPLED FEATURE_TYPE Sampler_2_NOT_SAMPLED +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer_3 INPUT FEATURE_TYPE Sampler_2_SAMPLED OUTPUT FEATURE_TYPE AttributeRenamer_3_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, Name,id_var_name,,start,id_var_start,,len,id_var_len,,RecordTypeValue,record_type_val,,RecordLabel,record_desc,) + + +# ------------------------------------------------------------------------- +MACRO FeatureReader_OUTPUT_PORTS_ENCODED dhs.dhs_surveys +MACRO FeatureReader_DIRECTIVES SCHEMALIST dhs QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS Yes NAMED_CONNECTION staging_rwmap.zoo.ox.ac.uk:5434staging + +# Values come in encoded and come out decoded. +Tcl2 proc FeatureReader_findInListElseDefault { valueEncoded defaultValue } { if { [lsearch [split {$(FeatureReader_OUTPUT_PORTS_ENCODED)}] $valueEncoded] >= 0} { return FeatureReader_[FME_DecodeText $valueEncoded] } else { return FeatureReader_$defaultValue } } +# Always provide an INTERACTION, otherwise the factory defaults to ENVELOPE_INTERSECTS +INCLUDE [if { ( {} == {} ) || ( {($INTERACT_OPTIONS)} == {} ) } { puts {MACRO FCTQUERY_INTERACTION_LINE FCTQUERY_INTERACTION NONE}; } else { puts {MACRO FCTQUERY_INTERACTION_LINE FCTQUERY_INTERACTION ""}; } ] +# Consolidate the attribute merge options to what the factory expects +DEFAULT_MACRO FeatureReader_COMBINE_ATTRS +INCLUDE [ if { {RESULT_ONLY} == {MERGE} } { puts "MACRO FeatureReader_COMBINE_ATTRS "; } else { puts "MACRO FeatureReader_COMBINE_ATTRS RESULT_ONLY"; }; ] +FACTORY_DEF * QueryFactory FACTORY_NAME FeatureReader INPUT FEATURE_TYPE Sampler_SAMPLED_0_6aAHubM4BFE= $(FCTQUERY_INTERACTION_LINE) QUERY_WHERE "@EvaluateExpression(FDIV,STRING_ENCODED,dhs_file_code=Valuedhs_file_code,FeatureReader)" QUERYFCT_TABLE_SEPARATOR SPACE COMBINE_ATTRIBUTES $(FeatureReader_COMBINE_ATTRS) QUERYFCT_ATTRIBUTE_PREFIX COMBINE_GEOMETRY RESULT_ONLY ENABLE_CACHE NO READER_TYPE POSTGRES READER_DATASET "@EvaluateExpression(FDIV,STRING_ENCODED,staging_rwmap.zoo.ox.ac.uk:5434staging,FeatureReader)" READER_IDS dhs.dhs_surveys READER_DIRECTIVES META_MACROS,SourceSCHEMALISTdhsSourceQUERY_FEATURE_TYPES_FOR_MERGE_FILTERSYesSourcePOSTGRES_EXPOSE_FORMAT_ATTRSSourceNAMED_CONNECTIONstaging_rwatmap.zoo.ox.ac.uk:5434solidusstagingSourceFME_CONNECTION_GROUPSourceEXPOSE_ATTRS_GROUP,METAFILE,POSTGRES QUERYFCT_OUTPUT "BASED_ON_CONNECTIONS" CONTINUE_ON_READER_ERROR YES READER_PARAMS $(FeatureReader_DIRECTIVES) OUTPUT RESULT FEATURE_TYPE * @SupplyAttributes(fme_feature_type,@FeatureType()) @Tcl2("set FME_FeatureType [FeatureReader_findInListElseDefault [FME_EncodeText $FME_FeatureType] {}]") @Transform(POSTGRES,FME_GENERIC) + +# ------------------------------------------------------------------------- + +# The default behaviour is to abort on any feature entering the transformer. +# If Workbench has set the _WB_BYPASS_TERMINATION macro to a value of "Yes", +# then the features will instead be passed through with a feature type of +# __WB_BYPASS_TERMINATOR__, which Workbench will send to a visualizer or +# somesuch. + +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TestFactory FACTORY_NAME Terminator_5 INPUT FEATURE_TYPE FeatureReader_dhs.dhs_surveys TEST "$(_WB_BYPASS_TERMINATION)" == Yes OUTPUT PASSED FEATURE_TYPE __WB_BYPASS_TERMINATOR__ @SupplyAttributes(_wb_termination_feature_type,@FeatureType()) @SupplyAttributes(ENCODED,_wb_termination_message,"Thissurveyisalreadyinthedatabase!TranslationTerminated!") @SupplyAttributes(_wb_termination_xformer,"Terminator_5") @SupplyAttributes(_wb_termination_feature,Yes) OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED,"Thissurveyisalreadyinthedatabase!TranslationTerminated!") + +# ------------------------------------------------------------------------- + +INCLUDE [if { {ATTRIBUTES} == {ATTRIBUTES} } { puts "MACRO FeatureMerger_REFERENCE_INFO ATTRIBUTES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} } { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} } { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } else {}; ] + +FACTORY_DEF * ReferenceFactory FACTORY_NAME FeatureMerger INPUT REFERENCER FEATURE_TYPE Sampler_SAMPLED_1_6aAHubM4BFE= INPUT REFERENCEE FEATURE_TYPE CSV_CSV_1 REFERENCE_INFO $(FeatureMerger_REFERENCE_INFO) REFERENCE_TABLE @EvaluateExpression(FDIV,STRING_ENCODED,Valuedhs_file_code,FeatureMerger) @EvaluateExpression(FDIV,STRING_ENCODED,ValueSurveyFilename,FeatureMerger) AUTO ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "REQUESTOR_IF_CONFLICT" IGNORE_NULLS "No" MERGE_ATTRIBUTES Yes MANAGE_FME_TYPE Yes MODE COMPLETE PROCESS_DUPLICATE_REFERENCEES No REFERENCEES_FIRST No OUTPUT COMPLETE FEATURE_TYPE FeatureMerger_MERGED OUTPUT INCOMPLETE FEATURE_TYPE FeatureMerger_NOT_MERGED + +# ------------------------------------------------------------------------- + +# The default behaviour is to abort on any feature entering the transformer. +# If Workbench has set the _WB_BYPASS_TERMINATION macro to a value of "Yes", +# then the features will instead be passed through with a feature type of +# __WB_BYPASS_TERMINATOR__, which Workbench will send to a visualizer or +# somesuch. + +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TestFactory FACTORY_NAME Terminator_4 INPUT FEATURE_TYPE FeatureMerger_NOT_MERGED TEST "$(_WB_BYPASS_TERMINATION)" == Yes OUTPUT PASSED FEATURE_TYPE __WB_BYPASS_TERMINATOR__ @SupplyAttributes(_wb_termination_feature_type,@FeatureType()) @SupplyAttributes(ENCODED,_wb_termination_message,"@EvaluateExpression(FDIV,STRING_ENCODED,TranslationTerminated!SurveyIDinfonotfoundinfileforValuedhs_file_code,Terminator_4)") @SupplyAttributes(_wb_termination_xformer,"Terminator_4") @SupplyAttributes(_wb_termination_feature,Yes) OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED,"@EvaluateExpression(FDIV,STRING_ENCODED,TranslationTerminated!SurveyIDinfonotfoundinfileforValuedhs_file_code,Terminator_4)") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer_2 INPUT FEATURE_TYPE FeatureMerger_MERGED OUTPUT FEATURE_TYPE AttributeRenamer_2_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, start,record_type_start,,len,record_type_len,,SurveyAPI_ID,dhs_api_id,,Survey_ID_num,dhs_numeric_id,) + + +FACTORY_DEF * TeeFactory FACTORY_NAME "AttributeRenamer_2 OUTPUT Splitter" INPUT FEATURE_TYPE AttributeRenamer_2_OUTPUT OUTPUT FEATURE_TYPE AttributeRenamer_2_OUTPUT_0_g+OaL7DIfGA= OUTPUT FEATURE_TYPE AttributeRenamer_2_OUTPUT_1_g+OaL7DIfGA= +# ------------------------------------------------------------------------- + +INCLUDE [ set macroLine "MACRO AttributeKeeper_43243193_39e8_4a4f_8930_dd0c4ca9ff770_LIST_EXP "; foreach attr [split ""] { set attr [FME_DecodeText $attr]; set attr [regsub "{}$" $attr "{}.*"]; set attr [regsub -all "{}" $attr "\\{\[0-9\]+\\}"]; append macroLine ",^$attr$"; }; puts $macroLine; ] + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeKeeper INPUT FEATURE_TYPE AttributeRenamer_2_OUTPUT_0_g+OaL7DIfGA= OUTPUT FEATURE_TYPE AttributeKeeper_OUTPUT @KeepAttributes(fme_encoded,dhs_file_code,fme_pcre_match,"^fme_$(AttributeKeeper_43243193_39e8_4a4f_8930_dd0c4ca9ff770_LIST_EXP)") + +# ------------------------------------------------------------------------- + +INCLUDE [if { {ATTRIBUTES} == {ATTRIBUTES} } { puts "MACRO FeatureMerger_2_REFERENCE_INFO ATTRIBUTES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_2_REFERENCE_INFO GEOM_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_2_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_2_REFERENCE_INFO GEOM_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_2_REFERENCE_INFO GEOM_AND_ATTR_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_2_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_2_REFERENCE_INFO GEOM_AND_ATTR_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} } { puts "MACRO FeatureMerger_2_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} } { puts "MACRO FeatureMerger_2_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } else {}; ] + +FACTORY_DEF * ReferenceFactory FACTORY_NAME FeatureMerger_2 INPUT REFERENCER FEATURE_TYPE AttributeRenamer_3_OUTPUT INPUT REFERENCEE FEATURE_TYPE AttributeKeeper_OUTPUT REFERENCE_INFO $(FeatureMerger_2_REFERENCE_INFO) REFERENCE_TABLE @EvaluateExpression(FDIV,STRING_ENCODED,Valuedhs_file_code,FeatureMerger_2) @EvaluateExpression(FDIV,STRING_ENCODED,Valuedhs_file_code,FeatureMerger_2) AUTO ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "REQUESTOR_IF_CONFLICT" IGNORE_NULLS "No" MERGE_ATTRIBUTES Yes MANAGE_FME_TYPE Yes MODE COMPLETE PROCESS_DUPLICATE_REFERENCEES No REFERENCEES_FIRST No OUTPUT COMPLETE FEATURE_TYPE FeatureMerger_2_MERGED OUTPUT INCOMPLETE FEATURE_TYPE FeatureMerger_2_NOT_MERGED + +# ------------------------------------------------------------------------- + +# The default behaviour is to abort on any feature entering the transformer. +# If Workbench has set the _WB_BYPASS_TERMINATION macro to a value of "Yes", +# then the features will instead be passed through with a feature type of +# __WB_BYPASS_TERMINATOR__, which Workbench will send to a visualizer or +# somesuch. + +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TestFactory FACTORY_NAME Terminator INPUT FEATURE_TYPE FeatureMerger_2_NOT_MERGED TEST "$(_WB_BYPASS_TERMINATION)" == Yes OUTPUT PASSED FEATURE_TYPE __WB_BYPASS_TERMINATOR__ @SupplyAttributes(_wb_termination_feature_type,@FeatureType()) @SupplyAttributes(ENCODED,_wb_termination_message,"@EvaluateExpression(FDIV,STRING_ENCODED,TranslationTerminated!NocorrespondingsurveyinfofoundforrecordValuerecord_codeinfileValuedhs_file_code,Terminator)") @SupplyAttributes(_wb_termination_xformer,"Terminator") @SupplyAttributes(_wb_termination_feature,Yes) OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED,"@EvaluateExpression(FDIV,STRING_ENCODED,TranslationTerminated!NocorrespondingsurveyinfofoundforrecordValuerecord_codeinfileValuedhs_file_code,Terminator)") + +# ------------------------------------------------------------------------- +MACRO SQLExecutor_3_DIRECTIVES QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS Yes NAMED_CONNECTION staging_rwmap.zoo.ox.ac.uk:5434staging + +FACTORY_DEF * QueryFactory FACTORY_NAME SQLExecutor_3 INPUT FEATURE_TYPE FeatureMerger_2_MERGED QUERY_SQL "selectnextvaldhs.dhs_gen_id_seq::regclassasid" READER_TYPE POSTGRES READER_DATASET "@EvaluateExpression(FDIV,STRING_ENCODED,staging_rwmap.zoo.ox.ac.uk:5434staging,SQLExecutor_3)" COMBINE_ATTRIBUTES PREFER_QUERY COMBINE_GEOMETRY QUERY_ONLY READER_PARAMS $(SQLExecutor_3_DIRECTIVES) OUTPUT RESULT FEATURE_TYPE SQLExecutor_3_RESULT OUTPUT QUERY FEATURE_TYPE SQLExecutor_3_INITIATOR + +FACTORY_DEF * TeeFactory FACTORY_NAME "SQLExecutor_3 RESULT Splitter" INPUT FEATURE_TYPE SQLExecutor_3_RESULT OUTPUT FEATURE_TYPE SQLExecutor_3_RESULT_0_9wlugf9npY0= OUTPUT FEATURE_TYPE SQLExecutor_3_RESULT_1_9wlugf9npY0= +FACTORY_DEF * TeeFactory FACTORY_NAME "SQLExecutor_3 INITIATOR Output Nuker" INPUT FEATURE_TYPE SQLExecutor_3_INITIATOR +# ------------------------------------------------------------------------- + +INCLUDE [ set macroLine "MACRO AttributeKeeper_2_55ae6a25_cbc0_482a_9ae2_4cfd6de463cb0_LIST_EXP "; foreach attr [split ""] { set attr [FME_DecodeText $attr]; set attr [regsub "{}$" $attr "{}.*"]; set attr [regsub -all "{}" $attr "\\{\[0-9\]+\\}"]; append macroLine ",^$attr$"; }; puts $macroLine; ] + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeKeeper_2 INPUT FEATURE_TYPE SQLExecutor_3_RESULT_1_9wlugf9npY0= OUTPUT FEATURE_TYPE AttributeKeeper_2_OUTPUT @KeepAttributes(fme_encoded,dhs_file_code,id,record_code,fme_pcre_match,"^fme_$(AttributeKeeper_2_55ae6a25_cbc0_482a_9ae2_4cfd6de463cb0_LIST_EXP)") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer_4 INPUT FEATURE_TYPE AttributeKeeper_2_OUTPUT OUTPUT FEATURE_TYPE AttributeRenamer_4_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, id,record_id,) + + +# ------------------------------------------------------------------------- + +INCLUDE [if { {ATTRIBUTES} == {ATTRIBUTES} } { puts "MACRO FeatureMerger_3_REFERENCE_INFO ATTRIBUTES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_3_REFERENCE_INFO GEOM_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_3_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_3_REFERENCE_INFO GEOM_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_3_REFERENCE_INFO GEOM_AND_ATTR_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_3_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_3_REFERENCE_INFO GEOM_AND_ATTR_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} } { puts "MACRO FeatureMerger_3_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} } { puts "MACRO FeatureMerger_3_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } else {}; ] + +FACTORY_DEF * ReferenceFactory FACTORY_NAME FeatureMerger_3 INPUT REFERENCER FEATURE_TYPE Sampler_2_NOT_SAMPLED INPUT REFERENCEE FEATURE_TYPE AttributeRenamer_4_OUTPUT REFERENCE_INFO $(FeatureMerger_3_REFERENCE_INFO) REFERENCE_TABLE @EvaluateExpression(FDIV,STRING_ENCODED,Valuedhs_file_code,FeatureMerger_3) @EvaluateExpression(FDIV,STRING_ENCODED,Valuedhs_file_code,FeatureMerger_3) AUTO @EvaluateExpression(FDIV,STRING_ENCODED,Valuerecord_code,FeatureMerger_3) @EvaluateExpression(FDIV,STRING_ENCODED,Valuerecord_code,FeatureMerger_3) AUTO ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "REQUESTOR_IF_CONFLICT" IGNORE_NULLS "No" MERGE_ATTRIBUTES Yes MANAGE_FME_TYPE Yes MODE COMPLETE PROCESS_DUPLICATE_REFERENCEES No REFERENCEES_FIRST No OUTPUT COMPLETE FEATURE_TYPE FeatureMerger_3_MERGED OUTPUT INCOMPLETE FEATURE_TYPE FeatureMerger_3_NOT_MERGED + +# ------------------------------------------------------------------------- + +# The default behaviour is to abort on any feature entering the transformer. +# If Workbench has set the _WB_BYPASS_TERMINATION macro to a value of "Yes", +# then the features will instead be passed through with a feature type of +# __WB_BYPASS_TERMINATOR__, which Workbench will send to a visualizer or +# somesuch. + +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TestFactory FACTORY_NAME Terminator_2 INPUT FEATURE_TYPE FeatureMerger_3_NOT_MERGED TEST "$(_WB_BYPASS_TERMINATION)" == Yes OUTPUT PASSED FEATURE_TYPE __WB_BYPASS_TERMINATOR__ @SupplyAttributes(_wb_termination_feature_type,@FeatureType()) @SupplyAttributes(ENCODED,_wb_termination_message,"@EvaluateExpression(FDIV,STRING_ENCODED,TranslationTerminated!NocorrespondingrecordinfofoundforitemValueNameinfileValuedhs_file_code,Terminator_2)") @SupplyAttributes(_wb_termination_xformer,"Terminator_2") @SupplyAttributes(_wb_termination_feature,Yes) OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED,"@EvaluateExpression(FDIV,STRING_ENCODED,TranslationTerminated!NocorrespondingrecordinfofoundforitemValueNameinfileValuedhs_file_code,Terminator_2)") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer_7 INPUT FEATURE_TYPE FeatureMerger_3_MERGED OUTPUT FEATURE_TYPE AttributeRenamer_7_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, Name,recode,) + + +# ------------------------------------------------------------------------- + +INCLUDE [if { {ATTRIBUTES} == {ATTRIBUTES} } { puts "MACRO FeatureMerger_7_REFERENCE_INFO ATTRIBUTES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_7_REFERENCE_INFO GEOM_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_7_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_7_REFERENCE_INFO GEOM_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_7_REFERENCE_INFO GEOM_AND_ATTR_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_7_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_7_REFERENCE_INFO GEOM_AND_ATTR_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} } { puts "MACRO FeatureMerger_7_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} } { puts "MACRO FeatureMerger_7_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } else {}; ] + +FACTORY_DEF * ReferenceFactory FACTORY_NAME FeatureMerger_7 INPUT REFERENCER FEATURE_TYPE AttributeRenamer_7_OUTPUT INPUT REFERENCEE FEATURE_TYPE Tester_2_PASSED REFERENCE_INFO $(FeatureMerger_7_REFERENCE_INFO) REFERENCE_TABLE @EvaluateExpression(FDIV,STRING_ENCODED,Valuedhs_file_code,FeatureMerger_7) @EvaluateExpression(FDIV,STRING_ENCODED,ValueFileCode,FeatureMerger_7) AUTO @EvaluateExpression(FDIV,STRING_ENCODED,Valuerecode,FeatureMerger_7) @EvaluateExpression(FDIV,STRING_ENCODED,ValueName,FeatureMerger_7) AUTO ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "REQUESTOR_IF_CONFLICT" IGNORE_NULLS "No" MERGE_ATTRIBUTES Yes MANAGE_FME_TYPE Yes MODE COMPLETE PROCESS_DUPLICATE_REFERENCEES No REFERENCEES_FIRST No OUTPUT COMPLETE FEATURE_TYPE FeatureMerger_7_MERGED OUTPUT INCOMPLETE FEATURE_TYPE FeatureMerger_7_NOT_MERGED + +# ------------------------------------------------------------------------- + +INCLUDE [if { {ATTRIBUTES} == {ATTRIBUTES} } { puts "MACRO FeatureMerger_5_REFERENCE_INFO ATTRIBUTES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_5_REFERENCE_INFO GEOM_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_5_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_5_REFERENCE_INFO GEOM_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_5_REFERENCE_INFO GEOM_AND_ATTR_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_5_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_5_REFERENCE_INFO GEOM_AND_ATTR_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} } { puts "MACRO FeatureMerger_5_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} } { puts "MACRO FeatureMerger_5_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } else {}; ] + +FACTORY_DEF * ReferenceFactory FACTORY_NAME FeatureMerger_5 INPUT REFERENCER FEATURE_TYPE FeatureMerger_7_NOT_MERGED INPUT REFERENCEE FEATURE_TYPE Tester_3_PASSED REFERENCE_INFO $(FeatureMerger_5_REFERENCE_INFO) REFERENCE_TABLE @EvaluateExpression(FDIV,STRING_ENCODED,Valuedhs_file_code,FeatureMerger_5) @EvaluateExpression(FDIV,STRING_ENCODED,ValueFileCode,FeatureMerger_5) AUTO @EvaluateExpression(FDIV,STRING_ENCODED,Valuerecode,FeatureMerger_5) @EvaluateExpression(FDIV,STRING_ENCODED,ValueName,FeatureMerger_5) AUTO ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "REQUESTOR_IF_CONFLICT" IGNORE_NULLS "No" MERGE_ATTRIBUTES Yes MANAGE_FME_TYPE Yes MODE COMPLETE PROCESS_DUPLICATE_REFERENCEES No REFERENCEES_FIRST No OUTPUT COMPLETE FEATURE_TYPE FeatureMerger_5_MERGED OUTPUT INCOMPLETE FEATURE_TYPE FeatureMerger_5_NOT_MERGED + +# ------------------------------------------------------------------------- +FACTORY_DEF * AttrSetFactory FACTORY_NAME AttributeCreator_3 ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV INPUT FEATURE_TYPE FeatureMerger_5_NOT_MERGED ATTR recode_data_type F OUTPUT OUTPUT FEATURE_TYPE AttributeCreator_3_OUTPUT +# ------------------------------------------------------------------------- +FACTORY_DEF * AttrSetFactory FACTORY_NAME AttributeCreator_2 ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV INPUT FEATURE_TYPE FeatureMerger_5_MERGED ATTR recode_data_type L OUTPUT OUTPUT FEATURE_TYPE AttributeCreator_2_OUTPUT +# ------------------------------------------------------------------------- +FACTORY_DEF * AttrSetFactory FACTORY_NAME AttributeCreator ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV INPUT FEATURE_TYPE FeatureMerger_7_MERGED ATTR recode_data_type R OUTPUT OUTPUT FEATURE_TYPE AttributeCreator_OUTPUT +# ------------------------------------------------------------------------- +MACRO SQLExecutor_2_DIRECTIVES QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS Yes NAMED_CONNECTION staging_rwmap.zoo.ox.ac.uk:5434staging + +FACTORY_DEF * QueryFactory FACTORY_NAME SQLExecutor_2 INPUT FEATURE_TYPE AttributeCreator_OUTPUT INPUT FEATURE_TYPE AttributeCreator_3_OUTPUT INPUT FEATURE_TYPE AttributeCreator_2_OUTPUT QUERY_SQL "selectnextvaldhs.dhs_gen_id_seq::regclassasid" READER_TYPE POSTGRES READER_DATASET "@EvaluateExpression(FDIV,STRING_ENCODED,staging_rwmap.zoo.ox.ac.uk:5434staging,SQLExecutor_2)" COMBINE_ATTRIBUTES PREFER_QUERY COMBINE_GEOMETRY QUERY_ONLY READER_PARAMS $(SQLExecutor_2_DIRECTIVES) OUTPUT RESULT FEATURE_TYPE SQLExecutor_2_RESULT OUTPUT QUERY FEATURE_TYPE SQLExecutor_2_INITIATOR + +FACTORY_DEF * TeeFactory FACTORY_NAME "SQLExecutor_2 RESULT Splitter" INPUT FEATURE_TYPE SQLExecutor_2_RESULT OUTPUT FEATURE_TYPE SQLExecutor_2_RESULT_0_eSdfAvmxLjw= OUTPUT FEATURE_TYPE SQLExecutor_2_RESULT_1_eSdfAvmxLjw= +FACTORY_DEF * TeeFactory FACTORY_NAME "SQLExecutor_2 INITIATOR Output Nuker" INPUT FEATURE_TYPE SQLExecutor_2_INITIATOR +# ------------------------------------------------------------------------- + +INCLUDE [ set macroLine "MACRO AttributeKeeper_3_2a19fc48_b649_4024_98f5_b521edd1072d0_LIST_EXP "; foreach attr [split ""] { set attr [FME_DecodeText $attr]; set attr [regsub "{}$" $attr "{}.*"]; set attr [regsub -all "{}" $attr "\\{\[0-9\]+\\}"]; append macroLine ",^$attr$"; }; puts $macroLine; ] + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeKeeper_3 INPUT FEATURE_TYPE SQLExecutor_2_RESULT_1_eSdfAvmxLjw= OUTPUT FEATURE_TYPE AttributeKeeper_3_OUTPUT @KeepAttributes(fme_encoded,dhs_file_code,id,recode,fme_pcre_match,"^fme_$(AttributeKeeper_3_2a19fc48_b649_4024_98f5_b521edd1072d0_LIST_EXP)") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer_5 INPUT FEATURE_TYPE AttributeKeeper_3_OUTPUT OUTPUT FEATURE_TYPE AttributeRenamer_5_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, id,recode_id,) + + +# ------------------------------------------------------------------------- + +INCLUDE [if { {ATTRIBUTES} == {ATTRIBUTES} } { puts "MACRO FeatureMerger_4_REFERENCE_INFO ATTRIBUTES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_4_REFERENCE_INFO GEOM_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_4_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_4_REFERENCE_INFO GEOM_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_4_REFERENCE_INFO GEOM_AND_ATTR_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_4_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_4_REFERENCE_INFO GEOM_AND_ATTR_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} } { puts "MACRO FeatureMerger_4_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} } { puts "MACRO FeatureMerger_4_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } else {}; ] + +FACTORY_DEF * ReferenceFactory FACTORY_NAME FeatureMerger_4 INPUT REFERENCER FEATURE_TYPE DuplicateRemover_UNIQUE_1_0BaZcVvtjAI= INPUT REFERENCEE FEATURE_TYPE AttributeRenamer_5_OUTPUT REFERENCE_INFO $(FeatureMerger_4_REFERENCE_INFO) REFERENCE_TABLE @EvaluateExpression(FDIV,STRING_ENCODED,ValueFileCode,FeatureMerger_4) @EvaluateExpression(FDIV,STRING_ENCODED,Valuedhs_file_code,FeatureMerger_4) AUTO @EvaluateExpression(FDIV,STRING_ENCODED,ValueName,FeatureMerger_4) @EvaluateExpression(FDIV,STRING_ENCODED,Valuerecode,FeatureMerger_4) AUTO ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "REQUESTOR_IF_CONFLICT" IGNORE_NULLS "No" MERGE_ATTRIBUTES Yes MANAGE_FME_TYPE Yes MODE COMPLETE PROCESS_DUPLICATE_REFERENCEES No REFERENCEES_FIRST No OUTPUT COMPLETE FEATURE_TYPE FeatureMerger_4_MERGED OUTPUT INCOMPLETE FEATURE_TYPE FeatureMerger_4_NOT_MERGED + +# ------------------------------------------------------------------------- + +# The default behaviour is to abort on any feature entering the transformer. +# If Workbench has set the _WB_BYPASS_TERMINATION macro to a value of "Yes", +# then the features will instead be passed through with a feature type of +# __WB_BYPASS_TERMINATOR__, which Workbench will send to a visualizer or +# somesuch. + +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TestFactory FACTORY_NAME Terminator_3 INPUT FEATURE_TYPE FeatureMerger_4_NOT_MERGED TEST "$(_WB_BYPASS_TERMINATION)" == Yes OUTPUT PASSED FEATURE_TYPE __WB_BYPASS_TERMINATOR__ @SupplyAttributes(_wb_termination_feature_type,@FeatureType()) @SupplyAttributes(ENCODED,_wb_termination_message,"@EvaluateExpression(FDIV,STRING_ENCODED,TranslationTerminated!NocorrespondingrecodeinfofoundforvalueValueName-ValueValueinfileValueFileCode,Terminator_3)") @SupplyAttributes(_wb_termination_xformer,"Terminator_3") @SupplyAttributes(_wb_termination_feature,Yes) OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED,"@EvaluateExpression(FDIV,STRING_ENCODED,TranslationTerminated!NocorrespondingrecodeinfofoundforvalueValueName-ValueValueinfileValueFileCode,Terminator_3)") + +# ------------------------------------------------------------------------- + +INCLUDE [if { {ATTRIBUTES} == {ATTRIBUTES} } { puts "MACRO FeatureMerger_6_REFERENCE_INFO ATTRIBUTES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_6_REFERENCE_INFO GEOM_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_6_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_6_REFERENCE_INFO GEOM_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_6_REFERENCE_INFO GEOM_AND_ATTR_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_6_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_6_REFERENCE_INFO GEOM_AND_ATTR_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} } { puts "MACRO FeatureMerger_6_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} } { puts "MACRO FeatureMerger_6_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } else {}; ] + +FACTORY_DEF * ReferenceFactory FACTORY_NAME FeatureMerger_6 INPUT REFERENCER FEATURE_TYPE FeatureMerger_4_MERGED INPUT REFERENCEE FEATURE_TYPE dhs.dhs_recode_value_types REFERENCE_INFO $(FeatureMerger_6_REFERENCE_INFO) REFERENCE_TABLE @EvaluateExpression(FDIV,STRING_ENCODED,ValueValueType,FeatureMerger_6) @EvaluateExpression(FDIV,STRING_ENCODED,Valuevalue_type_short_desc,FeatureMerger_6) AUTO ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "REQUESTOR_IF_CONFLICT" IGNORE_NULLS "No" MERGE_ATTRIBUTES Yes MANAGE_FME_TYPE Yes MODE COMPLETE PROCESS_DUPLICATE_REFERENCEES No REFERENCEES_FIRST Yes OUTPUT COMPLETE FEATURE_TYPE FeatureMerger_6_MERGED + +# ------------------------------------------------------------------------- +MACRO SQLExecutor_DIRECTIVES QUERY_FEATURE_TYPES_FOR_MERGE_FILTERS Yes NAMED_CONNECTION staging_rwmap.zoo.ox.ac.uk:5434staging + +FACTORY_DEF * QueryFactory FACTORY_NAME SQLExecutor INPUT FEATURE_TYPE FeatureMerger_6_MERGED QUERY_SQL "selectnextvaldhs.dhs_gen_id_seq::regclassasid" READER_TYPE POSTGRES READER_DATASET "@EvaluateExpression(FDIV,STRING_ENCODED,staging_rwmap.zoo.ox.ac.uk:5434staging,SQLExecutor)" COMBINE_ATTRIBUTES PREFER_QUERY COMBINE_GEOMETRY QUERY_ONLY READER_PARAMS $(SQLExecutor_DIRECTIVES) OUTPUT RESULT FEATURE_TYPE SQLExecutor_RESULT OUTPUT QUERY FEATURE_TYPE SQLExecutor_INITIATOR + +FACTORY_DEF * TeeFactory FACTORY_NAME "SQLExecutor INITIATOR Output Nuker" INPUT FEATURE_TYPE SQLExecutor_INITIATOR +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer_6 INPUT FEATURE_TYPE SQLExecutor_RESULT OUTPUT FEATURE_TYPE AttributeRenamer_6_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, Value,value_code,,ValueDesc,value_description,) + + +# ------------------------------------------------------------------------- + +# Since the Tcl "END" index specification starts at -1 for the second +# last character, and we've defined -1 to be the last charater, we've got +# small bit of fiddling to do + +Tcl2 proc SubstringExtractor_4_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } +Tcl2 proc SubstringExtractor_4_extract {startIdx endIdx} { FME_SetAttribute [FME_DecodeText value_description] [string range [FME_DecodeTextOrAttr @EvaluateExpression(FDIV,STRING_ENCODED,Valuevalue_description,SubstringExtractor_4)] [SubstringExtractor_4_fixLastIndex $startIdx] [SubstringExtractor_4_fixLastIndex $endIdx]] } +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor_4 INPUT FEATURE_TYPE AttributeRenamer_6_OUTPUT OUTPUT FEATURE_TYPE SubstringExtractor_4_OUTPUT @Tcl2("SubstringExtractor_4_extract 0 119") + +# ------------------------------------------------------------------------- + +# Since the Tcl "END" index specification starts at -1 for the second +# last character, and we've defined -1 to be the last charater, we've got +# small bit of fiddling to do + +Tcl2 proc SubstringExtractor_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } +Tcl2 proc SubstringExtractor_extract {startIdx endIdx} { FME_SetAttribute [FME_DecodeText country_code] [string range [FME_DecodeTextOrAttr @EvaluateExpression(FDIV,STRING_ENCODED,Valuedhs_file_code,SubstringExtractor)] [SubstringExtractor_fixLastIndex $startIdx] [SubstringExtractor_fixLastIndex $endIdx]] } +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor INPUT FEATURE_TYPE SQLExecutor_2_RESULT_0_eSdfAvmxLjw= OUTPUT FEATURE_TYPE SubstringExtractor_OUTPUT @Tcl2("SubstringExtractor_extract 0 1") + +# ------------------------------------------------------------------------- + +# Since the Tcl "END" index specification starts at -1 for the second +# last character, and we've defined -1 to be the last charater, we've got +# small bit of fiddling to do + +Tcl2 proc SubstringExtractor_2_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } +Tcl2 proc SubstringExtractor_2_extract {startIdx endIdx} { FME_SetAttribute [FME_DecodeText phase_number] [string range [FME_DecodeTextOrAttr @EvaluateExpression(FDIV,STRING_ENCODED,Valuedhs_file_code,SubstringExtractor_2)] [SubstringExtractor_2_fixLastIndex $startIdx] [SubstringExtractor_2_fixLastIndex $endIdx]] } +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor_2 INPUT FEATURE_TYPE SubstringExtractor_OUTPUT OUTPUT FEATURE_TYPE SubstringExtractor_2_OUTPUT @Tcl2("SubstringExtractor_2_extract 4 4") + +# ------------------------------------------------------------------------- + +# Since the Tcl "END" index specification starts at -1 for the second +# last character, and we've defined -1 to be the last charater, we've got +# small bit of fiddling to do + +Tcl2 proc SubstringExtractor_3_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } +Tcl2 proc SubstringExtractor_3_extract {startIdx endIdx} { FME_SetAttribute [FME_DecodeText recode_description] [string range [FME_DecodeTextOrAttr @EvaluateExpression(FDIV,STRING_ENCODED,Valuerecode_description,SubstringExtractor_3)] [SubstringExtractor_3_fixLastIndex $startIdx] [SubstringExtractor_3_fixLastIndex $endIdx]] } +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor_3 INPUT FEATURE_TYPE SubstringExtractor_2_OUTPUT OUTPUT FEATURE_TYPE SubstringExtractor_3_OUTPUT @Tcl2("SubstringExtractor_3_extract 0 99") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" INPUT FEATURE_TYPE * ROUTE FME_GENERIC AttributeRenamer_2_OUTPUT_1_g+OaL7DIfGA= TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ EvaluateExpressionATTR_CREATE_EXPR_PROPAGATE_MISSING_FDIVcountry_specific$(CountrySpecific$encode$encode)ATTR_SET,multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__dhs.dhs_surveys GEOMETRY ROUTE FME_GENERIC SQLExecutor_3_RESULT_0_9wlugf9npY0= TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__dhs.dhs_records GEOMETRY ROUTE FME_GENERIC SubstringExtractor_4_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,1,SupplyAttributesENCODED__wb_out_feat_type__dhs_recode_values GEOMETRY ROUTE FME_GENERIC SubstringExtractor_3_OUTPUT TO POSTGRES __GO_TO_FINAL_OUTPUT_ROUTER__ EvaluateExpressionATTR_CREATE_EXPR_PROPAGATE_MISSING_FDIVdhs_data_typeAis_sub_itemFalseATTR_SET,multi_writer_id,1,SupplyAttributesENCODED__wb_out_feat_type__dhs.dhs_recodes GEOMETRY ROUTE FME_GENERIC __WB_BYPASS_TERMINATOR__ Tcl2FME_StatMessage818062Value_wb_termination_messageValue_wb_termination_xformer818063 TO FME_GENERIC __WB_BYPASS_TERMINATOR__ __wb_out_feat_type__,__WB_BYPASS_TERMINATOR__ GEOMETRY OUTPUT ROUTED FEATURE_TYPE * @FeatureType(ENCODED,@Value(__wb_out_feat_type__)) @RemoveAttributes(__wb_out_feat_type__) OUTPUT NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__ + +# ------------------------------------------------------------------------- + +FACTORY_DEF * CreationFactory CREATE_AT_END OUTPUT FEATURE_TYPE __NUKEME__ @TCL("if [file exists {$(WORKSPACE_TEMP_DIR)}] {set files [glob -nocomplain -directory {$(WORKSPACE_TEMP_DIR)} -tails *.ffs]; if {[llength $files] == 1} { set theFile {$(WORKSPACE_TEMP_DIR)/}; append theFile [lindex $files 0]; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -f FFS $theFile & \175; } elseif { [llength $files] == 0 } { catch { file delete -force {$(WORKSPACE_TEMP_DIR)} }; } else { set filesNoExt {}; set lastfile {}; foreach {fileName} [lsort $files] { set fileNoExt [string trimright $fileName {.ffs}]; if [regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] { if { $fileNoExtBase == $lastfile } { continue } }; set lastfile $fileNoExt; lappend filesNoExt $fileNoExt }; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -d {$(WORKSPACE_TEMP_DIR)} -a ffs -f FFS $filesNoExt & \175; }; }; ") +FACTORY_DEF * TeeFactory INPUT FEATURE_TYPE __NUKEME__ +# ------------------------------------------------------------------------- +POSTGRES_2_DEF dhs.dhs_surveys postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO dhs_numeric_id int4 dhs_api_id varchar(10) record_type_start int4 record_type_len int4 dhs_file_code varchar(8),PRIKEY country_specific bool +# ------------------------------------------------------------------------- +POSTGRES_2_DEF dhs.dhs_records postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO record_code varchar(10) record_desc varchar(120) dhs_file_code varchar(80) record_type_val varchar(4) id_var_name varchar(30) id_var_start int4 id_var_len int4 id int4,PRIKEY +# ------------------------------------------------------------------------- +POSTGRES_3_DEF dhs_recode_values postgres_type All postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO id int4,PRIKEY recode_id int4,BTREE value_code varchar(10) value_description varchar(120) value_type int4 +# ------------------------------------------------------------------------- +POSTGRES_3_DEF dhs.dhs_recodes postgres_type postgres_none postgres_mode INHERIT_FROM_WRITER postgres_sql_key_columns "" postgres_drop_table NO postgres_truncate_table NO postgres_create_with_oids NO postgres_vacuum_analyze NO postgres_allow_serial_writing NO id int4,PRIKEY recode varchar(12),BTREE recode_data_type varchar(2),BTREE recode_description varchar(100) start int4 len int4 dhs_data_type char(2) occurrences int4 dhs_dec int4 is_sub_item bool zero_fill bool has_decimal_char bool record_id int4,PRIKEY diff --git a/MetadataManagement/import_dhs_survey_metadata_from_dcfs_multirunner.fmw b/MetadataManagement/import_dhs_survey_metadata_from_dcfs_multirunner.fmw new file mode 100644 index 0000000..e9d9162 --- /dev/null +++ b/MetadataManagement/import_dhs_survey_metadata_from_dcfs_multirunner.fmw @@ -0,0 +1,813 @@ +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +GUI IGNORE PATH_IN_GLOB_PATTERN_PATH_1,PATH_IN_TYPE_PATH_1,PATH_IN_RETRIEVE_FILE_PROPERTIES_PATH_1,SourceDataset_PATH_1,PATH_IN_NETWORK_AUTHENTICATION_PATH_1 +DEFAULT_MACRO SourceDataset_PATH C:\Users\zool1301\Documents\DHS\Phase6_2\ExtractedSurveysAndShapes +GUI MULTIDIR SourceDataset_PATH Source Folder and File Pathnames Folder: +INCLUDE [ if {{$(SourceDataset_PATH)} == {}} { puts_real {Parameter 'SourceDataset_PATH' must be given a value.}; exit 1; }; ] +#! START_HEADER +#! START_WB_HEADER +READER_TYPE PATH +READER_KEYWORD PATH_1 +READER_GEN_DIRECTIVES GLOB_PATTERN,*.dcf,RETRIEVE_FILE_PROPERTIES,NO,TYPE,FILE,_MERGE_SCHEMAS,YES +WRITER_TYPE NULL +WRITER_KEYWORD NULL_DEST +NULL_DEST_DATASET null +#! END_WB_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "PATH_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER PATH PATH_1 +# ============================================================================= +DEFAULT_MACRO PATH_IN_GLOB_PATTERN_PATH_1 *.dcf +PATH_1_GLOB_PATTERN "$(PATH_IN_GLOB_PATTERN_PATH_1)" +GUI OPTIONAL TEXT_ENCODED PATH_IN_GLOB_PATTERN_PATH_1 Path Filter: +# ============================================================================= +DEFAULT_MACRO PATH_IN_TYPE_PATH_1 FILE +PATH_1_TYPE "$(PATH_IN_TYPE_PATH_1)" +GUI CHOICE PATH_IN_TYPE_PATH_1 ANY%DIRECTORY%FILE Allowed Path Type: +# ============================================================================= +DEFAULT_MACRO PATH_IN_RETRIEVE_FILE_PROPERTIES_PATH_1 NO +PATH_1_RETRIEVE_FILE_PROPERTIES "$(PATH_IN_RETRIEVE_FILE_PROPERTIES_PATH_1)" +GUI CHOICE PATH_IN_RETRIEVE_FILE_PROPERTIES_PATH_1 YES%NO Retrieve file properties: +# ===================================================================== +# The following GUI line prompts for the folder from which to +# read +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_PATH_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER PATH PATH_1 +DEFAULT_MACRO SourceDataset_PATH_1 $(SourceDataset_PATH) +GUI MULTIDIR SourceDataset_PATH_1 Source Folder and File Pathnames Folder: +# =========================================================================== +DEFAULT_MACRO PATH_IN_NETWORK_AUTHENTICATION_PATH_1 +PATH_1_NETWORK_AUTHENTICATION "$(PATH_IN_NETWORK_AUTHENTICATION_PATH_1)" +GUI OPTIONAL AUTHENTICATOR PATH_IN_NETWORK_AUTHENTICATION_PATH_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +PATH_1_DATASET "$(SourceDataset_PATH_1)" +#! END_SOURCE_HEADER +#! END_HEADER + +LOG_FILENAME "$(FME_MF_DIR)import_dhs_survey_metadata_from_dcfs_multirunner.log" +LOG_APPEND NO +LOG_MAX_FEATURES 200 +LOG_MAX_RECORDED_FEATURES 200 +LOG_MAX_PRECISION Yes +FME_REPROJECTION_ENGINE FME +FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto +FME_GEOMETRY_HANDLING Enhanced +FME_STROKE_MAX_DEVIATION 0 +LOG_FILTER_MASK -1 +DEFAULT_MACRO DATASET_KEYWORD_PATH_1 PATH_1 +# ------------------------------------------------------------------------- + +PATH_1_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +MULTI_READER_CONTINUE_ON_READER_FAILURE No + +# ------------------------------------------------------------------------- + +MACRO WORKSPACE_NAME import_dhs_survey_metadata_from_dcfs_multirunner +MACRO FME_VIEWER_APP fmedatainspector +# ------------------------------------------------------------------------- + +INCLUDE [ if {[info exists env(FME_TEMP)] && [file isdirectory $env(FME_TEMP)]} {set gVisualizerTemp $env(FME_TEMP)} elseif {[info exists env(TEMP)] && [file isdirectory $env(TEMP)]} {set gVisualizerTemp $env(TEMP)} elseif { $tcl_platform(platform) == "unix" } {set gVisualizerTemp "/tmp"} else {set gVisualizerTemp c:}; regsub -all {[ ,&]} {$(WORKSPACE_NAME)} {_} wsname; set gVisualizerTemp $gVisualizerTemp/${wsname}_[clock format [clock seconds] -format %H%M%S]; puts "MACRO WORKSPACE_TEMP_DIR $gVisualizerTemp"; +MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/inspector.ffs +MACRO VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector.fsc +MACRO VISUALIZER_CREATE_SPATIAL_INDEX YES +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" INPUT FEATURE_TYPE * @SupplyAttributes(multi_reader_keyword,PATH_1) ROUTE PATH PATH_1::PATH TO FME_GENERIC ::PATH ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * +PATH_1_MERGE_DEF PATH_1::PATH EXACT PATH +DEFAULT_MACRO WB_CURRENT_CONTEXT +# ------------------------------------------------------------------------- + +# Convert the workspace name to one containing only / -- Tcl likes this better +# (and so do I) + +# And determine the "NULL" device so we can ensure we don't get stray output +# messing up our stdout if we are running workspaces in the background +# See http://wiki.tcl.tk/1649 for a description of the tcl_platform +# variable, the "platform" part seems to have valid values windows, unix, and +# macintosh (the latter of which is actually pre-OS X) + +Tcl2 if { $tcl_platform(platform) == {windows} } { set ::null_device {NUL:}; set ::__WR_ENV_HELPER__ {}; } else { set ::null_device {/dev/null}; set ::__WR_ENV_HELPER__ {/usr/bin/env FME_SUBPROCESS_RUN_DETACHED=1} }; +Tcl2 proc WorkspaceRunner_95ce7549_2d27_4baa_b318_b19381866eee0_runner { parmListString workspaceFile } { set workspaceFileUnix [regsub -all {\\} $workspaceFile {/}]; set parmListString [string trim $parmListString {()}]; set comment { Build up the command line in a list, which we'll "eval" to get at its pieces when we actually execute the "exec". }; lappend commandArguments {*}$::__WR_ENV_HELPER__ {$(FME_HOME_UNIX)/fme} $workspaceFileUnix; set parmList [split $parmListString {,}]; foreach {parmName encodedValue} $parmList { set comment { Decode the parameter value which we now know is very encoded to guard it from the parser and append them each to a new list which will be passed as the arguments to the exec function. Note that the parameter names need to be turned into macro settings by prepending them with -- Note also that the WorkspaceRunner sometimes encodes attribute dereferences by placing at the beginning rather than using @Value. Further note that string range forgives if the ending index is > the length of the string, so we can just ask for the first 5 characters when we're checking for . }; lappend commandArguments \"--$parmName\"; set comment { for backwards compatibility, replace first }; if { [string range $encodedValue 0 4] == {} && [string length $encodedValue] > 5 } { set encodedValue [string replace $encodedValue 0 4 {Value}]]; append encodedValue ""; }; set comment { We used to call FME_DecodeTextOrAttr here. After changes to the code that writes out the mapping file section, we don't need to do this any more because the value would be in the correct state of encoding as required by the child workspace }; set comment { parameter values starting with '<' causes tcl exec to fail so we escape leading '<' with backslash and then do the reverse when parsing command line arguments }; if { [string index $encodedValue 0] == {<} } { set encodedValue "\\$encodedValue"; }; lappend commandArguments $encodedValue; }; set comment { Now optionally run this in a detached way if we were not supposed to wait by adding & on the end to put it in the background. And at the same time, ensure that any stray stdout/stderr is routed to null. }; if { {No} == {No} } { lappend commandArguments \">$::null_device\"; lappend commandArguments \"<$::null_device\"; FME_LogMessage fme_inform \"WorkspaceRunner: Initiating run of FME Workspace $workspaceFile with command line:\"; } else { FME_LogMessage fme_inform \"WorkspaceRunner: Running FME Workspace $workspaceFile with command line:\"; }; set comment { The below 2>@1 forces any standard error output to go into the msg variable or to NULL if we're running in the background. }; lappend commandArguments {2>@1}; if { {No} == {No} } { lappend commandArguments {&}; }; FME_LogMessage fme_inform [concat WorkspaceRunner: $commandArguments]; if { {No} == {No} } { after 1000; while { [FME_CanSpawnFme 3] == {0} } { after 2000; }; }; if {[catch {eval [concat exec $commandArguments] } msg ]} { set msg [regsub {\015*\012child[^\012]*$} $msg {}]; FME_LogMessage fme_warn \"WorkspaceRunner: Failed to run workspace $workspaceFileUnix -- Trace was:\n\n$msg\n\"; FME_SetAttribute _failure_message $msg; return FAILURE; } else { global WorkspaceRunner_95ce7549_2d27_4baa_b318_b19381866eee0_process_count; incr WorkspaceRunner_95ce7549_2d27_4baa_b318_b19381866eee0_process_count; if { {No} == {No} } { FME_LogMessage fme_inform \"WorkspaceRunner: Successfully initiated run of workspace $workspaceFile\"; global WorkspaceRunner_95ce7549_2d27_4baa_b318_b19381866eee0_all_processes; lappend WorkspaceRunner_95ce7549_2d27_4baa_b318_b19381866eee0_all_processes $msg; } else { FME_LogMessage fme_inform \"WorkspaceRunner: Successfully ran workspace $workspaceFile\"; }; return SUCCESS; }; } +FACTORY_DEF * TestFactory FACTORY_NAME WorkspaceRunner_ExecutorAndRouter INPUT FEATURE_TYPE PATH TEST @Tcl2("WorkspaceRunner_95ce7549_2d27_4baa_b318_b19381866eee0_runner {(CSV_RecordSpec,na,CSV_ValueSpec,na,SurveyIDMapFile,C:\Users\zool1301\Documents\DHS\DHS_Info\SurveyIdsByFile_P6_2.csv,DestDataset_POSTGRES,@EvaluateExpression(FDIV,STRING,staging_rwatmap.zoo.ox.ac.uk:5434solidusstaging,WorkspaceRunner),dcf_file,@EvaluateExpression(FDIV,STRING,Valuepath_windows,WorkspaceRunner),SourceDataset_PATH,na,SourceDataset_POSTGRES,@EvaluateExpression(FDIV,STRING,staging_rwatmap.zoo.ox.ac.uk:5434solidusstaging,WorkspaceRunner),CountrySpecific,True)} {@EvaluateExpression(FDIV,STRING,$(FME_MF_DIR$encode)import_dhs_survey_metadata_from_dcfs.fmw,WorkspaceRunner)}") == SUCCESS OUTPUT PASSED FEATURE_TYPE WorkspaceRunner_SUCCEEDED OUTPUT FAILED FEATURE_TYPE WorkspaceRunner_FAILED +Tcl2 proc WorkspaceRunner_95ce7549_2d27_4baa_b318_b19381866eee0_summarizer { } { global WorkspaceRunner_95ce7549_2d27_4baa_b318_b19381866eee0_process_count; set comment { incr 0 creates the variable if it wasn't present }; incr WorkspaceRunner_95ce7549_2d27_4baa_b318_b19381866eee0_process_count 0; FME_SetAttribute _proc_count [set WorkspaceRunner_95ce7549_2d27_4baa_b318_b19381866eee0_process_count]; global WorkspaceRunner_95ce7549_2d27_4baa_b318_b19381866eee0_all_processes; if {[info exists WorkspaceRunner_95ce7549_2d27_4baa_b318_b19381866eee0_all_processes]} { set index 0; foreach pid [set WorkspaceRunner_95ce7549_2d27_4baa_b318_b19381866eee0_all_processes] { FME_SetAttribute \"_processes{$index}\" $pid; incr index; } } } +FACTORY_DEF * CreationFactory FACTORY_NAME WorkspaceRunner_SummaryMaker CREATE_AT_END yes OUTPUT FEATURE_TYPE WorkspaceRunner_SUMMARY @Tcl2(WorkspaceRunner_95ce7549_2d27_4baa_b318_b19381866eee0_summarizer) + +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {WorkspaceRunner_Summary} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME WorkspaceRunner_Summary_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Summary_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME WorkspaceRunner_Summary_FeatureDirector INPUT FEATURE_TYPE WorkspaceRunner_SUMMARY TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE WorkspaceRunner_Summary___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE WorkspaceRunner_Summary___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME WorkspaceRunner_Summary___FeatureDirector1 INPUT FEATURE_TYPE WorkspaceRunner_Summary___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE WorkspaceRunner_Summary___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE WorkspaceRunner_Summary___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Summary_VectorSetterUpper INPUT FEATURE_TYPE WorkspaceRunner_Summary___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc WorkspaceRunner_Summary_dbe29aee_8af4_4228_86b0_ccdc6a6348290_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Summary___PointCloudThinner INPUT FEATURE_TYPE WorkspaceRunner_Summary___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("WorkspaceRunner_Summary_dbe29aee_8af4_4228_86b0_ccdc6a6348290_thinPointCloud") +Tcl2 proc WorkspaceRunner_Summary_dbe29aee_8af4_4228_86b0_ccdc6a6348290_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Summary_RasterSetterUpper INPUT FEATURE_TYPE WorkspaceRunner_Summary___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("WorkspaceRunner_Summary_dbe29aee_8af4_4228_86b0_ccdc6a6348290_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# WorkspaceRunner_Summary_dbe29aee_8af4_4228_86b0_ccdc6a6348290_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO WorkspaceRunner_Summary_dbe29aee_8af4_4228_86b0_ccdc6a6348290_VIS_FEAT_TYPE WorkspaceRunner_Summary$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME WorkspaceRunner_Summary_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(WorkspaceRunner_Summary_dbe29aee_8af4_4228_86b0_ccdc6a6348290_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA _proc_count,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {WorkspaceRunner_Failed} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME WorkspaceRunner_Failed_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Failed_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME WorkspaceRunner_Failed_FeatureDirector INPUT FEATURE_TYPE WorkspaceRunner_FAILED TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE WorkspaceRunner_Failed___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE WorkspaceRunner_Failed___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME WorkspaceRunner_Failed___FeatureDirector1 INPUT FEATURE_TYPE WorkspaceRunner_Failed___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE WorkspaceRunner_Failed___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE WorkspaceRunner_Failed___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Failed_VectorSetterUpper INPUT FEATURE_TYPE WorkspaceRunner_Failed___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc WorkspaceRunner_Failed_fb08b2ef_ecf2_48cc_b335_a9389db3167b0_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Failed___PointCloudThinner INPUT FEATURE_TYPE WorkspaceRunner_Failed___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("WorkspaceRunner_Failed_fb08b2ef_ecf2_48cc_b335_a9389db3167b0_thinPointCloud") +Tcl2 proc WorkspaceRunner_Failed_fb08b2ef_ecf2_48cc_b335_a9389db3167b0_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Failed_RasterSetterUpper INPUT FEATURE_TYPE WorkspaceRunner_Failed___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("WorkspaceRunner_Failed_fb08b2ef_ecf2_48cc_b335_a9389db3167b0_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# WorkspaceRunner_Failed_fb08b2ef_ecf2_48cc_b335_a9389db3167b0_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO WorkspaceRunner_Failed_fb08b2ef_ecf2_48cc_b335_a9389db3167b0_VIS_FEAT_TYPE WorkspaceRunner_Failed$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME WorkspaceRunner_Failed_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(WorkspaceRunner_Failed_fb08b2ef_ecf2_48cc_b335_a9389db3167b0_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA path_unix,varchar255,path_windows,varchar255,path_rootname,varchar255,path_filename,varchar255,path_extension,varchar255,path_filesize,varchar255,path_ownername,varchar255,path_readonly,varchar255,path_modified_date,varchar255,path_created_date,varchar255,path_accessed_date,varchar255,path_directory_unix,varchar255,path_directory_windows,varchar255,path_type,varchar255,_failure_message,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set grpByAttrs {}; if { [string length $grpByAttrs] > 0 } { if { [string first "@EvaluateExpression" $grpByAttrs] == 0 } { puts "MACRO CATMAC _$grpByAttrs" ; } else { set catter "" ; set comma "" ; foreach attr $grpByAttrs { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {WorkspaceRunner_Succeeded} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME WorkspaceRunner_Succeeded_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Succeeded_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME WorkspaceRunner_Succeeded_FeatureDirector INPUT FEATURE_TYPE WorkspaceRunner_SUCCEEDED TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE WorkspaceRunner_Succeeded___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE WorkspaceRunner_Succeeded___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME WorkspaceRunner_Succeeded___FeatureDirector1 INPUT FEATURE_TYPE WorkspaceRunner_Succeeded___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE WorkspaceRunner_Succeeded___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE WorkspaceRunner_Succeeded___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Succeeded_VectorSetterUpper INPUT FEATURE_TYPE WorkspaceRunner_Succeeded___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc WorkspaceRunner_Succeeded_69bd3d85_a827_4d2f_8945_3d9698dd92cb0_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Succeeded___PointCloudThinner INPUT FEATURE_TYPE WorkspaceRunner_Succeeded___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("WorkspaceRunner_Succeeded_69bd3d85_a827_4d2f_8945_3d9698dd92cb0_thinPointCloud") +Tcl2 proc WorkspaceRunner_Succeeded_69bd3d85_a827_4d2f_8945_3d9698dd92cb0_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME WorkspaceRunner_Succeeded_RasterSetterUpper INPUT FEATURE_TYPE WorkspaceRunner_Succeeded___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("WorkspaceRunner_Succeeded_69bd3d85_a827_4d2f_8945_3d9698dd92cb0_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# WorkspaceRunner_Succeeded_69bd3d85_a827_4d2f_8945_3d9698dd92cb0_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO WorkspaceRunner_Succeeded_69bd3d85_a827_4d2f_8945_3d9698dd92cb0_VIS_FEAT_TYPE WorkspaceRunner_Succeeded$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME WorkspaceRunner_Succeeded_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(WorkspaceRunner_Succeeded_69bd3d85_a827_4d2f_8945_3d9698dd92cb0_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA path_unix,varchar255,path_windows,varchar255,path_rootname,varchar255,path_filename,varchar255,path_extension,varchar255,path_filesize,varchar255,path_ownername,varchar255,path_readonly,varchar255,path_modified_date,varchar255,path_created_date,varchar255,path_accessed_date,varchar255,path_directory_unix,varchar255,path_directory_windows,varchar255,path_type,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" INPUT FEATURE_TYPE * OUTPUT ROUTED FEATURE_TYPE * @FeatureType(ENCODED,@Value(__wb_out_feat_type__)) @RemoveAttributes(__wb_out_feat_type__) OUTPUT NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__ + +# ------------------------------------------------------------------------- + +FACTORY_DEF * CreationFactory CREATE_AT_END OUTPUT FEATURE_TYPE __NUKEME__ @TCL("if [file exists {$(WORKSPACE_TEMP_DIR)}] {set files [glob -nocomplain -directory {$(WORKSPACE_TEMP_DIR)} -tails *.ffs]; if {[llength $files] == 1} { set theFile {$(WORKSPACE_TEMP_DIR)/}; append theFile [lindex $files 0]; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -f FFS $theFile & \175; } elseif { [llength $files] == 0 } { catch { file delete -force {$(WORKSPACE_TEMP_DIR)} }; } else { set filesNoExt {}; set lastfile {}; foreach {fileName} [lsort $files] { set fileNoExt [string trimright $fileName {.ffs}]; if [regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] { if { $fileNoExtBase == $lastfile } { continue } }; set lastfile $fileNoExt; lappend filesNoExt $fileNoExt }; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -d {$(WORKSPACE_TEMP_DIR)} -a ffs -f FFS $filesNoExt & \175; }; }; ") +FACTORY_DEF * TeeFactory INPUT FEATURE_TYPE __NUKEME__ diff --git a/MetadataManagement/translate_survey_ids.fmw b/MetadataManagement/translate_survey_ids.fmw new file mode 100644 index 0000000..dcb6625 --- /dev/null +++ b/MetadataManagement/translate_survey_ids.fmw @@ -0,0 +1,2536 @@ +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +GUI IGNORE SourceDataset_CSV_1,CSV_IN_NETWORK_AUTHENTICATION_CSV_1,_SKIP_LINES_CSV_1,_SKIP_FOOTER_CSV_1,_STRIP_QUOTES_CSV_1,_DUPLICATE_DELIMS_CSV_1,SORT_GROUP_CSV_1,_SORT_PARAMS_CSV_1,FILTER_GROUP_CSV_1,_FILTER_PARAMS_CSV_1,_ENCODING_CSV_1,SourceDataset_CSV_2,CSV_IN_NETWORK_AUTHENTICATION_CSV_2,_SKIP_LINES_CSV_2,_SKIP_FOOTER_CSV_2,_STRIP_QUOTES_CSV_2,_DUPLICATE_DELIMS_CSV_2,SORT_GROUP_CSV_2,_SORT_PARAMS_CSV_2,FILTER_GROUP_CSV_2,_FILTER_PARAMS_CSV_2,_ENCODING_CSV_2,DestDataset_CSV_3,CSV_OUT_EXTENSION_CSV_3,CSV_OUT_APPEND_CSV_3,CSV_OUT_FIELD_NAMES_CSV_3,CSV_OUT_SEPARATOR_CSV_3,CSV_OUT_ENCODING_CSV_3,_OUT_QUOTE_OUTPUT_CSV_3,_QUOTE_FIELD_NAMES_CSV_3,CSV_OUT_END_OF_LINE_CSV_3,_WRITE_UTF8_BOM_CSV_3 +DEFAULT_MACRO SourceDataset_CSV C:\Users\zool1301\Documents\DHS\DHS_Info\SurveyIDs.csv +GUI MULTIFILE SourceDataset_CSV CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +DEFAULT_MACRO SourceDataset_CSV_3 C:\Users\zool1301\Documents\DHS\Phase6_2\surveyfiles.txt +GUI MULTIFILE SourceDataset_CSV_3 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +DEFAULT_MACRO DestDataset_CSV C:\Users\zool1301\Documents\DHS\DHS_Info +GUI DIRNAME DestDataset_CSV Destination CSV (CommaSeparatedValue) Folder: +INCLUDE [ if {{$(SourceDataset_CSV)} == {}} { puts_real {Parameter 'SourceDataset_CSV' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(SourceDataset_CSV_3)} == {}} { puts_real {Parameter 'SourceDataset_CSV_3' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(DestDataset_CSV)} == {}} { puts_real {Parameter 'DestDataset_CSV' must be given a value.}; exit 1; }; ] +#! START_HEADER +#! START_WB_HEADER +READER_TYPE MULTI_READER +MULTI_READER_TYPE{0} CSV +MULTI_READER_KEYWORD{0} CSV_1 +MULTI_READER_GEN_DIRECTIVES{0} _FILTER_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTES%%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no,_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_FIELD_NAMES_AFTER_HEADER,no,_SKIP_FOOTER,0,_FILTER_PARAMS,,_GROUP_BY_DATASET,no,groupBox_2,,groupBox_4,,groupBox_5,,_STRIP_QUOTES,yes,groupBox_6,,groupBox,,_IN_SEPARATOR,,SCAN_MAX_FEATURES,10000,_SORT_PARAMS,,SORT_GROUP,NO,_ENCODING,,_SORT_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTES%%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending,_IN_FIELD_NAMES,YES,_MERGE_SCHEMAS,YES,_SCHEMA_WITH_COL_NAMES,,_SCHEMA,,_DUPLICATE_DELIMS,no,_SKIP_LINES,1,FILTER_GROUP,NO +MULTI_READER_TYPE{1} CSV +MULTI_READER_KEYWORD{1} CSV_2 +MULTI_READER_GEN_DIRECTIVES{1} _FILTER_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%FieldName%STRING_OR_CHOICE_ENCODEDATTRIBUTEScol0%col1%%Filter%STRING_ENCODED_FILTER_REGEX%%InvertFilter%CHECKBOX_FILTER_UNMATCHEDyes%no%no,_ALLOW_SPACES_IN_COLUMN_NAMES,yes,_FIELD_NAMES_AFTER_HEADER,no,_SKIP_FOOTER,0,_FILTER_PARAMS,,_GROUP_BY_DATASET,yes,groupBox_2,,groupBox_4,,groupBox_5,FME_DISCLOSURE_OPEN,_STRIP_QUOTES,yes,groupBox_6,,groupBox,FME_DISCLOSURE_OPEN,_IN_SEPARATOR,.,SCAN_MAX_FEATURES,10000,_SORT_PARAMS,,SORT_GROUP,NO,_ENCODING,,_SORT_TABLE_CONFIG,NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:%COL_DELIM:%HAS_DEFAULTS%START_NUM_ROWS:3%Attribute%STRING_OR_CHOICE_ENCODEDATTRIBUTEScol0%col1%%AlphaNum%LOOKUP_CHOICESORT_CHOICEAlphabeticalphabetic%Numericnumeric%alphabetic%Order%LOOKUP_CHOICESORT_ORDERAscendingascending%Descendingdescending%ascending,_IN_FIELD_NAMES,NO,_MERGE_SCHEMAS,YES,_SCHEMA_WITH_COL_NAMES,col0char7col1char4,_SCHEMA,char7char4,_DUPLICATE_DELIMS,no,_SKIP_LINES,0,FILTER_GROUP,NO +WRITER_TYPE MULTI_WRITER +MULTI_WRITER_DATASET_ORDER BY_ID +MULTI_WRITER_FIRST_WRITER_ID 0 +MULTI_WRITER_TYPE{0} CSV +MULTI_WRITER_KEYWORD{0} CSV_3 +#! END_WB_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_1 +# ============================================================================ +# The following GUI line prompts for a folder to be used as the +# source of the CSV files. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_CSV_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_1 +DEFAULT_MACRO SourceDataset_CSV_1 $(SourceDataset_CSV) +GUI MULTIFILE SourceDataset_CSV_1 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +# ============================================================================ +# Hardcode the settings that were used to generate this mapping file +# +DEFAULT_MACRO _SCHEMA_CSV_1 +DEFAULT_MACRO _IN_FIELD_NAMES_CSV_1 YES +DEFAULT_MACRO _FIELD_NAMES_AFTER_HEADER_CSV_1 no +DEFAULT_MACRO _EXTENSION_CSV_1 CSV +DEFAULT_MACRO _ALLOW_SPACES_IN_COLUMN_NAMES_CSV_1 yes +DEFAULT_MACRO _GROUP_BY_DATASET_CSV_1 no +CSV_1_SCHEMA +DEFAULT_MACRO _SKIP_LINES_CSV_1 1 +CSV_1_SKIP_LINES $(_SKIP_LINES_CSV_1) +DEFAULT_MACRO _SKIP_FOOTER_CSV_1 0 +CSV_1_SKIP_FOOTER $(_SKIP_FOOTER_CSV_1) +CSV_1_FIELD_NAMES $(_IN_FIELD_NAMES_CSV_1) +CSV_1_FIELD_NAMES_AFTER_HEADER $(_FIELD_NAMES_AFTER_HEADER_CSV_1) +DEFAULT_MACRO _STRIP_QUOTES_CSV_1 yes +CSV_1_STRIP_QUOTES $(_STRIP_QUOTES_CSV_1) +CSV_1_SEPARATOR (",") +CSV_1_EXTENSION CSV +DEFAULT_MACRO _DUPLICATE_DELIMS_CSV_1 no +CSV_1_DUPLICATE_DELIMS $(_DUPLICATE_DELIMS_CSV_1) +CSV_1_SEQUENCED no +CSV_1_ALLOW_SPACES_IN_COLUMN_NAMES $(_ALLOW_SPACES_IN_COLUMN_NAMES_CSV_1) +CSV_1_GROUP_BY_DATASET $(_GROUP_BY_DATASET_CSV_1) +DEFAULT_MACRO SORT_GROUP_CSV_1 NO +CSV_1_SORT_GROUP $(SORT_GROUP_CSV_1) +DEFAULT_MACRO _SORT_PARAMS_CSV_1 +CSV_1_SORT_PARAMS $(_SORT_PARAMS_CSV_1) +DEFAULT_MACRO FILTER_GROUP_CSV_1 NO +CSV_1_FILTER_GROUP $(FILTER_GROUP_CSV_1) +DEFAULT_MACRO _FILTER_PARAMS_CSV_1 +CSV_1_FILTER_PARAMS $(_FILTER_PARAMS_CSV_1) +# ===================================================================== +# Provide some control over what attributes have the user-selected +# encoding applied. Normally all attributes are updated after being +# read, but the following lines exclude from this treatment all +# attributes whose names start with fme_ or csv_. +CSV_1_UNENCODED_ATTR_PREFIX fme_ csv_ +# =========================================================================== +DEFAULT_MACRO CSV_IN_NETWORK_AUTHENTICATION_CSV_1 +CSV_1_NETWORK_AUTHENTICATION "$(CSV_IN_NETWORK_AUTHENTICATION_CSV_1)" +GUI OPTIONAL AUTHENTICATOR CSV_IN_NETWORK_AUTHENTICATION_CSV_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI INTEGER _SKIP_LINES_CSV_1 Number of Lines to Skip: +GUI INTEGER _SKIP_FOOTER_CSV_1 Number of Footer Lines to Skip: +# GUI CHOICE _IN_FIELD_NAMES yes%no Field Names in File: +# GUI CHOICE _FIELD_NAMES_AFTER_HEADER yes%no Field After Header: +GUI CHOICE _STRIP_QUOTES_CSV_1 yes%no Strip Quotes From Fields: +# GUI TEXT _IN_SEPARATOR Field Delimiter: +# GUI TEXT _EXTENSION Default File Extension: +GUI CHOICE _DUPLICATE_DELIMS_CSV_1 yes%no Skip Duplicate Delimiters: +GUI CHOICE SORT_GROUP_CSV_1 yes%no Sorting Enabled: +GUI OPTIONAL GUI_LINE_TABLE _SORT_PARAMS_CSV_1 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Attribute"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES %"%%"Alpha/Num"%"LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric"%alphabetic%"Order"%"LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending"%ascending Sorting Parameters: +GUI CHOICE FILTER_GROUP_CSV_1 yes%no Filter Enabled: +GUI OPTIONAL GUI_LINE_TABLE _FILTER_PARAMS_CSV_1 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Field Name"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES %"%%"Filter"%"STRING_ENCODED _FILTER_REGEX "%%"Invert Filter"%"CHECKBOX _FILTER_UNMATCHED yes%no"%no Filter Parameters: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO _ENCODING_CSV_1 +GUI OPTIONAL STRING_OR_ENCODING _ENCODING_CSV_1 SYSTEM%* Character Encoding: +CSV_1_ENCODING $(_ENCODING_CSV_1) +CSV_1_DATASET "$(SourceDataset_CSV_1)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_2" +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_2 +# ============================================================================ +# The following GUI line prompts for a folder to be used as the +# source of the CSV files. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_CSV_2 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER CSV CSV_2 +DEFAULT_MACRO SourceDataset_CSV_2 $(SourceDataset_CSV_3) +GUI MULTIFILE SourceDataset_CSV_2 CSV/Compressed_CSV/TEXT_Files(*.csv;*.gz;*.txt)|*.csv;*.gz;*.txt|CSV_Files(*.csv)|*.csv|Compressed_CSV_Files(*.gz)|*.gz|Text_Files(*.txt)|*.txt|All_Files|* Source CSV (CommaSeparatedValue) File(s): +# ============================================================================ +# Hardcode the settings that were used to generate this mapping file +# +DEFAULT_MACRO _SCHEMA_CSV_2 char,7,,char,4, +DEFAULT_MACRO _IN_FIELD_NAMES_CSV_2 NO +DEFAULT_MACRO _FIELD_NAMES_AFTER_HEADER_CSV_2 no +DEFAULT_MACRO _EXTENSION_CSV_2 CSV +DEFAULT_MACRO _ALLOW_SPACES_IN_COLUMN_NAMES_CSV_2 yes +DEFAULT_MACRO _GROUP_BY_DATASET_CSV_2 yes +CSV_2_SCHEMA char,7,,char,4, +DEFAULT_MACRO _SKIP_LINES_CSV_2 0 +CSV_2_SKIP_LINES $(_SKIP_LINES_CSV_2) +DEFAULT_MACRO _SKIP_FOOTER_CSV_2 0 +CSV_2_SKIP_FOOTER $(_SKIP_FOOTER_CSV_2) +CSV_2_FIELD_NAMES $(_IN_FIELD_NAMES_CSV_2) +CSV_2_FIELD_NAMES_AFTER_HEADER $(_FIELD_NAMES_AFTER_HEADER_CSV_2) +DEFAULT_MACRO _STRIP_QUOTES_CSV_2 yes +CSV_2_STRIP_QUOTES $(_STRIP_QUOTES_CSV_2) +CSV_2_SEPARATOR (".") +CSV_2_EXTENSION CSV +DEFAULT_MACRO _DUPLICATE_DELIMS_CSV_2 no +CSV_2_DUPLICATE_DELIMS $(_DUPLICATE_DELIMS_CSV_2) +CSV_2_SEQUENCED no +CSV_2_ALLOW_SPACES_IN_COLUMN_NAMES $(_ALLOW_SPACES_IN_COLUMN_NAMES_CSV_2) +CSV_2_GROUP_BY_DATASET $(_GROUP_BY_DATASET_CSV_2) +DEFAULT_MACRO SORT_GROUP_CSV_2 NO +CSV_2_SORT_GROUP $(SORT_GROUP_CSV_2) +DEFAULT_MACRO _SORT_PARAMS_CSV_2 +CSV_2_SORT_PARAMS $(_SORT_PARAMS_CSV_2) +DEFAULT_MACRO FILTER_GROUP_CSV_2 NO +CSV_2_FILTER_GROUP $(FILTER_GROUP_CSV_2) +DEFAULT_MACRO _FILTER_PARAMS_CSV_2 +CSV_2_FILTER_PARAMS $(_FILTER_PARAMS_CSV_2) +# ===================================================================== +# Provide some control over what attributes have the user-selected +# encoding applied. Normally all attributes are updated after being +# read, but the following lines exclude from this treatment all +# attributes whose names start with fme_ or csv_. +CSV_2_UNENCODED_ATTR_PREFIX fme_ csv_ +# =========================================================================== +DEFAULT_MACRO CSV_IN_NETWORK_AUTHENTICATION_CSV_2 +CSV_2_NETWORK_AUTHENTICATION "$(CSV_IN_NETWORK_AUTHENTICATION_CSV_2)" +GUI OPTIONAL AUTHENTICATOR CSV_IN_NETWORK_AUTHENTICATION_CSV_2 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +GUI INTEGER _SKIP_LINES_CSV_2 Number of Lines to Skip: +GUI INTEGER _SKIP_FOOTER_CSV_2 Number of Footer Lines to Skip: +# GUI CHOICE _IN_FIELD_NAMES yes%no Field Names in File: +# GUI CHOICE _FIELD_NAMES_AFTER_HEADER yes%no Field After Header: +GUI CHOICE _STRIP_QUOTES_CSV_2 yes%no Strip Quotes From Fields: +# GUI TEXT _IN_SEPARATOR Field Delimiter: +# GUI TEXT _EXTENSION Default File Extension: +GUI CHOICE _DUPLICATE_DELIMS_CSV_2 yes%no Skip Duplicate Delimiters: +GUI CHOICE SORT_GROUP_CSV_2 yes%no Sorting Enabled: +GUI OPTIONAL GUI_LINE_TABLE _SORT_PARAMS_CSV_2 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Attribute"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES col0%col1"%%"Alpha/Num"%"LOOKUP_CHOICE SORT_CHOICE Alphabetic,alphabetic%Numeric,numeric"%alphabetic%"Order"%"LOOKUP_CHOICE SORT_ORDER Ascending,ascending%Descending,descending"%ascending Sorting Parameters: +GUI CHOICE FILTER_GROUP_CSV_2 yes%no Filter Enabled: +GUI OPTIONAL GUI_LINE_TABLE _FILTER_PARAMS_CSV_2 NOT_OK_IF_INVALID%NO_LABEL%ROW_DELIM:;%COL_DELIM:,%HAS_DEFAULTS%START_NUM_ROWS:3%"Field Name"%"STRING_OR_CHOICE_ENCODED ATTRIBUTES col0%col1"%%"Filter"%"STRING_ENCODED _FILTER_REGEX "%%"Invert Filter"%"CHECKBOX _FILTER_UNMATCHED yes%no"%no Filter Parameters: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO _ENCODING_CSV_2 +GUI OPTIONAL STRING_OR_ENCODING _ENCODING_CSV_2 SYSTEM%* Character Encoding: +CSV_2_ENCODING $(_ENCODING_CSV_2) +CSV_2_DATASET "$(SourceDataset_CSV_2)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "CSV_3" +#! END_WB_HEADER +#! START_DEST_HEADER CSV CSV_3 +# ============================================================================ +# The following GUI line prompts for a folder where the +# CSV files will be stored +#! END_DEST_HEADER +#! START_WB_HEADER +DEFAULT_MACRO DestDataset +INCLUDE [ if {"$(DestDataset)" != ""} { \ + puts {DEFAULT_MACRO DestDataset_CSV_3 $(DestDataset)} \ + } ] +#! END_WB_HEADER +#! START_DEST_HEADER CSV CSV_3 +DEFAULT_MACRO DestDataset_CSV_3 $(DestDataset_CSV) +GUI DIRNAME DestDataset_CSV_3 Destination CSV (CommaSeparatedValue) Folder: +CSV_3_PLUGIN_MAX_CHANNELS 100 +CSV_3_ALLOW_TYPE_TRUNCATION yes +CSV_3_PERMISSIVE_TYPES yes +# ============================================================================ +# The following determines the extension for output CSV files +DEFAULT_MACRO CSV_OUT_EXTENSION_CSV_3 csv +CSV_3_EXTENSION "$(CSV_OUT_EXTENSION_CSV_3)" +GUI OPTIONAL TEXT CSV_OUT_EXTENSION_CSV_3 Extension: +# ===================================================================== +# Allows one to append +DEFAULT_MACRO CSV_OUT_APPEND_CSV_3 No +CSV_3_APPEND "$(CSV_OUT_APPEND_CSV_3)" +GUI CHECKBOX CSV_OUT_APPEND_CSV_3 Yes%No Append to File: +# ============================================================================ +# The following determines whether field names will be written on +# the first row of the file. +DEFAULT_MACRO CSV_OUT_FIELD_NAMES_CSV_3 yes +CSV_3_FIELD_NAMES "$(CSV_OUT_FIELD_NAMES_CSV_3)" +GUI CHECKBOX CSV_OUT_FIELD_NAMES_CSV_3 yes%no Output Field Names on First Line: +# ============================================================================ +# The following determines the field seperator +# PR#19714 Changed GUI LOOKUP to STRING_OR_CHOICE for showing space and tab +# as explicit delimiters for parsing issues and symmetry with the reader. +DEFAULT_MACRO CSV_OUT_SEPARATOR_CSV_3 , +CSV_3_SEPARATOR "$(CSV_OUT_SEPARATOR_CSV_3)" +GUI OPTIONAL STRING_OR_CHOICE CSV_OUT_SEPARATOR_CSV_3 ,%;%|%space%tab Separator Character: +# ===================================================================== +# Allows to set one of the character encodings for output file +DEFAULT_MACRO CSV_OUT_ENCODING_CSV_3 +CSV_3_ENCODING "$(CSV_OUT_ENCODING_CSV_3)" +GUI OPTIONAL STRING_OR_ENCODING CSV_OUT_ENCODING_CSV_3 SYSTEM%* Character Encoding: +# ============================================================================ +# The following specifies if output values should be quoted +DEFAULT_MACRO _OUT_QUOTE_OUTPUT_CSV_3 if_needed +GUI CHOICE _OUT_QUOTE_OUTPUT_CSV_3 yes%if_needed%no Quote Output Values: +CSV_3_QUOTE_OUTPUT $(_OUT_QUOTE_OUTPUT_CSV_3) +# ============================================================================ +# The following choice determines if field names on the first row +# should be quoted or not. +DEFAULT_MACRO _QUOTE_FIELD_NAMES_CSV_3 no +GUI CHOICE _QUOTE_FIELD_NAMES_CSV_3 yes%no Quote Field Names: +CSV_3_QUOTE_FIELD_NAMES $(_QUOTE_FIELD_NAMES_CSV_3) +# ===================================================================== +# Allows to set Line termination type +DEFAULT_MACRO CSV_OUT_END_OF_LINE_CSV_3 +GUI OPTIONAL CHOICE CSV_OUT_END_OF_LINE_CSV_3 Windows%Unix%Macintosh Line Termination: +CSV_3_END_OF_LINE $(CSV_OUT_END_OF_LINE_CSV_3) +# ============================================================================ +# PR 15909 +# The following choice determines if the byte order mark should be written +# when using UTF-8 encoding. By default BOM is written, so _WRITE_UTF8_BOM should be yes. +DEFAULT_MACRO _WRITE_UTF8_BOM_CSV_3 yes +GUI CHOICE _WRITE_UTF8_BOM_CSV_3 yes%no Write UTF-8 Byte Order Mark +CSV_3_WRITE_UTF8_BOM $(_WRITE_UTF8_BOM_CSV_3) +CSV_3_DATASET "$(DestDataset_CSV_3)" +#! END_DEST_HEADER +#! END_HEADER + +LOG_FILENAME "$(FME_MF_DIR)translate_survey_ids.log" +LOG_APPEND NO +LOG_MAX_FEATURES 200 +LOG_MAX_RECORDED_FEATURES 200 +LOG_MAX_PRECISION Yes +FME_REPROJECTION_ENGINE FME +FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto +FME_GEOMETRY_HANDLING Enhanced +FME_STROKE_MAX_DEVIATION 0 +LOG_FILTER_MASK -1 +DEFAULT_MACRO DATASET_KEYWORD_CSV_1 CSV_1 +DEFAULT_MACRO DATASET_KEYWORD_CSV_2 CSV_2 +DEFAULT_MACRO DATASET_KEYWORD_CSV_3 CSV_3 +# ------------------------------------------------------------------------- + +CSV_1_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +CSV_2_READER_META_ATTRIBUTES fme_feature_type + +# ------------------------------------------------------------------------- + +MULTI_READER_CONTINUE_ON_READER_FAILURE No + +# ------------------------------------------------------------------------- + +MACRO WORKSPACE_NAME translate_survey_ids +MACRO FME_VIEWER_APP fmedatainspector +# ------------------------------------------------------------------------- + +INCLUDE [ if {[info exists env(FME_TEMP)] && [file isdirectory $env(FME_TEMP)]} {set gVisualizerTemp $env(FME_TEMP)} elseif {[info exists env(TEMP)] && [file isdirectory $env(TEMP)]} {set gVisualizerTemp $env(TEMP)} elseif { $tcl_platform(platform) == "unix" } {set gVisualizerTemp "/tmp"} else {set gVisualizerTemp c:}; regsub -all {[ ,&]} {$(WORKSPACE_NAME)} {_} wsname; set gVisualizerTemp $gVisualizerTemp/${wsname}_[clock format [clock seconds] -format %H%M%S]; puts "MACRO WORKSPACE_TEMP_DIR $gVisualizerTemp"; +MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/inspector.ffs +MACRO VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector.fsc +MACRO VISUALIZER_CREATE_SPATIAL_INDEX YES +# ------------------------------------------------------------------------- +CSV_1_DEF CSV Country char(33) Year char(8) Survey_ID_num number(4,0) SurveyAPI_ID char(10) Type char(4) "Dataset range min" char(8) "Dataset range max" char(7) IgnoreDupe number(2,0) +# ------------------------------------------------------------------------- +CSV_2_DEF surveyfiles col0 char(7) col1 char(4) +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" INPUT FEATURE_TYPE * ROUTE CSV CSV_1::CSV multi_reader_keyword,$(DATASET_KEYWORD_CSV_1) TO FME_GENERIC ::CSV ALIAS_GEOMETRY ROUTE CSV CSV_2::surveyfiles multi_reader_keyword,$(DATASET_KEYWORD_CSV_2) TO FME_GENERIC ::surveyfiles ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * +CSV_1_MERGE_DEF CSV_1::CSV EXACT CSV DEFLINE Country,char33,Year,char8,Survey_ID_num,number40,SurveyAPI_ID,char10,Type,char4,Datasetrangemin,char8,Datasetrangemax,char7,IgnoreDupe,number20 +CSV_2_MERGE_DEF CSV_2::surveyfiles EXACT surveyfiles DEFLINE col0,char7,col1,char4 +DEFAULT_MACRO WB_CURRENT_CONTEXT +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer INPUT FEATURE_TYPE surveyfiles OUTPUT FEATURE_TYPE AttributeRenamer_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, col0,filecode,) + + +# ------------------------------------------------------------------------- + +# Since the Tcl "END" index specification starts at -1 for the second +# last character, and we've defined -1 to be the last charater, we've got +# small bit of fiddling to do + +Tcl2 proc SubstringExtractor_4_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } +Tcl2 proc SubstringExtractor_4_extract {startIdx endIdx} { FME_SetAttribute [FME_DecodeText _ccode] [string range [FME_GetAttribute [FME_DecodeText filecode]] [SubstringExtractor_4_fixLastIndex $startIdx] [SubstringExtractor_4_fixLastIndex $endIdx]] } +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor_4 INPUT FEATURE_TYPE AttributeRenamer_OUTPUT OUTPUT FEATURE_TYPE SubstringExtractor_4_OUTPUT @Tcl2("SubstringExtractor_4_extract 0 1") + +# ------------------------------------------------------------------------- + +# Since the Tcl "END" index specification starts at -1 for the second +# last character, and we've defined -1 to be the last charater, we've got +# small bit of fiddling to do + +Tcl2 proc SubstringExtractor_6_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } +Tcl2 proc SubstringExtractor_6_extract {startIdx endIdx} { FME_SetAttribute [FME_DecodeText _phase] [string range [FME_GetAttribute [FME_DecodeText filecode]] [SubstringExtractor_6_fixLastIndex $startIdx] [SubstringExtractor_6_fixLastIndex $endIdx]] } +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor_6 INPUT FEATURE_TYPE SubstringExtractor_4_OUTPUT OUTPUT FEATURE_TYPE SubstringExtractor_6_OUTPUT @Tcl2("SubstringExtractor_6_extract -2 -2") + +# ------------------------------------------------------------------------- + +# Since the Tcl "END" index specification starts at -1 for the second +# last character, and we've defined -1 to be the last charater, we've got +# small bit of fiddling to do + +Tcl2 proc SubstringExtractor_7_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } +Tcl2 proc SubstringExtractor_7_extract {startIdx endIdx} { FME_SetAttribute [FME_DecodeText _version] [string range [FME_GetAttribute [FME_DecodeText filecode]] [SubstringExtractor_7_fixLastIndex $startIdx] [SubstringExtractor_7_fixLastIndex $endIdx]] } +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor_7 INPUT FEATURE_TYPE SubstringExtractor_6_OUTPUT OUTPUT FEATURE_TYPE SubstringExtractor_7_OUTPUT @Tcl2("SubstringExtractor_7_extract -1 -1") + +# ------------------------------------------------------------------------- + +Tcl2 proc CharacterCodeExtractor_3_decode {} { FME_SetAttribute {"_codeVersion"} -1; catch { scan [FME_GetAttribute {"_version"}] %c code; FME_SetAttribute {"_codeVersion"} $code; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME CharacterCodeExtractor_3 INPUT FEATURE_TYPE SubstringExtractor_7_OUTPUT OUTPUT FEATURE_TYPE CharacterCodeExtractor_3_OUTPUT @Tcl2(CharacterCodeExtractor_3_decode) + +# ------------------------------------------------------------------------- + +# Since the Tcl "END" index specification starts at -1 for the second +# last character, and we've defined -1 to be the last charater, we've got +# small bit of fiddling to do + +Tcl2 proc SubstringExtractor_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } +Tcl2 proc SubstringExtractor_extract {startIdx endIdx} { FME_SetAttribute [FME_DecodeText _substringMin] [string range [FME_GetAttribute [FME_DecodeText Datasetrangemin]] [SubstringExtractor_fixLastIndex $startIdx] [SubstringExtractor_fixLastIndex $endIdx]] } +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor INPUT FEATURE_TYPE CSV OUTPUT FEATURE_TYPE SubstringExtractor_OUTPUT @Tcl2("SubstringExtractor_extract -1 -1") + +# ------------------------------------------------------------------------- + +# Since the Tcl "END" index specification starts at -1 for the second +# last character, and we've defined -1 to be the last charater, we've got +# small bit of fiddling to do + +Tcl2 proc SubstringExtractor_2_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } +Tcl2 proc SubstringExtractor_2_extract {startIdx endIdx} { FME_SetAttribute [FME_DecodeText _substringMax] [string range [FME_GetAttribute [FME_DecodeText Datasetrangemax]] [SubstringExtractor_2_fixLastIndex $startIdx] [SubstringExtractor_2_fixLastIndex $endIdx]] } +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor_2 INPUT FEATURE_TYPE SubstringExtractor_OUTPUT OUTPUT FEATURE_TYPE SubstringExtractor_2_OUTPUT @Tcl2("SubstringExtractor_2_extract -1 -1") + +# ------------------------------------------------------------------------- + +Tcl2 proc CharacterCodeExtractor_decode {} { FME_SetAttribute {"_codeMin"} -1; catch { scan [FME_GetAttribute {"_substringMin"}] %c code; FME_SetAttribute {"_codeMin"} $code; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME CharacterCodeExtractor INPUT FEATURE_TYPE SubstringExtractor_2_OUTPUT OUTPUT FEATURE_TYPE CharacterCodeExtractor_OUTPUT @Tcl2(CharacterCodeExtractor_decode) + +# ------------------------------------------------------------------------- + +Tcl2 proc CharacterCodeExtractor_2_decode {} { FME_SetAttribute {"_codeMax"} -1; catch { scan [FME_GetAttribute {"_substringMax"}] %c code; FME_SetAttribute {"_codeMax"} $code; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME CharacterCodeExtractor_2 INPUT FEATURE_TYPE CharacterCodeExtractor_OUTPUT OUTPUT FEATURE_TYPE CharacterCodeExtractor_2_OUTPUT @Tcl2(CharacterCodeExtractor_2_decode) + +# ------------------------------------------------------------------------- + +# Since the Tcl "END" index specification starts at -1 for the second +# last character, and we've defined -1 to be the last charater, we've got +# small bit of fiddling to do + +Tcl2 proc SubstringExtractor_5_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } +Tcl2 proc SubstringExtractor_5_extract {startIdx endIdx} { FME_SetAttribute [FME_DecodeText _phase] [string range [FME_GetAttribute [FME_DecodeText Datasetrangemax]] [SubstringExtractor_5_fixLastIndex $startIdx] [SubstringExtractor_5_fixLastIndex $endIdx]] } +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor_5 INPUT FEATURE_TYPE CharacterCodeExtractor_2_OUTPUT OUTPUT FEATURE_TYPE SubstringExtractor_5_OUTPUT @Tcl2("SubstringExtractor_5_extract -2 -2") + +# ------------------------------------------------------------------------- + +# Since the Tcl "END" index specification starts at -1 for the second +# last character, and we've defined -1 to be the last charater, we've got +# small bit of fiddling to do + +Tcl2 proc SubstringExtractor_3_fixLastIndex {lastValue} { if {$lastValue < -1} { incr lastValue; return "end$lastValue"; } elseif {$lastValue == -1} { return "end"; } else { return $lastValue; } } +Tcl2 proc SubstringExtractor_3_extract {startIdx endIdx} { FME_SetAttribute [FME_DecodeText _ccode] [string range [FME_GetAttribute [FME_DecodeText Datasetrangemax]] [SubstringExtractor_3_fixLastIndex $startIdx] [SubstringExtractor_3_fixLastIndex $endIdx]] } +FACTORY_DEF * TeeFactory FACTORY_NAME SubstringExtractor_3 INPUT FEATURE_TYPE SubstringExtractor_5_OUTPUT OUTPUT FEATURE_TYPE SubstringExtractor_3_OUTPUT @Tcl2("SubstringExtractor_3_extract 0 1") + +# ------------------------------------------------------------------------- + +INCLUDE [if { {ATTRIBUTES} == {ATTRIBUTES} } { puts "MACRO FeatureMerger_REFERENCE_INFO ATTRIBUTES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {POLYGONS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_POLYS"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {AGGREGATES}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} && {} == {LINESFROMPOINTS}} { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_LINES_FROM_POINTS"; } elseif { {ATTRIBUTES} == {GEOM_BUILD} } { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_BUILD_AGGREGATES"; } elseif { {ATTRIBUTES} == {GEOM_AND_ATTRS} } { puts "MACRO FeatureMerger_REFERENCE_INFO GEOM_AND_ATTR_BUILD_AGGREGATES"; } else {}; ] + +FACTORY_DEF * ReferenceFactory FACTORY_NAME FeatureMerger INPUT REFERENCER FEATURE_TYPE CharacterCodeExtractor_3_OUTPUT INPUT REFERENCEE FEATURE_TYPE SubstringExtractor_3_OUTPUT REFERENCE_INFO $(FeatureMerger_REFERENCE_INFO) REFERENCE_TABLE @EvaluateExpression(FDIV,STRING_ENCODED,LowerCaseValue_ccode,FeatureMerger) @EvaluateExpression(FDIV,STRING_ENCODED,LowerCaseValue_ccode,FeatureMerger) AUTO @EvaluateExpression(FDIV,STRING_ENCODED,Value_phase,FeatureMerger) @EvaluateExpression(FDIV,STRING_ENCODED,Value_phase,FeatureMerger) AUTO ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "REQUESTOR_IF_CONFLICT" LIST_NAME "_list" MERGE_ATTRIBUTES Yes MANAGE_FME_TYPE Yes MODE COMPLETE PROCESS_DUPLICATE_REFERENCEES No REFERENCEES_FIRST No OUTPUT COMPLETE FEATURE_TYPE FeatureMerger_MERGED + +# ------------------------------------------------------------------------- + +INCLUDE [ set macroLine "MACRO AttributeRemover_LIST_EXP "; foreach attr [split ""] { set attr [FME_DecodeText $attr]; set attr [regsub "{}$" $attr "{}.*"]; set attr [regsub -all "{}" $attr "\\{\[0-9\]+\\}"]; append macroLine ",^$attr$"; }; puts $macroLine; ] +FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRemover INPUT FEATURE_TYPE FeatureMerger_MERGED OUTPUT FEATURE_TYPE AttributeRemover_OUTPUT @RemoveAttributes(fme_encoded,_codeMax,_codeMin,_phase,_substringMax,_substringMin,col1,Country,Datasetrangemax,Datasetrangemin,Survey_ID_num,SurveyAPI_ID,Type,Year,IgnoreDupe) @RemoveAttributes(fme_pcre_match"$(AttributeRemover_LIST_EXP)") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * ElementFactory FACTORY_NAME ListExploder INPUT FEATURE_TYPE AttributeRemover_OUTPUT LIST_NAME "_list{}" CLONE_GEOMETRY ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "ORIGINAL_IF_CONFLICT" INCOMING_PREFIX "" OUTPUT ELEMENT FEATURE_TYPE ListExploder_LIST_FOUND @RemoveAttributes(ElementFactory.baseCloned) +# ------------------------------------------------------------------------- + +FACTORY_DEF * TestFactory FACTORY_NAME Tester INPUT FEATURE_TYPE ListExploder_LIST_FOUND TEST @EvaluateExpression(FDIV,STRING_ENCODED,Value_codeVersion,Tester) >= @EvaluateExpression(FDIV,STRING_ENCODED,Value_codeMin,Tester) ENCODED TEST @EvaluateExpression(FDIV,STRING_ENCODED,Value_codeVersion,Tester) <= @EvaluateExpression(FDIV,STRING_ENCODED,Value_codeMax,Tester) ENCODED TEST @EvaluateExpression(FDIV,STRING_ENCODED,ValueIgnoreDupe,Tester) != 1 ENCODED BOOLEAN_OPERATOR AND OUTPUT PASSED FEATURE_TYPE Tester_PASSED OUTPUT FAILED FEATURE_TYPE Tester_FAILED +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ if { [string length {}] > 0 } { set catter "" ; set comma "" ; foreach attr {} { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {Country_Phase_Different_Survey} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME Country_Phase_Different_Survey_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME Country_Phase_Different_Survey_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME Country_Phase_Different_Survey_FeatureDirector INPUT FEATURE_TYPE Tester_FAILED TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE Country_Phase_Different_Survey___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE Country_Phase_Different_Survey___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME Country_Phase_Different_Survey___FeatureDirector1 INPUT FEATURE_TYPE Country_Phase_Different_Survey___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE Country_Phase_Different_Survey___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE Country_Phase_Different_Survey___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME Country_Phase_Different_Survey_VectorSetterUpper INPUT FEATURE_TYPE Country_Phase_Different_Survey___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc Country_Phase_Different_Survey_37302b2e_259a_493e_a4b3_9e84ce17dce91_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME Country_Phase_Different_Survey___PointCloudThinner INPUT FEATURE_TYPE Country_Phase_Different_Survey___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("Country_Phase_Different_Survey_37302b2e_259a_493e_a4b3_9e84ce17dce91_thinPointCloud") +Tcl2 proc Country_Phase_Different_Survey_37302b2e_259a_493e_a4b3_9e84ce17dce91_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME Country_Phase_Different_Survey_RasterSetterUpper INPUT FEATURE_TYPE Country_Phase_Different_Survey___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("Country_Phase_Different_Survey_37302b2e_259a_493e_a4b3_9e84ce17dce91_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# Country_Phase_Different_Survey_37302b2e_259a_493e_a4b3_9e84ce17dce91_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO Country_Phase_Different_Survey_37302b2e_259a_493e_a4b3_9e84ce17dce91_VIS_FEAT_TYPE Country_Phase_Different_Survey$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME Country_Phase_Different_Survey_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(Country_Phase_Different_Survey_37302b2e_259a_493e_a4b3_9e84ce17dce91_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA filecode,varchar255,_ccode,varchar255,_version,varchar255,_codeVersion,varchar255,Country,varchar255,Year,varchar255,Survey_ID_num,varchar255,SurveyAPI_ID,varchar255,Type,varchar255,Datasetrangemin,varchar255,Datasetrangemax,varchar255,IgnoreDupe,varchar255,_substringMin,varchar255,_substringMax,varchar255,_codeMin,varchar255,_codeMax,varchar255,_phase,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +INCLUDE [ if { {MATCH} == {MATCH} } { puts {MACRO Matcher_ATTRMATCH MATCH_ATTRIBUTES filecode}; } elseif { {MATCH} == {EXCEPT} } { puts {MACRO Matcher_ATTRMATCH MATCH_ALL_ATTRS_EXCEPT filecode}; } else { puts {MACRO Matcher_ATTRMATCH MATCH_ALL_ATTRIBUTES}; } +FACTORY_DEF * MatchingFactory FACTORY_NAME Matcher INPUT FEATURE_TYPE Tester_PASSED MATCH_GEOMETRY 2D $(Matcher_ATTRMATCH) BLANK_AND_MISSING_DIFFER No LENIENT_GEOMETRY_MATCH No ADD_TO_MATCHED _match_id @Count(Matcher) OUTPUT MATCHED FEATURE_TYPE Matcher_MATCHED OUTPUT NOT_MATCHED FEATURE_TYPE Matcher_NOT_MATCHED + +FACTORY_DEF * TeeFactory FACTORY_NAME "Matcher MATCHED Splitter" INPUT FEATURE_TYPE Matcher_MATCHED OUTPUT FEATURE_TYPE Matcher_MATCHED_0_zy1q0HFO8kE= OUTPUT FEATURE_TYPE Matcher_MATCHED_1_zy1q0HFO8kE= +FACTORY_DEF * TeeFactory FACTORY_NAME "Matcher NOT_MATCHED Splitter" INPUT FEATURE_TYPE Matcher_NOT_MATCHED OUTPUT FEATURE_TYPE Matcher_NOT_MATCHED_0_7AjmYRqtdJg= OUTPUT FEATURE_TYPE Matcher_NOT_MATCHED_1_7AjmYRqtdJg= +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ if { [string length {}] > 0 } { set catter "" ; set comma "" ; foreach attr {} { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {Matcher_NotMatched} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME Matcher_NotMatched_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME Matcher_NotMatched_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME Matcher_NotMatched_FeatureDirector INPUT FEATURE_TYPE Matcher_NOT_MATCHED_1_7AjmYRqtdJg= TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE Matcher_NotMatched___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE Matcher_NotMatched___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME Matcher_NotMatched___FeatureDirector1 INPUT FEATURE_TYPE Matcher_NotMatched___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE Matcher_NotMatched___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE Matcher_NotMatched___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME Matcher_NotMatched_VectorSetterUpper INPUT FEATURE_TYPE Matcher_NotMatched___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc Matcher_NotMatched_6f6130f7_5c52_4f42_bbf3_64308e5cdb771_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME Matcher_NotMatched___PointCloudThinner INPUT FEATURE_TYPE Matcher_NotMatched___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("Matcher_NotMatched_6f6130f7_5c52_4f42_bbf3_64308e5cdb771_thinPointCloud") +Tcl2 proc Matcher_NotMatched_6f6130f7_5c52_4f42_bbf3_64308e5cdb771_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME Matcher_NotMatched_RasterSetterUpper INPUT FEATURE_TYPE Matcher_NotMatched___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("Matcher_NotMatched_6f6130f7_5c52_4f42_bbf3_64308e5cdb771_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# Matcher_NotMatched_6f6130f7_5c52_4f42_bbf3_64308e5cdb771_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO Matcher_NotMatched_6f6130f7_5c52_4f42_bbf3_64308e5cdb771_VIS_FEAT_TYPE Matcher_NotMatched$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME Matcher_NotMatched_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(Matcher_NotMatched_6f6130f7_5c52_4f42_bbf3_64308e5cdb771_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA filecode,varchar255,_ccode,varchar255,_version,varchar255,_codeVersion,varchar255,Country,varchar255,Year,varchar255,Survey_ID_num,varchar255,SurveyAPI_ID,varchar255,Type,varchar255,Datasetrangemin,varchar255,Datasetrangemax,varchar255,IgnoreDupe,varchar255,_substringMin,varchar255,_substringMax,varchar255,_codeMin,varchar255,_codeMax,varchar255,_phase,varchar255,_match_id,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +# Set the directive to add all the meta-attributes to the features. +# We do this so users see all possible information in the viewed +# features. + +READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ if { [string length {}] > 0 } { set catter "" ; set comma "" ; foreach attr {} { set catter "$catter$comma@Value(\"$attr\")" ; set comma ",_," ; } ; puts "MACRO CATMAC _@Concatenate($catter)" ; } else { puts "MACRO CATMAC " ; }; set safeName "[regsub -all {[^a-zA-Z0-9]} {Matcher_Matched} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +# Make the temporary directory that the FFS files will live in. +FACTORY_DEF * CreationFactory FACTORY_NAME Matcher_Matched_DirCreator OUTPUT FEATURE_TYPE __nukeme__ @Tcl2("catch {file mkdir {$(WORKSPACE_TEMP_DIR)}}") +FACTORY_DEF * TeeFactory FACTORY_NAME Matcher_Matched_DirCreatorCleanerUpper INPUT FEATURE_TYPE __nukeme__ +# Send raster, point cloud and vector features down different paths to prepare +# them for viewing + +FACTORY_DEF * TestFactory FACTORY_NAME Matcher_Matched_FeatureDirector INPUT FEATURE_TYPE Matcher_MATCHED_0_zy1q0HFO8kE= TEST &fme_type == "fme_raster" OUTPUT FAILED FEATURE_TYPE Matcher_Matched___NotRasterFeatures___ OUTPUT PASSED FEATURE_TYPE Matcher_Matched___RasterFeatures___ +FACTORY_DEF * TestFactory FACTORY_NAME Matcher_Matched___FeatureDirector1 INPUT FEATURE_TYPE Matcher_Matched___NotRasterFeatures___ TEST &fme_type == "fme_point_cloud" OUTPUT FAILED FEATURE_TYPE Matcher_Matched___VectorFeatures___ OUTPUT PASSED FEATURE_TYPE Matcher_Matched___PointCloudFeatures___ +# Vector features simply may get their colors overridden + +FACTORY_DEF * TeeFactory FACTORY_NAME Matcher_Matched_VectorSetterUpper INPUT FEATURE_TYPE Matcher_Matched___VectorFeatures___ OUTPUT FEATURE_TYPE __viewme__ +# Point Cloud Features Might Need to be thinned + +# Note that we don't call the ThinPointCloud function directly, but rather +# do it through TCL. This should allow this transformer to be used with a +# Desktop license, even though ThinPointCloud requires Professional. + +Tcl2 proc Matcher_Matched_359eb0d8_3801_444e_bcf2_12acb6612ab01_thinPointCloud {} { if {[string equal {NO_THINNING} {KEEPNPOINT}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {MAXNUMPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {FIRSTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; } elseif {[string equal {NO_THINNING} {LASTNPOINTS}]} { FME_Execute ThinPointCloud NO_THINNING "\"\""; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME Matcher_Matched___PointCloudThinner INPUT FEATURE_TYPE Matcher_Matched___PointCloudFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("Matcher_Matched_359eb0d8_3801_444e_bcf2_12acb6612ab01_thinPointCloud") +Tcl2 proc Matcher_Matched_359eb0d8_3801_444e_bcf2_12acb6612ab01_prepareRaster {subsetStartRow subsetNumRows subsetStartCol subsetNumCols} { set useDI [string equal -nocase {$(FME_VIEWER_APP)} {fmedatainspector}]; if {!$useDI} { FME_Execute ApplyRasterRotation BILINEAR; }; set doResample [string equal {NoReduction} {Resample}]; set doSubset [string equal {NoReduction} {Subset}]; set doBounds [string equal {NoReduction} {BoundingBoxOnly}]; if {$doBounds} { FME_Execute GeometryType fme_polygon; } elseif {$doResample || $doSubset} { set comment { First, we need to prefix all the attributes. This is done because we are going to call @RasterProperties, and we want to make sure it doesn't overwrite any existing attributes. }; set kAttrPrefix "."; set allNames [FME_AttributeNames]; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $newName $oldName; }; FME_Execute RasterProperties RASTER; if {$doResample} { set oldNumCols [FME_GetAttribute _num_columns]; set oldNumRows [FME_GetAttribute _num_rows]; set oldSpacingX [FME_GetAttribute _spacing_x]; set oldSpacingY [FME_GetAttribute _spacing_y]; set kMinNumCells 32; set kMaxNumCells 512; set comment { We will only resample if both dimensions are greater than the minimum num cells, and at least one is greater than the maximum. }; if {$oldNumRows > $kMinNumCells && $oldNumCols > $kMinNumCells && ($oldNumRows > $kMaxNumCells || $oldNumCols > $kMaxNumCells)} { set newSpacingX 1.0; set newSpacingY 1.0; if {$oldNumRows > $oldNumCols} { set comment { If we have more rows than columns, we need to choose a spacing that reduces the number of rows to the maximum we've chosen. }; set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMaxNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; set comment { Now we need to check if doing this will result in the columns going below the minimum. If so, choose the spacing such that we only go down to the minimum (and not past). }; set newNumCols [expr $oldNumCols * $oldSpacingX / $newSpacingX]; if {$newNumCols < $kMinNumCells} { set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMinNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; }; } else { set comment { This is identical to the above case, except the roles of rows and cols are reversed. }; set newSpacingX [expr 1.0 * $oldNumCols * $oldSpacingX / $kMaxNumCells]; set newSpacingY [expr 1.0 * $newSpacingX / $oldSpacingX * $oldSpacingY]; set newNumRows [expr $oldNumRows * $oldSpacingY / $newSpacingY]; if {$newNumRows < $kMinNumCells} { set newSpacingY [expr 1.0 * $oldNumRows * $oldSpacingY / $kMinNumCells]; set newSpacingX [expr 1.0 * $newSpacingY / $oldSpacingY * $oldSpacingX]; }; }; FME_Execute ResampleRaster CELL_SIZE $newSpacingX $newSpacingY NearestNeighbor; }; } elseif {$doSubset} { set comment { Get the value of some strings that may be attributes or constants. Note that we pass in the attribute prefix we're using, because if one does turn out to be an attribute, it won't actually be the exact name in the string (since we renamed all our attributes above). }; set rasterNumRows [FME_GetAttribute _num_rows]; set rasterNumCols [FME_GetAttribute _num_columns]; set comment { Only do subsetting if the specified start position is actually within the raster. }; if {$subsetStartRow < $rasterNumRows && $subsetStartCol < $rasterNumCols} { set comment { Now bound the subset to the size of the raster, so that we don't create padding. }; if {[expr $subsetStartRow + $subsetNumRows] > $rasterNumRows} { set subsetNumRows [expr $rasterNumRows - $subsetStartRow]; }; if {[expr $subsetStartCol + $subsetNumCols] > $rasterNumCols} { set subsetNumCols [expr $rasterNumCols - $subsetStartCol]; }; FME_Execute SubsetRaster $subsetStartRow $subsetNumRows $subsetStartCol $subsetNumCols; }; }; set comment { Remove all the attributes added by @RasterProperties and remove the prefix from the real attributes. We assume they all start with an underscore. }; FME_Execute RemoveAttributes fme_regexp_match {^_}; foreach oldName $allNames { set newName $kAttrPrefix; append newName $oldName; FME_RenameAttribute $oldName $newName; }; }; } +FACTORY_DEF * TeeFactory FACTORY_NAME Matcher_Matched_RasterSetterUpper INPUT FEATURE_TYPE Matcher_Matched___RasterFeatures___ OUTPUT FEATURE_TYPE __viewme__ @Tcl2("Matcher_Matched_359eb0d8_3801_444e_bcf2_12acb6612ab01_prepareRaster {} {} {} {}") +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +# Matcher_Matched_359eb0d8_3801_444e_bcf2_12acb6612ab01_VIS_FEAT_TYPE changes the feature types +# of the features being visualized. + +DEFAULT_MACRO Matcher_Matched_359eb0d8_3801_444e_bcf2_12acb6612ab01_VIS_FEAT_TYPE Matcher_Matched$(CATMAC) +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. + +FACTORY_DEF * RecorderFactory FACTORY_NAME Matcher_Matched_Recorder INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType($(Matcher_Matched_359eb0d8_3801_444e_bcf2_12acb6612ab01_VIS_FEAT_TYPE)) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA filecode,varchar255,_ccode,varchar255,_version,varchar255,_codeVersion,varchar255,Country,varchar255,Year,varchar255,Survey_ID_num,varchar255,SurveyAPI_ID,varchar255,Type,varchar255,Datasetrangemin,varchar255,Datasetrangemax,varchar255,IgnoreDupe,varchar255,_substringMin,varchar255,_substringMax,varchar255,_codeMin,varchar255,_codeMax,varchar255,_phase,varchar255,_match_id,varchar255 MODE RECORD RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 + +# ------------------------------------------------------------------------- + +# The default behaviour is to abort on any feature entering the transformer. +# If Workbench has set the _WB_BYPASS_TERMINATION macro to a value of "Yes", +# then the features will instead be passed through with a feature type of +# __WB_BYPASS_TERMINATOR__, which Workbench will send to a visualizer or +# somesuch. + +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TestFactory FACTORY_NAME Terminator INPUT FEATURE_TYPE Matcher_MATCHED_1_zy1q0HFO8kE= TEST "$(_WB_BYPASS_TERMINATION)" == Yes OUTPUT PASSED FEATURE_TYPE __WB_BYPASS_TERMINATOR__ @SupplyAttributes(_wb_termination_feature_type,@FeatureType()) @SupplyAttributes(ENCODED,_wb_termination_message,"Translation Terminated") @SupplyAttributes(_wb_termination_xformer,"Terminator") @SupplyAttributes(_wb_termination_feature,Yes) OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED,"Translation Terminated") + +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" INPUT FEATURE_TYPE * ROUTE FME_GENERIC Matcher_NOT_MATCHED_0_7AjmYRqtdJg= TO CSV __GO_TO_FINAL_OUTPUT_ROUTER__ CopyAttributesENCODEDSurveyFilenamefilecode,multi_writer_id,0,SupplyAttributesENCODED__wb_out_feat_type__SurveyIdsByFile GEOMETRY ROUTE FME_GENERIC __WB_BYPASS_TERMINATOR__ Tcl2FME_StatMessage818062Value_wb_termination_messageValue_wb_termination_xformer818063 TO FME_GENERIC __WB_BYPASS_TERMINATOR__ __wb_out_feat_type__,__WB_BYPASS_TERMINATOR__ GEOMETRY OUTPUT ROUTED FEATURE_TYPE * @FeatureType(ENCODED,@Value(__wb_out_feat_type__)) @RemoveAttributes(__wb_out_feat_type__) OUTPUT NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__ + +# ------------------------------------------------------------------------- + +FACTORY_DEF * CreationFactory CREATE_AT_END OUTPUT FEATURE_TYPE __NUKEME__ @TCL("if [file exists {$(WORKSPACE_TEMP_DIR)}] {set files [glob -nocomplain -directory {$(WORKSPACE_TEMP_DIR)} -tails *.ffs]; if {[llength $files] == 1} { set theFile {$(WORKSPACE_TEMP_DIR)/}; append theFile [lindex $files 0]; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -f FFS $theFile & \175; } elseif { [llength $files] == 0 } { catch { file delete -force {$(WORKSPACE_TEMP_DIR)} }; } else { set filesNoExt {}; set lastfile {}; foreach {fileName} [lsort $files] { set fileNoExt [string trimright $fileName {.ffs}]; if [regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] { if { $fileNoExtBase == $lastfile } { continue } }; set lastfile $fileNoExt; lappend filesNoExt $fileNoExt }; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -d {$(WORKSPACE_TEMP_DIR)} -a ffs -f FFS $filesNoExt & \175; }; }; ") +FACTORY_DEF * TeeFactory INPUT FEATURE_TYPE __NUKEME__ +# ------------------------------------------------------------------------- +CSV_3_DEF SurveyIdsByFile csv_append_mode INHERIT_FROM_WRITER csv_field_names INHERIT_FROM_WRITER SurveyFilename auto Country char(33) Year char(8) Survey_ID_num number(4,0) SurveyAPI_ID char(10) Type char(4) diff --git a/MetadataManagement/view_records_by_survey.sql b/MetadataManagement/view_records_by_survey.sql new file mode 100644 index 0000000..8bf881e --- /dev/null +++ b/MetadataManagement/view_records_by_survey.sql @@ -0,0 +1,6 @@ +SELECT q.dhs_file_code, q.record_code, q.record_desc, i.recode, i.recode_description +FROM +dhs_recodes i INNER JOIN ( + select s.dhs_file_code, t.record_code, t.record_desc, t.id from dhs_records t INNER JOIN dhs_surveys s ON t.dhs_file_code = s.dhs_file_code ) q +ON i.record_id = q.id +WHERE q.record_code ='RECML' \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7468158 --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +DHS hierarchical data extraction +-------------------------------- + +This repository contains code (as python scripts and FME workbenches) to +- Extract schema information from the .DCF CSPro format data specification files, and save this information to CSV files +- Read the schema specification CSV files and use these to parse the data (.DAT) files into individual tables (record types) \ No newline at end of file