0

The error is in the lines 431,451,452 and 455.

ERROR:- Line 431. Choice .to. is not a static expression. Line 451. Choice + is not a static expression. Line 452. Choice + is not a static expression. Line 455. Choice time_period_counter is not a static expression.

The code that i have attached is quite long but the logic is quite simple. It is regarding syntax of switch case.

Please help!!

----------------------------------------------------------------------------------
-- Company: IIST
-- Engineer: Leen Roque Robin
-- 
-- Create Date:    23:14:17 06/22/2017 
-- Design Name: 
-- Module Name:    data - Behavioral 
-- Project Name: 
-- Target Devices: 
-- Tool versions: 
-- Description:     To create the corresponding output data as per the command received from the command_interface module
--
-- Dependencies: 
--
-- Revision: 
-- Revision 0.01 - File Created
-- Additional Comments: 
--
----------------------------------------------------------------------------------

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity data_output is
    Port (  --Input signals
               Por              : in std_logic;
               sys_clk          : in std_logic; 
               start_bit        : in std_logic;
               mode_bit1        : in std_logic_vector(2 downto 0);
               mode_bit2        : in std_logic_vector(2 downto 0);
               mode_bit3        : in std_logic_vector(2 downto 0);
               input_data       : in std_logic_vector(7 downto 0);
                card_id         : in std_logic_vector(7 downto 0);

            --Output signals  
                clk             : out std_logic;
               pkt_start        : out std_logic;   
               dataws           : out std_logic;
               data             : out std_logic_vector(15 downto 0)
--             random_flag      :out std_logic
           );           
end data_output;

architecture Behavioral of data_output is
signal count                :   integer:=0;
signal time_period_counter  :   integer:=0;
signal window_counter       :   integer:=0;

constant data_AA55          :   std_logic_vector(15 downto 0):=x"AA55";
constant data_5555          :   std_logic_vector(15 downto 0):=x"5555";

constant word_1             :   std_logic_vector(15 downto 0):=x"F8DD";
constant word_2             :   std_logic_vector(15 downto 0):=x"4259";
signal word_3               :   std_logic_vector(15 downto 0);
constant word_4             :   std_logic_vector(15 downto 0):=x"5231";
signal word_5               :   std_logic_vector(15 downto 0);
signal word_6               :   std_logic_vector(15 downto 0);
signal word_7               :   std_logic_vector(15 downto 0);
signal word_8               :   std_logic_vector(15 downto 0):=x"F8DD";
signal word_9               :   std_logic_vector(15 downto 0):=x"F8DD";
signal word_10              :   std_logic_vector(15 downto 0):=x"F8DD";

constant word_11                :   std_logic_vector(15 downto 0):=x"00AA";
constant word_12                :   std_logic_vector(15 downto 0):=x"00AB";
constant word_13                :   std_logic_vector(15 downto 0):=x"00AC";
constant word_14                :   std_logic_vector(15 downto 0):=x"00AD";
constant word_15                :   std_logic_vector(15 downto 0):=x"00AE";
constant word_16                :   std_logic_vector(15 downto 0):=x"00AF";
constant word_17                :   std_logic_vector(15 downto 0):=x"00BA";
constant word_18                :   std_logic_vector(15 downto 0):=x"00BB";
constant word_19                :   std_logic_vector(15 downto 0):=x"00BC";
constant word_20                :   std_logic_vector(15 downto 0):=x"00BD";
constant word_21                :   std_logic_vector(15 downto 0):=x"00BE";
constant word_22                :   std_logic_vector(15 downto 0):=x"00BF";
constant word_23                :   std_logic_vector(15 downto 0):=x"00CA";
constant word_24                :   std_logic_vector(15 downto 0):=x"00CB";
constant word_25                :   std_logic_vector(15 downto 0):=x"00CC";
constant word_26                :   std_logic_vector(15 downto 0):=x"00CD";
constant word_27                :   std_logic_vector(15 downto 0):=x"00CE";
constant word_28                :   std_logic_vector(15 downto 0):=x"00CF";
constant word_29                :   std_logic_vector(15 downto 0):=x"00DA";
constant word_30                :   std_logic_vector(15 downto 0):=x"00DB";
constant word_31                :   std_logic_vector(15 downto 0):=x"00DC";
constant word_32                :   std_logic_vector(15 downto 0):=x"00DD";
constant word_33                :   std_logic_vector(15 downto 0):=x"00DE";
constant word_34                :   std_logic_vector(15 downto 0):=x"00DF";
constant word_35                :   std_logic_vector(15 downto 0):=x"00EA";
constant word_36                :   std_logic_vector(15 downto 0):=x"00EB";
constant word_37                :   std_logic_vector(15 downto 0):=x"00EC";
constant word_38                :   std_logic_vector(15 downto 0):=x"00ED";
constant word_39                :   std_logic_vector(15 downto 0):=x"00EE";
constant word_40                :   std_logic_vector(15 downto 0):=x"00EF";
constant word_41                :   std_logic_vector(15 downto 0):=x"00FA";
constant word_42                :   std_logic_vector(15 downto 0):=x"00FB";
constant word_43                :   std_logic_vector(15 downto 0):=x"00FC";
constant word_44                :   std_logic_vector(15 downto 0):=x"00FD";
constant word_45                :   std_logic_vector(15 downto 0):=x"00FE";
constant word_46                :   std_logic_vector(15 downto 0):=x"00FF";
constant word_47                :   std_logic_vector(15 downto 0):=x"01AA";
constant word_48                :   std_logic_vector(15 downto 0):=x"01AB";
constant word_49                :   std_logic_vector(15 downto 0):=x"01AC";
constant word_50                :   std_logic_vector(15 downto 0):=x"01AD";
constant word_51                :   std_logic_vector(15 downto 0):=x"01AE";
constant word_52                :   std_logic_vector(15 downto 0):=x"01AF";
constant word_53                :   std_logic_vector(15 downto 0):=x"01BA";
constant word_54                :   std_logic_vector(15 downto 0):=x"01BB";
constant word_55                :   std_logic_vector(15 downto 0):=x"01BC";
constant word_56                :   std_logic_vector(15 downto 0):=x"01BD";
constant word_57                :   std_logic_vector(15 downto 0):=x"01BE";
constant word_58                :   std_logic_vector(15 downto 0):=x"01BF";
constant word_59                :   std_logic_vector(15 downto 0):=x"01CA";
constant word_60                :   std_logic_vector(15 downto 0):=x"01CB";
constant word_61                :   std_logic_vector(15 downto 0):=x"01CC";
constant word_62                :   std_logic_vector(15 downto 0):=x"01CD";
constant word_63                :   std_logic_vector(15 downto 0):=x"01CE";
constant word_64                :   std_logic_vector(15 downto 0):=x"01CF";
constant word_65                :   std_logic_vector(15 downto 0):=x"01DA";
constant word_66                :   std_logic_vector(15 downto 0):=x"01DB";
constant word_67                :   std_logic_vector(15 downto 0):=x"01DC";
constant word_68                :   std_logic_vector(15 downto 0):=x"01DD";
constant word_69                :   std_logic_vector(15 downto 0):=x"01DE";
constant word_70                :   std_logic_vector(15 downto 0):=x"01DF";
constant word_71                :   std_logic_vector(15 downto 0):=x"01EA";
constant word_trailer               :   std_logic_vector(15 downto 0):=x"01FF";


signal word_6_7             :   std_logic_vector(31 downto 0);
signal word_8_9             :   std_logic_vector(31 downto 0);




--prf values
signal prf1_value           :   integer:=10417;
signal prf2_value           :   integer:=11161;
signal prf3_value           :   integer:=5581;
signal prf4_value           :   integer:=11161;
--window values
--window for prf1
signal prf1_width1          :   integer:=2816;
signal prf1_width2          :   integer:=3129;
signal prf1_width3          :   integer:=3441;
signal prf1_width4          :   integer:=3754;

--window for prf2
signal prf2_width1          :   integer:=1563;
signal prf2_width2          :   integer:=2813;
signal prf2_width3          :   integer:=4063;
signal prf2_width4          :   integer:=5313;

--window for prf3
signal prf3_width1          :   integer:=1094;
signal prf3_width2          :   integer:=1719;
signal prf3_width3          :   integer:=2344;
signal prf3_width4          :   integer:=2969;

--window for prf4
signal prf4_width1          :   integer:=1094;
signal prf4_width2          :   integer:=1719;
signal prf4_width3          :   integer:=2344;
signal prf4_width4          :   integer:=2969;

signal sample_data          :   std_logic_vector(15 downto 0);
signal test_sample          :   std_logic_vector(7 downto 0);
signal random_flag          :   std_logic;
signal data_in                  :  std_logic_vector(15 downto 0);   
signal counter                  :  std_logic_vector(15 downto 0);   

--Random Sequence generation
Component random_data_generator
Port(--Input signals
        por             :   in std_logic;
        sys_clk         :   in std_logic;
        random_flag     :   in std_logic;
        --Output signals
        random_data     :   out std_logic_vector(15 downto 0)

);
end component;

begin

A:  random_data_generator port map (por,sys_clk,random_flag,data_in);

    process(por,sys_clk)
    begin
    if(por='0') then
        time_period_counter     <= 0;
        window_counter          <= 0;

        word_3                      <=  (others=>'0');
        word_5                      <=  (others=>'0');
        word_6_7                        <= (others=>'0');
        word_8_9                        <= (others=>'0');       
--      word_6                      <=  (others=>'0');
--      word_7                      <=  (others=>'0');
--      word_8                      <= (others=>'0');
--      word_9                      <=  (others=>'0');
        word_10                     <=  (others=>'0');

    elsif(falling_edge(sys_clk)) then
    --Finding word 3
    case card_id is
        when x"01"  =>  word_3  <=  x"F0F0";
        when x"02"  =>  word_3  <=  x"F00F";
        when x"03"  =>  word_3  <=  x"0FF0";
        when x"04"  =>  word_3  <=  x"0F0F";
        when others => word_3   <= x"0000";
    end case;
    --Finding word 10
    if(mode_bit3 = "011") then
        word_10(10 downto 8)    <=  "111";
    end if;
    if(mode_bit1 = "000") then
        word_10(3 downto 0) <=  "0000";
    elsif(mode_bit1 = "001") then
        word_10(3 downto 0) <=  "0001";
    elsif(mode_bit1 = "010") then
        word_10(3 downto 0) <=  "0010";
    elsif(mode_bit1 = "011") then
        word_10(3 downto 0) <=  "0011";
    end if;

    --Checking PRF
    case mode_bit1 is
        when "000"  =>  time_period_counter <= prf1_value;
            --Checking receive window
            case mode_bit2 is
                when "000"  => window_counter <= prf1_width1;
                when "001"  => window_counter <= prf1_width2;
                when "010"  => window_counter <= prf1_width3;
                when "011"  => window_counter <= prf1_width4;
                when others => window_counter <= prf1_width1;
            end case;

        when "001"  =>  time_period_counter <= prf2_value;
            case mode_bit2 is
                when "000"  => window_counter <= prf2_width1;
                when "001"  => window_counter <= prf2_width2;
                when "010"  => window_counter <= prf2_width3;
                when "011"  => window_counter <= prf2_width4;
                when others => window_counter <= prf2_width1;
            end case;

        when "010"  =>  time_period_counter <= prf3_value;
            case mode_bit2 is
                when "000"  => window_counter <= prf3_width1;
                when "001"  => window_counter <= prf3_width2;
                when "010"  => window_counter <= prf3_width3;
                when "011"  => window_counter <= prf3_width4;
                when others => window_counter <= prf3_width1;
            end case;

        when "011"  =>  time_period_counter <= prf4_value;
            case mode_bit2 is
                when "000"  => window_counter <= prf4_width1;
                when "001"  => window_counter <= prf4_width2;
                when "010"  => window_counter <= prf4_width3;
                when "011"  => window_counter <= prf4_width4;
                when others => window_counter <= prf4_width1;
            end case;
        when others =>  time_period_counter <=  prf1_value;
                        window_counter      <=  0;
        end case;
    end if;

    if(por='0') then
        test_sample     <= (others=>'0');
        sample_data     <= (others=>'0');
        pkt_start       <=  '0';
        dataws          <=  '0';
        count               <=  0;
        counter         <=  x"0000";
    elsif(falling_edge(sys_clk)) then

    if(start_bit='1') then
        count   <=  count+1;
        case count is
            when 1 to 2 =>  pkt_start   <=  '1';
                                dataws      <=  '0';
            when 3  =>  pkt_start   <=  '0';
                            dataws      <=  '0';
            when 4  =>  dataws      <=  '1';
                            word_5      <=  word_5+'1';
                            word_6_7        <=  word_6_7+'1';
                            word_8_9        <=  word_8_9+'1';                           
                            sample_data <= word_1;
            when 5  =>  dataws      <=  '1';
                            sample_data <= word_2;
            when 6  =>  dataws      <=  '1';
                            sample_data <= word_3;
            when 7  =>  dataws      <=  '1';
                            sample_data <= word_4;
            when 8  =>  dataws      <=  '1';
                            sample_data <= word_5;
            when 9  =>  dataws      <=  '1';
                            sample_data <= word_6_7(31 downto 16);
            when 10 =>  dataws      <=  '1';
                            sample_data <= word_6_7(15 downto 0);
            when 11 =>  dataws      <=  '1';
                            sample_data <= word_8_9(31 downto 16);
            when 12 =>  dataws      <=  '1';
                            sample_data <= word_8_9(15 downto 0);
            when 13 =>  dataws      <=  '1';
                            sample_data <= word_10;
            when 14 =>  dataws      <=  '1';
                            sample_data <= word_11;
            when 15 =>  dataws      <=  '1';
                            sample_data <= word_12;
            when 16 =>  dataws      <=  '1';
                            sample_data <= word_13;
            when 17 =>  dataws      <=  '1';
                            sample_data <= word_14;
            when 18 =>  dataws      <=  '1';
                            sample_data <= word_15;
            when 19 =>  dataws      <=  '1';
                            sample_data <= word_16;
            when 20 =>  dataws      <=  '1';
                            sample_data <= word_17;
            when 21 =>  dataws      <=  '1';
                            sample_data <= word_18;
            when 22 =>  dataws      <=  '1';
                            sample_data <= word_19;
            when 23 =>  dataws      <=  '1';
                            sample_data <= word_20;
            when 24 =>  dataws      <=  '1';
                            sample_data <= word_21;
            when 25 =>  dataws      <=  '1';
                            sample_data <= word_22;
            when 26 =>  dataws      <=  '1';
                            sample_data <= word_23;
            when 27 =>  dataws      <=  '1';
                            sample_data <= word_24;
            when 28 =>  dataws      <=  '1';
                            sample_data <= word_25;
            when 29 =>  dataws      <=  '1';
                            sample_data <= word_26;
            when 30 =>  dataws      <=  '1';
                            sample_data <= word_27;
            when 31 =>  dataws      <=  '1';
                            sample_data <= word_28;
            when 32 =>  dataws      <=  '1';
                            sample_data <= word_29;
            when 33 =>  dataws      <=  '1';
                            sample_data <= word_30;
            when 34 =>  dataws      <=  '1';
                            sample_data <= word_31;
            when 35 =>  dataws      <=  '1';
                            sample_data <= word_32;
            when 36 =>  dataws      <=  '1';
                            sample_data <= word_33;
            when 37 =>  dataws      <=  '1';
                            sample_data <= word_34;
            when 38 =>  dataws      <=  '1';
                            sample_data <= word_35;
            when 39 =>  dataws      <=  '1';
                            sample_data <= word_36;
            when 40 =>  dataws      <=  '1';
                            sample_data <= word_37;
            when 41 =>  dataws      <=  '1';
                            sample_data <= word_38;
            when 42 =>  dataws      <=  '1';
                            sample_data <= word_39;
            when 43 =>  dataws      <=  '1';
                            sample_data <= word_40;
            when 44 =>  dataws      <=  '1';
                            sample_data <= word_41;
            when 45 =>  dataws      <=  '1';
                            sample_data <= word_42;
            when 46 =>  dataws      <=  '1';
                            sample_data <= word_43;
            when 47 =>  dataws      <=  '1';
                            sample_data <= word_44;
            when 48 =>  dataws      <=  '1';
                            sample_data <= word_45;
            when 49 =>  dataws      <=  '1';
                            sample_data <= word_46;
            when 50 =>  dataws      <=  '1';
                            sample_data <= word_47;
            when 51 =>  dataws      <=  '1';
                            sample_data <= word_48;
            when 52 =>  dataws      <=  '1';
                            sample_data <= word_49;
            when 53 =>  dataws      <=  '1';
                            sample_data <= word_50;
            when 54 =>  dataws      <=  '1';
                            sample_data <= word_51;
            when 55 =>  dataws      <=  '1';
                            sample_data <= word_52;
            when 56 =>  dataws      <=  '1';
                            sample_data <= word_53;
            when 57 =>  dataws      <=  '1';
                            sample_data <= word_54;
            when 58 =>  dataws      <=  '1';
                            sample_data <= word_55;
            when 59 =>  dataws      <=  '1';
                            sample_data <= word_56;
            when 60 =>  dataws      <=  '1';
                            sample_data <= word_57;
            when 61 =>  dataws      <=  '1';
                            sample_data <= word_58;
            when 62 =>  dataws      <=  '1';
                            sample_data <= word_59;
            when 63 =>  dataws      <=  '1';
                            sample_data <= word_60;
            when 64 =>  dataws      <=  '1';
                            sample_data <= word_61;
            when 65 =>  dataws      <=  '1';
                            sample_data <= word_62;
            when 66 =>  dataws      <=  '1';
                            sample_data <= word_63;
            when 67 =>  dataws      <=  '1';
                            sample_data <= word_64;
            when 68 =>  dataws      <=  '1';
                            sample_data <= word_65;
            when 69 =>  dataws      <=  '1';
                            sample_data <= word_66;
            when 70 =>  dataws      <=  '1';
                            sample_data <= word_67;
            when 71 =>  dataws      <=  '1';
                            sample_data <= word_68;
            when 72 =>  dataws      <=  '1';
                            sample_data <= word_69;
            when 73 =>  dataws      <=  '1';
                            sample_data <= word_70;
            when 74 =>  dataws      <=  '1';
                            sample_data <= word_71;

            when 75 to window_counter+3 =>  dataws      <=  '1';
                                                        case mode_bit3 is
                                                            --Upcounter
                                                            when "000"  =>  counter     <=  counter +'1';
                                                                                sample_data <=  counter;
                                                            --Downcounter
                                                            when "001"  =>  counter     <=  counter -'1';
                                                                                sample_data <=  counter;
                                                            --Constant AA55
                                                            when "010"  =>  sample_data <=  data_AA55;
                                                            --Stretch Mode
                                                            when "011"  =>  test_sample <=  test_sample +'1';
                                                                                sample_data <=  test_sample & test_sample;
                                                            --Fixed Mode
                                                            when "100"  =>  sample_data <=  input_data & input_data;
                                                            --Random Sequence
                                                            when "111"  =>  random_flag <=  '1';
                                                                                sample_data <=  data_in;
                                                            when others =>  sample_data <=  (others=>'0');
                                                        end case;
            when window_counter+4       =>  sample_data <=  word_trailer;
            when window_counter+5   =>  dataws      <=  '0';
                                                random_flag <=  '0';
                                                sample_data <=  (others=>'0');
            when time_period_counter    => count            <=   0;
            when others                     =>  dataws      <= '0';
                                                    sample_data <=  (others=>'0');  
        end case;                                                                           

        end if;
end if;     





--  --Upcounter
--          if(start_bit='1' and mode_bit3="000") then 
--          count       <=  count+1;
--          if(count=1) then
--              pkt_start   <=  '1';
--              dataws      <=  '0';
--          elsif(count=3) then
--              pkt_start   <=  '0';
--          elsif(count>=3 and count<(window_counter+4)) then
--              dataws      <=  '1';
--              sample_data <= sample_data +'1';
--          elsif(count=(window_counter+4)) then
--              dataws      <=  '0';
--              sample_data <= (others=>'0');
--          elsif(count=time_period_counter) then
--              count       <=  0;
--          end if;
--      end if;
--      
--  --Downcounter
--      if(start_bit='1' and mode_bit3="001") then 
--          count       <=  count+1;
--          if(count=1) then
--              pkt_start   <=  '1';
--              dataws      <=  '0';
--          elsif(count=3) then
--              pkt_start   <=  '0';
--          elsif(count>=3 and count<(window_counter+4)) then
--              dataws      <=  '1';
--              sample_data <= sample_data -'1';
--          elsif(count=(window_counter+4)) then
--              dataws      <=  '0';
--              sample_data <= (others=>'0');
--          elsif(count=time_period_counter) then
--              count       <=  0;
--          end if;
--      end if;
--  
--  --AA55
--      if(start_bit='1' and mode_bit3="010") then 
--          count   <=  count+1;
--          if(count=1) then
--              pkt_start   <=  '1';
--              dataws      <=  '0';
--          elsif(count=3) then
--              pkt_start   <=  '0';
--          elsif(count>=3 and count<(window_counter+4)) then
--              dataws      <=  '1';
--              sample_data <=  data_AA55;
--          elsif(count=(window_counter+4)) then
--              dataws      <=  '0';
--              sample_data <= (others=>'0');
--          elsif(count=time_period_counter) then
--              count       <=  0;
--          end if;
--      end if;
--      
--  --Stretch mode
--      if(start_bit='1' and mode_bit3="011") then 
--          count<=count+1;
--          if(count=1) then
--              pkt_start   <=  '1';
--              dataws      <=  '0';
--          elsif(count=3) then
--              pkt_start   <=  '0';
--          elsif(count>=3 and count<(window_counter+4)) then
--              dataws      <=  '1';
--              test_sample <=  test_sample +'1';
--              sample_data <=  test_sample & test_sample;
--          elsif(count=(window_counter+4)) then
--              dataws      <=  '0';
--              sample_data <= (others=>'0');
--              test_sample <= (others=>'0');
--          elsif(count=time_period_counter) then
--              count       <=  0;
--          end if;
--      end if;
--      
--      --Fixed mode
--      if(start_bit='1' and mode_bit3="100") then 
--          count<=count+1;
--          if(count=1) then
--              pkt_start   <=  '1';
--              dataws      <=  '0';
--          elsif(count=3) then
--              pkt_start   <=  '0';
--          elsif(count>=3 and count<(window_counter+4)) then
--              dataws      <=  '1';
--              sample_data <=  input_data & input_data;
--          elsif(count=(window_counter+4)) then
--              dataws      <=  '0';
--              sample_data <= (others=>'0');
--          elsif(count=time_period_counter) then
--              count       <=  0;
--          end if;
--      end if;
--      
--      --Random sequence generator
--      if(start_bit='1' and mode_bit3="111") then
--          count<=count+1;
--          if(count=1) then
--              pkt_start   <=  '1';
--              dataws      <=  '0';
--          elsif(count=3) then
--              pkt_start   <=  '0';
--          elsif(count>=3 and count<(window_counter+4)) then
--              dataws          <=  '1';
--              random_flag     <=  '1';
--              sample_data     <=  data_in;
--          elsif(count=(window_counter+4)) then
--              dataws      <=  '0';
--              random_flag <=  '0';
--              sample_data <= (others=>'0');
--          elsif(count=time_period_counter) then
--              count       <=  0;
--          end if;
--      end if;

--  end if;     


end process;   
data    <=  sample_data;
end Behavioral;
user6514981
  • 13
  • 1
  • 6
  • See [How do I ask a good question?](https://stackoverflow.com/help/how-to-ask) You could have indicated the lines in question and removed all the non pertinent contents (e.g. lines 1 - 20, 482 - 587) and non involved constructs. The idea to provide a [Minimal, Complete, and Verifiable example](https://stackoverflow.com/help/mcve). If you'd shown the case statement with case expression, the four lines and declarations for visible objects it would have been enough. There's a 30,000 character limit on posts, yours approaches that. (They're semantic errors not syntax). –  Jul 05 '17 at 23:08

1 Answers1

0

In VHDL you can't use variables in case statements as choices, like you did. It must be static expressions, like "001" or 34, not for example signal, like time_period_counter.

Staszek
  • 849
  • 11
  • 28
  • 1
    IEEE Std 1076-2008 10.9 Case statement paragraph 7 (in part) "...Moreover, for an ordinary case statement, or for a matching case statement in which the expression is of an array type whose element type is BIT, each value of the (base) type of the expression shall be represented once and only once in the set of choices, and no other value is allowed. ..." A choice containing a non-static expression may not meet this requirement, the value of the expression specifying the condition potentially overlapping values of other choices. –  Jul 05 '17 at 23:08
  • Does it mean, that actually non static expression can be used, provided that it does not overlap other choices? – Staszek Jul 06 '17 at 07:35