anchor.diff:  	attributes(T, <<Acc/binary, ?TunnelAssignmentID, Length, Tag, S/binary>>);
   attributes([{?TunnelPreference, {Tag, Value}} | T], Acc) ->
   	attributes(T, <<Acc/binary, ?TunnelPreference, 6, Tag, Value:24>>);
  +attributes([{?ARAPChallengeResponse, Data} | T], Acc) ->
  +	attributes(T, <<Acc/binary, ?ARAPChallengeResponse, 10, Data/binary>>);
  +attributes([{?AcctInterimInterval, Count} | T], Acc) ->
  +	attributes(T, <<Acc/binary, ?AcctInterimInterval, 6, Count:32>>);
  +attributes([{?AcctTunnelPacketsLost, Lost} | T], Acc) ->
  +	attributes(T, <<Acc/binary, ?AcctTunnelPacketsLost, 6, Lost:32>>);
  +attributes([{?NASPortId, Text} | T], Acc) ->
  +	S = list_to_binary(Text),
  +	Length = size(S) + 2,
  +	attributes(T, <<Acc/binary, ?NASPortId, Length, S/binary>>);
  +attributes([{?FramedPool, String} | T], Acc) ->
  +	S = list_to_binary(String),
  +	Length = size(S) + 2,
  +	attributes(T, <<Acc/binary, ?NASPortId, Length, S/binary>>);
   attributes([{?TunnelClientAuthID, {Tag, String}} | T], Acc) ->
   	S = list_to_binary(String),
   	Length = size(S) + 3,
  
positive.code: 	orddict:store(?TunnelType, {Tag, Value}, Acc);
  attribute(?TunnelMediumType, <<Tag, Value:24>>, Acc) ->
  	orddict:store(?TunnelMediumType, {Tag, Value}, Acc);
  attribute(?TunnelClientEndpoint, <<Tag, String/binary>>, Acc)
  		when size(Value) >= 1 ->
  	S = binary_to_list(String),
  	orddict:store(?TunnelClientEndpoint, {Tag, S}, Acc);
  attribute(?TunnelServerEndpoint, <<Tag, String/binary>>, Acc)
  		when size(Value) >= 1 ->
  	S = binary_to_list(String),
  	orddict:store(?TunnelServerEndpoint, {Tag, S}, Acc);
  attribute(?TunnelPassword, <<Tag, Salt:16, String/binary>>, Acc)
  		when size(Value) >= 3 ->
  	S = binary_to_list(String),
  	orddict:store(?TunnelPassword, {Tag, Salt, S}, Acc);
  attribute(?TunnelPrivateGroupID, <<Tag, String/binary>>, Acc)
  		when size(Value) >= 1 ->
  	S = binary_to_list(String),
  	orddict:store(?TunnelPrivateGroupID, {Tag, S}, Acc);
  attribute(?TunnelAssignmentID, <<Tag, String/binary>>, Acc)
  		when size(Value) >= 1 ->
  	S = binary_to_list(String),
  	orddict:store(?TunnelAssignmentID, {Tag, S}, Acc);
  attribute(?TunnelPreference, <<Tag, Value:24>>, Acc) ->
  	orddict:store(?TunnelPreference, {Tag, Value}, Acc);
  attribute(?TunnelClientAuthID, <<Tag, String/binary>>, Acc)
  		when size(Value) >= 1 ->
  	S = binary_to_list(String),
  	orddict:store(?TunnelClientAuthID, {Tag, S}, Acc);
  attribute(?TunnelServerAuthID, <<Tag, String/binary>>, Acc)
  		when size(Value) >= 1 ->
  	S = binary_to_list(String),
  	orddict:store(?TunnelServerAuthID, {Tag, S}, Acc);
  attribute(?AcctTunnelConnection, Value, Acc) when size(Value) >= 1 ->
  	orddict:store(?AcctTunnelConnection, binary_to_list(Value), Acc);
  attribute(?AcctTunnelPacketsLost, Value, Acc) when size(Value) == 4 ->
  	Lost = binary:decode_unsigned(Value),
  	orddict:store(?AcctTunnelPacketsLost, Lost, Acc);
  attribute(_, _Value, Acc) ->
  	Acc.
  
  
negative.code: attributes([{?TunnelServerAuthID, {Tag, String}} | T], Acc) ->
  	S = list_to_binary(String),
  	Length = size(S) + 3,
  	attributes(T, <<Acc/binary, ?TunnelServerAuthID, Length, Tag, S/binary>>).
  
  