| Data
Element Name |
Type |
Schema(s)
Found in |
XS |
Restricted from |
Extended from |
Type |
Definition |
Enumerations |
|
|
| Abstentions |
xs:nonNegativeInteger |
510 | |
xs:element |
|
|
xs:nonNegativeInteger |
Report of a no vote. |
|
|
|
| Accepted |
YesNoType |
eml-core | 620 | 480 | 450 | 220 | 130 | |
xs:element |
|
|
YesNoType |
Indicates acceptance of a candidate, referendum proposal, vote
or message. |
yes | no |
|
|
| Action |
|
210 | |
xs:element |
xs:token |
|
xs:token |
Indicates the action being requested - either to consent to a
nomination or to withdraw from a contest. |
|
|
|
| ActionTime |
xs:dateTime |
120 | |
xs:element |
|
|
xs:dateTime |
Specifies when the specified action should be carried out. |
|
|
|
| ActionedTime |
xs:dateTime |
120 | |
xs:element |
|
|
xs:dateTime |
Specifies when the specified action was carried out. |
|
|
|
| Address |
StructuredAddressStructure |
eml-externals | |
xs:element |
|
|
n/a |
A physical location.
Addresses are specified for each individual or organisation involved
in the voting processes, eg voter, election authority. |
|
|
|
| Affiliation |
AffiliationStructure |
eml-core | 430 | 410 | 340 | 210 | |
xs:element |
|
|
AffiliationStructure |
Indicates the membership of some organisation such as a
political party |
|
|
|
| AffiliationIdentifier |
AffiliationIdentificationStructure |
eml-core | |
xs:element |
|
|
AffiliationIdentifierStructure |
Indicates the official name and ID of the affiliated
organisation |
|
|
|
| AffiliationType |
|
eml-core | 430 | 410 | 340 | 210 | |
xs:element |
|
|
AffiliationStructure |
Indicates the type of organisation that an individual is a
member of. |
|
|
|
| Age |
xs:positiveInteger |
eml-core | |
xs:element |
|
|
xs:positiveInteger |
The age of a candidate or voter |
|
|
|
| Agent |
AgentStructure |
eml-core | |
xs:element |
|
|
AgentStructure |
Someone who works for the candidate. There are various different roles for a
candidate's agent |
|
|
|
| AgentIdentifier |
AgentIdentifierStructure |
eml-core | |
xs:element |
|
|
AgentIdentifierStructure |
The agent's name and ID |
|
|
|
| AgentName |
PersonNameStructure |
eml-core | |
xs:element |
|
|
PersonNameStructure |
The full name of the agent |
|
|
|
| AllowedChannels |
|
110 | |
xs:element |
|
|
n/a |
The list of eligible channels for an election event. |
|
|
|
| Area |
AreaStructure |
eml-core | |
xs:element |
|
|
AreaStructure |
A geographic area covered by a contest |
|
|
|
| Association |
|
eml-core | |
|
|
|
xs:token |
Associates a polling district with some other entity, such as a
constituency. |
|
|
|
| AuditLog |
|
480 | |
|
|
|
n/a |
A log of audit information. |
|
|
|
| AuditInformation |
|
520 | 510 | 480 | 470 | 460 | 445 | 420 | 130 |
xs:element |
|
AuditInformationStructure |
AuditInformationStructure |
Information to be sent to an audit system to provide
traceability of voting-related messages. |
|
|
|
| Authenticated |
|
430 | |
|
|
|
n/a |
Indicates the result of a voter's attempt to authenticate their
right to vote. |
|
|
|
| AuthenticationMethod |
xs:token |
110 | |
xs:element |
|
|
xs:token |
The method used to authenticate an eligible voter. |
|
|
|
| AuthorityAddress |
|
eml-externals | |
|
|
|
AuthorityAddressStructure |
The address of the authority running the election. |
|
|
|
| AuthorityIdentifier |
AuthorityIdentficationStructure |
eml-core | |
xs:element |
|
|
AuthorityIdentifierStructure |
The identifier of the authority running the election. |
|
|
|
| Ballot |
|
430 | 410 | 340 | |
xs:element |
|
|
n/a |
A set of candidates or referendum options for a particular
contest, within one or more elections for which votes are cast. |
|
|
|
| BallotFormIdentifier |
|
330 |
|
|
|
n/a |
The external identifier of the ballot form or list of
forms the voter may vote on. |
|
|
|
| BallotIdentifier |
BallotIdentifierStructure |
eml-core | 460 | 440 | 445 | |
xs:element |
|
|
BallotIdentifierStructure |
The
identification number of a ballot. |
|
|
|
| BallotIdentifierRange |
|
eml-core | |
|
|
|
BallotIdentifierRangeStructure |
A range of ballot identifiers. These might, for example, be sent
to a printer. |
|
|
|
| BallotName |
xs:token |
eml-core | |
xs:element |
|
|
xs:token |
The official name assigned to a ballot. |
|
|
|
| BinaryItem |
|
eml-core | |
|
|
|
BinaryItemStructure |
A binary, eg fingerprint, photo, scanned signature, used for
identification of the voter. Iit may be given as either a link or as Base64
encoded binary data. In the latter case, the format of the binary must be
either bmp, gif, jpeg, png or tiff. |
|
|
|
| Blocked |
{reference} |
330 | |
xs:element |
|
|
YesNoType |
An indication that a voter is not allowed to cast a vote
(possibly through a specific channel) for some specified reason. |
yes | no |
|
|
| Candidate |
CandidateStructure |
eml-core | 430 | 410 | 340 | 210 | |
xs:element |
|
|
CandidateStructure |
An individual or party standing in a contest. |
|
|
|
| CandidateAction |
{reference} |
210 | |
xs:element |
|
|
n/a |
Indicates whether the candidate wishes to stand or withdraw from
an election and allows him/her to indicate that conditions for nomination
have been met. |
|
|
|
| CandidateFullName |
PersonNameStructure |
eml-core | |
xs:element |
|
|
PersonNameStructure |
The full name of the candidate. |
|
|
|
| CandidateGender |
|
510 | 520 |
|
|
|
GenderType |
The gender of the candidate as it will appear in the result of
the election. |
male |
female | unknown (unknown is not allowed in all contexts) |
|
|
| CandidateIdentifier |
CandidateIdentifierStructure |
eml-core | 460 | 440 | |
xs:element |
|
|
CandidateIdentifierStructure |
The system ID for the candidate, as well as the name to which
the candidate's name will appear on the ballot. |
|
|
|
| CandidateList |
{reference} |
230 | |
xs:element |
|
|
n/a |
A list of candidates or parties or issues involved in a contest. |
|
|
|
| CandidateName |
|
eml-core | |
|
|
|
PersonNameStructure |
The full name of the candidate. |
|
|
|
| CastVote |
CastVoteStructure |
460 | 440 | |
xs:element |
|
|
CastVoteStructure |
A ballot containing the preferences of the voter. |
|
|
|
| Category |
|
eml-core | |
xs:attribute |
xs:token |
|
n/a |
Used to classify different types of Proposer. |
primary |
secondary | other |
|
|
| Channel |
VotingChannelType |
eml-core | 340 | 330 | 310 | 120 | 110 | |
xs:element |
|
|
ChannelStructure |
A medium through which votes can be cast, e.g. 'internet' or
'postal'. |
|
|
|
| CheckBox |
|
120 |
|
|
|
YesNoType |
Used to allow name-value pairs in information about a voter. The
only allowed values are 'yes' and 'no'. |
yes | no |
|
|
| ChoiceName |
xs:token |
eml-core | |
xs:element |
|
|
xs:token |
The name of a choice in a referendum. |
|
|
|
| ChoiceType |
|
340 | 410 | 430 |
|
|
|
xs:token |
The type of choice available to the voter. |
|
|
|
| Comment |
|
330 |
|
|
|
xs:token |
A comment
represented as text or some format such as XHTML. |
|
|
|
| Component |
|
eml-core | |
xs:element |
|
|
n/a |
A specific part of a voting token. For example, a voting token
might have components called 'PIN' and 'password'. |
|
|
|
| ConfirmationReference |
ConfirmationReferenceType |
450 | |
|
|
|
ConfirmationResponseType |
The reference generated once the confirmation of a vote has been
completed. |
|
|
|
| Contact |
ContactDetailsStructure |
eml-core | 430 | 410 | 340 | |
xs:element |
|
|
ContactDetailsStructure |
Mailing address, email address, phone number etc. for any person
involved I the election process. There is an option to indicate which contact
method is preferred. |
|
|
|
| ContactDetails |
|
eml-core | |
|
|
|
n/a |
A set of information indicating how to contact a person involved
in the democratic process. |
|
|
|
| Contest |
|
520 | 510 | 460 | 440 | 430 | 410 | 340 | 230 | 110 | |
xs:element |
|
|
n/a |
A contest is that part of an election in which an individual can
vote. For example, a parliamentary election will consist of several contests,
each for a single position (seat or constituency). Some elections, such as a
referendum question or a presidential election, will only have a single
contest. |
|
|
|
| ContestScope |
|
340 | 410 | 430 |
|
|
|
xs:token |
An indicator of a Federal, local or other type of
contest. |
|
|
|
| Contested |
YesNoType |
430 | 410 | |
xs:attribute |
|
|
n/a |
Indicates
that there are more candidates than positions available and so voting will
take place. |
|
|
|
| ContestIdentifier |
{reference} |
eml-core | 620 | 610 | 520 | 510 | 480 | 470 | 460a | 360b | 445
| 440 | 430 | 410 | 350a, | 350b | 350c | 340 | 330 | 230 | 220 | 210 | 110
| |
xs:element |
|
|
ContestIdentifierStructure |
The official designation of the contest. |
|
|
|
| ContestName |
xs:token |
eml-core | |
xs:element |
|
|
xs:token |
The official name of the contest |
|
|
|
| ContestRotationMethod |
|
340 | 410 | 430 |
|
|
|
xs:token |
The method by which candidates are rotated on a ballot
form. |
|
|
|
| Count |
{reference} |
510 | |
xs:element |
|
|
n/a |
The
accumulating of votes that have been cast. |
|
|
|
| CountMetrics |
|
110 | 510 |
|
|
|
n/a |
The definiton of the metrics to be used in the Count of cast
votes. |
|
|
|
| CountQualifier |
|
520 | |
|
|
|
CountQualifierStructure |
A qualifier that indicates whether the count is final or
not, whether it is an extrapolation or
simulation of the actual count, or whether it relates to a previous ballot. |
Simulation |
Final | Extrapolation | Partial | Previous | Other |
|
|
| CountReport |
|
110 | 510 |
|
|
|
n/a |
The pre-definition of exactly what is needed in the count
results tabulations. |
|
|
|
| CountingAlgorithm |
CountingAlgorithmType |
eml-core | 110 | |
xs:element |
|
|
CountingAlgorithmType |
The method
of counting used for more complex forms of election. |
|
|
|
| CountingSystem |
ProcessingUnitStructure |
eml-core | 510 | 480 | 470 | 460 | 445 | 440 | |
xs:element |
|
|
ProcessingUnitStructure |
The system used to accumulate votes that have been cast. |
|
|
|
| DateOfBirth |
xs:date |
eml-core | |
xs:element |
|
|
xs:date |
The date of birth of the voter or candidate. |
|
|
|
| Dates |
|
eml-core | 440 | 410 |
340 | 330 | 310 | 120 | |
|
|
|
n/a |
A collection of dates. |
|
|
|
| DateTimeSubmitted |
|
330 | 310 | 120 | |
|
|
|
xs:dateTime |
The date and time at which the voter registered to vote.
Displayed using GDSC format (http://www.govtalk.gov.uk/gdsc/html/). |
|
|
|
| Description |
|
eml-core | 480 | 430 | 410 | 340 | 230 | 130 | 110 | |
|
|
|
MessagesStructure & xs:token |
A description represented as text or some format such as XHTML. |
|
|
|
| Destination |
|
120 | |
|
|
|
ProcessingUnitStructure |
Indicates the receiving device for a 120 (interDB) message. |
|
|
|
| Display |
|
eml-core | |
|
|
|
n/a |
Provides information related to the rendering of a message for
display |
|
|
|
| DisplayOrder |
xs:positiveInteger |
eml-core | 430 | 410 | 340 | 110 |
xs:attribute |
|
|
n/a |
This attribute allows a generic stylesheet to display a
specified message type, the display order of the elements being controlled
through the message. |
|
|
|
| DocumentIdentifier |
DocumentIdentifierStructure |
eml-core | |
xs:element |
|
|
DocumentIdentifierStructure |
A reference to external documents relevant to a specific message
type. |
|
|
|
| ds:Signature |
{reference} |
eml-core | 610 | 210 | |
xs:element |
|
|
ds:SignatureType |
An electronic signature using the XML Signature syntax. |
|
|
|
| EffectiveDateAdded |
xs:date |
eml-core | |
xs:element |
|
|
xs:date |
The date at which a person was added to an electoral register. |
|
|
|
| EffectiveDateRemoved |
xs:date |
eml-core | |
xs:element |
|
|
xs:date |
The date at which a person was removed from an electoral
register. |
|
|
|
| Elected |
YesNoType |
520 |
xs:element |
|
|
n/a |
Indicates whether a person or referendum option has been
selected. |
|
|
|
| Election |
|
630 | 520
| 510 | 480 | 460 | 440 | 430 | 410 | 340 | 330 | 230 | 110 | |
xs:element |
|
|
n/a |
An election is used in the traditional sense, such as country’s
government election, local government election, or other local community
elections. An election comprises one
or more related contests over a defined period of time. A number of elections may or may not be
held at the same time to form an election event with multiple elections. |
|
|
|
| ElectionCategory |
|
eml-core | |
|
|
|
xs:NMTOKEN |
Used in messages where several elections are included in the
message. This allows a Schematron processor to distinguish between the
elections. |
|
|
|
| ElectionEvent |
{reference} |
110 | |
xs:element |
|
|
n/a |
See Event. |
|
|
|
| ElectionGroup |
ElectionGroupStructure |
eml-core | |
xs:element |
|
|
ElectionGroupStructure |
Used to group multiple elections together. For example, a set of
questions forming a referendum might be grouped together, as might two parts
of an election held under the Additional Member System. |
|
|
|
| ElectionIdentifier |
ElectionIdentifierStructure |
eml-core | |
xs:element |
|
|
ElectionIdentifierStructure |
The official designation of the election. |
|
|
|
| ElectionList |
{reference} |
330 | |
xs:element |
|
|
n/a |
The list of eligible voters for an election event. The list
identifies the elections and contests in which each elector may vote. A list
with no voters is permissable. |
|
|
|
| ElectionName |
xs:token |
eml-core | |
xs:element |
|
|
xs:token |
The official name of an election. |
|
|
|
| ElectionStatement |
MessageStructure |
eml-core | |
xs:element |
|
|
MessagesStructure |
Describes the opinions of the candidate. |
|
|
|
| ElectionType |
|
340 | 410 | 430 |
|
|
|
xs:token |
The type of an election. This will be localised by each
country or voting jurisdiction. |
|
|
|
| ElectoralAddress |
StructuredAddressStructure |
eml-externals | |
xs:element |
|
|
ElectoralAddressStructure |
The
address that gives the voter the right to vote in a specific contest. |
|
|
|
| ElectronicLocation |
|
eml-core | |
xs:element |
|
xs:token |
xs:token |
Used for describing a Polling Place, it must indicate its
address (e.g. phone number, URL). |
|
|
|
| Eligibility |
|
eml-core | |
|
|
|
xs:token |
The election types for which the voter is eligible to vote. |
|
|
|
| Email |
|
eml-core |
|
|
|
EmailStructure |
An email address. |
|
|
|
| End |
|
eml core | 430 | 410 | 340 | 110 | |
|
|
|
BallotIdentifierStructure |
The end of a range of ballot identifiers. |
|
|
|
| Endorsement |
|
230 | |
|
|
|
n/a |
Indicates the political party that has officially endorsed a
candidate. |
|
|
|
| Error |
|
480 | 130 | |
|
|
|
n/a |
Provides information about errors in a EML message. |
|
|
|
| Ethnicity |
xs:token |
eml-core | |
xs:element |
|
|
xs:token |
The ethnicity of a voter. |
|
|
|
| Event |
|
eml-core | | 330 | 310 |
120 | |
xs:element |
|
|
n/a |
Also known as 'election event'. A series of elections that for
some reason are grouped together into one event. For example they may be completely
different elections but for logistic reasons they are all run on the same
day. |
|
|
|
| EventDate |
|
330 | 230 | 110 | |
|
|
|
SimpleDateRangeStructure |
The range of dates associated with an election event. |
|
|
|
| EventDescription |
|
430 | 410 | 340 | |
|
|
|
MessageStructure |
A textual description of an election event. |
|
|
|
| EventIdentifier |
EventIdentifierStructure |
eml-core | 620 | 610 |
510 | 480 | 470 | 460 | 450 | 445 | 440 | 360a | 360b | 350a | 350b | 350c |
330 | |
xs:element |
|
|
EventIdentifierStructure |
The official designation of the event. |
|
|
|
| EventName |
{reference} |
eml-core | |
xs:element |
|
|
xs:token |
The official name of the event. |
|
|
|
| EventQualifier |
EventQualifierStructure |
eml-core | |
xs:element |
|
|
EventQualifierStructure |
An additional designator for the event, usually used when
management of an event is divided between authorities. For example, an event
might be 'London Elections', and each borough will have its own Qualifier. |
|
|
|
| Extension |
|
eml-core |
|
|
|
xs:token |
The extension number in a telephone number. |
|
|
|
| ExpectedConfirmationReference |
ConfirmationReferenceType |
eml-core | |
xs:attribute |
|
|
n/a |
Some e-voting mechanisms provide candidate identifiers that are
individual to each voter as part of their security mechanism. These might
also tailor the response codes for successful votes. This element indicates
the response code that a specified voter should expect for a specified
candidate. |
|
|
|
| Extrapolation |
|
510 | 520 |
|
|
|
n/a |
An extrapolation, using the
count known so far, to an estimated complete result for the current contest. |
|
|
|
| Fax |
|
eml-core |
|
|
|
TelephoneStructure |
A fax
number. |
|
|
|
| Final |
|
510 | 520 |
|
|
|
n/a |
An indicator to show if the result is definitive
("official") or if the result or the count is not final. |
yes | no |
|
|
| Format |
xs:NMTOKEN |
eml-core | |
xs:attribute |
|
|
n/a |
Indicates
the format of the element content, e.g. XHTML. |
This element
appears in different contexts with different allowed values |
|
|
| FurtherInformation |
|
eml-core | |
|
|
|
MessageStructure |
Information about a voter that is not included in the standard
elements. |
|
|
|
| Gateway |
|
|
|
|
|
ProcessingUnitStructure |
A system that provides the interface between a voting device
such as an SMS phone and the voting system. |
|
|
|
| Gender |
GenderType |
eml-core | |
xs:element |
|
|
GenderType |
The gender of a voter or candidate. |
male |
female | unknown (unknown is not allowed in all contexts) |
|
|
| IncomingChannelOptions |
|
360b |
|
|
|
IncomingGenericCommunicationStructure |
A message to indicate the channel a voter to use to cast their
vote. |
|
|
|
| IncomingGenericCommunication |
|
350b |
|
|
|
IncomingGenericCommunicationStructure |
A generic message type for messages from the voter. |
|
|
|
| InternalGenericCommunication |
|
350c |
|
|
|
InternalGenericCommunicationStructure |
A generic message type for messages between systems. |
|
|
|
| Id |
|
eml-core | 430 | 410 | 340 |
330 | 310 | 120 | |
xs:element |
|
xs:token |
xs:token |
Indicates an ID code. When used as an element, this is an ID
that has a meaning outside this specific election (such as the registration
number of a voter on a register). When used as an attribute, it is a system
ID used for convenience within an election. |
|
|
|
| Independent |
YesNoType |
eml-core | |
xs:attribute |
|
|
n/a |
This indicates that a candidate in an election, although they
may specify an affiliation, is officially classed as an independent
candidate. This might be used to alter the ballot layout, for example in
elections held under the party list system. |
|
|
|
| InterDb |
|
120 | |
|
|
|
n/a |
A message type for messages flowing between voter regisatration
and candidate registration systems. |
|
|
|
| JobTitle |
|
eml-core |
|
|
|
xs:token |
The job title of the proposer. |
|
|
|
| KnownAs |
|
eml-core | |
|
|
|
xs:token |
The name by which a candidate is usually known that is different
from their official name. This might, for example, be used to differentiate
on a ballot between candidates with similar names. |
|
|
|
| Languages |
xs:language |
110 | |
xs:element |
|
|
n/a |
Declaration of the language used in the election. |
|
|
|
| LoggedSeal |
|
480 |
|
|
|
n/a |
A seal and related information that is being logged as part of
an audit trail |
|
|
|
| LoginMethod |
xs:token |
420 | |
xs:element |
|
|
xs:token |
An indication of the method the voter must use to authenticate
themselves to a voting system. This might be channel-dependent. |
|
|
|
| Logo |
PictureDataStructure |
eml-core | |
xs:element |
|
|
LogoStructure |
A logo for a political party or other organization can be
represented by a URL or a Base64 encoded binary value. The latter must
indicate the format of the logo (PNG, GIF or JPEG). |
|
|
|
| MailingAddress |
MailingAddressStructure |
eml-externals | |
xs:element |
|
|
MailingAddressStructure |
A simple address format used for mailing purposes. The format
can be tailored to local needs. |
|
|
|
| ManagingAuthority |
ManagingAuthorityStructure |
eml-core | 110 | |
xs:element |
|
|
ManagingAuthorityStructure |
The body responsible for the election event, election, contest
or reporting unit. There can be
different authorities operating at each of these levels at the same time. It
is identified by a name and ID. It
also has an address and optional logo. |
|
|
|
| MaxVotes |
xs:positiveInteger |
eml-core | |
xs:element |
|
|
xs:positiveInteger |
The maximum number of votes allowed. |
|
|
|
| MaxWriteIn |
xs:nonNegativeInteger |
430 | 410 | 340 | |
xs:element |
|
|
n/a |
Where an election allows write-in candidates, this is the
maximum number of such candidates that can be included. |
|
|
|
| Message |
|
eml-core | 480 | |
xs:element |
|
|
n/a |
A general display of information. Can be text or have element
content. |
|
|
|
| Messages |
|
eml core | 430 | 410 | 360a | 360b | 350a | 350b | 350c | 340 | |
|
|
|
n/a |
A message to the voter that may be included several times in
different formats or languages. |
|
|
|
| MessageType |
|
eml-core | |
|
|
|
MessageTypeType |
The numeric type of the message (e.g. 440). This may be required
for audit purposes. |
|
|
|
| MessageLanguage |
LanguageType |
eml-core | |
xs:element |
|
|
LanguageType |
The language to be used when displaying a message. |
|
|
|
| MinVotes |
xs:nonNegativeInteger |
eml-core | |
xs:element |
|
|
xs:nonNegativeInteger |
The minimum number of votes allowed. |
|
|
|
| Name |
xs:token |
eml-core | |
xs:element |
|
|
PersonNameStructure & xs:token |
The name of a voter. |
|
|
|
| Nationality |
xs:token |
eml-core | |
xs:element |
|
|
xs:token |
The nationality of a voter. |
|
|
|
| Nominate |
|
210 | 610 |
|
|
|
n/a |
The collection of proposers for a candidate, affiliation or
referendum proposal. |
|
|
|
| Nomination |
{reference} |
210 | |
xs:element |
|
|
n/a |
The nomination of a candidate for an election. |
|
|
|
| NominationResponse |
{reference} |
220 | |
xs:element |
|
|
n/a |
Whether or not the nomination of a candidate has been
accepted. If rejected, the message
contains details as to the reason behind the rejection. |
|
|
|
| Number |
|
eml-core | |
|
|
|
TelephoneNumberType |
Part of the telephone number. |
|
|
|
| NumberInSequence |
xs:positiveInteger |
eml-core | |
xs:element |
|
|
xs:positiveInteger |
Large messages can be divided into smaller parts for
transmission. This element indicates the total number of sub-messages forming
a sequence. |
|
|
|
| NumberOfPositions |
|
110 | 510 |
|
|
|
xs:positiveInteger |
Represents the number of identical positions being elected in a
contest. |
|
|
|
| Objection |
YesNoType |
460 | |
xs:attribute |
|
|
n/a |
If an election official proposes to reject a vote, this
attribute indicates that someone (usually the candidate's agent) has objected
to this. |
|
|
|
| OfficialAddress |
StructuredAddressStructure |
eml-externals | |
xs:element |
|
|
OfficialAddressStructure |
The official address of a candidate. |
|
|
|
| Options |
|
eml-core | |
xs:element |
|
|
n/a |
The collection of possible responses for a referendum proposal. |
|
|
|
| OptionsList |
{reference} |
630 | |
xs:element |
|
|
n/a |
The list of referendum options presented to a voter. |
|
|
|
| OptionsNomination |
{reference} |
610 | |
xs:element |
|
|
n/a |
The nomination of a proposal for a referendum. |
|
|
|
| OptionsNominationResponse |
{reference} |
620 | |
xs:element |
|
|
n/a |
Whether or not the nomination of a proposal has been
accepted. If rejected, the message
contains details as to the reason behind the rejection. |
|
|
|
| OriginatingDevice |
ProcessingUnitStructure |
eml-core | 510 | 480 | 470 | 460 | 445 | 440 | |
xs:element |
|
|
ProcessingUnitStructure |
The device through which a vote was cast. |
|
|
|
| OtherLocation |
|
eml-core | |
|
|
|
xs:string |
A type of location not covered by the pre-defined types. |
|
|
|
| OtherSeal |
|
eml-core | |
|
|
|
|
A type of seal not covered by the pre-defined types. |
|
|
|
| OutgoingGenericCommunication |
|
350a |
|
|
|
OutgoingGenericCommunicationStructure |
A generic message type for messages to the voter. |
|
|
|
| OutgoingChannelOptions |
|
360a |
|
|
|
OutgoingGenericCommunicationStructure |
A message to ask the voter their prefereed channel to use to
cast their vote. |
|
|
|
| Partisan |
|
340 | 410 | 430 |
|
|
|
xs:token |
A ballot within a particular party. |
|
|
|
| Period |
|
eml-core | 1210 | 120 | 330 | 340 | 410 | 430 | |
|
|
|
PeriodStructure |
A period of time. |
|
|
|
| Permanent |
|
eml-core | |
|
|
|
xs:token |
Indicates whether a voter who has registered to vote in a
particular way has asked for that to be used until revoked (rather than for a
specified time period, election etc). |
|
|
|
| PersonalIdentifier |
xs:token |
460 | 440 | |
xs:element |
|
|
xs:token |
Some e-voting mechanisms provide candidate identifiers that are
individual to each voter as part of their security mechanism. This element
indicates the code entered within a cast vote. |
|
|
|
| PersonName |
|
eml-core | |
|
|
|
PesonNameType |
The name of a person involved in the democratic process. |
|
|
|
| PhysicalAddress |
|
eml-externals | |
|
|
|
PhysicalAddressStructure |
The physical address of a location, eg polling place. |
|
|
|
| PhysicalLocation |
|
eml-core | |
xs:element |
|
|
n/a |
The physical location of a polling place (in contrast to an
electronic location). |
|
|
|
| PlaceOfBirth |
xs:token |
eml-core | |
xs:element |
|
|
xs:token |
The place of birth of a voter. |
|
|
|
| PollingDistrict |
PollingDistrictStructure |
eml-core | |
xs:element |
|
|
PollingDistrictStructure |
Used to indicate the district within which a voter is allowed to
vote. |
|
|
|
| PollingInformation |
{reference} |
430 | 410 | 340 | |
xs:element |
|
|
n/a |
Details of how an eligible voter can vote (e.g. name of the
election event, polling start and end time etc…) |
|
|
|
| PollingPlace |
PollingPlaceStructure |
eml-core | |
xs:element |
|
|
PollingPlaceStructure |
The physical location (polling station or postal vote address)
or an electronic location (for internet, SMS, telephone and other electronic
means of voting) where a voter casts his/her vote. |
|
|
|
| PollingStation |
|
eml-core | |
xs:element |
|
xs:token |
xs:token |
A place where a voter may physically cast a vote. Several
polling stations may be at the same polling place. |
|
|
|
| Position |
xs:token |
eml-core | 340 | 330 | 120 | 310 | |
xs:element |
|
|
PositionStructure & xs:token |
The position (e.g. President) for which people are voting. |
|
|
|
| PostalLocation |
|
eml-externals | |
|
|
|
PostalLocationStructure |
The address to which a postal vote should be returned. |
|
|
|
| PreferredChannel |
VotingChannelType |
eml-core | 360b | |
xs:element |
|
|
VotingChannelType |
The voter’s preferred channel of voting. E.g. Kiosk |
|
|
|
| PreferredContact |
|
eml-core | |
xs:element |
|
|
n/a |
Statement as to the which is the preferred contact method when
there are multiple contact methods. |
|
|
|
| PreferredLanguage |
|
eml-core | |
|
|
|
LanguageType |
The language which a voter prefers to use. |
|
|
|
| PreviousElectoralAddress |
StructuredAddressStructure |
eml-core | 430 | 410 | 340 |
330 | 120 | 310 | |
xs:element |
|
|
ElectoralAddressStructure |
If a voter has been at his/her current address for less than a
predefined period, then this may be required by the registration system. |
|
|
|
| ProcessingUnits |
|
eml-core | 510 | 480 | 470 | 460 | 445 | 440 | |
xs:element |
|
|
n/a |
Any item of equipment used within the electoral process. |
|
|
|
| Profession |
xs:token |
eml-core | |
xs:element |
|
|
xs:token |
The profession of a candidate. |
|
|
|
| Profile |
MessageStructure |
eml-core | |
xs:element |
|
|
MessagesStructure |
A description of a candidate. |
|
|
|
| ProofOfID |
|
120 |
|
|
|
n/a |
Proof of a voter's identification. |
|
|
|
| Proposal |
ProposalStructure |
eml-core | 610 | |
xs:element |
|
|
ProposalStructure |
Used in a referendum, it is a piece of text with the options
'yes' 'no', 'for', 'against' etc… to be voted on. |
|
|
|
| ProposalIdentifier |
ProposalIdentifierStructure |
eml-core | 620 | |
xs:element |
|
|
ProposalIdentifierStructure |
The official designation of a proposal. |
|
|
|
| ProposalName |
xs:token |
eml-core | |
xs:element |
|
|
xs:token |
The official name of a proposal. |
|
|
|
| ProposedRejection |
|
460 | |
xs:element |
|
YesNoType |
n/a |
Indicates the intention of an election official to reject a vote
(with the reason for the rejection). This vote will be counted as part of the
number of votes cast. |
|
|
|
| ProposedUncounted |
|
460 | |
|
|
|
YesNoType |
Indicates the intention of an election official to reject a vote
without the vote being counted as part of the number of votes cast. This
could occur, for example, if the vote is thought to be fraudulent. |
|
|
|
| Proposer |
ProposerStructure |
eml-core | 230 | 610 | |
xs:element |
|
|
ProposerStructure |
A person who proposes or supports the proposal of a person,
party or proposal for which people will vote. |
|
|
|
| ProposerDateOfBirth |
|
eml-core | 610 | |
xs:element |
|
|
ProposerStructure |
The date of birth of the proposer. |
|
|
|
| Proxy |
ProxyStructure |
eml-core | 360b | 340 | |
xs:element |
|
|
ProxyStructure |
A person (identified by name and/or position) appointed by a
voter to vote on his/her behalf. |
|
|
|
| ProxyAddress |
|
eml-externals | |
|
|
|
ProxyAddresStructure |
The address of a proxy voter. |
|
|
|
| ProxyDateOfBirth |
|
eml-core | 430 | 410 | 330 | 310 | 120 | |
xs:element |
VoterIdentificationStructure |
|
xs:date |
The date of birth of the person who is voting by proxy. |
|
|
|
| ProxyAgrees |
|
eml-core |
|
|
|
YesNoType |
Indicates that a person agrees to act as proxy for another. |
|
|
|
| ProxyFor |
|
eml-core |
|
|
|
n/a |
Indicates the person for whom a proxy is acting. |
|
|
|
| Qualification |
xs:token |
eml-core | 340 | 330 | 310 | 120 | |
xs:element |
|
|
xs:token |
Used to identify the attribute of a person (e.g. spouse) that
allows him or her to vote on behalf of the voter. |
|
|
|
| Qualifier |
xs:token |
330 |
xs:element |
|
|
xs:token |
Used for indicating information that might affect a voter's
right to vote or information as to how the vote is managed. |
|
|
|
| QualifyingAddress |
|
eml-externals | |
|
|
|
QualifyingAddressStructure |
The address of a candidate in an election that entitles him or
her to stand. |
|
|
|
| RaisedBy |
|
480 | 130 | |
|
|
|
ProcessingUnit Structure |
The identification of a device that has raised an error message. |
|
|
|
| Reason |
|
eml-core | |
xs:element |
|
|
xs:token |
The reason for appointing a proxy, qualification of a token,
blocking a vote etc. |
|
|
|
| Recipient |
|
eml-core | 360b | 350b | |
|
|
|
ResponsibleOfficerStructure |
The official to whom a message is addressed. |
|
|
|
| ReferendumOptionIdentifier |
ReferendumOptionIdentifierStructure |
eml-core | 430 | 410 | 340 | |
xs:element |
|
|
ReferendumOptionIdentifierStructure |
The official designation of one of the possible responses to a
refendum question. |
|
|
|
| RegisteredName |
xs:token |
eml-core | |
xs:element |
|
|
xs:token |
The official name of an affiliation such as a political party. |
|
|
|
| RejectedVotes |
|
510 | |
xs:element |
|
xs:nonNegativeInteger |
xs:nonNegativeInteger |
The number of votes that have been rejected for a specified
reason. |
|
|
|
| Remark |
|
620 | 450 | 430 | 120 | |
|
|
|
xs:token |
A textual comment. |
|
|
|
| ReportingUnitIdentifier |
ReportingUnitIdentifierStructure |
eml-core | 510 | 460 | 440 | |
xs:element |
|
|
ReportingUnitIdentifierStructure |
The identifier of an administrative unit which collects a
portion of the votes for a specific contest and passes either the votes or a
count of the votes for combining with those from other reporting units to
generate a final result. |
|
|
|
| ReportingUnitVotes |
{reference} |
510 | |
xs:element |
|
|
n/a |
The votes received by the unit for which votes are required to
be reported for a given contest. |
|
|
|
| Request |
|
120 |
|
|
|
n/a |
Indicates that the 120 message is a request for an action
(rather than a response). |
|
|
|
| RequestedAction |
|
330 |
|
|
|
xs:NMTOKEN |
Indicates the action to be taken with the voter information
provided. |
add | delete
| replace |
|
|
| RequestedMessageLanguage |
|
480 | 130 | |
|
|
|
LanguageType |
The language in which a message was requested. Used when
reporting an error. |
|
|
|
| RequestedResponseLanguage |
LanguageType |
eml-core | |
xs:element |
|
|
LanguageType |
The language in which a voter would like a response to a
message. |
|
|
|
| Response |
|
120 |
|
|
|
n/a |
Indicates that the 120 message is a response to a request for an
action. |
|
|
|
| ResponseMethod |
xs:token |
110 | |
xs:element |
|
|
xs:token |
The method of responding to a vote. This might be a simple
acknowledgement, an acknowledgement code identifying the candidate voted for
or some other mechanism. |
|
|
|
| Responsibility |
xs:token |
eml-core | |
xs:element |
|
|
xs:token |
An indication of the responsibility of a responsible officer. |
|
|
|
| ResponsibleOfficer |
ResponsibleOfficerStructure |
eml-core | |
xs:element |
|
|
ResponsibleOfficerStructure |
Person responsible for organising and ensuring a fair and
accurate election in accordance with election laws. Each officer will have a
defined responsibility, name and contact details. |
|
|
|
| Result |
{reference} |
520 | 120 | |
xs:element |
|
|
n/a |
The result of an election. |
|
|
|
| ResultReporting |
|
520 |
|
|
|
n/a |
Optional elements for extending ability to report on
partial/complete results and prior election result comparisons along with
external press release totals rather than tabulation result totals. |
|
|
|
| RetrieveVote |
|
445 |
|
|
|
n/a |
A message type to be used where votes can be retrieved after
they have been cast using some provisional voting mechanism. |
|
|
|
| ReturnTo |
|
eml-core | 360a | 350a | |
|
|
|
ResponsibleOfficerStructure |
The official to whom the response to a message should be
returned. |
|
|
|
| Rotation |
YesNoType |
430 | 410 | 340 | |
xs:element |
|
|
n/a |
Used to indicate that the order in which candidates appear on a
ballot must be varied. |
|
|
|
| RotationMethod |
|
340 | 410 | 430 |
|
|
|
xs:token |
The method used to apply rotation. |
|
|
|
| ScrutinyRequirement |
ScrutinyRequirementStructure |
eml-core | 210 | |
xs:element |
|
|
ScrutinyRequirementStructure |
A condition the candidate must meet to stand in a specific
contest. |
|
|
|
| Seal |
SealStructure |
eml-core | |
xs:element |
|
|
SealStructure |
The means of providing assurance that a vote, voting token or
complete message has not be altered between creation and consumption. Used also to authenticae the identity of
the system that collected the vote, and provide proof of the time at which
the vote was cast. |
|
|
|
| SealLoggingSystem |
ProcessingUnitStructure |
eml-core | 510 | 480 | 470 | 460 | 445 | 440 | |
xs:element |
|
|
ProcessingUnitStructure |
The system that carries out adding seals to an audit log. |
|
|
|
| Selection |
|
510 | 460 | 440 | |
|
|
|
n/a |
The voters selection of candidate, affilaition or referendum
option. |
|
|
|
| SequencedElementName |
xs:NMTOKEN |
eml-core | |
xs:element |
|
|
xs:NMTOKEN |
Where a message is split to reduce transmission size, this
indicates the element, repetitions of which are divided between the
sub-messages. |
|
|
|
| SequenceNumber |
xs:positiveInteger |
eml-core | |
xs:element |
|
|
xs:positiveInteger |
Where a message is split to reduce transmission size, this
element indicates the position of a specified part in the sequence of
sub-messages. |
|
|
|
| ShortCode |
ShortCodeType |
eml-core | 460 | 440 | |
xs:attribute |
|
|
xs:NMTOKEN |
Identifies the election when voting using SMS or other voting
mechanisms where a short identifier is required. |
|
|
|
| Sign |
|
210 |
|
|
|
n/a |
An element containing a digital signature. |
|
|
|
| Simulation |
|
510 | 520 |
|
|
|
n/a |
A simulation of a result or count, based on the count of another contest. |
|
|
|
| Source |
|
120 |
|
|
|
ProcessingUnitStructure |
Indicates
the sending device for a 120 (interDB) message. |
|
|
|
| SpecialRequest |
xs:token |
eml-core | |
xs:element |
|
|
xs:token |
A request made by a voter and held on the electoral register.
This might, for exmaple, indicate a need for wheelchair access to a polling
station. |
|
|
|
| Spoilt |
xs:token |
460 | 440 | |
xs:attribute |
|
|
n/a |
A ballot that cannot be counted because it does not meet some
rule. |
|
|
|
| Start |
|
110 | 340 | 410 | 430 | |
|
|
|
BallotIdentifierStructure |
The start of a range of ballot identifiers. |
|
|
|
| Success |
|
120 | |
|
|
|
YesNoType |
Indicates whether an action requested from another database was
completed successfully. |
|
|
|
| Telephone |
|
eml-core |
|
|
|
TelephoneStructure |
A telephone number. |
|
|
|
| TimeAvailable |
|
eml-core | |
xs:element |
|
|
n/a |
Used for special circumstances (such as the use of a mobile
polling station), when the time a location is available is not the same time
when the channel is available. |
|
|
|
| TransactionId |
xs:token |
eml-core | |
xs:element |
|
|
xs:token |
A reference number for a message. When a message is divided into
sub-messages, each will have the same TransactionId. |
|
|
|
| ts:TimeStamp |
{reference} |
eml-core | |
xs:element |
|
|
TimestampType |
A form of electronic signature that includes the time at which
the signature was created. |
|
|
|
| UncountedVotes |
|
510 |
|
|
|
xs:nonNegativeInteger |
The number of votes that will not be counted for some specified
reason. |
|
|
|
| Update |
YesNoType |
480 | 470 | |
xs:element |
|
|
YesNoType |
Indicates that a message should update some information ratehr
than replace it. |
|
|
|
| URL |
xs:anyURI |
eml-core | |
xs:element |
|
|
xs:anyURI |
A Uniform Resource Locator to RFC 1738 |
|
|
|
| ValidVotes |
xs:nonNegativeInteger |
510 | |
xs:element |
|
|
xs:nonNegativeInteger |
The number of valid votes cast. |
|
|
|
| Value |
|
510 |
|
|
|
VotingValueType |
Used to indicate the value associated with different parts of
the Count. |
Cast | Read
| TotalCounted | Provisionals | Abstentions | RejectedVotes |
|
|
| VoteConfirmation |
{reference} |
450 | |
xs:element |
|
|
n/a |
Indicates back to the voter whether or not the vote has been
accepted. |
|
|
|
| VoteType |
|
510 |
|
|
|
n/a |
Attribute used in totalling for rejected and uncounted
totalling. |
|
|
|
| Voter |
VoterIdentificationStructure |
445 | 360a | 360b | 350a | 350b | 340 | |
xs:element |
|
|
n/a |
A person who is eligible to vote. |
|
|
|
| VoterArtefact |
|
330 |
|
|
|
n/a |
Used in the verification of a voter during the voter
registration process. |
|
|
|
| VoterContact |
ContactDetailsStructure |
eml-core | |
xs:element |
|
|
ContactDetailsStructure |
The contact details of an eligible voter. |
|
|
|
| VoterDetails |
|
330 | |
|
|
|
n/a |
The set of details about a voter included in the election list. |
|
|
|
| VoterIdentification |
|
eml-core | 430 | 410 | 330 | 310 | 120 | |
xs:element |
VoterIdentificationStructure |
|
VoterIdentificationStructure |
Used wherever identification of a voter is required. |
|
|
|
| VoterInformation |
VoterInformationStructure |
330 | 310 | 120 | |
xs:element |
|
|
VoterInformationStructure |
Details relating to the voter other than their official
identification. |
|
|
|
| VoterGroup |
|
510 | 330 | |
|
|
|
xs:token |
Indicates that only a partial election list is being
transferred, such as just the proxies. |
|
|
|
| VoterName |
VoterNameStructure |
eml-core | |
xs:element |
|
|
PersonNameStructure |
The name of an eligible voter. |
|
|
|
| VoterSiganture |
|
eml-core | 430 | 410 | 330 | 310 | 120 | |
xs:element |
VoterIdentificationStructure |
|
VoterIdentificationStructure |
The signature of the voter. The permitted graphics images of
signatures are either .jpg, or .gif, or .png. |
|
|
|
| VotingChannel |
VotingChannelType |
eml-core | 420 | 360a | |
xs:element |
|
|
VotingChannelType |
The method in which the vote is being cast. |
SMS | WAO |
digitalTV | kiosk | polling | postal | telephone | other |
|
|
| VotingMethod |
VotingMethodType |
eml-core | |
xs:element |
|
|
VotingMethodType |
The type of election being held. |
AMS | FPP |
IRV | OPV | RCV |SPV | STV | NOR |
cumulative | approval | block | partylist | partisan | supplementaryvote |
other |
|
|
| VotingPeriod |
|
340 | |
xs:element |
|
|
n/a |
The unit of time which the election is being held. |
|
|
|
| VotingSystem |
ProcessingUnitStructure |
eml-core | 510 | 480 | 470 | 460 | 445 | 440 | |
xs:element |
|
|
ProcessingUnitStructure |
The physical system used to collect votes cast electronically. |
|
|
|
| VToken |
VTokenStructure |
eml-core | 460 | 450 | 440 | 420 | |
xs:element |
|
|
VTokenStructure |
Contains information required to authenticate the voter’s right
to vote in a specific contest or election. |
|
|
|
| VTokenLoggingSystem |
ProcessingUnitStructure |
eml-core | 510 | 480 | 470 | 460 | 445 | 440 | |
xs:element |
|
|
ProcessingUnitStructure |
The system that carries out adding voting tokens to an audit
log. |
|
|
|
| VTokenQualified |
VTokenQualifiedStructure |
eml-core | 460 | 450 | 440 | 420 | |
xs:element |
|
|
VTokenQualifiedStructure |
Used when there is a query of a voter’s right to vote. |
|
|
|
| WriteIn |
|
eml-core | |
|
|
|
WriteInType |
The type of write-in that is permitted |
Allowed |
None | Strikeout | Other |
|
|
| WriteinCandidateName |
xs:token |
460 | 440 | |
xs:element |
|
|
xs:token |
Some elections allow a voter to write-in the name of the person
they would like to see elected, although they are not included on the ballot
paper. This is known as a write-in candidate. |
|
|
|
| WriteinMax |
|
110 |
|
|
|
xs:positiveInteger |
The maximum number of write-in votes
permitted. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|