/**************************************************************************

 **************************************************************************/

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET     4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

//******************
//define pros botões
#define pinoA 7
#define pinoB 8
//******************

//cabeçalho das funções

void menu(void);//Imprime o menu

void ranking (void);//Imprime o ranking

void creditos(void);//Imrpime os creditos

void fechar(void);//Fecha o jogo

int botao(void);//Move a seta e lê a seta, retorna um valor do tipo int
void seta(int a);//Imprime a seta, usa um parametro do tipo int

void jogadores(void);//Imprime os jogadores existentes
void dinossauro(void);//Imprime o desenho




void setup() {
  Serial.begin(9600);
  //declarando a funçao dos botoes
  pinMode(pinoA, INPUT_PULLUP);
  pinMode(pinoB, INPUT_PULLUP);
  
  display.begin(SSD1306_SWITCHCAPVCC, 0x3D);

  display.clearDisplay();
    
}



void loop() {
  
  //Declara variavel
  int pos;

  display.clearDisplay();

  //Chama a função 'menu'
  menu();
  //Chama a função 'botao'
  pos = botao();
  //Que retorna a posição da seta, um int
  //Esse int vai entrar no SWITCH CASE
  switch(pos){
    case 1:
      //Chama a função 'jogadores'
      delay(100);
      jogadores();
      delay(10);
      //Chama a função 'dinossauro'
      dinossauro();
      break;

    case 2:
      //Chama a função 'ranking'    
      ranking();
      break;

    case 3:
      //Chama a função 'creditos'
      creditos();
      break;

    case 4:
      //Chama a função 'fechar'
      fechar();
      break;
  }
  
  
}

void menu(void)
{
  //Imprime o menu na tela
  display.fillRect(10,0,108,15, WHITE);
  

  display.setTextSize(1);
  display.setTextColor(BLACK);

  display.setCursor(42, 4);
  display.print("DINOKILL");


  display.setTextSize(1);
  display.setTextColor(WHITE);

  display.setCursor(42, 20);
  display.print("JOGAR");

  display.setCursor(42, 30);
  display.print("Ranking");

  display.setCursor(42, 40);
  display.print("Creditos");

  display.setCursor(42, 50);
  display.print("Sair");

  display.display();

}

void ranking(void)
{
  //Imprime o ranking na tela
  display.clearDisplay();

  display.setTextSize(1);
  display.setTextColor(WHITE);

  display.setCursor(5,20);
  display.print("Felicio - 287");

  display.setCursor(5,30);
  display.print("Doglair - 259");
    
  display.setCursor(5,40);
  display.print("Cleverson - 180");

  display.display();

  delay(4000);

  display.clearDisplay();

}

void creditos(void)
{

  display.clearDisplay();

  //Imprime os creditos se movendo na tela atraves do LOOP FOR
  for(int i=0;i<110;i++)
  {
    //Limpa a tela
    display.clearDisplay();

    //Imprime na adicionando a 'i' para a posição
    display.setTextSize(1);
    display.setTextColor(WHITE);

    display.setCursor(28, 64-i);
    display.print("Carlos"); 
            
    display.setCursor(28, 74-i);
    display.print("Rafael"); 
           
    display.setCursor(28, 85-i);
    display.print("Reginaldo"); 
      
      
    display.setCursor(28, 95-i);
    display.print("Thiago");
      
    display.display();

  }

  display.display();

  delay(3500);  

  display.clearDisplay();

}

void fechar(void)
{
  //Imprime a mensagem de saida
  display.clearDisplay();

  display.setTextColor(WHITE);

  display.setCursor(5, 35);
  display.print("Jogo fechado!");

  display.setCursor(5, 50);
  display.print("DINO KILL");

  display.display();

  delay(4000);  

  display.clearDisplay();
}

int botao(void)
{
  //Declara variaveis
  int botaoA = 1;
  int botaoB = 1;
  int botaoAA = 1;
  int cursor = 1;

  //Começa o LOOP
  do{

    //Lê os botões
    botaoB = digitalRead(pinoB);
    botaoA = digitalRead(pinoA);
    delay(10);
    //Lê o botão com o delay 
    botaoAA = digitalRead(pinoA);
    //Se houve alteração na subtração a mode de dar 1 vai entrar no IF
    if((botaoA-botaoAA)==1)
    {
      //IF e ELSE que vai alterar o valor de 'cursor' até um maximo de 4
      if(cursor>=4)
      {
        cursor = 1;
      }
      else
      {
        cursor++;
      }
     
      
    }
    //Chama a função 'seta' com o parametro 'cursor'
    seta(cursor);

    //Enquanto não apertar o segundo botão para mudar o valor de
    //'botaoB' o LOOP vai continuar
  }while(botaoB==1);
  //Quando o loop acabar, a função vai retornar o valor de 'cursor'
  return cursor;

}

void seta(int a)
{

  display.display();
  //Entre no SWITCH CASE com o parametro passado para a função
  //SWITCH CASE que vai decidir qual seta imprimir
  //Vai imprimir 3 setas pretas e 1 seta branca
  //de acordo com o valor de 'a'
  switch(a){
    case 1:
      
      display.setTextSize(1);
      display.setTextColor(WHITE);
      display.setCursor(28, 20);
      display.print("->");

      display.setTextSize(1);
      display.setTextColor(BLACK);
      display.setCursor(28, 30);
      display.print("->"); 
      display.setCursor(28, 40);
      display.print("->"); 
      display.setCursor(28, 50);
      display.print("->"); 
      display.display();

      break;

    case 2:
      
      display.setTextSize(1);
      display.setTextColor(WHITE);
      display.setCursor(28, 30);
      display.print("->");

      display.setTextSize(1);
      display.setTextColor(BLACK);
      display.setCursor(28, 20);
      display.print("->"); 
      display.setCursor(28, 40);
      display.print("->"); 
      display.setCursor(28, 50);
      display.print("->"); 
      display.display();  

      break;

    case 3:
      
      display.setTextSize(1);
      display.setTextColor(WHITE);
      display.setCursor(28, 40);
      display.print("->"); 

      display.setTextSize(1);
      display.setTextColor(BLACK);
      display.setCursor(28, 20);
      display.print("->"); 
      display.setCursor(28, 30);
      display.print("->"); 
      display.setCursor(28, 50);
      display.print("->");  
      display.display();

      break;

    case 4:
      
      display.setTextSize(1);
      display.setTextColor(WHITE);
      display.setCursor(28, 50);
      display.print("->"); 
      
      display.setTextSize(1);
      display.setTextColor(BLACK);
      display.setCursor(28, 20);
      display.print("->"); 
      display.setCursor(28, 30);
      display.print("->"); 
      display.setCursor(28, 40);
      display.print("->"); 
      display.display();

      break;  
  }  
  
}

void jogadores (void)
{
  //Declara variavel
  int pos;

  //Imprime os jogadores
  display.clearDisplay();

  display.fillRect(10,0,108,15, WHITE);

  display.setTextSize(1);
  display.setTextColor(WHITE);

  display.setCursor(42, 20);
  display.print("Felicio") ;

  display.setCursor(42, 30);
  display.print("Doglair");

  display.setCursor(42, 40);
  display.print("Cleverson");
  
  display.setCursor(42, 50);
  display.print("NOVO JOGADOR");
  
  display.display();

  //Chama a função 'botao' para imprimir as seta
  pos = botao();
  //Variavel 'pos' sem utilidade ainda
}


void dinossauro(void)
{
  
  
  display.clearDisplay();

  // desenha o dinossauro

  // **desenha a cabeça
  display.fillRect(71, 28, 14, 11, SSD1306_WHITE);
  display.fillRect(70, 29, 1, 9, SSD1306_WHITE);
  display.fillRect(85, 29, 1, 10, SSD1306_WHITE);

  // **desenha o corpo

  // desenha um quadrado logo abaixo da cabeça
  display.fillRect(78, 39, 9, 13, SSD1306_WHITE);

  // desenha linha por linha das costas
  display.fillRect(87, 40, 1, 12, SSD1306_WHITE);
  display.fillRect(88, 41, 1, 11, SSD1306_WHITE);
  display.fillRect(89, 42, 1, 10, SSD1306_WHITE);
  display.fillRect(90, 43, 1, 9, SSD1306_WHITE);
  display.fillRect(91, 44, 1, 8, SSD1306_WHITE);
  display.fillRect(92, 45, 1, 7, SSD1306_WHITE);

  // desenha linha por linha da parte de baixo do corpo
  display.fillRect(79, 52, 14, 1, SSD1306_WHITE);
  display.fillRect(80, 53, 13, 1, SSD1306_WHITE);
  display.fillRect(81, 54, 11, 1, SSD1306_WHITE);

  // **desenha a cauda
  display.fillRect(93, 46, 1, 7, SSD1306_WHITE);
  display.fillRect(94, 46, 1, 6, SSD1306_WHITE);
  display.fillRect(95, 45, 1, 6, SSD1306_WHITE);
  display.fillRect(96, 44, 1, 6, SSD1306_WHITE);
  display.fillRect(97, 42, 1, 7, SSD1306_WHITE);
  display.fillRect(98, 40, 1, 8, SSD1306_WHITE);

  // **desenha o braço
  display.fillRect(76, 43, 2, 1, SSD1306_WHITE);
  display.fillRect(76, 44, 1, 1, SSD1306_WHITE);

  // **desenha as perna

  // desenha a parte onde as pernas se juntam
  display.fillRect(82, 55, 9, 2, SSD1306_WHITE);

  // perna da esquerda
  display.fillRect(82, 57, 3, 2, SSD1306_WHITE);
  display.fillRect(82, 59, 2, 3, SSD1306_WHITE);
  display.fillRect(80, 62, 4, 2, SSD1306_WHITE);

  // perna da direita
  display.fillRect(88, 57, 3, 2, SSD1306_WHITE);
  display.fillRect(89, 59, 2, 3, SSD1306_WHITE);
  display.fillRect(87, 62, 4, 2, SSD1306_WHITE);

  // **desenha o olho e a boca

  // desenha o olho
  display.fillRect(82, 31, 1, 1, SSD1306_BLACK);

  // desenha a boca
  display.fillRect(70, 36, 7, 1, SSD1306_BLACK);

  display.display();

  // ******************************
  // ******************************
  // ******************************
  // loop para testar os movimentos
  // fiz esse loop so para desenhar os movimentos,
  // na hora de aplicar acredito que é melhor fazer uma função
  // para chamar cada um desses if e else if
  // ******************************
  // ******************************
  // ******************************

  int teste = 0;
  int i, j;

  // variavel para os passos
  int passo = 0;

  // variavel para abaixar
  int abaixar = 0;

  // variavel para pular
  int pular = 0;

  do{

    abaixar += 1;
    pular += 1;
    display.display();




    delay(10);


    //if e else if para mexer as pernas
    if(passo==0 && pular <= 60)
    {
      // apaga as pernas
      display.fillRect(80, 60, 11, 4, SSD1306_BLACK); 

      //  desenha a perna da direita
      display.fillRect(88, 57, 3, 2, SSD1306_WHITE);
      display.fillRect(89, 59, 2, 3, SSD1306_WHITE);
      display.fillRect(87, 62, 4, 2, SSD1306_WHITE);   

      // ergue o pé da esquerda
      display.fillRect(82, 59, 2, 3, SSD1306_WHITE);
      display.fillRect(80, 60, 4, 2, SSD1306_WHITE);

      passo = 1;     

    }
    else if(passo==1 && pular <= 60)
    {
      // apaga as pernas
      display.fillRect(80, 60, 11, 4, SSD1306_BLACK); 

      //  desenha a perna da esquerda
      display.fillRect(82, 57, 3, 2, SSD1306_WHITE);
      display.fillRect(82, 59, 2, 3, SSD1306_WHITE);
      display.fillRect(80, 62, 4, 2, SSD1306_WHITE);   

      // ergue o pé da direta
      display.fillRect(89, 59, 2, 3, SSD1306_WHITE);
      display.fillRect(87, 60, 4, 2, SSD1306_WHITE);

      passo = 0;      
    }

    // if e else if para abaixar e levantar
    if(abaixar>20 && abaixar<40)
    {
      // apaga a parte levantada do corpo
      display.fillRect(70, 28, 22, 26, SSD1306_BLACK);

      // desenha o corpo abaixado

      // desenha a cabeça
      display.fillRect(54, 42, 14, 11, SSD1306_WHITE);
      display.fillRect(53, 43, 1, 9, SSD1306_WHITE);
      display.fillRect(68, 43, 1, 10, SSD1306_WHITE);

      // desenha olho e a boca
      display.fillRect(65, 45, 1, 1, SSD1306_BLACK);
      display.fillRect(53, 50, 7, 1, SSD1306_BLACK);

      // desenha o corpo abaixado
      display.fillRect(69, 45, 23, 9, SSD1306_WHITE);
      display.fillRect(71, 44, 20, 1, SSD1306_WHITE);
      display.fillRect(73, 43, 15, 1, SSD1306_WHITE);

      // desenha o braço
      display.fillRect(69, 55, 2, 1, SSD1306_WHITE);
      display.fillRect(70, 54, 1, 1, SSD1306_WHITE);

    }
    else if(abaixar>40)
    {
      // apaga a parte abaixada do corpo
      display.fillRect(53, 42, 38, 12, SSD1306_BLACK);
      display.fillRect(69, 54, 2, 2, SSD1306_BLACK);

      // desenha o corpo levantado
      
      // desenha a cabeça
      display.fillRect(71, 28, 14, 11, SSD1306_WHITE);
      display.fillRect(70, 29, 1, 9, SSD1306_WHITE);
      display.fillRect(85, 29, 1, 10, SSD1306_WHITE);

      // desenha o olho e a boca
      display.fillRect(82, 31, 1, 1, SSD1306_BLACK);
      display.fillRect(70, 36, 7, 1, SSD1306_BLACK);

      // desenha o corpo

      // desenha um quadrado logo abaixo da cabeça
      display.fillRect(78, 39, 9, 13, SSD1306_WHITE);

      // desenha linha por linha das costas
      display.fillRect(87, 40, 1, 12, SSD1306_WHITE);
      display.fillRect(88, 41, 1, 11, SSD1306_WHITE);
      display.fillRect(89, 42, 1, 10, SSD1306_WHITE);
      display.fillRect(90, 43, 1, 9, SSD1306_WHITE);
      display.fillRect(91, 44, 1, 8, SSD1306_WHITE);
      display.fillRect(92, 45, 1, 7, SSD1306_WHITE);

      // desenha algumas linhas da parte de baixo
      display.fillRect(79, 52, 14, 1, SSD1306_WHITE);
      display.fillRect(80, 53, 13, 1, SSD1306_WHITE);

      // desenha o braço
      display.fillRect(76, 43, 2, 1, SSD1306_WHITE);
      display.fillRect(76, 44, 1, 1, SSD1306_WHITE);

      abaixar = 0;
    }

    // coloquei esse && abaixar<20; so para realmente não ter
    // falta de sincronia nos testes
    if(pular==60 && abaixar<20)
    {
      

      // coloquei esse abaixar = 0; pra não ter falta de sincronia
      abaixar = 0;

      // loop para movimentar o boneco pra cima
      for(i=0;i<26;i++)
      {
        
        display.display();

        // **desenha a cabeça
        display.fillRect(71, 28-i, 14, 11, SSD1306_WHITE);
        display.fillRect(70, 29-i, 1, 9, SSD1306_WHITE);
        display.fillRect(85, 29-i, 1, 10, SSD1306_WHITE);

        // **desenha o corpo

        display.fillRect(78, 39-i, 9, 13, SSD1306_WHITE);
        display.fillRect(87, 40-i, 1, 12, SSD1306_WHITE);
        display.fillRect(88, 41-i, 1, 11, SSD1306_WHITE);
        display.fillRect(89, 42-i, 1, 10, SSD1306_WHITE);
        display.fillRect(90, 43-i, 1, 9, SSD1306_WHITE);
        display.fillRect(91, 44-i, 1, 8, SSD1306_WHITE);
        display.fillRect(92, 45-i, 1, 7, SSD1306_WHITE);
        display.fillRect(79, 52-i, 14, 1, SSD1306_WHITE);
        display.fillRect(80, 53-i, 13, 1, SSD1306_WHITE);
        display.fillRect(81, 54-i, 11, 1, SSD1306_WHITE);

        // **desenha a cauda

        display.fillRect(93, 46-i, 1, 7, SSD1306_WHITE);
        display.fillRect(94, 46-i, 1, 6, SSD1306_WHITE);
        display.fillRect(95, 45-i, 1, 6, SSD1306_WHITE);
        display.fillRect(96, 44-i, 1, 6, SSD1306_WHITE);
        display.fillRect(97, 42-i, 1, 7, SSD1306_WHITE);
        display.fillRect(98, 40-i, 1, 8, SSD1306_WHITE);

        // **desenha o braço

        display.fillRect(76, 43-i, 2, 1, SSD1306_WHITE);
        display.fillRect(76, 44-i, 1, 1, SSD1306_WHITE);

        // **desenha as perna

        display.fillRect(82, 55-i, 9, 2, SSD1306_WHITE);
        display.fillRect(82, 57-i, 3, 2, SSD1306_WHITE);
        display.fillRect(82, 59-i, 2, 3, SSD1306_WHITE);
        display.fillRect(80, 62-i, 4, 2, SSD1306_WHITE);
        display.fillRect(88, 57-i, 3, 2, SSD1306_WHITE);
        display.fillRect(89, 59-i, 2, 3, SSD1306_WHITE);
        display.fillRect(87, 62-i, 4, 2, SSD1306_WHITE);

        // **desenha o olho e a boca

        display.fillRect(82, 31-i, 1, 1, SSD1306_BLACK);
        display.fillRect(70, 36-i, 7, 1, SSD1306_BLACK);

        delay(1);

        // apaga o que fica pra tras quando levanta um pixel
        display.fillRect(70, 38-i, 1, 1, SSD1306_BLACK);
        display.fillRect(71, 39-i, 7, 1, SSD1306_BLACK);
        display.fillRect(76, 45-i, 1, 1, SSD1306_BLACK);
        display.fillRect(77, 44-i, 1, 1, SSD1306_BLACK);
        display.fillRect(78, 52-i, 1, 1, SSD1306_BLACK);
        display.fillRect(79, 53-i, 1, 1, SSD1306_BLACK);
        display.fillRect(80, 54-i, 1, 1, SSD1306_BLACK);
        display.fillRect(81, 55-i, 1, 1, SSD1306_BLACK);
        display.fillRect(80, 64-i, 4, 1, SSD1306_BLACK);
        display.fillRect(84, 59-i, 1, 1, SSD1306_BLACK);
        display.fillRect(85, 57-i, 3, 1, SSD1306_BLACK);
        display.fillRect(88, 59-i, 1, 1, SSD1306_BLACK);
        display.fillRect(87, 64-i, 4, 1, SSD1306_BLACK);
        display.fillRect(91, 55-i, 1, 1, SSD1306_BLACK);
        display.fillRect(92, 54-i, 1, 1, SSD1306_BLACK);
        display.fillRect(93, 53-i, 1, 1, SSD1306_BLACK);
        display.fillRect(94, 52-i, 1, 1, SSD1306_BLACK);
        display.fillRect(95, 51-i, 1, 1, SSD1306_BLACK);
        display.fillRect(96, 50-i, 1, 1, SSD1306_BLACK);
        display.fillRect(97, 49-i, 1, 1, SSD1306_BLACK);
        display.fillRect(98, 48-i, 1, 1, SSD1306_BLACK);



      }
    }
    else if(pular==65 && abaixar<20)
    {
    
      // para não ter falta de sincronia no teste
      abaixar = 0;
      
      //loop para movimentar o boneco para baixo

      for(j=0;j<26;j++)
      {
       
       display.display();

        // (y-25) porque é a posição por qual tem que começar a cair

        // **desenha a cabeça
        display.fillRect(71, (28-25)+j, 14, 11, SSD1306_WHITE);
        display.fillRect(70, (29-25)+j, 1, 9, SSD1306_WHITE);
        display.fillRect(85, (29-25)+j, 1, 10, SSD1306_WHITE);

        // **desenha o corpo

        display.fillRect(78, (39-25)+j, 9, 13, SSD1306_WHITE);
        display.fillRect(87, (40-25)+j, 1, 12, SSD1306_WHITE);
        display.fillRect(88, (41-25)+j, 1, 11, SSD1306_WHITE);
        display.fillRect(89, (42-25)+j, 1, 10, SSD1306_WHITE);
        display.fillRect(90, (43-25)+j, 1, 9, SSD1306_WHITE);
        display.fillRect(91, (44-25)+j, 1, 8, SSD1306_WHITE);
        display.fillRect(92, (45-25)+j, 1, 7, SSD1306_WHITE);
        display.fillRect(79, (52-25)+j, 14, 1, SSD1306_WHITE);
        display.fillRect(80, (53-25)+j, 13, 1, SSD1306_WHITE);
        display.fillRect(81, (54-25)+j, 11, 1, SSD1306_WHITE);

        // **desenha a cauda

        display.fillRect(93, (46-25)+j, 1, 7, SSD1306_WHITE);
        display.fillRect(94, (46-25)+j, 1, 6, SSD1306_WHITE);
        display.fillRect(95, (45-25)+j, 1, 6, SSD1306_WHITE);
        display.fillRect(96, (44-25)+j, 1, 6, SSD1306_WHITE);
        display.fillRect(97, (42-25)+j, 1, 7, SSD1306_WHITE);
        display.fillRect(98, (40-25)+j, 1, 8, SSD1306_WHITE);

        // **desenha o braço

        display.fillRect(76, (43-25)+j, 2, 1, SSD1306_WHITE);
        display.fillRect(76, (44-25)+j, 1, 1, SSD1306_WHITE);

        // **desenha as perna

        display.fillRect(82, (55-25)+j, 9, 2, SSD1306_WHITE);
        display.fillRect(82, (57-25)+j, 3, 2, SSD1306_WHITE);
        display.fillRect(82, (59-25)+j, 2, 3, SSD1306_WHITE);
        display.fillRect(80, (62-25)+j, 4, 2, SSD1306_WHITE);
        display.fillRect(88, (57-25)+j, 3, 2, SSD1306_WHITE);
        display.fillRect(89, (59-25)+j, 2, 3, SSD1306_WHITE);
        display.fillRect(87, (62-25)+j, 4, 2, SSD1306_WHITE);

        // **desenha o olho e a boca

        display.fillRect(82, (31-25)+j, 1, 1, SSD1306_BLACK);
        display.fillRect(70, (36-25)+j, 7, 1, SSD1306_BLACK);

        delay(1);

        // apaga o que fica pra tras quando abaixa um pixel
        
        display.fillRect(70, (28-25)+j, 1, 1, SSD1306_BLACK);
        display.fillRect(71, (27-25)+j, 14, 1, SSD1306_BLACK);
        display.fillRect(85, (28-25)+j, 1, 1, SSD1306_BLACK);
        display.fillRect(86, (38-25)+j, 1, 1, SSD1306_BLACK);
        display.fillRect(87, (39-25)+j, 1, 1, SSD1306_BLACK);
        display.fillRect(88, (40-25)+j, 1, 1, SSD1306_BLACK);
        display.fillRect(89, (41-25)+j, 1, 1, SSD1306_BLACK);
        display.fillRect(90, (42-25)+j, 1, 1, SSD1306_BLACK);
        display.fillRect(91, (43-25)+j, 1, 1, SSD1306_BLACK);
        display.fillRect(92, (44-25)+j, 1, 1, SSD1306_BLACK);
        display.fillRect(93, (45-25)+j, 2, 1, SSD1306_BLACK);
        display.fillRect(95, (44-25)+j, 1, 1, SSD1306_BLACK);
        display.fillRect(96, (43-25)+j, 1, 1, SSD1306_BLACK);
        display.fillRect(97, (41-25)+j, 1, 1, SSD1306_BLACK);
        display.fillRect(98, (40-25)+j, 1, 1, SSD1306_BLACK);
        display.fillRect(80, (61-25)+j, 2, 1, SSD1306_BLACK);
        display.fillRect(87, (61-25)+j, 2, 1, SSD1306_BLACK);
        display.fillRect(76, (42-25)+j, 2, 1, SSD1306_BLACK);


      }
      
      pular = 0;

    }

  //LOOP vai continuar até ler o pinoB
  }while(digitalRead(pinoB));

  delay(1000);

}