anchor.diff:      split_once(Rest, Delim, [Char|Acc]);
   split_once([], _Delim, Acc) ->
       {lists:reverse(Acc), ""}.
  +
  +%%%===================================================================
  +%%% Query string
  +%%%===================================================================
   
   parse_query_string(QS) when is_list(QS) ->
       [qs_nameval(Part) || Part <- split_qs(QS)];
  
positive.code: unescape_qs_val([], Acc) ->
      lists:reverse(Acc).
  
  decrypt(Data, Key) ->
      PaddedKey = pad(Key, 16),
      unpad(crypto:aes_cbc_128_decrypt(PaddedKey, ?NULL_IV_128, Data)).
  
negative.code:          ensure_parsed_request_path/1,
           parse_request_path/1,
           parse_query_string/1,
           ensure_parsed_cookie/1,
           parse_cookie/1,
           cookie_header/2,
           encrypt/2, decrypt/2]).
  
  -import(psycho, [env_val/2, env_header/3]).
  
  %%%===================================================================
  %%% Date functions
  %%%===================================================================
  
  http_date(UTC) ->
      {{Year, Month, Day}, {Hour, Min, Sec}} = UTC,
  