1 -- c-basic-offset: 2; tab-width: 2; indent-tabs-mode: t
2 -- vi: set shiftwidth=2 tabstop=2 noexpandtab:
3 -- :indentSize=2:tabSize=2:noTabs=false:
6 -- Sub-Volume IV ASN.1 reference definitions for ICAO Doc. 9705,
8 -- Version 1.1, 03 Oct 2001
10 -- The majority of the ULCS protocol definitions are specified in the ULCS
11 -- Technical Provisions by reference to ISO/IEC Standards and/or ITU-T
12 -- Recommendations. The ASN.1 definitions are reproduced here for ease of
13 -- reference and to allow explanatory annotations to be added. In the case of
14 -- any discrepancy between the definitions here and the corresponding
15 -- definitions defined in or referenced by the ULCS Technical Provisions,
16 -- the latter are assumed to take precedence.
18 -- The following ASN.1 modules are included here:
20 -- * General ULCS types. These are ASN.1 definitions used in the ULCS
21 -- Technical Provisions, though there is no equivalent ASN.1 module
22 -- defined there. The definitions in this module would generally be
23 -- incorporated into a wider "user" protocol module if using ASN.1 automated
24 -- tools. They are defined in a separate module here so that their syntax can
25 -- easily be verified by an ASN.1 syntax checker.
27 -- * Connection-oriented ACSE definitions. This is equivalent to the "ACSE-1"
28 -- module defined in the connection-oriented ACSE protocol standard.
30 -- * Information Framework. This is an extract of relevant definitions from the
31 -- InformationFramework module in the OSI standard "Directory : Models". The
32 -- types defined in this module are not actively used in the ULCS protocol, but
33 -- they are needed to satisfy IMPORTS statements in the ACSE definitions, and
34 -- to allow certain CHOICE types in the ACSE definitions to be sorted correctly
35 -- into canonical order.
38 -- Note.- In the following definitions, the ASN.1 comment " X" indicates
39 -- choice elements and optional elements in sequence types that are defined as
40 -- "Excluded" in the ULCS profile. That is, implementations of ULCS provisions
41 -- are never required to encode values for such elements (though they are
42 -- required to indicate the absence of these elements in all instances, by means
43 -- of bits in the appropriate PER preamble or choice index).
48 ULCS DEFINITIONS ::= BEGIN
49 -- ***************************************************************************
50 -- The following ASN.1 definitions are from Doc 9705 Sub-Volume IV,
52 -- ***************************************************************************
54 --Presentation User Data is Fully-encoded-data from
55 --ISO/IEC 8823-1:1994/Amd.1:1997 | ITU-T Rec. X.226/Amd. 1
57 --Fully-encoded-data ::= SEQUENCE SIZE (1, ...) OF PDV-list
58 Fully-encoded-data ::= SEQUENCE SIZE (1, ..., 2..MAX) OF PDV-list
59 -- contains one or more presentation-data-value-list (PDV-list) values
60 -- ATN commentary: The SIZE constraint above differs from the referenced
61 -- standard, which specifies (in 8.2):
62 -- Fully-encoded-data ::= SEQUENCE SIZE (1, ..., 2..MAX) OF PDV-list.
63 -- The ULCS provisions specify a simplified, but compatible, efficiency
64 -- constraint as there will never be more than one element in the SEQUENCE OF
65 -- for the foreseeable future.
66 -- This simplifies matters for some compilers.
68 PDV-list ::= SEQUENCE {
69 transfer-syntax-name Transfer-syntax-name OPTIONAL, -- X
70 presentation-context-identifier Presentation-context-identifier,
71 presentation-data-values CHOICE
72 { single-ASN1-type [0] ABSTRACT-SYNTAX.&Type
74 -- Type corresponding to presentation context identifier -- }) , -- X
75 octet-aligned [1] IMPLICIT OCTET STRING, -- X
76 arbitrary [2] IMPLICIT BIT STRING }
77 -- contains one or more presentation data values from the same
78 -- presentation context.
79 -- ATN Commentary: only the arbitrary BIT STRING encoding choice is used.
82 Transfer-syntax-name ::= OBJECT IDENTIFIER -- ATN: not used for ATN Upper Layers
84 Presentation-context-identifier::= INTEGER -- ATN: the following values are
88 user-ase-apdu (3) } (1..127, ... )
89 -- ATN commentary: The SIZE constraint above differs from the referenced
90 -- standard, which specifies (in 8.2):
91 -- Presentation-context-identifier::= INTEGER (1..127, ..., 128..MAX ).
92 -- The ULCS provisions specify a simplified, but compatible, efficiency
93 -- constraint as there will never be more than 127 presentation contexts in
94 -- ATN for the foreseeable future.
95 -- This simplifies matters for some compilers. The list of defined values is
96 -- shown here for guidance only, and has no effect on the PER encoding.
99 END -- of ULCS definitions
101 -- Connection-oriented ACSE definitions
102 --*************************************************************************
103 -- The ACSE abstract syntax from ISO/IEC 8650-1/Amd.1 | ITU-T Rec. X.227/
104 -- Amd. 1 is reproduced here for ease of reference. In case of any discrepancy,
105 -- the ISO/IEC standard takes precedence.
106 --*************************************************************************
108 ACSE-1 {joint-iso-itu-t association-control(2) modules(0) apdus(0) version1(1)}
109 -- ACSE-1 refers to ACSE version 1
113 acse-as-id, ACSE-apdu, aCSE-id, Application-context-name, AP-title,
114 AE-qualifier, -- AE-title, (ATN: AE-title is not needed)
115 AP-invocation-identifier,
116 AE-invocation-identifier, Mechanism-name, Authentication-value,
118 IMPORTS Name, RelativeDistinguishedName
119 FROM InformationFramework
120 { joint-iso-ccitt ds(5) module(1) informationFramework(1) 2 };
121 -- The data types Name and RelativeDistinguishedName are imported
122 -- from ISO/IEC 9594-2 | ITU-T Rec. X.501.
123 -- ATN Commentary: The relevant InformationFramework extracts are given
126 -- *************************************************************************
128 -- *************************************************************************
130 -- EXTERNAL is an ASN.1 UNIVERSAL type. The definition in the PER standard
131 -- ISO/IEC 8825-2 | ITU-T Rec. X.691 is assumed for ACSE.
132 -- The type is used in ACSE user-information
133 -- fields. ASN.1 compilers will not in general allow EXTERNAL to be
134 -- redefined (therefore 'EXTERNALt'),
135 -- and it is invalid ASN.1 to define a type with tag [UNIVERSAL 8]
137 -- Workaround for bug in asn2wrs in the .cnf file
138 -- to handle the lack of support for tagged assignments.
139 -- remove that workaround once asn2wrs learns how to handle
140 -- tagged assignments.
142 EXTERNALt ::= [8] IMPLICIT SEQUENCE {
143 direct-reference OBJECT IDENTIFIER OPTIONAL, -- X
144 indirect-reference INTEGER OPTIONAL,
145 data-value-descriptor ObjectDescriptor OPTIONAL, -- X
147 single-ASN1-type [0] ABSTRACT-SYNTAX.&Type,
148 octet-aligned [1] IMPLICIT OCTET STRING, -- X
149 arbitrary [2] IMPLICIT BIT STRING }}
150 -- ATN: implementations are advised to use arbitrary (BIT STRING)
151 -- encodings only (see Guidance Material section 2.6.5.21).
152 -- BIT STRING values are not padded to octet boundaries.
155 -- object identifier assignments
156 acse-as-id OBJECT IDENTIFIER ::=
157 {joint-iso-itu-t association-control(2) abstract-syntax(1) apdus(0) version1(1)}
158 -- may be used to reference the abstract syntax of the ACSE APDUs
159 aCSE-id OBJECT IDENTIFIER ::=
160 { joint-iso-itu-t association-control(2) ase-id(3) acse-ase(1) version(1) }
161 -- may be used to identify the Association Control ASE.
166 aarq AARQ-apdu, -- ACSE associate request pdu
167 aare AARE-apdu, -- ACSE associate response pdu
168 rlrq RLRQ-apdu, -- ACSE release request pdu
169 rlre RLRE-apdu, -- ACSE release response pdu
170 abrt ABRT-apdu, -- ACSE abort pdu
174 AARQ-apdu ::= [ APPLICATION 0 ] IMPLICIT SEQUENCE
175 { protocol-version [0] IMPLICIT BIT STRING { version1 (0) } DEFAULT { version1 }, -- X
176 application-context-name [1] Application-context-name,
177 called-AP-title [2] AP-title OPTIONAL, -- X
178 called-AE-qualifier [3] AE-qualifier OPTIONAL, -- X
179 called-AP-invocation-identifier [4] AP-invocation-identifier OPTIONAL, -- X
180 called-AE-invocation-identifier [5] AE-invocation-identifier OPTIONAL, -- X
181 calling-AP-title [6] AP-title OPTIONAL,
182 calling-AE-qualifier [7] AE-qualifier OPTIONAL,
183 calling-AP-invocation-identifier [8] AP-invocation-identifier OPTIONAL, -- X
184 calling-AE-invocation-identifier [9] AE-invocation-identifier OPTIONAL, -- X
185 -- The following field is not present if only the Kernel is used.
186 -- ATN: For Doc 9705 ed 1/ed 2, only the Kernel is required.
187 sender-acse-requirements [10] IMPLICIT ACSE-requirements OPTIONAL,
188 -- The following field is only present if the Authentication functional
189 -- unit is selected. ATN: not used in Doc 9705 ed 1/ed 2.
190 mechanism-name [11] IMPLICIT Mechanism-name OPTIONAL,
191 -- The following field is only present if the Authentication functional
192 -- unit is selected. ATN: use is deprecated in Doc 9705 ed 1/ed 2.
193 calling-authentication-value [12] EXPLICIT Authentication-value OPTIONAL,
194 application-context-name-list [13] IMPLICIT Application-context-name-list OPTIONAL, -- X
195 -- The above field is only present if the Application Context Negotiation
196 -- functional unit is selected - never for ATN
197 implementation-information [29] IMPLICIT Implementation-data OPTIONAL, -- X
198 ..., ..., -- ATN: Note use of extension marker pair
199 user-information [30] IMPLICIT Association-information OPTIONAL
203 AARE-apdu ::= [ APPLICATION 1 ] IMPLICIT SEQUENCE
204 { protocol-version [0] IMPLICIT BIT STRING{ version1 (0) }
205 DEFAULT { version1 }, -- X
206 application-context-name [1] Application-context-name,
207 result [2] Associate-result,
208 result-source-diagnostic [3] Associate-source-diagnostic,
209 responding-AP-title [4] AP-title OPTIONAL, -- X
210 responding-AE-qualifier [5] AE-qualifier OPTIONAL, -- X
211 responding-AP-invocation-identifier [6] AP-invocation-identifier OPTIONAL, -- X
212 responding-AE-invocation-identifier [7] AE-invocation-identifier OPTIONAL, -- X
213 -- The following field is not present if only the Kernel is used.
214 -- ATN: For Doc 9705 ed 1/ed 2, only the Kernel is required.
215 responder-acse-requirements [8] IMPLICIT ACSE-requirements OPTIONAL,
216 -- The following field is only present if the Authentication functional
217 -- unit is selected. ATN: not used in Doc 9705 ed 1/ed 2.
218 mechanism-name [9] IMPLICIT Mechanism-name OPTIONAL,
219 -- The following field is only present if the Authentication functional
220 -- unit is selected. ATN: use is deprecated in Doc 9705 ed 1/ed 2.
221 responding-authentication-value [10] EXPLICIT Authentication-value OPTIONAL,
222 application-context-name-list [11] IMPLICIT Application-context-name-list
224 -- The above field is only present if the Application Context Negotiation
225 -- functional unit is selected - never for ATN
226 implementation-information [29] IMPLICIT Implementation-data OPTIONAL, --X
227 ..., ..., -- ATN: Note use of extension marker pair
228 user-information [30] IMPLICIT Association-information OPTIONAL
232 RLRQ-apdu ::= [ APPLICATION 2 ] IMPLICIT SEQUENCE
233 { reason [0] IMPLICIT Release-request-reason OPTIONAL,
234 ..., ..., -- ATN: Note use of extension marker pair
235 user-information [30] IMPLICIT Association-information OPTIONAL
239 RLRE-apdu ::= [ APPLICATION 3 ] IMPLICIT SEQUENCE
240 { reason [0] IMPLICIT Release-response-reason OPTIONAL,
241 ..., ..., -- ATN: Note use of extension marker pair
242 user-information [30] IMPLICIT Association-information OPTIONAL
246 ABRT-apdu ::= [ APPLICATION 4 ] IMPLICIT SEQUENCE
247 { abort-source [0] IMPLICIT ABRT-source,
248 abort-diagnostic [1] IMPLICIT ABRT-diagnostic OPTIONAL,
249 -- The above field is not present if only the Kernel is used.
250 -- ATN: For Doc 9705 ed 1/ed 2, only the Kernel is required.
251 ..., ..., -- ATN: Note use of extension marker pair
252 user-information [30] IMPLICIT Association-information OPTIONAL
256 ABRT-diagnostic ::= ENUMERATED
257 { no-reason-given (1),
259 authentication-mechanism-name-not-recognized (3),
260 authentication-mechanism-name-required (4),
261 authentication-failure (5),
262 authentication-required (6),
265 ABRT-source ::= INTEGER { acse-service-user (0), acse-service-provider (1)} (0..1, ...)
267 ACSE-requirements ::= BIT STRING
268 { authentication (0), application-context-negotiation(1) }
269 -- ATN commentary: application-context-negotiation (bit 1) is
270 -- never set for ATN ULCS. Use of authentication is deprecated
271 -- for Doc 9705 ed 1/ed 2.
273 Application-context-name-list ::= SEQUENCE OF Application-context-name
274 -- ATN Commentary: the above type is not used for ATN ULCS.
276 Application-context-name ::= OBJECT IDENTIFIER
278 -- ***************************************************************************
279 -- Application-entity title productions follow (not in alphabetical order)
280 -- ***************************************************************************
281 -- MG: asn2wrs cannot handle untagged CHOICEs within either a SET or a SEQUENCE.
282 -- http://wiki.wireshark.org/Asn2wrs_Handmassaging_the_ASN_file
283 AP-title ::= CHOICE { -- ATN: See encoding guidance in 2.5.11
284 -- "form2" is encoded as 0 and "form1" as 1
285 ap-title-form2 [0] IMPLICIT AP-title-form2, -- Object Identifier form
286 ap-title-form1 [1] IMPLICIT AP-title-form1, -- X (Directory name form)
289 AE-qualifier ::= CHOICE {-- ATN: See encoding guidance in 2.5.11
290 -- "form2" is encoded as 0 and "form1" as 1
291 ae-qualifier-form2 [0] IMPLICIT AE-qualifier-form2, -- INTEGER form
292 ae-qualifier-form1 [1] IMPLICIT AE-qualifier-form1, -- X (RDN form)
294 -- ATN commentary: AE-qualifier is set to "app-type" in Doc 9705 1st and
295 -- 2nd editions. For forward compatibility, the value should not be
298 -- When both AP-title and AE-qualifier data values are present in an AARQ or
299 -- AARE APDU, both have the same form to allow the construction of an
300 -- AE-title as discussed in CCITT Rec. X.665 | ISO/IEC 9834-6.
302 AP-title-form1 ::= Name -- ATN: Not used for ATN ULCS
303 -- The value assigned to AP-title-form1 is The Directory Name of an
304 -- application-process title.
306 AE-qualifier-form1 ::= RelativeDistinguishedName -- ATN: Not used for ULCS
307 -- The value assigned to AE-qualifier-form1 is the relative distinguished name
308 -- of a particular application-entity of the application-process identified by
311 AP-title-form2 ::= OBJECT IDENTIFIER
313 AE-qualifier-form2 ::= INTEGER
315 -- ATN commentary: The AE-title productions below are commented out,
316 -- as they are not required for ATN ULCS.
317 -- AE-title ::= CHOICE {
318 -- ae-title-form1 AE-title-form1,
319 -- ae-title-form2 AE-title-form2,
322 -- As defined in CCITT Rec. X.650 | ISO 7498-3, an application-entity title is
323 -- composed of an application-process title and an application-entity qualifier.
324 -- The ACSE protocol provides for the transfer of an application-entity title
325 -- value by the transfer of its component values. However, the following data
326 -- type is provided for International Standards that reference a single
327 -- syntactic structure for AE titles. (Not used for ATN ULCS)
329 -- AE-title-form1 ::= Name
330 -- For access to The Directory (ITU-T Rec. X.500-Series | ISO/IEC 9594), an
331 -- AE title has AE-title-form1.
332 -- This value can be constructed from AP-title-form1 and AE-qualifier-form1
333 -- values contained in an AARQ or AARE APDU. A discussion of forming an
334 -- AE-title-form1 from AP-title-form1 and AE-qualifier-form1 may be found in
335 -- CCITT Rec. X.665 | ISO/IEC 9834-6.
337 -- AE-title-form2 ::= OBJECT IDENTIFIER
338 -- A discussion of forming an AE-title-form2 from AP-title-form2 and
339 -- AE-qualifier-form2 may be found in CCITT Rec. X.665 | ISO/IEC 9834-6.
341 AE-invocation-identifier ::= INTEGER -- ATN: not used in ULCS
342 AP-invocation-identifier ::= INTEGER -- ATN: not used in ULCS
343 -- End of Application-entity title productions
344 -- ***************************************************************************
346 Associate-result ::= INTEGER
348 rejected-permanent (1),
349 rejected-transient (2) } (0..2, ...)
351 Associate-source-diagnostic ::= CHOICE
352 { acse-service-user [1] INTEGER
355 application-context-name-not-supported (2),
356 calling-AP-title-not-recognized (3),
357 calling-AP-invocation-identifier-not-recognized (4),
358 calling-AE-qualifier-not-recognized (5),
359 calling-AE-invocation-identifier-not-recognized (6),
360 called-AP-title-not-recognized (7),
361 called-AP-invocation-identifier-not-recognized (8),
362 called-AE-qualifier-not-recognized (9),
363 called-AE-invocation-identifier-not-recognized (10),
364 authentication-mechanism-name-not-recognized (11),
365 authentication-mechanism-name-required (12),
366 authentication-failure (13),
367 authentication-required (14) } (0..14 , ...),
368 acse-service-provider [2] INTEGER
371 no-common-acse-version (2) } (0..2 , ...)
374 Association-information ::= SEQUENCE SIZE (1, ..., 0 | 2..MAX) OF EXTERNALt
375 -- ATN: No SIZE extensions are defined, only one EXTERNAL element is present
379 Implementation-data ::= OCTET STRING -- ATN: Not used for ULCS
381 Mechanism-name ::= OBJECT IDENTIFIER -- ATN: Not used for ULCS
383 MECHANISM-NAME ::=TYPE-IDENTIFIER -- ATN: Not used for ULCS
385 ObjectSet MECHANISM-NAME ::= {...} -- ATN: Not used for ULCS
387 Release-request-reason ::= INTEGER {normal (0), urgent (1), user-defined (30)} (0 | 1 | 30, ...)
389 Release-response-reason ::= INTEGER {normal (0), not-finished (1), user-defined (30)} (0 | 1 | 30, ...)
390 -- ATN commentary: For the above two types, see the encoding guidance in 2.5.10
391 -- Values are encoded in 5 bits, not 3 as might be expected.
393 Authentication-value ::= CHOICE -- ATN: use is deprecated in ed 1/ed 2
394 { charstring [0] IMPLICIT OCTET STRING,
395 bitstring [1] IMPLICIT BIT STRING,
396 external [2] IMPLICIT EXTERNAL,
397 other [3] IMPLICIT SEQUENCE {
398 -- other-mechanism-name MECHANISM-NAME.&id ({ObjectSet}),
399 other-mechanism-name OBJECT IDENTIFIER,
400 -- other-mechanism-value MECHANISM-NAME.&Type ({ObjectSet}{@.other-mechanism-name})
401 other-mechanism-value ANY
404 -- The abstract syntax of (calling/responding) authentication-value is
405 -- determined by the authentication mechanism used during association
406 -- establishment. The authentication mechanism is either explicitly
407 -- denoted by the &id field (of type OBJECT IDENTIFIER) for a mechanism
408 -- belonging to the class MECHANISM-NAME, or it is known implicitly by
409 -- prior agreement between the communicating partners. If the "other"
410 -- component is chosen, then the "mechanism-name" component is present
411 -- in accordance with ITU-T Rec. X.680|ISO/IEC 8824. If the value
412 -- "mechanism-name" occurs in the AARQ-apdu or the AARE-apdu, then that
413 -- value is the same as the value for "other-mechanism-name"
414 END -- of Connection-Oriented ACSE definitions
417 -- *************************************************************************
418 -- The following definitions are adapted from the Directory standard
419 -- ISO/IEC 9594-2:1993 | ITU-T Rec. X.501 (1993 E). In case of any discrepancy,
420 -- the ISO/IEC standard takes precedence.
421 -- *************************************************************************
423 InformationFramework {joint-iso-ccitt ds(5) module(1) informationFramework(1) 2}
426 EXPORTS Name, RelativeDistinguishedName;
428 Name ::= CHOICE {rdnSequence RDNSequence}
429 -- only one CHOICE defined
431 RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
433 RelativeDistinguishedName ::= SET SIZE (1 .. MAX) OF AttributeTypeAndValue
435 AttributeTypeAndValue ::= SEQUENCE {
436 -- ATN commentary: The following line has been inserted to allow the Name and
437 -- RelativeDistinguishedName types, as used by ACSE, to be resolved by an
438 -- ASN.1 compiler, without introducing the unnecessary complexity
439 -- Of the ATTRIBUTE information object class, which is used in the
440 -- Directory standards.
442 -- The "real" components of AttributeTypeAndValue follow. They have been
443 -- commented out here, but could be restored if required, for example, for
444 -- sharing data types with a Directory implementation. The syntax has been
445 -- verified by the OSS syntax checker.
446 -- type ATTRIBUTE.&id ({SupportedAttributes}),
447 -- value ATTRIBUTE.&Type ({SupportedAttributes} {@type})
450 --SupportedAttributes ATTRIBUTE ::=
451 -- {objectClass | aliasedEntryName, ...}
453 -- ATN Commentary: ATTRIBUTE is an information object class, specified in
454 -- ISO/IEC 9594-2 | ITU-T Rec. X.501, using the notation defined in
455 -- ISO/IEC 8824-2 | ITU-T Rec. X.681. However, for ULCS implementation, it
456 -- is only necessary to note that the ACSE CHOICE types AP-title,
457 -- AE-qualifier and AE-title are all constrained to be the "form 2" variants,
458 -- with types Object Identifier, Integer and Object Identifier, respectively.
459 -- It is however necessary to know the syntax of the "form 1" variants (Name,
460 -- RelativeDistinguishedName and Name, respectively) so that the CHOICE
461 -- elements can be sorted into canonical order, based on their ASN.1 types,
462 -- for PER encoding (see 2.5.11).
464 --ATTRIBUTE ::= CLASS {
465 -- &derivation ATTRIBUTE OPTIONAL,
467 -- &equality-match MATCHING-RULE OPTIONAL,
468 -- &ordering-match MATCHING-RULE OPTIONAL,
469 -- &substrings-match MATCHING-RULE OPTIONAL,
470 -- &single-valued BOOLEAN DEFAULT FALSE,
471 -- &collective BOOLEAN DEFAULT FALSE,
472 -- &no-user-modification BOOLEAN DEFAULT FALSE,
473 -- &usage AttributeUsage DEFAULT userApplications,
474 -- &id OBJECT IDENTIFIER UNIQUE }
476 --MATCHING-RULE ::= CLASS {
477 -- &AssertionType OPTIONAL,
478 -- &id OBJECT IDENTIFIER UNIQUE }
480 --objectClass ATTRIBUTE ::= {
481 -- &Type OBJECT IDENTIFIER,
482 -- &id id-at-objectClass
485 --aliasedEntryName ATTRIBUTE ::= {
486 -- &Type OBJECT IDENTIFIER,
487 -- &id id-at-aliasedEntryName
490 --AttributeUsage ::= ENUMERATED {
491 -- userApplications (0),
492 -- directoryOperation (1),
493 -- distributedOperation (2),
494 -- dSAOperation (3) }
496 --id-at-objectClass OBJECT IDENTIFIER ::= {id-at 0}
497 --id-at-aliasedEntryName OBJECT IDENTIFIER ::= {id-at 1}
498 --id-at OBJECT IDENTIFIER ::= {joint-iso-ccitt ds(5) attributeType(4)}
500 END -- of Directory Information Framework extracts
502 -- Editor modelines - http://www.wireshark.org/tools/modelines.html
507 -- indent-tabs-mode: t
510 -- vi: set shiftwidth=2 tabstop=2 noexpandtab:
511 -- :indentSize=2:tabSize=2:noTabs=false: