h      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe:P6Holds all data both for CURRENCY and for ORIGCURRENCY.<Ratio of CURDEF currency to CURSYM currency, in decimal form%ISO-4217 3-letter currency identifierAccount number Checksum for international banksRouting and transit number'Bank identifier for international banksAccount numberType of account Checksum for international banks Can be either REPLACE or DELETE.7Replaces the transaction referenced by the CORRECTFITID6Deletes the transaction referenced by the CORRECTFITID&A single STMTTRN, see OFX spec section 11.4.2.3.1. This is most likely what you are interested in after downloading a statement from a bank.(Transaction type)&Date transaction was posted to account*)Date user initiated transaction, if known+Date funds are available,Amount of transaction. This is left as the string that was originally in the download. That means the transaction may include a plus or minus sign (no sign is the same as a plus sign.) According to section 3.2.9.2, amounts are always signed from the perspective of the customer.Typically negative amounts:/Investment buy amount, investment sell quantity*Bank statement debit amounts, checks, feesCredit card purchases=Margin balance (unless the institution owes the client money)Typically positive amounts:/Investment sell amount, investment buy quantityBank statement creditsCredit card payments0Ledger balance (unless the account is overdrawn)Formats for amounts are described in 3.2.9.1. If there is no decimal point, there is an implied decimal point at the end of the value. Trailing and leading spaces "should" be stripped. Positive or minus is indicated with a leading sign; a plus sign is assumed if there is no sign.YAn amount has a maximum of 32 alphanumeric characters, including digits and punctuation.{The radix point is indicated with either a period or a comma. Amounts "should" not include any digit grouping characters.-TTransaction ID issued by financial institution. Used to detect duplicate downloads..If present, this indicates the FITID of a previously sent transaction that is corrected by this record. This transaction replaces or deletes the transaction that it corrects, based on the value of CORRECTACTION below./See  and .0mServer assigned transaction ID; used for transactions initiated by client, such as payment or funds transfer1Check or other reference number2qReference number that uniquely identifies the transaction. Can be used in addition to or instead of a CHECKNUM.3Standard Industrial Code4Payee identifier if available5Information on the payee. The OFX spec seems to be saying that every transaction must have either NAME, wich is "name of payee or description of transaction", or the Payee aggregate. The former is indicated with a Left, the latter with a Right.6Information on a transfer. If this transaction wa sa transfer, this may contain information about the account being transferred to.7Extra information not in NAME8JCurrency option. OFX spec says to choose either CURRENCY or ORIGCURRENCY.9`OFX transaction types. These are used in STMTTRN aggregates, see OFX spec section 11.4.2.3.1.1.<?Interest earned or paid (which it is depends on sign of amount)=Dividend@DepositA;ATM debit or credit (which it is depends on sign of amount)BFPoint of sale debit or credit (which it is depends on sign of amount)CTransferEElectronic paymentFCash withdrawalGDirect depositHMerchant initiated debitI"Repeating payment / standing orderKAll the data from an OFX file.N?All the data will be contained in a root tag with the TagName OFX.OThe main OFX data consists of a series of tags. OFX 1.03 is SGML, not XML. This means that opening tags need not have closing tags. In OFX, a tag either has data and no child elements, or it has no data and it has child elements.Q!The data accompanying an OFX tag.RThe name of an OFX tagSBAn OFX file starts with a number of headers, which take the form  tag:value< followed by a newline. These are followed by a blank line.UThe value in an OFX header.VHeaders consists of simple  tag:value! pairs; this represents the tag.WQError handling. Errors are indicated with a Left String; successes with a Right.XParses either a UNIX or an MS-DOS newline. According to 1.2.2, OFX does not contain any white space between tags. However, since I have seen OFX files that do have whitespace between tags, the parser makes allowance for this.YParses a character, possibly with an escape sequence. The greater-than sign, less-than sign, and ampersand must be entered with escape sequences.According to OFX spec section 2.3.2.1, ampersands, less-than signs, and greater-than signs must appear as entities. However some banks deliver broken OFX files that do not use entities for ampersands (and possibly for less-than or greater-than signs too, although I have not yet observed such behavior.) There is now an error message that reflects this problem. Client code can filter the OFX data for known offenders before passing it to this library.[4Parses any opening tag. Returns the name of the tag.\)Parses a closing tag with the given name.]Parses any tag. The tag itself must be followed by at least one character: either the next tag if this is an aggregate tag, or the data if this is a data tag. OFX does not allow empty tags.The OFX spec seems to say that OFX files do not include trailing newlines after tags or data, but I have seen these newlines in QFX files, so this parses optional trailing newlines and spaces.^-Parses an entire OFX file, including headers.AParses an OFX date; provides an error message if the parse fails._XParses an OFX date. Fails if the date is not valid or if there is no date to be parsed.`Parses an OFX time. Fails if the time is not valid or if there is no time to parse. Fails if there is no time to parse; however, if there is a time but no zone, returns the time and UTC for the zone.aKParses a time zone offset. Fails if there is no time zone offset to parse.b}Finds child tags with the given name. When a tag is found, that tag is not searched for further children with the same name.cDescends through a tree of tags to find a tag at a specific location in the tree. Fails if any part of the search fails. For example, to find the financial institution ORG tag, where t is the root OFX tag: 3findPath ["SIGNONMSGSRSV1", "SONRS", "FI", "ORG"] td3Gets the data from a tag, if it is a tag with data.eGoes to a certain path in the tag hierarchy and pulls the requested data, if the tag is present and it is a data tag. For example, to get the name of the financial institution: 3pathData ["SIGNONMSGSRSV1", "SONRS", "FI", "ORG"] ffGets the name of the financial institution from the FI tag, if available. The OFX spec does not require this tag to be present.gaGets the credit card number, if available. The OFX spec does not require this tag to be present.hbGets the bank account number, if available. The OFX spec does not require this tag to be present.iAGets either the credit card or bank account number, if available.jFinds the first tag (either this tag or any children) that has the given name and that is a data tag (not an aggregate tag.) If no data tag with the given name is found, returns Nothing.Finds the first tag (either this tag or any children) that has the given name and that is a data tag. Gives an error message if the tag is not found.mGets a single Transaction from a tag. The tag should be the one named STMTTRN. Fails with an error message if any required field was not present.n*Parses a Payee record from its parent tag.qParses currency data.tPulls all Transactions from a file. Might fail if the OFX file does not conform to the specification (or if there are bugs in this library.) In case of the former, you can manually parse the transaction information yourself using functions like e3. In case of the latter, please send bugreports :-)IParses an input file. Returns either an error message or the resulting K.(Parses an OFX file and gets the list of  Tranasction.dParses an input file to an OfxFile. Returns a pretty-printed string with the results of the parse.;Parses an input file to an OfxFile, and then to a list of &4. Returns a pretty-printed string with the results.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn^The tag which contains the PAYEE tag, if there is one. This would typically be a STMTTRN tag.Nothing if there is no PAYEE tag. Just if a PAYEE tag is found, with a Left if the tag is lacking a required element, or a Right if the tag is successfully parsed.GIf there is more than one PAYEE tag, only the first one is considered.opq>The tag that contains the data, e.g. CURRENCY or ORIGCURRENCY.rstuvwxyz{|}~File contents to parsebPretty printed result of rending the result of the parse, which is either an error message or an K.File contents to parsekPretty printed result of rendering the result of the parse, which is either an error message or a list of &.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~WVUSTRQOPKLMNbcdejfghi&'()*+,-./012345678mt9:;<=>?@ABCDEFGHIJl !"#$%nr s kqop^XYZ[\]_`auvwxyz{|}~@   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !""#$%&'()*+,-./0123456789:;<=>?@ABCDEFFGHIIJKLLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"ofx-0.4.2.0-IDzxRIzWdc69DHeWbSx8lJData.OFX OrigCurrencyCurrency CurrencyData cdCURRATEcdCURSYMAcctType ACHECKINGASAVINGS AMONEYMRKT ACREDITLINECCAcctToctACCTID ctACCTKEY BankAcctTobtBANKID btBRANCHIDbtACCTID btACCTTYPE btACCTKEY CorrectActionREPLACEDELETEPayeepeNAMEpeADDR1peADDR2peADDR3peCITYpeSTATE pePOSTALCODE peCOUNTRYpePHONE Transaction txTRNTYPE txDTPOSTEDtxDTUSER txDTAVAILtxTRNAMTtxFITIDtxCORRECTFITIDtxCORRECTACTION txSRVRTID txCHECKNUMtxREFNUMtxSIC txPAYEEID txPayeeInfo txAccountTotxMEMO txCurrencyTrnTypeTCREDITTDEBITTINTTDIVTFEETSRVCHGTDEPTATMTPOSTXFERTCHECKTPAYMENTTCASH TDIRECTDEP TDIRECTDEBIT TREPEATPMTTOTHEROFXFilefHeaderfTagTagTagDataTagName OFXHeader HeaderValue HeaderTagErrnewlineescCharheader openingTag closingTagtagofxFiledatetimetzOffsetfindfindPathtagDatapathDatafiNamecreditCardNumberbankAccountNumber accountNumberfindDataacctTypetrnType transactionpayeecurrency origCurrency currencyData bankAcctToccAcctTo transactionspPayee pTransactionpTagpHeaderpFilepEitherpMaybepListlabel pExceptional parseOfxFileparseTransactionsprettyRenderOfxFileprettyRenderTransactions $fEqOFXHeader$fShowOFXHeader$fReadOFXHeader$fEqTag $fShowTag $fReadTag $fEqOFXFile $fShowOFXFile $fReadOFXFile $fEqTrnType $fOrdTrnType $fShowTrnType $fReadTrnType $fEqPayee $fShowPayee $fReadPayee$fEqCorrectAction$fShowCorrectAction$fReadCorrectAction $fEqCCAcctTo$fShowCCAcctTo$fReadCCAcctTo $fEqAcctType$fShowAcctType $fOrdAcctType$fReadAcctType$fShowBankAcctTo$fReadBankAcctTo$fEqCurrencyData$fShowCurrencyData$fReadCurrencyData $fEqCurrency$fShowCurrency$fReadCurrency$fEqOrigCurrency$fShowOrigCurrency$fReadOrigCurrency$fShowTransaction$fReadTransaction parseDaterequiredsafeRead