-- use of parameters and types is to be consistent with their definitions in clause 3

ISO-10161-ILL-1 DEFINITIONS EXPLICIT TAGS ::=

BEGIN
-- ISO-10161-ILL-1 refers to the ILL ISO standard 10161 version 1
-- and version 2 as specified in ISO standard 10161 Amendment 1

ILL-APDU ::= CHOICE {
	ILL-Request,
	Forward-Notification,
	Shipped,
	ILL-Answer,
	Conditional-Reply,
	Cancel,
	Cancel-Reply,
	Received,
	Recall,
	Returned,
	Checked-In,
	Overdue,
	Renew,
	Renew-Answer,
	Lost,
	Damaged,
	Message,
	Status-Query,
	Status-Or-Error-Report,
	Expired
	}

-- The tagging scheme used in the APDU definitions is as follows:
-- each named type that is a component type of an APDU definition is assigned a different tag
-- that is unique within the set of APDU definitions.  Where these component types themselves
-- have structure, the tagging within such type definitions has only local scope. 

ILL-Request ::= [APPLICATION 1] SEQUENCE {
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	transaction-type	[5]	IMPLICIT Transaction-Type DEFAULT 1,
	delivery-address	[6]	IMPLICIT Delivery-Address OPTIONAL, 
	delivery-service		Delivery-Service OPTIONAL,
	billing-address	[8]	IMPLICIT Delivery-Address OPTIONAL,
	iLL-service-type	[9]	IMPLICIT SEQUENCE SIZE (1..5) OF 
				ILL-Service-Type,
		-- this sequence is a list, in order of preference
	responder-specific-service	[10]	EXTERNAL OPTIONAL,
		-- use direct reference style
	requester-optional-messages	[11]	IMPLICIT Requester-Optional-Messages-Type,
	search-type	[12]	IMPLICIT Search-Type OPTIONAL,
	supply-medium-info-type 	[13]	IMPLICIT SEQUENCE SIZE (1..7) OF
				Supply-Medium-Info-Type OPTIONAL,
		-- this sequence is a list, in order of preference,
		-- with a maximum number of 7 entries
	place-on-hold	[14]	IMPLICIT Place-On-Hold-Type DEFAULT 3,
	client-id	[15]	IMPLICIT Client-Id OPTIONAL,     
	item-id	[16]	IMPLICIT Item-Id,
	supplemental-item-description	[17]	IMPLICIT Supplemental-Item-Description OPTIONAL,
	cost-info-type	[18]	IMPLICIT Cost-Info-Type OPTIONAL,
	copyright-compliance	[19]	ILL-String OPTIONAL,
	third-party-info-type	[20]	IMPLICIT Third-Party-Info-Type OPTIONAL,
		-- mandatory when initiating a FORWARD service or an
		-- ILL-REQUEST service for a partitioned ILL sub-
		-- transaction or when initiating an ILL-REQUEST service for
		-- an ILL sub-transaction if the received ILL-REQUEST
		-- included an "already-tried-list";optional otherwise
	retry-flag	[21]	IMPLICIT BOOLEAN DEFAULT FALSE,
	forward-flag	[22]	IMPLICIT BOOLEAN DEFAULT FALSE,
	requester-note	[46]	ILL-String OPTIONAL,
	forward-note	[47]	ILL-String OPTIONAL,
	iLL-request-extensions 	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
 	}

Forward-Notification ::= [APPLICATION 2] SEQUENCE {
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,   
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id,
		-- mandatory in this APDU
	responder-address	[24]	IMPLICIT System-Address OPTIONAL,
	intermediary-id	[25]	IMPLICIT System-Id,
	notification-note	[48]	ILL-String OPTIONAL,
	forward-notification-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

Shipped ::= [APPLICATION 3] SEQUENCE {
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,   
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-address	[24]	IMPLICIT System-Address OPTIONAL,
	intermediary-id	[25]	IMPLICIT System-Id OPTIONAL,
	supplier-id	[26]	IMPLICIT System-Id OPTIONAL,
	client-id	[15]	IMPLICIT Client-Id OPTIONAL,
	transaction-type	[5]	IMPLICIT Transaction-Type DEFAULT 1,
	supplemental-item-description	[17]	IMPLICIT Supplemental-Item-Description OPTIONAL,
	shipped-service-type	[27]	IMPLICIT Shipped-Service-Type,
	responder-optional-messages	[28]	IMPLICIT Responder-Optional-Messages-Type
				OPTIONAL,
	supply-details	[29]	IMPLICIT Supply-Details,
	return-to-address	[30]	IMPLICIT Postal-Address OPTIONAL,
	responder-note	[46]	ILL-String OPTIONAL,
	shipped-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

ILL-Answer ::= [APPLICATION 4] SEQUENCE {
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	transaction-results	[31]	IMPLICIT Transaction-Results,
	results-explanation	[32]	CHOICE {
				conditional-results	[1] Conditional-Results,
				-- chosen if transaction-results=CONDITIONAL
				retry-results		[2] Retry-Results,
				-- chosen if transaction-results=RETRY
				unfilled-results	[3] Unfilled-Results,
				--chosen if transaction-results=UNFILLED
				locations-results	[4] Locations-Results,
				-- chosen if transaction-results=LOCATIONS-PROVIDED
	 			will-supply-results	[5] Will-Supply-Results,
				-- chosen if transaction-results=WILL-SUPPLY
				hold-placed-results	[6] Hold-Placed-Results,
				-- chosen if transaction-results=HOLD-PLACED
				estimate-results	[7] Estimate-Results
				-- chosen if transaction-results=ESTIMATE
				} OPTIONAL,
		-- optional if transaction-results equals RETRY, UNFILLED,
		-- WILL-SUPPLY or HOLD-PLACED;
		-- required if transaction-results equals CONDITIONAL,
		-- LOCATIONS-PROVIDED or ESTIMATE
	responder-specific-results	[33]	EXTERNAL OPTIONAL,
		-- this type is mandatory if results-explanation
		-- chosen for any result 
		-- has the value "responder-specific".
	supplemental-item-description	[17]	IMPLICIT Supplemental-Item-Description OPTIONAL,
	send-to-list	[23]	IMPLICIT Send-To-List-Type OPTIONAL,
	already-tried-list	[34]	IMPLICIT Already-Tried-List-Type OPTIONAL,
	responder-optional-messages	[28]	IMPLICIT Responder-Optional-Messages-Type
				OPTIONAL,
	responder-note	[46]	ILL-String OPTIONAL,
	ill-answer-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

Conditional-Reply ::= [APPLICATION 5] SEQUENCE {
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	answer	[35]	IMPLICIT BOOLEAN,
	requester-note	[46]	ILL-String OPTIONAL,
	conditional-reply-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

Cancel ::= [APPLICATION 6] SEQUENCE {
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	requester-note	[46]	ILL-String OPTIONAL,
	cancel-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

Cancel-Reply ::= [APPLICATION 7] SEQUENCE {
	protocol-version-num	[0]	IMPLICIT INTEGER {
				 version-1 (1),
				 version-2 (2)
				 },
	transaction-id	[1]	IMPLICIT Transaction-Id,
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	answer	[35]	IMPLICIT BOOLEAN,
	responder-note	[46]	ILL-String OPTIONAL,
	cancel-reply-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

Received ::= [APPLICATION 8] SEQUENCE { 
	protocol-version-num	[0]	IMPLICIT INTEGER {
			 version-1 (1),
			 version-2 (2)
			 },
	transaction-id	[1]	IMPLICIT Transaction-Id,
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	supplier-id	[26]	IMPLICIT System-Id OPTIONAL,
	supplemental-item-description	[17]	IMPLICIT Supplemental-Item-Description OPTIONAL,
	date-received	[36]	IMPLICIT ISO-Date,
	shipped-service-type	[27]	IMPLICIT Shipped-Service-Type,
	requester-note	[46]	ILL-String OPTIONAL,
	received-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

Recall ::= [APPLICATION 9] SEQUENCE {  
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,   
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL, 
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL, 
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-note	[46]	ILL-String OPTIONAL,
	recall-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

Returned ::= [APPLICATION 10] SEQUENCE { 
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	supplemental-item-description	[17]	IMPLICIT Supplemental-Item-Description OPTIONAL,
	date-returned	[37]	IMPLICIT ISO-Date,
	returned-via	[38]	Transportation-Mode OPTIONAL,
	insured-for	[39]	IMPLICIT Amount OPTIONAL,
	requester-note	[46]	ILL-String OPTIONAL,
	returned-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

Checked-In ::= [APPLICATION 11] SEQUENCE {
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,   
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL, 
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL, 
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	date-checked-in	[40]	IMPLICIT ISO-Date,
	responder-note	[46]	ILL-String OPTIONAL,
	checked-in-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

Overdue ::= [APPLICATION 12] SEQUENCE { 
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	date-due	[41]	IMPLICIT Date-Due,
	responder-note	[46]	ILL-String OPTIONAL,
	overdue-extensions	[49]	SEQUENCE OF Extension OPTIONAL
	}

Renew ::= [APPLICATION 13] SEQUENCE {
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,   
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,   
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL,   
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	desired-due-date	[42]	IMPLICIT ISO-Date OPTIONAL,
	requester-note	[46]	ILL-String OPTIONAL,
	renew-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

Renew-Answer ::= [APPLICATION 14] SEQUENCE {
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,   
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,   
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL,   
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	answer	[35]	IMPLICIT BOOLEAN,
	date-due	[41]	IMPLICIT Date-Due OPTIONAL,
	responder-note	[46]	ILL-String OPTIONAL,
	renew-answer-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

Lost ::= [APPLICATION 15] SEQUENCE {
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,   
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,   
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL,   
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	note	[46]	ILL-String OPTIONAL,
	lost-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

Damaged ::= [APPLICATION 16] SEQUENCE { 
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL, 
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	damaged-details	[5]	IMPLICIT Damaged-Details OPTIONAL,
		-- this parameter may only be present in APDU's with a
		-- protocol-version-num value of 2 or greater
	note	[46]	ILL-String OPTIONAL,
	damaged-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

Message ::= [APPLICATION 17] SEQUENCE { 
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,   
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,   
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL,   
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	note	[46]	ILL-String,
	message-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

Status-Query ::= [APPLICATION 18] SEQUENCE {
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	note	[46]	ILL-String OPTIONAL,
	status-query-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

Status-Or-Error-Report ::= [APPLICATION 19] SEQUENCE {
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,   
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,   
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	reason-no-report	[43]	IMPLICIT Reason-No-Report OPTIONAL,
		-- mandatory if no report is present;
		-- not present otherwise
	status-report	[44]	IMPLICIT Status-Report OPTIONAL,
	error-report	[45]	IMPLICIT Error-Report OPTIONAL,
	note	[46]	ILL-String OPTIONAL,
	status-or-error-report-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

Expired ::= [APPLICATION 20] SEQUENCE {
	protocol-version-num	[0]	IMPLICIT INTEGER {
				version-1 (1),
				version-2 (2)
				},
	transaction-id	[1]	IMPLICIT Transaction-Id,
	service-date-time	[2]	IMPLICIT Service-Date-Time,
	requester-id	[3]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	responder-id	[4]	IMPLICIT System-Id OPTIONAL,
		-- mandatory when using store-and-forward communications
		-- optional when using connection-oriented communications
	expired-extensions	[49]	IMPLICIT SEQUENCE OF Extension OPTIONAL
	}

Account-Number ::= ILL-String

Already-Forwarded ::= SEQUENCE {
	responder-id	[0]	IMPLICIT System-Id,
	responder-address	[1]	IMPLICIT System-Address OPTIONAL
	}	

Already-Tried-List-Type ::= SEQUENCE OF System-Id

Amount ::= SEQUENCE {
	currency-code	[0]	IMPLICIT PrintableString (SIZE (3)) OPTIONAL,
		-- values defined in ISO 4217-1981
	monetary-value	[1]	IMPLICIT AmountString (SIZE (1..10))
	}

AmountString ::= PrintableString (FROM ("1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"|"0"|" "|"."|","))

Client-Id ::= SEQUENCE {
	client-name	[0]	ILL-String OPTIONAL,
	client-status	[1]	ILL-String OPTIONAL,
	client-identifier	[2]	ILL-String OPTIONAL
	}

Conditional-Results ::= SEQUENCE {
	conditions	[0]	IMPLICIT ENUMERATED {
				cost-exceeds-limit 				(13),
				charges 					(14),
				prepayment-required 			(15),
				lacks-copyright-compliance 			(16),
				library-use-only 				(22),
				no-reproduction 				(23),
				client-signature-required 			(24),
				special-collections-supervision-required	(25),
				other 					(27),
				responder-specific 				(28),
				proposed-delivery-service 			(30) 
				},
	date-for-reply	[1]	IMPLICIT ISO-Date OPTIONAL,
	locations	[2]	IMPLICIT SEQUENCE OF Location-Info OPTIONAL,
	proposed-delivery-service		Delivery-Service OPTIONAL
		-- this parameter specifies a proposed delivery service the
		-- acceptance of which is a condition of supply.  It may be a
		-- physical service or an electronic service.  This parameter
		-- may only be present in APDUs with a 
		-- protocol-version-num value of 2 or greater
	}

Cost-Info-Type ::= SEQUENCE {
	account-number	[0]	Account-Number OPTIONAL,
	maximum-cost	[1]	IMPLICIT Amount OPTIONAL,
	reciprocal-agreement	[2]	IMPLICIT BOOLEAN DEFAULT FALSE,
	will-pay-fee	[3]	IMPLICIT BOOLEAN DEFAULT FALSE,
	payment-provided	[4]	IMPLICIT BOOLEAN DEFAULT FALSE
	}

Current-State ::= ENUMERATED {
	nOT-SUPPLIED 	(1),
	pENDING	(2),
	iN-PROCESS	(3),
	fORWARD	(4),
	cONDITIONAL	(5),
	cANCEL-PENDING 	(6),
	cANCELLED	(7),
	sHIPPED 	(8),
	rECEIVED 	(9),
	rENEW-PENDING 	(10),
	nOT-RECEIVED-OVERDUE	(11),
	rENEW-OVERDUE 	(12),
	oVERDUE 	(13),
	rETURNED 	(14),
	cHECKED-IN	(15),
	rECALL 	(16),
	lOST 	(17),
	uNKNOWN 	(18)
	}

Damaged-Details ::= SEQUENCE {
	document-type-id	[0]	IMPLICIT OBJECT IDENTIFIER OPTIONAL,
		-- identifies an OSI document type registered in accordance
		-- with ISO 9834-2, for use in an automated environment
	damaged-portion		CHOICE {
				complete-document	[1]	IMPLICIT NULL,
				specific-units	[2]	IMPLICIT SEQUENCE 
									OF INTEGER
				-- the nature and extent of a "unit" is implicit in the
				-- value of document-type-id if one is supplied
				}
	}

Date-Due ::= SEQUENCE {
	date-due-field	[0]	IMPLICIT ISO-Date,
	renewable	[1]	IMPLICIT BOOLEAN DEFAULT TRUE
	}

Delivery-Address ::= SEQUENCE {
	postal-address	[0]	IMPLICIT Postal-Address OPTIONAL,
	electronic-address	[1]	IMPLICIT System-Address OPTIONAL
	}

Delivery-Service ::= CHOICE {
	physical-delivery	[7]	Transportation-Mode,
	electronic-delivery	[50]	IMPLICIT SEQUENCE OF Electronic-Delivery-Service
		-- electronic-delivery may only be present in APDUs
		-- with a protocol-version-num value of 2 or greater
	}

Electronic-Delivery-Service ::= SEQUENCE {
	-- the first four parameters are intended to be used in an automated
	-- environment
		e-delivery-service	[0] IMPLICIT SEQUENCE {
		-- identifies the kind of electronic delivery service, e.g.
		-- MOTIS IPM,FTAM, etc., using the assigned object
		-- identifier for the standard e.g. {joint-iso-ccitt mhs-motis 
		-- ipms}
			e-delivery-mode	[0] IMPLICIT OBJECT IDENTIFIER,
			e-delivery-parameters	[1] ANY DEFINED BY e-delivery-mode
			} OPTIONAL,
		document-type		[1] IMPLICIT SEQUENCE {
			document-type-id		[2] IMPLICIT OBJECT IDENTIFIER,
			-- identifies an OSI document type registered in accordance
			-- with ISO 9834-2
			document-type-parameters	[3] ANY DEFINED BY document-type-id
			-- any parameters relating to the registered document type
			} OPTIONAL,
		e-delivery-description		[4] ILL-String OPTIONAL,
		-- holds a human readable name or description of the
		-- required electronic delivery service and document type;
		-- this may also be used to identify an electronic delivery
		-- service for which there is no object identifier.
		-- This parameter may be present instead of, or in addition
		-- to, the previous 4 parameters
		e-delivery-details		[5] CHOICE {
			e-delivery-address	[0] IMPLICIT System-Address,
			e-delivery-id		[1] IMPLICIT System-Id
			},
		name-or-code		[6] ILL-String OPTIONAL,
		-- holds a human-readable identifier or correlation
		-- information for the document as shipped, e.g. a directory 
		-- and/or file name or message-id
		delivery-time		[7] IMPLICIT ISO-Time OPTIONAL
		-- holds the requester's preferred delivery time or
		-- the responder's proposed or actual delivery time
		}

Error-Report ::= SEQUENCE {
	correlation-information	[0]	ILL-String,
	report-source	[1]	IMPLICIT Report-Source,
	user-error-report	[2]	User-Error-Report OPTIONAL,
		-- mandatory if report-source is "user"; not present otherwise
	provider-error-report	[3]	Provider-Error-Report OPTIONAL
		-- mandatory if report-source is "provider"; not
		-- present otherwise
	}

Estimate-Results ::= SEQUENCE {
	cost-estimate	[0]	ILL-String,
	locations	[1]	IMPLICIT SEQUENCE OF Location-Info OPTIONAL
	}

Extension ::= SEQUENCE {
	identifier	[0]	IMPLICIT INTEGER,
	critical	[1]	IMPLICIT BOOLEAN DEFAULT FALSE,
	item	[2]	ANY DEFINED BY identifier
	}

General-Problem ::= ENUMERATED {
	unrecognized-APDU 	(1),
	mistyped-APDU 	(2),
	badly-structured-APDU 	(3),
	protocol-version-not-supported 	(4),
	other 	(5)
	}

History-Report ::= SEQUENCE {
	date-requested	[0]	IMPLICIT ISO-Date OPTIONAL,
	author	[1]	ILL-String OPTIONAL,
	title	[2]	ILL-String OPTIONAL,
	author-of-article	[3]	ILL-String OPTIONAL,
	title-of-article	[4]	ILL-String OPTIONAL,
	date-of-last-transition 	[5]	IMPLICIT ISO-Date,
	most-recent-service	[6]	IMPLICIT ENUMERATED {
				iLL-REQUEST			(1),
				fORWARD 				(21),
				fORWARD-NOTIFICATION 		(2),
				sHIPPED 				(3),
				iLL-ANSWER 			(4),
				cONDITIONAL-REPLY 		(5),
				cANCEL 				(6),
				cANCEL-REPLY 			(7),
				rECEIVED 				(8),
				rECALL 				(9),
				rETURNED 				(10),
				cHECKED-IN 			(11),
				rENEW-ANSWER 			(14),
				lOST 				(15),
				dAMAGED 				(16),
				mESSAGE 				(17),
				sTATUS-QUERY 			(18),
				sTATUS-OR-ERROR-REPORT	(19),
				eXPIRED 				(20)
				},
	date-of-most-recent-service	[7]	IMPLICIT ISO-Date,
	initiator-of-most-recent-service	[8]	IMPLICIT System-Id,
	shipped-service-type	[9]	IMPLICIT Shipped-Service-Type OPTIONAL,
		-- If the information is available, i.e. if a SHIPPED or
		-- RECEIVED APDU has been sent or received, then the
		-- value in this parameter shall be supplied.
		-- Value must contain the most current information, e.g. if a
		-- requester has received a SHIPPED APDU and then
		-- invokes a RECEIVED.request, then the value from the
		-- RECEIVED.request is used
	transaction-results	[10]	IMPLICIT Transaction-Results OPTIONAL,
		-- If the information is available, i.e. if an ILL-ANWSER
		-- APDU has been sent or received, then the value in this
		-- parameter shall be supplied.
	most-recent-service-note	[11]	ILL-String OPTIONAL
		-- If the information is available, i.e. if a note has been
		-- supplied in the most recent service primitive, then the
		-- value in this parameter shall be supplied.
	}

Hold-Placed-Results ::= SEQUENCE {
	estimated-date-available	[0]	IMPLICIT ISO-Date,
	hold-placed-medium-type	[1]	IMPLICIT Medium-Type OPTIONAL,
	locations	[2]	IMPLICIT SEQUENCE OF Location-Info OPTIONAL
	}

ILL-APDU-Type ::= ENUMERATED {
	iLL-REQUEST 	(1),
	fORWARD-NOTIFICATION 	(2),
	sHIPPED 	(3),
	iLL-ANSWER 	(4),
	cONDITIONAL-REPLY 	(5),
	cANCEL 	(6),
	cANCEL-REPLY 	(7),
	rECEIVED 	(8),
	rECALL 	(9),
	rETURNED 	(10),
	cHECKED-IN 	(11),
	oVERDUE 	(12),
	rENEW 	(13),
	rENEW-ANSWER 	(14),
	lOST 	(15),
	dAMAGED 	(16),
	mESSAGE 	(17),
	sTATUS-QUERY 	(18),
	sTATUS-OR-ERROR-REPORT	(19),
	eXPIRED 	(20)
	}

ILL-Service-Type ::= ENUMERATED  {
	loan 	(1),
	copy-non-returnable 	(2),
	locations 	(3),
	estimate 	(4),
	responder-specific 	(5)
	}

ILL-String ::= CHOICE {
	GeneralString,
	-- may contain any ISO registered G (graphic) and C
	-- (control) character set
	EDIFACTString
	}
	-- may not include leading or trailing spaces
	-- may not consist only of space (" ") or non-printing 
	-- characters

Intermediary-Problem ::= ENUMERATED {
	cannot-send-onward 	(1)
	}

ISO-Date ::= VisibleString
	-- conforms to ISO 8601
	-- length = 8
	-- fixed
	-- YYYYMMDD

ISO-Time ::= VisibleString
	-- conforms to ISO 8601
	-- length = 6, 
	-- fixed
	-- HHMMSS
	-- local time of person or institution invoking service

Item-Id ::= SEQUENCE {
	item-type	[0]	IMPLICIT ENUMERATED {
				monograph	(1),
				serial 	(2),
				other	(3)
				} OPTIONAL,
	held-medium-type	[1]	IMPLICIT Medium-Type OPTIONAL,
	call-number	[2]	ILL-String OPTIONAL,
	author	[3]	ILL-String OPTIONAL,
	title	[4]	ILL-String OPTIONAL,
	sub-title	[5]	ILL-String OPTIONAL,
	sponsoring-body	[6]	ILL-String OPTIONAL,
	place-of-publication 	[7]	ILL-String OPTIONAL,
	publisher	[8]	ILL-String OPTIONAL,
	series-title-number 	[9]	ILL-String OPTIONAL,
	volume-issue	[10]	ILL-String OPTIONAL,
	edition	[11]	ILL-String OPTIONAL,
	publication-date	[12]	ILL-String OPTIONAL,
	publication-date-of-component	[13] ILL-String OPTIONAL,
	author-of-article	[14]	ILL-String OPTIONAL,
	title-of-article	[15]	ILL-String OPTIONAL,
	pagination	[16]	ILL-String OPTIONAL,
	national-bibliography-no	[17]	EXTERNAL OPTIONAL,
	iSBN	[18]	ILL-String (SIZE (10)) OPTIONAL,
		-- must conform to ISO 2108-1978
	iSSN	[19]	ILL-String (SIZE (8)) OPTIONAL,
		-- must conform to ISO 3297-1986
	system-no	[20]	EXTERNAL OPTIONAL,
	additional-no-letters	[21] ILL-String OPTIONAL,
	verification-reference-source	[22] ILL-String OPTIONAL
	}

Location-Info ::= SEQUENCE {
	location-id	[0]	IMPLICIT System-Id,
	location-address	[1]	IMPLICIT System-Address OPTIONAL,
	location-note	[2]	ILL-String OPTIONAL
	}

Locations-Results ::= SEQUENCE {
	reason-locs-provided	[0]	IMPLICIT Reason-Locs-Provided OPTIONAL,
	locations	[1]	IMPLICIT SEQUENCE OF Location-Info
	}

Medium-Type ::= ENUMERATED {
	printed 	(1),
	microform 	(3),
	film-or-video-recording	(4),
	audio-recording 	(5),
	machine-readable 	(6),
	other 	(7)
	}

Name-Of-Person-Or-Institution ::= CHOICE {
	name-of-person	[0]	ILL-String,
	name-of-institution	[1]	ILL-String
	}

Person-Or-Institution-Symbol ::= CHOICE {
	person-symbol	[0]	ILL-String,
	institution-symbol	[1]	ILL-String
	}

Place-On-Hold-Type ::= ENUMERATED {
	yes 	(1),
	no 	(2),
	according-to-responder-policy	(3)
	}

Postal-Address ::= SEQUENCE {
	name-of-person-or-institution	[0]	Name-Of-Person-Or-Institution OPTIONAL,
	extended-postal-delivery-address [1]	ILL-String OPTIONAL,
	street-and-number	[2]	ILL-String OPTIONAL,
	post-office-box	[3]	ILL-String OPTIONAL,
	city	[4]	ILL-String OPTIONAL,
	region	[5]	ILL-String OPTIONAL,
	country	[6]	ILL-String OPTIONAL,
	postal-code	[7]	ILL-String OPTIONAL
	}

Provider-Error-Report ::= CHOICE {
	general-problem	[0]	IMPLICIT General-Problem,
	transaction-id-problem 	[1]	IMPLICIT Transaction-Id-Problem,
	state-transition-prohibited	[2]	IMPLICIT State-Transition-Prohibited
	}

Reason-Locs-Provided ::= ENUMERATED {
	in-use-on-loan 	(1),
	in-process 	(2),
	lost 	(3),
	non-circulating 	(4),
	not-owned 	(5),
	on-order 	(6),
	volume-issue-not-yet-available 	(7),
	at-bindery 	(8),
	lacking 	(9),
	not-on-shelf 	(10),
	on-reserve 	(11),
	poor-condition 	(12),
	cost-exceeds-limit 	(13),
	on-hold 	(19),
	other 	(27),
	responder-specific 	(28) 
	}

Reason-No-Report ::= ENUMERATED {
	temporary	(1),
	permanent	(2)
	}

Reason-Unfilled ::= ENUMERATED {
	in-use-on-loan	(1),
	in-process	(2),
	lost	(3),
	non-circulating	(4),
	not-owned	(5),
	on-order	(6),
	volume-issue-not-yet-available	(7),
	at-bindery	(8),
	lacking	(9),
	not-on-shelf 	(10),
	on-reserve	(11),
	poor-condition	(12),
	cost-exceeds-limit	(13),
	charges	(14),
	prepayment-required	(15),
	lacks-copyright-compliance	(16),
	not-found-as-cited	(17),
	locations-not-found	(18),
	on-hold	(19),
	policy-problem	(20),
	mandatory-messaging-not-supported	(21),
	expiry-not-supported	(22) ,
	requested-delivery-services-not-supported	(23),
 	preferred-delivery-time-not-possible	(24),
	other	(27),
	responder-specific	(28)
	}

Report-Source ::= ENUMERATED {
	user	(1),
	provider	(2)
	}

Requester-Optional-Messages-Type ::= SEQUENCE {
	can-send-RECEIVED	[0]	IMPLICIT BOOLEAN,
	can-send-RETURNED	[1]	IMPLICIT BOOLEAN,
	requester-SHIPPED	[2]	IMPLICIT ENUMERATED {
				requires	(1),
				desires 	(2),
				neither	(3)
				},
	requester-CHECKED-IN	[3]	IMPLICIT ENUMERATED {
				requires 	(1),
				desires 	(2),
				neither 	(3)
				}
	}

Responder-Optional-Messages-Type ::= SEQUENCE {
	can-send-SHIPPED	[0]	IMPLICIT BOOLEAN,
	can-send-CHECKED-IN	[1]	IMPLICIT BOOLEAN,
	responder-RECEIVED	[2]	IMPLICIT ENUMERATED {
				requires 	(1),
				desires 	(2),
				neither 	(3)
				},
	responder-RETURNED	[3]	IMPLICIT ENUMERATED {
				requires 	(1),
				desires 	(2),
				neither 	(3)
				}
	}

Retry-Results ::= SEQUENCE {
	reason-not-available	[0]	IMPLICIT ENUMERATED {
				in-use-on-loan 			(1),
				in-process 				(2),
				on-order 				(6),
				volume-issue-not-yet-available	(7),
				at-bindery 				(8),
				cost-exceeds-limit 			(13),
				charges 				(14),
				prepayment-required 		(15),
				lacks-copyright-compliance		(16),
				not-found-as-cited 			(17),
				on-hold 				(19),
				other 				(27),
				responder-specific 			(28)
				} OPTIONAL,
	retry-date	[1]	IMPLICIT ISO-Date OPTIONAL,
	locations	[2]	IMPLICIT SEQUENCE OF Location-Info OPTIONAL
	}

Search-Type ::= SEQUENCE {
	level-of-service	[0]	ILL-String (SIZE (1)) OPTIONAL,
	need-before-date	[1]	IMPLICIT ISO-Date OPTIONAL,
	expiry-flag	[2]	IMPLICIT ENUMERATED {
				need-Before-Date	(1),
				other-Date 		(2),
				no-Expiry 		(3)
				} DEFAULT 3,
				-- value of "need-Before-Date" indicates that
				-- need-before-date also specifies transaction expiry
				-- date
	expiry-date	[3]	IMPLICIT ISO-Date OPTIONAL
		-- alternative expiry date can be used only when expiry-flag
		-- is set to "Other-Date"
	}

Security-Problem ::= ILL-String

Send-To-List-Type ::= SEQUENCE OF SEQUENCE {
	system-id	[0]	IMPLICIT System-Id,
	account-number	[1]	Account-Number OPTIONAL,
	system-address	[2]	IMPLICIT System-Address OPTIONAL
	}

Service-Date-Time ::= SEQUENCE {
	date-time-of-this-service 	[0]	IMPLICIT SEQUENCE {
				date	[0]	IMPLICIT ISO-Date,
				time	[1]	IMPLICIT ISO-Time OPTIONAL
				-- mandatory for 2nd and subsequent services
				-- invoked for a given 
				-- ILL-transaction on the same day
				},
	date-time-of-original-service	[1]	IMPLICIT SEQUENCE {
				date	[0]	IMPLICIT ISO-Date,
				time	[1]	IMPLICIT ISO-Time OPTIONAL
				} OPTIONAL
	}

Shipped-Service-Type ::= ILL-Service-Type (loan | copy-non-returnable)
	-- subtype of ILL-Service-Type

State-Transition-Prohibited ::= SEQUENCE {
	aPDU-type	[0]	IMPLICIT ILL-APDU-Type,
	current-state	[1]	IMPLICIT Current-State
	}

Status-Report ::= SEQUENCE {
	user-status-report	[0]	IMPLICIT History-Report,
	provider-status-report 	[1]	IMPLICIT Current-State
	}

Supplemental-Item-Description ::= SEQUENCE OF EXTERNAL
	-- the syntax of supplementary item description information is defined outside this standard

Supply-Details ::= SEQUENCE {
	date-shipped	[0]	IMPLICIT ISO-Date OPTIONAL,
	date-due	[1]	IMPLICIT Date-Due OPTIONAL,
	chargeable-units	[2]	IMPLICIT INTEGER (1..9999) OPTIONAL,
	cost	[3]	IMPLICIT Amount OPTIONAL,
	shipped-conditions	[4]	IMPLICIT ENUMERATED {
				library-use-only				(22),
				no-reproduction				(23),
				client-signature-required			(24),
				special-collections-supervision-required	(25),
				other					(27)
				} OPTIONAL,
	shipped-via		CHOICE {
				physical-delivery	[5]	Transportation-Mode,
				electronic-delivery	[50]	IMPLICIT
							         Electronic-Delivery-Service
				} OPTIONAL,
		-- electronic-delivery may only be present in APDUs with a
		-- protocol-version-num value of 2 or greater
	insured-for	[6]	IMPLICIT Amount OPTIONAL,
	return-insurance-require	[7]	IMPLICIT Amount OPTIONAL,
	no-of-units-per-medium	[8]	IMPLICIT SEQUENCE OF Units-Per-Medium-Type 	
				OPTIONAL
	}

Supply-Medium-Info-Type ::= SEQUENCE {
	supply-medium-type  	[0]	IMPLICIT Supply-Medium-Type,
	medium-characteristics 	[1]	ILL-String OPTIONAL
	}

Supply-Medium-Type ::= ENUMERATED {
	printed	(1),
	photocopy	(2),
	microform	(3),
	film-or-video-recording	(4),
	audio-recording	(5),
	machine-readable	(6),
	other	(7)
	}

System-Address ::= SEQUENCE {
	telecom-service-identifier	[0]	ILL-String OPTIONAL,
	telecom-service-address	[1]	ILL-String OPTIONAL
	}

System-Id ::= SEQUENCE {
	--at least one of the following must be present
	person-or-institution-symbol	[0]	Person-Or-Institution-Symbol OPTIONAL,
	name-of-person-or-institution	[1]	Name-Of-Person-Or-Institution OPTIONAL
	}

Third-Party-Info-Type ::= SEQUENCE {
	permission-to-forward	[0]	IMPLICIT BOOLEAN DEFAULT FALSE,
	permission-to-chain	[1]	IMPLICIT BOOLEAN DEFAULT FALSE,
	permission-to-partition 	[2]	IMPLICIT BOOLEAN DEFAULT FALSE,
	permission-to-change-send-to-list [3]	IMPLICIT BOOLEAN DEFAULT FALSE,
	initial-requester-address 	[4]	IMPLICIT System-Address OPTIONAL,
		-- mandatory when initiating a FORWARD service or an
		-- ILL-REQUEST service for a partitioned ILL
		-- sub-transaction; optional otherwise
	preference	[5]	IMPLICIT ENUMERATED {
				ordered	(1),
				unordered	(2)
				} DEFAULT 2,
	send-to-list	[6]	IMPLICIT Send-To-List-Type OPTIONAL,
	already-tried-list	[7]	IMPLICIT Already-Tried-List-Type OPTIONAL
		-- mandatory when initiating a FORWARD service, or when
		-- initiating an ILL-REQUEST service for an ILL
		-- sub-transaction if the received ILL-REQUEST included an
		-- "already-tried-list"; optional otherwise
	}

Transaction-Id ::= SEQUENCE {
	initial-requester-id	[0]	IMPLICIT System-Id OPTIONAL,
		-- mandatory for sub-transactions; not called
		-- "requester-id" to distinguish id of initial-requester
		--from id of requester of sub-transaction if there is one
	transaction-group-qualifier	[1]	ILL-String,
	transaction-qualifier	[2]	ILL-String,
	sub-transaction-qualifier	[3]	ILL-String OPTIONAL
		-- mandatory for sub-transactions
	}

Transaction-Id-Problem ::= ENUMERATED {
	duplicate-transaction-id	(1),
	invalid-transaction-id	(2),
	unknown-transaction-id	(3)
	}

Transaction-Results ::= ENUMERATED {
	conditional	(1),
	retry	(2),
	unfilled	(3),
	locations-provided	(4),
	will-supply	(5),
	hold-placed	(6),
	estimate	(7)
	}

Transaction-Type ::= ENUMERATED  {
	simple	(1),
	chained	(2),
	partitioned	(3)
	}

Transportation-Mode ::= ILL-String

Unable-To-Perform ::= ENUMERATED {
	not-available	(1),
	resource-limitation 	(2),
	other 	(3)
	}

Unfilled-Results ::= SEQUENCE {
	reason-unfilled	[0]	IMPLICIT Reason-Unfilled,
	locations	[1]	IMPLICIT SEQUENCE OF Location-Info OPTIONAL
	}

Units-Per-Medium-Type ::= SEQUENCE {
	medium	[0]	Supply-Medium-Type,
	no-of-units	[1]	INTEGER (1..9999)
	}

User-Error-Report ::= CHOICE {
	already-forwarded	[0]	IMPLICIT Already-Forwarded,
	intermediary-problem	[1]	IMPLICIT Intermediary-Problem,
	security-problem	[2]	Security-Problem,
	unable-to-perform	[3]	IMPLICIT Unable-To-Perform
	}


Will-Supply-Results ::= SEQUENCE {
	reason-will-supply 	[0]	ENUMERATED {
				in-use-on-loan 		(1),
				in-process 			(2),
				on-order 			(6),
				at-bindery 			(8),
				on-hold 			(19),
				being-processed-for-supply 	(26),
				other 			(27),
				responder-specific 		(28),
				electronic-delivery 		(30)
				},
	supply-date	[1]	ISO-Date OPTIONAL,
	return-to-address	[2]	Postal-Address OPTIONAL,
	locations	[3]	IMPLICIT SEQUENCE OF Location-Info OPTIONAL,
	electronic-delivery-service	[4] Electronic-Delivery-Service OPTIONAL
		-- if present, this must be one of the services proposed by 
		-- the requester
	}

EDIFACTString ::= VisibleString 
	(FROM ("A"|"B"|"C"|"D"|"E"|"F"|"G"|"H"|
	"I"|"J"|"K"|"L"|"M"|"N"|"O"|"P"|"Q"|"R"|"S"|"T"|"U"|
	"V"|"W"|"X"|"Y"|"Z"|"a"|"b"|"c"|"d"|"e"|"f"|"g"|"h"|
	"i"|"j"|"k"|"l"|"m"|"n"|"o"|"p"|"q"|"r"|"s"|"t"|"u"|
	"v"|"w"|"x"|"y"|"z"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|
	"9"|"0"|" "|"."|","|"-"|"("|")"|"/"|"="|"!"|"""|"%"|"&"|
	"*"|";"|"<"|">"|"'"|"+"|":"|"?"))

END


