module Mail::Parsers::AddressListsParser

def self.parse(data)

def self.parse(data)
  data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding)
  address_list = AddressListStruct.new([], [])
  return address_list if Mail::Utilities.blank?(data)
  phrase_s = phrase_e = qstr_s = qstr = comment_s = nil
  group_name_s = domain_s = group_name = nil
  local_dot_atom_s = local_dot_atom_e = nil
  local_dot_atom_pre_comment_e = nil
  obs_domain_list_s = nil
  address_s = 0
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  # 5.1 Variables Used by Ragel
  p = 0
  eof = pe = data.length
  stack = []
  
n
|= 0
||= data.length
= start
 = 0
  
n
tEof = false
en, _trans, _keys, _inds, _acts, _nacts = nil
to_level = 0
sume = 10
f_trans = 15
ain = 20
st_eof = 30
t = 40
le true
_goto_level <= 0
p == pe
oto_level = _test_eof
xt

cs == 0
oto_level = _out
xt


_goto_level <= _resume
ys = cs << 1
ds = _index_offsets[cs]
en = _key_spans[cs]
de = data[p].ord
ans = if (   _slen > 0 && 
trans_keys[_keys] <= _wide && 
wide <= _trans_keys[_keys + 1] 
  ) then
indicies[ _inds + _wide - _trans_keys[_keys] ] 
lse 
indicies[ _inds + _slen ]
nd
= _trans_targs[_trans]
_trans_actions[_trans] != 0
e _trans_actions[_trans]
n 4 then
gin
ase_e = p-1 		end
n 8 then
gin
r_s = p 		end
n 10 then
gin
r = chars(data, qstr_s, p-1) 		end
n 59 then
gin
ment_s = p unless comment_s 		end
n 12 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
n 34 then
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 3 then
gin
if qstr
  address.display_name = Mail::Utilities.unescape(qstr)
  qstr = nil
elsif phrase_e
  address.display_name = chars(data, phrase_s, phrase_e).strip
  phrase_e = phrase_s = nil
end
end
n 43 then
gin
ain_s = p 		end
n 54 then
gin
address.domain = chars(data, domain_s, p-1).rstrip if address
end
n 1 then
gin
al_dot_atom_s = p 		end
n 24 then
gin
al_dot_atom_e = p-1 		end
n 21 then
gin
al_dot_atom_pre_comment_e = p-1 		end
n 50 then
gin
ress.local = '"' + qstr + '"' if address 		end
n 20 then
gin
_domain_list_s = p 		end
n 2 then
gin
gin
ack[top] = cs
p+= 1
 = 2449
oto_level = _again
xt

nd
n 62 then
gin
gin
p -= 1
 = stack[top]
oto_level = _again
xt

nd
n 6 then
gin
ase_e = p-1 		end
gin
if qstr
  group = qstr
  qstr = nil
else
  group = chars(data, group_name_s, p-1)
  group_name_s = nil
end
address_list.group_names << group
group_name = group
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address_s = p
address.group = group_name
end
n 7 then
gin
ase_e = p-1 		end
gin
if qstr
  address.display_name = Mail::Utilities.unescape(qstr)
  qstr = nil
elsif phrase_e
  address.display_name = chars(data, phrase_s, phrase_e).strip
  phrase_e = phrase_s = nil
end
end
n 42 then
gin
ase_e = p-1 		end
gin
ain_s = p 		end
n 30 then
gin
ase_e = p-1 		end
gin
al_dot_atom_pre_comment_e = p-1 		end
n 9 then
gin
r_s = p 		end
gin
r = chars(data, qstr_s, p-1) 		end
n 60 then
gin
ment_s = p unless comment_s 		end
gin
gin
ack[top] = cs
p+= 1
 = 2449
oto_level = _again
xt

nd
n 61 then
gin
ment_s = p unless comment_s 		end
gin
gin
p -= 1
 = stack[top]
oto_level = _again
xt

nd
n 11 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
ase_e = p-1 		end
n 35 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 17 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
if qstr
  address.display_name = Mail::Utilities.unescape(qstr)
  qstr = nil
elsif phrase_e
  address.display_name = chars(data, phrase_s, phrase_e).strip
  phrase_e = phrase_s = nil
end
end
n 55 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
address.domain = chars(data, domain_s, p-1).rstrip if address
end
n 53 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
al_dot_atom_s = p 		end
n 25 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
al_dot_atom_e = p-1 		end
n 52 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
ress.local = '"' + qstr + '"' if address 		end
n 16 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
gin
ack[top] = cs
p+= 1
 = 2449
oto_level = _again
xt

nd
n 29 then
gin
ress_s = p 		end
gin
ase_s = p 		end
n 28 then
gin
ress_s = p 		end
gin
if qstr
  address.display_name = Mail::Utilities.unescape(qstr)
  qstr = nil
elsif phrase_e
  address.display_name = chars(data, phrase_s, phrase_e).strip
  phrase_e = phrase_s = nil
end
end
n 48 then
gin
ain_s = p 		end
gin
gin
ack[top] = cs
p+= 1
 = 2449
oto_level = _again
xt

nd
n 45 then
gin
address.domain = chars(data, domain_s, p-1).rstrip if address
end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 18 then
gin
al_dot_atom_s = p 		end
gin
_domain_list_s = p 		end
n 33 then
gin
al_dot_atom_e = p-1 		end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 39 then
gin
al_dot_atom_e = p-1 		end
gin
ress.local = '"' + qstr + '"' if address 		end
n 23 then
gin
al_dot_atom_pre_comment_e = p-1 		end
gin
al_dot_atom_e = p-1 		end
n 22 then
gin
al_dot_atom_pre_comment_e = p-1 		end
gin
gin
ack[top] = cs
p+= 1
 = 2449
oto_level = _again
xt

nd
n 49 then
gin
ress.local = '"' + qstr + '"' if address 		end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 56 then
gin
ress.obs_domain_list = chars(data, obs_domain_list_s, p-1) 		end
gin
al_dot_atom_s = p 		end
n 5 then
gin
gin
ack[top] = cs
p+= 1
 = 2449
oto_level = _again
xt

nd
gin
ase_e = p-1 		end
n 14 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
ase_e = p-1 		end
gin
if qstr
  group = qstr
  qstr = nil
else
  group = chars(data, group_name_s, p-1)
  group_name_s = nil
end
address_list.group_names << group
group_name = group
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address_s = p
address.group = group_name
end
n 15 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
ase_e = p-1 		end
gin
if qstr
  address.display_name = Mail::Utilities.unescape(qstr)
  qstr = nil
elsif phrase_e
  address.display_name = chars(data, phrase_s, phrase_e).strip
  phrase_e = phrase_s = nil
end
end
n 46 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
address.domain = chars(data, domain_s, p-1).rstrip if address
end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 47 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
al_dot_atom_e = p-1 		end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 41 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
al_dot_atom_e = p-1 		end
gin
ress.local = '"' + qstr + '"' if address 		end
n 51 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
ress.local = '"' + qstr + '"' if address 		end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 13 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
gin
ack[top] = cs
p+= 1
 = 2449
oto_level = _again
xt

nd
gin
ase_e = p-1 		end
n 65 then
gin
up_name_s = p 		end
gin
ase_s = p 		end
gin
ress_s = p 		end
n 26 then
gin
ress_s = p 		end
gin
ase_s = p 		end
gin
al_dot_atom_s = p 		end
n 19 then
gin
al_dot_atom_s = p 		end
gin
gin
ack[top] = cs
p+= 1
 = 2449
oto_level = _again
xt

nd
gin
_domain_list_s = p 		end
n 38 then
gin
al_dot_atom_e = p-1 		end
gin
ress.local = '"' + qstr + '"' if address 		end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 32 then
gin
al_dot_atom_pre_comment_e = p-1 		end
gin
al_dot_atom_e = p-1 		end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 37 then
gin
al_dot_atom_pre_comment_e = p-1 		end
gin
al_dot_atom_e = p-1 		end
gin
ress.local = '"' + qstr + '"' if address 		end
n 57 then
gin
ress.obs_domain_list = chars(data, obs_domain_list_s, p-1) 		end
gin
al_dot_atom_s = p 		end
gin
gin
ack[top] = cs
p+= 1
 = 2449
oto_level = _again
xt

nd
n 44 then
gin
gin
ack[top] = cs
p+= 1
 = 2449
oto_level = _again
xt

nd
gin
ase_e = p-1 		end
gin
ain_s = p 		end
n 31 then
gin
gin
ack[top] = cs
p+= 1
 = 2449
oto_level = _again
xt

nd
gin
ase_e = p-1 		end
gin
al_dot_atom_pre_comment_e = p-1 		end
n 40 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
al_dot_atom_e = p-1 		end
gin
ress.local = '"' + qstr + '"' if address 		end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 63 then
gin
up_name_s = p 		end
gin
ase_s = p 		end
gin
ress_s = p 		end
gin
al_dot_atom_s = p 		end
n 27 then
gin
ress_s = p 		end
gin
ase_s = p 		end
gin
gin
ack[top] = cs
p+= 1
 = 2449
oto_level = _again
xt

nd
gin
al_dot_atom_s = p 		end
n 36 then
gin
al_dot_atom_pre_comment_e = p-1 		end
gin
al_dot_atom_e = p-1 		end
gin
ress.local = '"' + qstr + '"' if address 		end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 58 then
gin
gin
ack[top] = cs
p+= 1
 = 2449
oto_level = _again
xt

nd
gin
ress_s = p 		end
gin
ase_s = p 		end
gin
al_dot_atom_s = p 		end
n 64 then
gin
up_name_s = p 		end
gin
ase_s = p 		end
gin
gin
ack[top] = cs
p+= 1
 = 2449
oto_level = _again
xt

nd
gin
ress_s = p 		end
gin
al_dot_atom_s = p 		end



_goto_level <= _again
cs == 0
oto_level = _out
xt

= 1
p != pe
oto_level = _resume
xt


_goto_level <= _test_eof
p == eof
ase _eof_actions[cs]
n 12 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
n 34 then
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 35 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 45 then
gin
address.domain = chars(data, domain_s, p-1).rstrip if address
end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 33 then
gin
al_dot_atom_e = p-1 		end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 49 then
gin
ress.local = '"' + qstr + '"' if address 		end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 46 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
address.domain = chars(data, domain_s, p-1).rstrip if address
end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 47 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
al_dot_atom_e = p-1 		end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 51 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
ress.local = '"' + qstr + '"' if address 		end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 38 then
gin
al_dot_atom_e = p-1 		end
gin
ress.local = '"' + qstr + '"' if address 		end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 32 then
gin
al_dot_atom_pre_comment_e = p-1 		end
gin
al_dot_atom_e = p-1 		end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 40 then
gin
if address
  address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
al_dot_atom_e = p-1 		end
gin
ress.local = '"' + qstr + '"' if address 		end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
n 36 then
gin
al_dot_atom_pre_comment_e = p-1 		end
gin
al_dot_atom_e = p-1 		end
gin
ress.local = '"' + qstr + '"' if address 		end
gin
if address_s
  if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
    if address.domain
      address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
    else
      address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
    end
  end
  address.raw = chars(data, address_s, p-1)
  address_list.addresses << address if address
  # Start next address
  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
  address.group = group_name
  address_s = nil
end
end
nd


_goto_level <= _out
eak


  if p != eof || cs < 2461
    raise Mail::Field::IncompleteParseError.new(Mail::AddressList, data, p)
  end
  address_list
end