Ir para conteúdo
Fórum Script Brasil

anabon

Membros
  • Total de itens

    56
  • Registro em

  • Última visita

Posts postados por anabon

  1. Bom dia Caros,

     

      Primeiro quero pedir desculpas caso este poste esteja no lugar errado, primeira vez postando linguagem web aqui.

       Então ... preciso desenvolver um playlist onde o usuário escolha o gênero que deseja e este play percorra a pasta tocando as músicas em sequencia até o ultimo áudio da pasta ou até que o usuário interrompa esta execução.  O que  consegui até agora foi um play onde ele executa uma sequencia automática, porém as músicas executadas são todas setadas no HTML, queria uma maneira de fazer um "WHILE"  ou algo parecido para que ele leia e execute até que termine.

     Desde já agradeço imensamente que puder me ajudar!!!! Segue abaixo o que consegui até agora!!!

     

    Estou usando HTML, JS e CSS ... Obs: este loop pode ser em js ou php


     

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
            <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
            <link rel="stylesheet" type="text/css" href="css/estilo.css">
    
    
    </head>
    <body>
        
    <div class="example">
        <audio id="audio" preload="auto" tabindex="0" controls="" type="audio/mpeg">
            <source type="audio/mp3" src="Music/01.mp3">
            Sorry, your browser does not support HTML5 audio.
        </audio>
        <ul id="playlist">
            <li class="active"><a href="Music/02.mp3">Ravel Bolero</a></li>
            <li><a href="Music/03.mp3">Moonlight Sonata - Beethoven</a></li>
            <li><a href="Music/04.mp3">Canon in D Pachabel</a></li>
            <li><a href="Music/05.zip">patrikbkarl chamber symph</a></li>
    
        </ul>
     
        <script type="text/javascript">
            var audio;
    var playlist;
    var tracks;
    var current;
    
    init();
    function init(){
        current = 0;
        audio = $('audio');
        playlist = $('#playlist');
        tracks = playlist.find('li a');
        len = tracks.length - 1;
        audio[0].volume = .10;
        audio[0].play();
        playlist.find('a').click(function(e){
            e.preventDefault();
            link = $(this);
            current = link.parent().index();
            run(link, audio[0]);
        });
        audio[0].addEventListener('ended',function(e){
            current++;
            if(current == len){
                current = 0;
                link = playlist.find('a')[0];
            }else{
                link = playlist.find('a')[current];    
            }
            run($(link),audio[0]);
        });
    }
    function run(link, player){
            player.src = link.attr('href');
            par = link.parent();
            par.addClass('active').siblings().removeClass('active');
            audio[0].load();
            audio[0].play();
    }
        </script>
    </body>
    </body>
    
    </body>
    </html>

     

     

  2. Boa tarde,

      Obrigada Jhonas por me responder, realmente estou com dificuldade nesse laços de repetição, corrigi o codigo em parte deu certo, Esse while not com o filter do data set utilizo em varias partes e sempre me deu o resultado que busco.

        Porém nesta parte do codigo ele só me retorna o ultimo registro .

    Ex: x- salada

         X - Bacon

     

    ele me retorna

     

    X_ Bacon

    X-Bacon

    Já tentei utilizar um clientdataset.firts antes do EOF, porém não obtive resultado ....

    Agradeço imensamente que puder me ajudar

    Obrigada..

     

    COdigo que estou utilizando:

       Loops := 1;
    
    
        For A := 0 to loops  do // Ajuste aqui para vender mais itens
    
        begin
    
        with Det.Add do
        begin
          nItem := A;
         Frmfinalizar_Venda.ClientDataSet2.Open;
        Frmfinalizar_Venda.ClientDataSet2.Filter := '[n_pedido] = ' + QuotedStr(FrmVenda_Balcao.lblpedido.Caption);
          Frmfinalizar_Venda. ClientDataSet2.Filtered := True; // ativa o filtro
        Frmfinalizar_Venda.ClientDataSet2.First;
    
         while not Frmfinalizar_Venda.ClientDataSet2.Eof do
          BEGIN
    
          Prod.cProd :=  Frmfinalizar_Venda.ClientDataSet2.FieldByName('COD_PRODUTO').AsString;
          Prod.cEAN := '6291041500213';
          Prod.xProd := Frmfinalizar_Venda.ClientDataSet2.FieldByName('PRODUTO').AsString;
          Frmfinalizar_Venda.ClientDataSet2.Next;
          END;
          Frmfinalizar_Venda.ClientDataSet3.Open;
          Frmfinalizar_Venda.ClientDataSet3.Filter := '[cod_produto] = ' + QuotedStr(Frmfinalizar_Venda.ClientDataSet2.FieldByName('cod_produto').AsString);
          Frmfinalizar_Venda.ClientDataSet3.Filtered := True; // ativa o filtro
          while not Frmfinalizar_Venda.ClientDataSet3.Eof do
          begin
          prod.NCM := Frmfinalizar_Venda.ClientDataSet3.FieldByName('NCM').AsString;
          Prod.CFOP := Frmfinalizar_Venda.ClientDataSet3.FieldByName('cfop').AsString;
          Prod.uCom := Frmfinalizar_Venda.ClientDataSet3.FieldByName('unidade_medida').AsString;
          Frmfinalizar_Venda.ClientDataSet3.Next;
          end;
           while not Frmfinalizar_Venda.ClientDataSet2.Eof do
           BEGIN
          Prod.qCom := Frmfinalizar_Venda.ClientDataSet2.FieldByName('QUANTIDADE').AsInteger;
          Prod.vUnCom := Frmfinalizar_Venda.ClientDataSet2.FieldByName('VALOR_UN').AsFloat;
          Prod.indRegra := irTruncamento;
          Prod.vDesc := StrToCurr(Frmfinalizar_Venda.txtdesconto.text);
           Frmfinalizar_Venda.ClientDataSet2.Next;
          END;

     

  3. Boa noite,

      Consegui em partes com o seguinte código:
      

      For A := 0 to loops  do // Ajuste aqui para vender mais itens
         Loops := Loops + A;
        begin
    
        with Det.Add do
        begin
          nItem := A + (A * 0);
         WHILE NOT Frmfinalizar_Venda.ClientDataSet2.Eof DO
          BEGIN
          Prod.cProd :=  Frmfinalizar_Venda.ClientDataSet2.FieldByName('COD_PRODUTO').AsString;
          Prod.cEAN := '6291041500213';
          Prod.xProd := Frmfinalizar_Venda.ClientDataSet2.FieldByName('PRODUTO').AsString;
          Frmfinalizar_Venda.ClientDataSet3.Open;
          Frmfinalizar_Venda.ClientDataSet3.Filter := '[cod_produto] = ' + QuotedStr(Frmfinalizar_Venda.ClientDataSet2.FieldByName('cod_produto').AsString);
          Frmfinalizar_Venda.ClientDataSet3.Filtered := True; // ativa o filtro
          while not Frmfinalizar_Venda.ClientDataSet3.Eof do
          begin
          prod.NCM := Frmfinalizar_Venda.ClientDataSet3.FieldByName('NCM').AsString;
          Prod.CFOP := Frmfinalizar_Venda.ClientDataSet3.FieldByName('cfop').AsString;
          Prod.uCom := Frmfinalizar_Venda.ClientDataSet3.FieldByName('unidade_medida').AsString;
          Frmfinalizar_Venda.ClientDataSet3.Next;
          end;

     Mas ele só me traz o ultimo item ... por exemplo:

    X - Salada 15,00

    X - Bacon 20,00

    ---------------------------------------------------------------------

     

    Ele só emite o X-Bacon ....

    Mas uma vez agradeço muito quem puder me ajudar

     

  4. Boa noite Jhonas,

     

       Obrigada pela atenção. Já usei o black point ... dessa maneira como esta ele sai apenas um item, o que quero é Emitir mais que um ...

     Tentei da seguinte maneira
     

    Loops := 0;
    
    
        For A := 0 to loops  do // Ajuste aqui para vender mais itens
         Loops := Loops + A;
        begin
    
        with Det.Add do
        begin
          nItem := A + (A * 3);
         WHILE NOT Frmfinalizar_Venda.ClientDataSet2.Eof DO
          BEGIN
          Prod.cProd :=  Frmfinalizar_Venda.ClientDataSet2.FieldByName('COD_PRODUTO').AsString;
          Prod.cEAN := '6291041500213';
          Prod.xProd := Frmfinalizar_Venda.ClientDataSet2.FieldByName('PRODUTO').AsString;
          Frmfinalizar_Venda.ClientDataSet3.Open;
          Frmfinalizar_Venda.ClientDataSet3.Filter := '[cod_produto] = ' + QuotedStr(Frmfinalizar_Venda.ClientDataSet2.FieldByName('cod_produto').AsString);
          Frmfinalizar_Venda.ClientDataSet3.Filtered := True; // ativa o filtro
          while not Frmfinalizar_Venda.ClientDataSet3.Eof do
          begin
          prod.NCM := Frmfinalizar_Venda.ClientDataSet3.FieldByName('NCM').AsString;
          Prod.CFOP := Frmfinalizar_Venda.ClientDataSet3.FieldByName('cfop').AsString;
          Prod.uCom := Frmfinalizar_Venda.ClientDataSet3.FieldByName('unidade_medida').AsString;
          Frmfinalizar_Venda.ClientDataSet3.Next;
          end;

     

      Mas o retorno que tenho no xml é o seguinte:

        </dest>
          <det nItem="4">
             <prod>
                <cProd>3</cProd>
                <cEAN>6291041500213</cEAN>
                <xProd>X BACON</xProd>
                <NCM>19022000</NCM>
                <CFOP>5405</CFOP>
                <uCom>UN</uCom>
                <qCom>1.0000</qCom>
                <vUnCom>20.00</vUnCom>
                <indRegra>A</indRegra>
                <obsFiscoDet xCampoDet="campo">
                   <xTextoDet>texto</xTextoDet>
                </obsFiscoDet>
             </prod>
             <imposto>
                <vItem12741>2.40</vItem12741>
                <ICMS>
                   <ICMSSN102>
                      <Orig>0</Orig>
                      <CSOSN>102</CSOSN>
                   </ICMSSN102>
                </ICMS>
                <PIS>
                   <PISSN>
                      <CST>49</CST>
                   </PISSN>
                </PIS>
                <COFINS>
                   <COFINSSN>
                      <CST>49</CST>
                   </COFINSSN>
                </COFINS>
             </imposto>
             <infAdProd>Informacoes adicionais</infAdProd>
          </det>
          <total>
             <vCFeLei12741>1.23</vCFeLei12741>
          </total>
          <pgto>
             <MP>
                <cMP>01</cMP>
                <vMP>50.00</vMP>
             </MP>
          </pgto>
       </infCFe>
    </CFe> )
    27/02/18 00:32:41:600 -   Gravando XML Venda enviado: C:\tdbfastfood\Win32\Debug\Enviado\29299698000170\CFe\2018\02\27\AD20180227003241-663874-env.xml
    27/02/18 00:32:42:328 - NumeroSessao: 663874 - Resposta:663874|06010|1019|Numeração dos itens não é sequencial crescente||
    27/02/18 00:32:42:331 - EACBrSATErro - Nenhum CFe carregado na memória

     

       Desde já agradeço muito que puder me ajudar...

  5. Boa noite pessoal,

     

      Mais um vez peço a ajuda de vocês....  Estou adaptando o SAT em meu sistema, utilizando DELPHI + ACBr SAT tudo lindo maravilhoso, até tentar emitir mais de um item.  Na parte mais simples do código não sei o que fazer .... já tentei de tudo ... quando não pega somente o ultimo item, da erro de somatória de item ... aparece na tag  nitem uma contagem tipo 34.

       Desde já peço desculpas se for muito iniciante a solução, mas realmente estou batendo a cabeça... Uso Delphi RAD 10.2, banco firebirb. Segue abaixo parte do codigo que acredito que esteja o erro.

      Desde já agradeço imensamente quem puder me ajudar 
     

     Loops := max(Trunc(FrmConfig_SAT.seItensVenda.Value / 3)-1, 0);
    
        ClientDataSet2.Open;
        ClientDataSet2.Filter := '[n_pedido] = ' + QuotedStr(FrmVenda_Balcao.lblpedido.Caption);
        ClientDataSet2.Filtered := True; // ativa o filtro
    
         For A := 0 to loops  do   // Ajuste aqui para vender mais itens
    
        begin
        with Det.Add do
        begin
          nItem := 1 + (A * 3);
          WHILE NOT ClientDataSet2.Eof DO
          BEGIN
          Prod.cProd := ClientDataSet2.FieldByName('COD_PRODUTO').AsString;
          Prod.cEAN := '6291041500213';
          Prod.xProd := ClientDataSet2.FieldByName('PRODUTO').AsString;
          ClientDataSet3.Open;
          ClientDataSet3.Filter := '[cod_produto] = ' + QuotedStr(ClientDataSet2.FieldByName('cod_produto').AsString);
          ClientDataSet3.Filtered := True; // ativa o filtro
          while not ClientDataSet3.Eof do

     

  6. Boa tarde Jhonatas

     

      Obrigada pela pronta vontade em responder, mas não estou usando o servidor iis, criei um servidor datasnap Rest

    1 -New - outrs - DatasnapReset application - stalone alone application

    2-  VCL application

    3- Escolho a porta

    4 - opções escolhidas( Servs Methos Class, Saple WEB Fils,  Mobile Conectores)

    5 - TDataModule

     

    (para conectar o banco firebird utilizo (FDConection, FDQuery, FDMemtable1, FDPhysFBDriverLink))

    * Assim que crio o servidor/

    único código que coloquei
     

    function TServerMethods1.ListarCliente(Cod: String): TFDJsonDatasets;
    begin
       FDQuery1.Close;
       FDQuery1.SQL.Clear;
       FDQuery1.SQL.Add('select *from cadastro');
       FDQuery1.Open();
    
       Result := TFDJsonDatasets.create();
    
       TFDJSONDataSetsWriter.ListAdd(Result, FDQuery1);
    
    
    end;

    *** Para criar o app cliente ******

     

    1 - News - outrs - DatasnapReset Client Modulo

    2 - Remote Server

    3 -  Datasnap Alone Server

    4 -  Hostname - Ip minha maquina

    5 -coloco a mesma porta do servidor

     Já no mobiel utilizo (FDMemTable, FDStanStorageBinLink)

    codigo em apena um button
     

    procedure TForm1.SB_REFRESHClick(Sender: TObject);
    var
    RetCliente : TFDJsonDataSets;
    ItemAdd : TListViewItem;
    
    begin
    
    ShowMessage('OLÁ MUNDO');
    if ClientRest = nil then
    ClientRest := TServerMethods1Client.Create(ClientModule1.DSRestConnection1);
    
     RetCliente := ClientRest.ListarCliente ('');
    
      Assert (TFDJSONDatasetsReader.GetListCount(RetCliente) = 1);
      FDMemTable.Close;
      FDMemTable.AppendData(TFDJSONDataSetsReader.GetListValue(RetCliente, 0));
      FDMemTable.First;
    
       ListView1.Items.Clear;
    
      while not FDMemTable.Eof do
      begin
      ItemAdd := ListView1.Items.Add;
      ItemAdd.Text := FDMemTable.FieldByname ('nome').AsString;
      ItemAdd.Detail := FDMemTable.FieldByname('cod').Asstring;
    
       FDMemTable.Next;
    
       End;
    
      FDMemTable.Close;
    
    end;

     

      Grata quem puder me ajudar

     

      Ana Bon

     

     

     

     

  7. Bom dia Galera

      Estou fazendo um sistema delphi - android de teste ...

      Acompanhei um tutorial e criei um servidor datasnapREST e conectei o banco firebird nele,  criei uma nova aplicação desta x android e na hora de conectar o app ao servidor ... ele me da o erro.

      HTTP/ 1.1 500 INTERNAL SERVER ERROR

     Já pesquisei diversas vez na internet mas não consigo solucionar este erro ....

     

       Se aguem poder me ajudar, desde já agradeço

     

      Grata

     

      Ana Bon

  8. Boa tarde pessoal,

      Mais uma vez necessito do auxilio de vocês.

      Estou desenvolvendo um pequeno sistema de sincronização em delphi 10.2, tudo lindo e maravilhoso se estou em rede local.

      Porém o caso é que preciso localizar um diretório em uma rede externa. EX: estou no ip: 191.x.xx.xxx e a pasta está no ip :164.x.xx.xxx, para abrir o diretorio utilizo o seguinte codigo:

    if SelectDirectory('Selecione uma pasta', 'xxx.x.xx.xxx' , selDir) then
         txtorigem.Text := selDir;

    onde os "x" representam o IP da maquina a qual tenho que acessar o diretorio. Quando abro o diretorio e vou em rede não me aparece nada.Alguém teria uma ideia de como sanar esta questão...

     

      Desde de já agradeço quem puder me ajudar

     

      Grata

     

     

  9. Obrigada, mais uma vez ....

      deu certinho ... menos para um determinado arquivo .... no inicio do código verifico se o arquivo principal esta sendo utilizado para isso uso

    if  NOT FileOpen('C:\viennas\PARS.SAC',fmOpenReadWrite) = 0 then

    porém mesmo com ele fechado quando a copia se inicializa a mensagem que recebo do windows é que ele esta aberto pelo meu exe (do delphi). Já tentei diversas formar de fechar o mesmo, e até da um free e refresh no form, mas de nada me adianto segue em anexo a menssagem recebida pelo windows...

     

    Mas uma vez desde já agradeço!!!!

     

    errocopia.jpg

  10. Muito obrigada  Leo_Cj, deu certo......

      Agora tenho outras duas duvidas....

     

    1) alguns dos arquivos que estou copiando tem attrib, coloquei uma linha chamando um arquivo .bat que tira o attrib para copia (attrib -a *.*), mas de nada adiantou, tem alguma forma de verificar e tirar estes atrrib antes da copia?

    2) Quando a copia começa o windows avisa que preciso de permissão para copiar os arquivos e também que estes arquivos já existem, existe uma maneira em que eu possa transformar isso para mais automático sem a interação do usuário?

     

      Desde já agradeço imensamente

  11. Olá boa tarde galera ....

     

       Estou trabalhando em um pequeno projeto de sincronização no delphi rad 10.2, para copiar os arquivos estou utilizando o comando PChar, porém tenho três extensões diferente que desejo copiar, mas meu código copia apenas um... não sei mais o que fazer para sanar esta questão. Se alguém puder ajudar, desde já agradeço. Segue abaixo o código que estou utilizando para fazer as copias...

     

      FillChar(Dados,SizeOf(Dados), 0);
      with Dados do
      begin
        wFunc := FO_COPY;
        pFrom := PChar('C:\PASTA_ORIGEM\*.CON');
        pFrom := PChar('C:\PASTA_ORIGEM\*.SAC');
        pFrom := PChar('C:\PASTA_ORIGEM\*.VIX');
        pTo   := PChar(Edit1.Text);
        fFlags:= FOF_ALLOWUNDO;
        mmoAlterados.Text;
      END;
      end;
      SHFileOperation(Dados);
      mmoAlterados.Clear;

     

  12. Boa noite pessoal,

    Em pesquisa na internet sobre meu dilema que já se leva dois dias, observei varias soluções a qual nenhuma se encaixou em meu dilema. Estou fazendo um pequena sistema em PHP com mysql onde é possível o cadastro do produto com foto. Porem as informações todas estão sendo salvas no banco, menos o nome da foto. Peço a ajuda de vocês pois já revirei e não encontro o erro.

    Conexão com o banco:

    <?php
    // Conexão com o banco de dados
    $conn = @mysql_connect("localhost", "root", "root") or die ("Problemas na conexão.");
    $db = @mysql_select_db("gerenciador", $conn) or die ("Problemas na conexão");
    ?>

    <form action="" method="post" enctype="multipart/form-data" name="cadastro" >
    Descrição:<br />
    <input type="text" name="descricao" size="100" /><br /><br />
    R$ Valor:<br />
    <input type="text" name="valor" size="100"/><br /><br />
    Categoria:<br />
    <input type="text" name="categoria"size="100" /><br /><br />
    Foto de exibição:<br />
    <input type="file" name="foto" size="100" /><br /><br />
    <input type="submit" name="cadastrar" value="Cadastrar" />
    
    
    <?php
    // Se o usuário clicou no botão cadastrar efetua as ações
    if (isset($_POST['cadastrar'])){
    
    
    // Recupera os dados dos campos
    $descricao = $_POST['descricao'];
    $valor = $_POST['valor'];
    $categoria = $_POST ['categoria'];
    $foto = $_FILES["foto"];
        $nome_imagem = "";
        $error = array();
        if(isset($_FILES['foto'])){
        $foto = $_FILES['foto'];
    }
    
    
    
    
      
    // Se a foto estiver sido selecionada
    if (!empty($_FILES['foto'])) {
    
    
    // Largura máxima em pixels
    $largura = 150;
    // Altura máxima em pixels
    $altura = 180;
    // Tamanho máximo do arquivo em bytes
    $tamanho = 1000;
    
    
          // Verifica se o arquivo é uma imagem
         if(!preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $foto["type"])){
             $error[1] = "Isso não é uma imagem.";
          } 
    
    
    
    
    // Pega as dimensões da imagem
    $dimensoes = getimagesize($foto["tmp_name"]);
    
    
    // Verifica se a largura da imagem é maior que a largura permitida
    if($dimensoes[0] > $largura) {
    $error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels";
    }
    
    
    // Verifica se a altura da imagem é maior que a altura permitida
    if($dimensoes[1] > $altura) {
    $error[3] = "Altura da imagem não deve ultrapassar ".$altura." pixels";
    }
    
    
    // Verifica se o tamanho da imagem é maior que o tamanho permitido
    if($foto["size"] > $tamanho) {
          $error[4] = "A imagem deve ter no máximo ".$tamanho." bytes";
    }
    
    
    // Se não houver nenhum erro
    if (count($error) == 0) {
    
    
    // Pega extensão da imagem
    preg_match("/.(gif|bmp|png|jpg|jpeg){1}$/i", $foto["name"], $ext);
    
    
             // Gera um nome único para a imagem
             $nome_imagem = md5(uniqid(time())) . "." . $ext[1];
    
    
             // Caminho de onde ficará a imagem
             $caminho_imagem = ".../gerenciador galaxy/Fotos/" . $nome_imagem;
                 $nome_imagem = $nome_imagem;
    
    
    // Faz o upload da imagem para seu respectivo caminho
    move_uploaded_file($foto["tmp_name"], $caminho_imagem);
    } 
    if (count($error) != 0) { 
    foreach ($error as $erro) { 
    echo $erro . "<br />"; 
    
    
    
    
    } 
    } 
    } 
    
    
    $result = mysql_query ("INSERT INTO produtos(descricao, valor, categoria, foto)VALUE('$descricao', '$valor', '$categoria', '$nome_imagem')")or die("Erro no query ".mysql_error());
    
    
    }
    
    
    ?>

    Desde já agradeço que puder me ajudar!!!!

  13. Boa tarde pessoal,

    Venho pedir ajuda pois já não sei onde mais procurar ou oque fazer, tudo que acho (inclusive aqui no forum) não funciona para mim . É o seguinte, estou criando um site PHP com banco SQL SERVER, quando uso a conexão OBDC, ele conecta normalmente, o problema é que li e tenho observado que este tipo de conexão é um tanto quanto lenta.

    Sendo assim resolvi mudar a função de:

    <?
    $con = odbc_connect("DRIVER={SQL Server}; SERVER=servidor; 
    DATABASE=bancodedados;", "usuario","senha");
    ?>

    Para

    <?
    $con = mssql_connect("servidor", "usuario", "senha");
    mssql_select_db("bancodedados",$con);
    ?>

    Porém ai que começa meu dilema ele não conecta de jeito algum.... Estou utilizando o servidor local EasyPHP 12.1, o erro apresentado é:

    Fatal error: Call to undefined function mssql_connect() in C:\Arquivos de programas\EasyPHP-12.1\www\Sistema de login\config.php on line 9

    Já tentei colocar a dll ntwdblib.dll na pasta PHP do EASY, já coloquei ela na pasta bin do APACHE, já procurei a linha de compatibilidade no ini do PHP (essa não existe no meu ini), Já tentei conectar testando a conexão com o codigo:

    mssql_connect("servidor", "user", "senha") or die("Não foi possível a conexão com o servidor");    
    mssql_select_db("banco") or die("Não foi possível selecionar o banco de dados");    
    mssql_close();    
    print "Conexão OK";?>

    Já não sei mais o que fazer, testar ou onde procurar o meu erro, agradeço desde já quem puder me ajudar, abaixo segue codigo completo.

    <?php
    $host = "x"; //Servidor 
    $user = "sa"; //Usuario do banco de dados
    $senha = "x"; //senha do banco de dados
    $db = "banco"; //banco de dados
    $nome_site = "site"; //Nome do site
    $email = "xxxx@xxxx.com.br"; //E-mail do administrador
    $site = "http://www.site.com.br"; //Seu site n se esuqece de bota o http://
    $con = mssql_connect($host,$user,$senha);
    mssql_select_db($db,$con);
    ?>
    
    
    
    
    
    
  14. Bom dia Pessoal,

    Sou novata em PHP e sei muito pouca coisa, e o que sei até agora é resultado de estudos e pesquisas na net!

    O que preciso fazer é buscar uma imagem em um banco mssql, está imagem foi salva lá através de um sistema DELPHI em binário, já tentei varios códigos, mas nenhum me trouxe algum resultado. Abaixo segue o que tenho usado até agora.

    Desde já agradeço quem poder me ajudar

    
    As imagens no banco estão sendo salvas assim: 0x424D6EA7020000000000360000002800000018010000CF000000010018000000000038A7020000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    Tipo do campo é igual a imagem.

    Conexão com o banco

    <?php
    $con = odbc_connect("DRIVER={SQL Server}; SERVER=Servidor;
    DATABASE=Nome_banco;", "Usuario","Senha_Banco");
     
    ?>

    Select

    <?PHP
    $SQL = "SELECT * FROM Banco.dbo.Fotos_Produtos";
    $res = odbc_exec($con, $SQL);
    
    while($RFP = odbc_fetch_array($res))
    {
        echo $RFP['Foto'].'';
    }
    ?
  15. Bom dia Pessoal,

    Sou novata em PHP e sei muito pouca coisa, e o que sei até agora é resultado de estudos e pesquisas na net!

    O que preciso fazer é buscar uma imagem em um banco mssql, está imagem foi salva lá através de um sistema DELPHI em binário, já tentei varios códigos, mas nenhum me trouce algum resultado. Abaixo segue o que tenho usado até agora.

    Desde já agradeço quem poder me ajudar

    
    As imagens no banco estão sendo salvas assim: 0x424D6EA7020000000000360000002800000018010000CF000000010018000000000038A7020000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFDFFFFFCFEFEFDFDFDFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFEFEFEFFFFFFFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFEFEFEFFFFFFFFFFFFFDFDFDFCFCFCFDFDFDFFFFFFFFFFFFFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFDFDFDFDFDFDF8FAFAFAFCFCFCFEFEFDFFFFFCFEFEFCFEFEFDFFFFFDFFFFFAFAFAFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFDFDFDFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCFBFBFBFDFDFDFEFEFEFEFEFEFEFEFEFDFDFDFEFEFEFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFCFCFCFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFDFDFDFAFAFAFAFAFAFDFDFDFFFFFFFFFDFDFEFCFCFDFBFBFEFCFCFFFDFDFFFEFEFFFEFEFFFEFEFFFFFFFFFFFFFBF9F9F6F4F4F4F2F2F6F4F4F9F7F7FCFAFAFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFDFBFBFFFDFDFFFFFFFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFBFBFBFBFBFBFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFFFEFEFFFDFDFFFDFDFEFCFCFDFBFBFCFAFAFCFAFAFCFAFAFEFCFCFEFCFCFFFDFDFFFEFEFFFDFDFEFCFCFDFBFBFCFAFAFFFEFFFFFEFFFFFDFEFFFAFBF9F4F5EFEAEBE3DEDFDBD6D7CDC8C9C2BDBEB2ADAEA7A2A3A6A1A2B0ABACBEB9BAC9C4C5D6D1D2DFDADBEEE9EAFEF9FAFFFEFFFFFEFFFFFCFDFFFCFDFAFAFAFAFAFAFAFAFAFBFBFBFCFCFCFCFCFCFBFBFBFAFAFAFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFCFCFCFBFBFBFAFAFAF9F9F9F8F8F8F8F8F8FFFEFEFFFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFEFCFCFFFDFDFFFEFEFEFCFCF6F4F4E9E7E7DEDCDCBEB9BAB2ADAE9F9A9B8C87887B76776E696A645F605E595A645F606661626A6566736E6F7F7A7B8E898A9B9697A39E9FA39E9FADA8A9C3BEBFDCD7D8EEE9EAF6F1F2FDF8F9FFFEFFFBFBFBFBFBFBFBFBFBFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9FAFAFAFBFBFBFDFDFDFEFEFEFEFEFEFFFFFFFEFEFEFFFAFBFFFEFFFFFEFFFFFEFFFFFDFEF9F4F5EFEAEBE8E3E4E2DDDED7D2D3C6C1C2B3AEAFA09B9C8B8687777273696465554F504F494A494344484243504A4B5E58596D6768767071898384928C8DA19B9CAEA8A9B6B0B1B7B1B2B4AEAFB1ABACB1ABACABA5A6ABA5A6B4AEAFC0BABBD0CACBE6E0E1F9F3F4FFFFFFFFFFFFFFFFFFFDFDFDFBFBFBFBFBFBFDFDFDFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF8F8F8F6F6F6ECE7E8E6E1E2D9D4D5C7C2C3AFAAAB969192817C7D757071605A5B5E5859595354565051554F505751525A54555D5758756D6E7C7475888081958D8EA1999AAAA2A3B2AAABB5ADAEB9B1B2B9B1B2BAB2B3BBB3B4BCB4B5BDB5B6BEB6B7BFB7B8C2BABBB9B1B2B2AAABB3ABACB3ABACB5ADAEC0B8B9CDC5C6E9E9E9F1F1F1FAFAFAFEFEFEFCFCFCFAFAFAF9F9F9FAFAFAFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F2F2ECECECE1E1E1D1D1D1BEBEBEABABAB9B9B9B9292927C7778716C6D5F5A5B4E494A454041443F404944454D48495D5758666061736D6E7D7778857F808E8889999394A29C9DACA4A5B1A9AAB7AFB0BAB2B3BBB3B4BBB3B4BCB4B5BDB5B6BAB2B3B9B1B2B8B0B1B8B0B1B9B1B2BBB3B4BDB5B6BFB7B8B4ACADB1A9AAB3ABACB9B1B2B5ADAEABA3A4A8A0A1ADA5A6C1C1C1D3D3D3EBEBEBFCFCFCFFFFFFFFFFFFFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFEFEFEFCFCFCFAFAFAFAFAFAFDFDFDFFFFFFFFFFFFFDFDFDFDFDFDFEFEFEFFFFFFFEFEFEFCFCFCFCFCFCFEFEFEFFFFFFFFFDFDFCFAFAFFFFFFFFFFFFFDFBFBFEFCFCFFFFFFFCFAFAFEF9FAFFFDFEFFFEFFFFFEFFFFFDFEFFFBFCFFFBFCFFFCFDFFFDFEF7F1F2E8E2E3DCD6D7D2CCCDC5BFC0B4AEAFA8A2A38C84847B7373635B5B534B4B4D4545504848524A4A544C4C5E5552645B586E656279706D857C799289869D9491A59C99A49D9AA8A19EAEA5A2B2A9A6B6AAA8B8ACAABBAFADBFB2B0B4ACACB3ABABB2AAAAB4AAAAB5ABABB6AAAAB4A8A8B2A6A6B4ABA8B4ABA8B4ABA8B5ACA9B6ADAAB8AFACBAB1AEBBB2AFB7AEABB1A8A5B3AAA7B4ADAAB4ADAAB6B1AEB8B3B0B3AEABB2A8A8ACA4A4B8B0B1D4CECFF2EDEEFFFDFFFFFEFFFFFEFFFEFCFCFEFCFCFDFDFDFDFDFDFEFEFEFCFEFEFCFEFEFBFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFEFEFEFEFEFEFFFFFFFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFEFCFCFFFDFDFFFEFEFEFCFCFFFFFFFFFFFFFFFFFFFFFEFFFFFAFBF7F2F3EDE8E9E0DBDCD0CBCCBFBABBB4AFB08B8586827C7D746E6F6761625E5859585253554F50534D4E534B4B585050625A5A6E66667B7373857D7D8B83838D85859C9390A29996AAA19EB1A8A5B5ACA9B6ADAAB6ADAAB6ADAAB5AEABB6AFACB6AFACB5ACA9B2A9A6B0A7A4B2A6A4B3A7A5B0A8A8B0A8A8B1A9A9B6ACACBBB1B1BFB5B5C2B6B6C3B7B7C0B4B2C0B4B2C0B4B2C0B4B2C0B4B2C0B4B2C0B4B2C0B4B2B3A7A5B3A7A5B3A7A5B7AEABBCB3B0B3ACA9AFA8A5B7B0ADB3A9A9B9AFAFB6AEAEB0AAABBCB7B8DBD6D8F4F1F3FDFCFEFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFEFEFDFFFFFDFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFEFEFEFEFEFEFDFDFDFDFDFDFAFAFAFCFCFCFEFEFEFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFFFDFDFFFFFFFFFFFFFFFEFEFEFCFCFFFEFFFFFAFBFCF7F8F6F1F2EAE5E6DCD7D8CEC9CAC1BCBDA39D9E9A94958D87887F797A716B6C635D5E5650514D47484D4748534D4E5C5657645E5F6C6667756F70807A7B8882839B9393A09898A69E9EAAA2A2ABA3A3ACA4A4ADA5A5AFA7A7B9B0ADB7AEABB3AAA7B1A8A5B0A7A4B1A8A5B2A9A6B2A9A6A9A4A1AAA5A2ABA6A3ADA6A3ADA6A3B0A7A4B2A9A6B3AAA7B3AEADB5ADADB6AEAEB6AEAEB6ACACAFA5A5A99D9DA397979C8D8B9B8C8A998A889586849182808D7E7C8A7B798879777768668A7B79B5A8A6C6B9B7B4A8A6BBAFADC6BAB8B1A8A5B5A9A7B6AAAAB4AAAAB0A8A8ADA7A8B5AFB0C8C3C5D9D4D6F6F1F2FBF9F9FFFFFFFFFFFFFDFDFDFBFBFBFCFEFEFDFFFFFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFCFCFDFBFBFEFCFCFFFDFDFFFEFEFFFEFEFFFEFFFFFDFEFFFCFDFFFDFEFFFCFDFAF5F6ECE7E8E1DCDDCFCAC9BFBAB9A8A3A28F8A89787372645F5E544F4E4944434A42424F4747554D4D5B5353635B5B6D65657870708179798B8383948C8C9F9797A79F9FAAA2A2ACA4A4AEA6A6B0A8A8AFA5A5B2A8A8B5ABABB5ABABB4AAAAB2A8A8B1A7A7B0A6A6B1A7A7AEA4A4AAA0A0A99F9FADA3A3B1A7A7B4AAAAB5ABABB4AFACB5B0ADB4AFACB4ADAAB0A9A6ADA4A1A9A09DA79E9B9A9390948B88887F7C7B726F726664695D5B6356545E514F6B56546B56546B56546B56546C57556D58566F5A586F5A587B6865614E4B7564619A89869988859E8F8CBCADAACCBDBAC1B2B0B8ABA9B7A9AABBAFAFB8AEAEAEA6A7ABA5A6B1ABACCEC9CAE0DBDCF4F2F2FFFFFFFFFFFFFDFDFDFBFBFBFCFCFCFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFEFEFEFCFCFCFBFBFBFAFAFAFBFBFBFBFBFBFFFFFFFDFDFDFCFCFCFBFBFBFBFBFBFDFDFDFFFFFFFFFFFFFFFEFEFDFBFBFCFAFAFFFDFDFFFFFFFFFFFFF9F7F7F1EFEFE7E2E3D9D4D5C4BFC0B1ACADA19C9D918C8D817C7D7772735E5958585352514C4B504B4A585352615C5B6863626C67668981818E8686968E8E9C94949F9797A39B9BA8A0A0ABA3A3ABA3A3ACA4A4AEA6A6AEA6A6AEA6A6ACA4A4ABA3A3ABA3A3ADA3A3ADA3A3AEA4A4B0A6A6B4AAAAB6ACACB7ADADB6ACACBDB3B3BCB2B2BBB1B1B9AFAFB5ABABADA3A3A298989B9191958E8B908784877E7B7F76738074728478768B7E7C8F82808F82809083819487859F908EAB9C9AB9A7A6C3B1B0C8B6B5DAC1BFD7BEBCD2B9B7CDB4B2CAB1AFC8AFADC7AEACC8AFADD8C1BFC2ABA98C7573735E5C8974728C77758F7C79AF9C99C2B0AFC6B4B3C2B3B1B6A8A9B2A6A6B6ACACB6ABADAEA6A7ACA7A8BCB7B8D6D1D2EDEBEBFDFBFBFFFFFFFFFFFFFCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF6F6F6F1ECEDE8E3E4DBD6D7CEC9CABFBABBABA6A7938E8F837E7F6761625E5859534D4E4E4849504A4B5852535E5859625C5D77706D7E777487807D938C89A09996A49D9AA29B98A29B98ADA4A1ABA29FABA29FACA3A0AFA6A3AFA6A3ADA4A1AAA19EA9A09DA89F9CA89F9CAAA19EADA4A1AFA6A3AFA6A3AEA5A2B9ADADB6AAAAB3A7A7B3A7A7B3A7A7B2A6A6AFA3A3ACA0A0A3989A9F9496998E909287898A7F8183787A7C7173786D6F6D605E736664807371978886B1A2A0CEBCBBE3D1D0EEDCDBFDEAE7FEE9E7FDE8E6FCE7E5FBE4E2F5DEDCEFD6D4EAD1CFD5B6B3D2B3B0CEAFACCAABA8C7A8A5C6A7A4C6A7A4C7A8A5D5B8B4F9DEDAE0C5C19F8480886F6B8C736F806A6579635E9F8C89B09D9AC1AFAEC7B5B4C3B3B4BCAEAFB9ADADB9ACAEAFA9AAAEA8A9B2ADAEC3BEBFDBD9D9F3F1F1FFFFFFFFFFFFFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF9F9F9FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF9F9F9FCFCFCF5F5F5EBEBEBDFDFDFD1D1D1BEBEBEAAAAAA9C9C9C7671726E696A635E5F595455534E4F514C4D514C4D514C4D675F606D6566787071847C7D8F8788968E8F9B93949D9596AAA19EB0A7A4B0A7A4B1A8A5B4ABA8AEA5A2A49B98A39A97B6AAA8B2A6A4AEA2A0ADA19FADA19FADA19FAA9E9CA79B99B5ACA9B7AEABB9B0ADB9B0ADB7AEABB4ABA8B1A8A5AEA5A2A59999A59999A498989D9191918585827676766A6A6F6363605557685D5F776C6E8A7F81A09597B6ABADC8BDBFD2C7C9EEDAD9F3DFDEFBE7E6FFEDECFFECEBFAE2E2ECD4D4E3CBCBCCB0AFC5A9A8BA9E9DB19392A78988A08180997A799576759E7B789D7A779D7A779C79769C79769D7A779D7A779D7A778A6B689B7C79BE9F9CBA9D998F726E8166628E736F896E6A7F6866897472A5928FC3AFAECBB9B8BFAFB0B6A8A9B9ABACB6B0B1B1ABACABA5A6AAA5A6B6B1B2CBC9C9E6E4E4F8F6F6FCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFCFCFCF3F3F3E6E6E6D5D5D5C6C6C6BCBCBC9898988B8B8B7979796B6B6B6060605656564B4B4B4343434D4849555051615C5D6C6768767172827D7E8E898A9691929D9596A29A9BA9A1A2ADA5A6ADA5A6ACA4A5ACA4A5ACA4A5A9A09DACA3A0A89F9CA49B98A69D9AA39A979E9592A29996ADA19FB2A6A4B8ACAABAAEACB8ACAAB4A8A6B2A6A4B1A5A3A39A97A39A97A09794978E8B8A817E7F7673786F6C766D6A776B6B7D7171847878897D7D8E8282988C8CA69A9AB0A4A4D0C5C7DCD1D3EDE2E4F9EEF0FBF0F2F6EBEDEDE2E4E8DDDFE3CBCBDAC2C2CDB5B5C1A7A7B39999A58B8B9B7F7F9478788D6E6D8B6C6B8A6B6A8C6A6A8E6C6C936F6F94707094707097716F9872709973719A74729A747298727096706E956F6D94737081605D906F6CA586839F807D997C78997C788E716D7D6664806967846F6D937F7EAD9B9AC1B2B0C4B4B5BAACADADA7A8B5AFB0B8B2B3AFAAABA5A0A1ABA6A7C0BEBED7D5D5FCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFDFDFDFDFDFDFEFEFEFFFFFFFEFEFEFDFDFDFDFDFDFDFDFDFEFEFEFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFDFDFDFFFFFFFFFFFFFDFCFEFEFDFFFFFEFFFFFEFFFFFEFFFEFDFFFDFCFEFDFCFEFFFFFFFEFEFEFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFDFDFDFFFEFFFFFDFEFFFCFDFEF9FAF7F2F3EBE6E7DCD7D8D2CDCEBFBAB9B1ACAB9C979685807F706B6A5D58574D4847433E3D4B4343514949595151625A5A6C6464797171877F7F9189899994919D9895A29D9AA7A29FA9A4A1A8A3A0A5A09DA39E9BA9A4A1A9A4A1A6A19EA29D9A9D98959D9895A19C99A5A09DAAA19EAAA19EACA3A0B1A8A5B2A9A6AAA19EA9A09DB1A8A5ACA3A0A89F9CA1989599908D9188858C838089807D887F7C78716E6D66635F585558514E605956746D6A8D86839E9794D7C6C3E1D0CDF1E0DDFFEFECFFF6F3FFF6F3FFF0EDFCEBE8FBDFDEF2D6D5E2C6C5CEB2B1B99D9CA68A89997D7C9276758E6C6C8D6B6B8B69698A68688A68688C6A6A8E6C6C906E6E8D6E6D8D6E6D8D6E6D8D6E6D8D6E6D8D6E6D8D6E6D8D6E6D926F6C926F6C926F6C93706D93706D93706D93706D93706D97747193706D94716EA07D7AAF8C89B4918EAA87849F7C799C7B789475728C6F6B7F66627F6964988580B8A8A2C5B5AFBDAFB0BBAFAFB8ACACB4AAAAB6AEAEB6B1B0ADA9A8A39F9ECDC7C8EBE5E6FFFCFDFFFBFCFBF9F9FFFFFFFFFFFFFBFBFBFEFCFCFEFCFCFCFCFCFEFEFEFFFFFFFDFFFFFDFFFFFCFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFBFBFBFBFBFBFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEF8F8F8FAFAFAFDFDFDFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFFFEFFFFFEFFFDFCFEFCFBFDFCFBFDFCFBFDFDFCFEFDFCFEFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFEFEFEFAFAFAF7F7F7D9D4D5CCC7C8B7B2B39F9A9B8883847570716560615D5859534E4D524D4C534E4D575251605B5A6D68677B7675847F7E8F8787938B8B9991919D9595A09898A29A9AA69E9EAAA2A2ACA5A2ACA5A2ABA4A1AAA3A0A8A19EA69F9CA39C99A29B98A29B98A39C99A69F9CABA4A1AFA8A5B1AAA7B0A9A6AEA7A4AEA2A0B0A4A2A89C9AA39795A195938C807E7A6E6C7F7371685C5A6256545D514F6054526E6260837775978B89A39795BBAFADC4B8B6D4C8C6E5D9D7F3E7E5FAEEECFDF1EFFDF1EFF9E4E2EFDAD8DEC9C7CAB5B3B8A3A1AA9593A18C8A9D88869074738E72718A6E6D866A698367668165648064638064638C6A6A8C6A6A8C6A6A8C6A6A8C6A6A8D6B6B8D6B6B8E6C6C8D6E6D8D6E6D8D6E6D8D6E6D8D6E6D8D6E6D8D6E6D8D6E6D926F6C926F6C926F6C926F6C93706D93706D93706D93706D96737094716E916E6B916E6B987572A3807DAE8B88B69390A5827F9A7976987976977A76876E6A826C67927E79A3908BC1B3B4C3B5B6BFB3B3B7ADADB2AAAAB1ACABB2ADACB0ACABABA5A6C4BEBFE6E0E1FDF8F9FFFEFFFFFDFDFCFAFAFCFAFAFFFFFFFFFDFDFDFBFBFCFCFCFEFEFEFDFFFFFBFDFDF9FBFBFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFBFBFBFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFFFFFFFFFFFFFEFEFEFBFBFBFBFBFBFDFDFDFEFEFEFFFFFFFBF8FAFBF8FAFDFAFCFFFDFFFFFEFFFFFEFFFFFDFFFCF9FBF1EFEFEBE9E9E0DEDED1CFCFBFBDBDABA9A99997978D8B8B6A6465605A5B534D4E4A44454A4445524C4D5D5758645E5F746C6C7B7373857D7D8D8585938B8B999191A19999A79F9FAAA0A0AAA0A0AAA0A0A99F9FA79D9DA69C9CA59B9BA59B9BA79E9BA59C99A39A97A29996A49B98A89F9CAEA5A2B1A8A5AFA6A3AEA5A2ACA3A0A89F9CA299969B928F938A878E8582857876877A787F72707467656F6260695C5A6457556659577D706E8E817FAB9E9CCDC0BEE9DCDAF9ECEAFEF1EFFDF0EEF3E1E0F4E2E1F5E3E2EFDDDCE0CECDCCBAB9B7A5A4AB9998977B7A917574896D6C8165647E62617F6362836766866A69866A69866A69856968866A69876B6A886C6B8A6E6D8B6F6E8B69698C6A6A8D6B6B8D6B6B8E6C6C8D6B6B8D6B6B8C6A6A8D6E6D8D6E6D8D6E6D8D6E6D8D6E6D8D6E6D8D6E6D8D6E6D926F6C926F6C926F6C926F6C93706D93706D93706D93706D93706D96737096737093706D8F6C6994716EA17E7BAD8A87B99391B18B89A683809A79768F706D8C6F6B896E6A8269659F8D8EAF9FA0C0B0B1C2B4B5BBAFAFB4AAAAB3ABABB5ADADABA3A4B0A8A9BFB9BAD8D2D3EDE8E9F9F4F5FFFDFEFFFFFFFFFCFDFEFCFCFEFCFCFFFDFDFFFFFFFFFFFFFCFEFEF9FBFBFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    Tipo do campo é igual a imagem.

    Conexão com o banco

    <?php
    $con = odbc_connect("DRIVER={SQL Server}; SERVER=Servidor;
    DATABASE=Nome_banco;", "Usuario","Senha_Banco");
     
    ?>

    Select

    <?PHP
    $SQL = "SELECT * FROM Banco.dbo.Fotos_Produtos";
    $res = odbc_exec($con, $SQL);
    
    while($RFP = odbc_fetch_array($res))
    {
        echo $RFP['Foto'].'';
    }
    ?

    Para campos do tipo texto o resultado é nomal, agora para a imagem ele aparece assim:

  16. Boa noite caros,

    Estou montando um PDV-ECF com os códigos fornecidos pela BEMATECH, para impressão do cupom fiscal utilizo o emulador também da Bematech, o cupom esta abrindo normalmente, porém ao inserir os itens ele me retorna a mensagem “PARÂMETRO INVÁLIDO”, esta mensagem aparece apenas e execução, não aparece nenhum outro erro e os itens não são impresso nos cupom.
    Estou utilizando os seguintes códigos:

    //**********************ABRE 
    CUPOM***********************************      iRetorno := 
    Bematech_FI_AbreCupom(TXTCPF_CLIENTE.Text);      
    FRMPDV_FISCAL.Analisa_iRetorno();      
    FRMCONFIG_ECF.Retorno_Impressora ();
    //************** incluir item 
    ********************************   //  Verifica o Tipo da 
    Quantidade:    // 'I' para Inteira ou 'F' para 
    Fracionária    If FRMCONFIG_ECF.RadioButton1.Checked = True 
    Then Begin sTipoQtde := 'I' End;    If 
    FRMCONFIG_ECF.RadioButton2.Checked = True Then Begin sTipoQtde := 'F' 
    End;    // Verifica o Tipo de Decimal:    // 2 
    para duas casas ou 3 para três casas    If 
    FRMCONFIG_ECF.RadioButton3.Checked = True Then Begin iDecimal := 2 
    End;    If FRMCONFIG_ECF.RadioButton4.Checked = True Then Begin 
    iDecimal := 3 End;    // Verifica o Tipo de 
    Desconto:    // '%' para percentual ou '$' para 
    valor    If FRMCONFIG_ECF.RadioButton5.Checked = True Then 
    Begin sTipoDesconto := '%' End;    If 
    FRMCONFIG_ECF.RadioButton6.Checked = True Then Begin sTipoDesconto := '$' 
    End;    {    iRetorno := Bematech_FI_VendeItem( 
    Pchar('123ABC'), Pchar('Impressora Fiscal'),        
                          
             Pchar('1700'), Pchar('I'), Pchar('0001'), 2, 
    Pchar('85000'),                
                          
     Pchar('%'), Pchar('1000') );    }    
    iRetorno := Bematech_FI_VendeItem( TXTCOD_BARRA.Text, txtdescricao.Text, 
    TXTALICOTA.Text,                
    sTipoQtde, TXTQUANTIDADE.Text, iDecimal, TXTVALOR_UNITARIO.Text,  
                  sTipoDesconto, TXTDESCONTO.Text 
    );Analisa_iRetorno();FRMCONFIG_ECF.Retorno_Impressora();

    A FUNÇÃO:

    function Bematech_FI_VendeItem( Codigo: String; 
    Descricao: String; Aliquota: String; TipoQuantidade: String; Quantidade: String; 
    CasasDecimais: Integer; ValorUnitario: String; TipoDesconto: String; Desconto: 
    String): Integer; StdCall; External 'BEMAFI32.DLL';

    Já tentei debugar porém sem sucesso, estou presa a este problema a quase dois dias icon_sad.gif

    Utilizo delphi 7...

    Desde já agradeço que puder me ajudar

  17. olá amigos bom dia.... gostaria muito da ajuda de vocês estousando sql server 2005 e delphi 2006

    esse código abaixo ta dentro de uma query e ta dando o erro :

    error creating cursor handle

    geralmente quando da esse erro não prejudica o código, mas agora preciso carregar a query com os campos da tabelas e não consigo.... e também não enchergo o erro... desde já agradeço qm puder me ajudar

    -- Seleciona com saldo_total = nulo

    DECLARE @DAT_VIGENCIA DATETIME,

    @COD_ITEM INTEGER,

    @COD_GRUPO_ITEM INTEGER,

    @COD_GENERO INTEGER,

    @COD_TIPO INTEGER,

    @COD_EDITORA INTEGER,

    @COD_EMPRESA INTEGER,

    @COD_FILIAL INTEGER,

    @COD_LOCAL INTEGER,

    @COD_AUTOR INTEGER,

    @COD_TIPOA INTEGER,

    @COD_BARRA INTEGER,

    @LANCAMENTO INTEGER,

    @EXCLUSIVO INTEGER,

    @REEDITAR INTEGER,

    @STATUS VARCHAR(2),

    @SALDO INTEGER,

    @COD_SELO INTEGER,

    @DAT_EXP_LANCTO DATETIME

    SELECT

    @DAT_VIGENCIA = :DAT_VIGENCIA,

    @COD_ITEM = :COD_ITEM,

    @COD_GRUPO_ITEM = :COD_GRUPO_ITEM,

    @COD_GENERO = :COD_GENERO,

    @COD_TIPO = :COD_TIPO,

    @COD_EDITORA = :COD_EDITORA,

    @COD_EMPRESA = :COD_EMPRESA,

    @COD_FILIAL = :COD_FILIAL,

    @COD_LOCAL = :COD_LOCAL,

    @COD_AUTOR = :COD_AUTOR,

    @COD_TIPOA = :COD_TIPOA,

    @COD_BARRA = :COD_BARRA,

    @LANCAMENTO = :LANCAMENTO,

    @EXCLUSIVO = :EXCLUSIVO,

    @REEDITAR = :REEDITAR,

    @STATUS = :STATUS,

    @SALDO = :SALDO,

    @COD_SELO = :COD_SELO,

    @DAT_EXP_LANCTO = :DAT_EXP_LANCTO

    if @saldo = 0

    begin

    select i.nom_item,

    i.cod_item,

    l.nom_gaveta,

    l.cod_gaveta,

    p.nom_empresa,

    u.nom_grupo_item,

    f.nom_filial,

    i.caracteristica,

    t.nom_tipo,

    i.peso_item,

    dimensoes = convert(varchar(30),i.largura_item) + ' X ' + convert(varchar(30),i.comprimento_item) ,

    i.cod_barra_item,

    g.nom_genero,

    nom_editora = e.nom_fantasia,

    s.saldo_total,

    i.qtd_paginas,

    i.DAT_EXP_LANCTO,

    vlr_capa = (select o.vlr_capa

    from itens_estpreco o (nolock)

    where o.cod_item = i.cod_item

    and o.dat_vigencia = (select max(e.dat_vigencia)

    from itens_estpreco e (nolock)

    where e.cod_item = o.cod_item

    and e.dat_vigencia <= @dat_vigencia)),

    status = case when i.status_item = 'D' then 'Itens em Distribuição'

    else 'Itens em Pendência'

    end,

    cod_isbn_item,

    GRUPO = (SELECT TOP 1 E.NOM_ITEM

    FROM ITEM_ESTGRUPO G (NOLOCK),

    ITENS_ESTOQUE E (NOLOCK)

    WHERE G.COD_ITEMGRUPO = I.COD_ITEM

    AND G.COD_ITEM = E.COD_ITEM),

    INDICE_GRUPO = (SELECT TOP 1 G.INDICE

    FROM ITEM_ESTGRUPO G (NOLOCK)

    WHERE G.COD_ITEMGRUPO = I.COD_ITEM),

    AUTOR = (SELECT TOP 1 NOM_AUTOR

    FROM AUTORES AA (NOLOCK),

    AUTORES_ITEM AI (NOLOCK)

    WHERE AA.COD_AUTOR = AI.COD_AUTOR

    AND AI.COD_ITEM = I.COD_ITEM),

    NOM_SELO = (SELECT ES.NOM_SELO

    FROM EDITORA_SELO ES (NOLOCK)

    WHERE ES.COD_SELO = I.COD_SELO)

    from itens_estoque i (nolock),

    tabela_genero g (nolock),

    editora e (nolock),

    tabela_saldo_itens s (nolock),

    itens_local l (nolock),

    empresa p (nolock),

    filial f (nolock),

    tpo_item t (nolock),

    grupo_item u (nolock)

    where (i.cod_item = @cod_item or @cod_item = 0)

    and (i.cod_grupo_item = @cod_grupo_item or @cod_grupo_item = 0)

    and (i.cod_genero = @cod_genero or @cod_genero = 0)

    and (i.cod_tipo = @cod_tipo or @cod_tipo = 0)

    and (i.cod_editora = @cod_editora or @cod_editora = 0)

    and (i.cod_selo = @cod_selo or @cod_selo = 0)

    and l.cod_empresa = @cod_empresa

    and (l.cod_filial = @cod_filial or @cod_filial = 0)

    and i.cod_genero = g.cod_genero

    and i.cod_editora = e.cod_editora

    and i.cod_item = l.cod_item

    and (l.cod_local = @cod_local or @cod_local = 0)

    and (i.DAT_EXP_LANCTO = @DAT_EXP_LANCTO or @DAT_EXP_LANCTO = null)

    and i.cod_item in (select a.cod_item

    from autores_item a (nolock)

    where (a.cod_autor = @cod_autor or @cod_autor = 0)

    and a.cod_autor in (select cod_autor

    from autores (nolock)

    where cod_tipo = @cod_tipoa or @cod_tipoa = 0))

    and l.cod_empresa *= s.cod_empresa

    and l.cod_filial *= s.cod_filial

    and l.cod_local *= s.cod_local

    and l.cod_item *= s.cod_item

    and l.cod_empresa = p.cod_empresa

    and l.cod_empresa = f.cod_empresa

    and l.cod_filial = f.cod_filial

    and i.cod_tipo = t.cod_tipo

    and i.cod_grupo_item = u.cod_grupo_item

    and (((@cod_barra = 0) and ((convert(float, replace(substring(i.cod_barra_item,1,12),'X','')) <> i.cod_item) and (i.cod_barra_item <> '')))

    or (@cod_barra = 1))

    and (((@lancamento = 0) and (i.dat_exp_lancto = 0 or 0 = 0))

    or ((@lancamento = 1) and (i.dat_exp_lancto >= getdate())))

    and (((@exclusivo = 0) and (e.representante = 'S'))

    or ((@exclusivo = 1) and ((e.representante = 'X' or 'X' = 'X'))))

    and (i.status_item = :status or :status = 'X')

    and (((@reeditar = 0) and i.cod_item in (select o.cod_item

    from itens_edicao o (nolock)

    where o.cod_item = i.cod_item

    and o.reeditar = 'S'))

    or (@reeditar = 1))

    AND I.SITUACAO_ITEM IN (:FD,:FE,:FC,:IP,:IN)

    order by i.nom_item

    end

    -- Seleciona com saldo_total <> nulo

    if @saldo = 1

    begin

    select i.nom_item,

    i.cod_item,

    l.nom_gaveta,

    l.cod_gaveta,

    p.nom_empresa,

    u.nom_grupo_item,

    f.nom_filial,

    i.caracteristica,

    t.nom_tipo,

    i.peso_item,

    dimensoes = convert(varchar(30),i.largura_item) + ' X ' + convert(varchar(30),i.comprimento_item) ,

    i.cod_barra_item,

    g.nom_genero,

    nom_editora = e.nom_fantasia,

    s.saldo_total,

    i.qtd_paginas,

    i.DAT_EXP_LANCTO,

    vlr_capa = (select o.vlr_capa

    from itens_estpreco o (nolock)

    where o.cod_item = i.cod_item

    and o.dat_vigencia = (select max(e.dat_vigencia)

    from itens_estpreco e (nolock)

    where e.cod_item = o.cod_item

    and e.dat_vigencia <= @dat_vigencia)),

    status = case when i.status_item = 'D' then 'Itens em Distribuição'

    else 'Itens em Pendência'

    end,

    cod_isbn_item,

    GRUPO = (SELECT TOP 1 E.NOM_ITEM

    FROM ITEM_ESTGRUPO G (NOLOCK),

    ITENS_ESTOQUE E (NOLOCK)

    WHERE G.COD_ITEMGRUPO = I.COD_ITEM

    AND G.COD_ITEM = E.COD_ITEM),

    INDICE_GRUPO = (SELECT TOP 1 G.INDICE

    FROM ITEM_ESTGRUPO G (NOLOCK)

    WHERE G.COD_ITEMGRUPO = I.COD_ITEM),

    AUTOR = (SELECT TOP 1 NOM_AUTOR

    FROM AUTORES AA (NOLOCK),

    AUTORES_ITEM AI (NOLOCK)

    WHERE AA.COD_AUTOR = AI.COD_AUTOR

    AND AI.COD_ITEM = I.COD_ITEM),

    NOM_SELO = (SELECT ES.NOM_SELO

    FROM EDITORA_SELO ES (NOLOCK)

    WHERE ES.COD_SELO = I.COD_SELO)

    from itens_estoque i (nolock),

    tabela_genero g (nolock),

    editora e (nolock),

    tabela_saldo_itens s (nolock),

    itens_local l (nolock),

    empresa p (nolock),

    filial f (nolock),

    tpo_item t (nolock),

    grupo_item u (nolock)

    where (i.cod_item = @cod_item or @cod_item = 0)

    and (i.cod_grupo_item = @cod_grupo_item or @cod_grupo_item = 0)

    and (i.cod_genero = @cod_genero or @cod_genero = 0)

    and (i.cod_tipo = @cod_tipo or @cod_tipo = 0)

    and (i.cod_editora = @cod_editora or @cod_editora = 0)

    and (i.cod_selo = @cod_selo or @cod_selo = 0)

    and l.cod_empresa = @cod_empresa

    and (l.cod_filial = @cod_filial or @cod_filial = 0)

    and i.cod_genero = g.cod_genero

    and i.cod_editora = e.cod_editora

    and i.cod_item = l.cod_item

    and (i.DAT_EXP_LANCTO = @DAT_EXP_LANCTO or @DAT_EXP_LANCTO = null)

    and (s.saldo_total > 0)

    and (l.cod_local = @cod_local or @cod_local = 0)

    and i.cod_item in (select a.cod_item

    from autores_item a (nolock)

    where (a.cod_autor = @cod_autor or @cod_autor = 0)

    and a.cod_autor in (select cod_autor

    from autores (nolock)

    where cod_tipo = @cod_tipoa or @cod_tipoa = 0))

    and l.cod_empresa = s.cod_empresa

    and l.cod_filial = s.cod_filial

    and l.cod_local = s.cod_local

    and l.cod_item = s.cod_item

    and l.cod_empresa = p.cod_empresa

    and l.cod_empresa = f.cod_empresa

    and l.cod_filial = f.cod_filial

    and i.cod_tipo = t.cod_tipo

    and i.DAT_EXP_LANCTO = @DAT_EXP_LANCTO

    and i.cod_grupo_item = u.cod_grupo_item

    and (((@cod_barra = 0) and ((convert(float, replace(substring(i.cod_barra_item,1,12),'X','')) <> i.cod_item) and (i.cod_barra_item <> '')))

    or (@cod_barra = 1))

    and (((@lancamento = 0) and (i.dat_exp_lancto = 0 or 0 = 0))

    or ((@lancamento = 1) and (i.dat_exp_lancto >= getdate())))

    and (((@exclusivo = 0) and (e.representante = 'S'))

    or ((@exclusivo = 1) and ((e.representante = 'X' or 'X' = 'X'))))

    and (i.status_item = @status or @status = 'X')

    and (((@reeditar = 0) and i.cod_item in (select o.cod_item

    from itens_edicao o (nolock)

    where o.cod_item = i.cod_item

    and o.reeditar = 'S'))

    or (@reeditar = 1))

    AND I.SITUACAO_ITEM IN (:FD,:FE,:FC,:IP,:IN)

    order by i.nom_item

    end

  18. Por favor ... ninguém pode me ajudar?

    pelo menos de como eu posso somar a venda do dia ....

    se ajudar estou salvando as vendas assim:

    procedure Tfrmvendas.cmdfinalizar_vendaClick(Sender: TObject);

    begin

    if MessageDlg('Confirma Venda?', mtConfirmation, [mbYes, mbNo], 0) = mrYes Then

    begin

    TABLE_VENDA.Insert;

    TABLE_VENDA.FieldByName('data_venda').AsString := Label13.Caption;

    TABLE_VENDA.FieldByName('total_venda').AsString := txtsub_total.text;

    TABLE_VENDA.FieldByName('data_venda').AsString := txtdata_inicio.text;

    TABLE_VENDA.Post;

    TABLE_VENDA.Filtered := True;

    QRNOTA.Edit1.Text:= LABEL13.CAPTION;

    QRNOTA.Edit4.Text:= DBEdit1.text;

    QRNOTA.Edit6.Text:= DBEdit3.text;

    QRNOTA.Edit5.Text:= DBEdit4.text;

    QRNOTA.txtdata_final.Text:= txtdata_inicio.text;

    QRNOTA.Edit3.Text:= Edit3.text;

    QRNOTA.Edit2.Text:= TXTSUB_TOTAL.TEXT;

    QrNota.SHOW;

    End;

    TABLE_VENDA.Filter := '';

    TABLE_VENDA.Filtered := FALSE;

    QUERY_ITEM.Filtered := FALSE;

    QUERY_ITEM.Active := FALSE;

    LABEL13.Caption :='';

    TXTSUB_TOTAL.Text := '';

    TXTVALOR_RECEBIDO.Text := '';

    TXTTROCO.Text := '';

    PANELDADOS.Enabled := FALSE;

    TXTCODIGO.Text := '';

    DBImage1.Picture := nil;

    DBEdit2.Text := '';

    DBEdit3.Text := '';

    DBEDit4.Text :='';

    CLOSE;

    End;

    como faço para selecionar a data e atualizar o total dia só daquela data?

    Desde já agradeço quem puder me ajudar

  19. OLÁ, BOA TARDE....

    ESTOU COM UMA DUVIDA.. EU QUERIA FAZER UMA TELA DE ABERTURA E OUTRA DE FECHAMENTO DE CAIXA...

    TENHO 2 TABELAS EM ACESS 2003 ONDE TEM OS CAMPOS:

    NA TABELA VENDA:

    ID_VENDA

    HORA_VENDA

    DATA_VENDA

    CLIENTE

    TOTAL_VENDA

    TOTAL_DIA

    NA TABELA CAIXA

    OPERADAORA

    DATA_ABERTURA

    HORA_ABERTURA

    CAIXA_INICIAL

    RESPONSÁVEL

    DATA_FECHAMENTO

    HORA_FECHAMENTO

    PROXIMO_CAIXA

    NO VB6 eu fazia com o codigo :

    rs1.Open "Select * from venda_principal where data_venda= #" & Format(lbldate, "mm/dd/yyyy") & "#", con, adOpenKeyset, adLockOptimistic

    With rs1

    .AddNew

    .Fields("n°venda") = Me.Label9

    .Fields("data_venda") = Me.lbldate

    .Fields("hora_venda") = Me.lbltime

    .Fields("cliente") = Me.cbocliente

    .Fields("total_venda") = Me.txtvenda

    .Fields("total_dia") = Me.txtvenda

    .Fields("total_dia") = .Fields("total_dia") + CDbl(Me.txttotaldia_geral.Text)

    .Update

    .Close

    End With

    Set rs1 = Nothing

    Set con = Nothing

    no form de abertura eu só salvava os dados, no form de fechamento eu exibia o total da venda do dia:

    RS.Open "Select * from venda_principal where data_venda = #" & Format(Date, "mm/dd/yyyy") & "#", con, adOpenKeyset, adLockOptimistic

    If (RS.RecordCount = 0) Then

    Else

    RS.MoveLast

    txttotal_venda.Text = RS!total_dia

    End If

    RS.Close

    depois fecha o caixa

    On Error Resume Next

    txtcx.Text = CDbl(txttotal_venda.Text) + CDbl(txtcx_inicial.Text) - CDbl(txtproximo_cx.Text) - CDbl(txtretirada.Text)
    Set RS = New ADODB.Recordset

    Set con = New ADODB.Connection

    If txtresponsavel.Text = "" Then

    MsgBox "Informe o nome do responsavel", vbCritical

    txtresponsavel.SetFocus

    Else

    If txtproximo_cx.Text = "" Then

    MsgBox "Informe o valor do proximo caixa", vbCritical

    txtproximo_cx.SetFocus

    Else

    con.Open (cnSQL)

    RS.Open "Select * from caixa where data_abertura = #" & Format(Date, "mm/dd/yyyy") & "#", con, adOpenKeyset, adLockOptimistic

    If RS.EOF <> True And RS.BOF <> True Then

    With RS

    .Fields("responsavel") = Me.txtresponsavel

    .Fields("data_fechamento") = Me.lbldate

    .Fields("hora_fechamento") = Me.lbltime

    .Fields("proximo_caixa") = Me.txtproximo_cx

    .Update

    .Close

    End With

    MsgBox "Caixa fechado com sucesso!!."

    Set RS = Nothing

    Set con = Nothing

    Unload Me

    End If

    End If

    End If

    Não sei se esse é o modo correto de se fazer, mas nunca me deixou na mão ... enfim...

    1° Se esse for o modo correto de fazer como fazer tdo isso em delphi?

    2° Se não for como fazer?

    Agradeceria se alguém tivece um exemplo claro para eu estudar, ou alguém q pudesse me explicar como fazer...

    desde já agradeço

    forte abraço!!!!!

  20. Amigos problema resolvido, obrigada

    O problema é que eu estava tentando somar um campo onde antes de entrar o valor a quem possa ajudar apenas acrescentei antes da soma txtsub_total.text := '0,00'

    obrigada!!!!

    Amigos problema resolvido, obrigada

    O problema é que eu estava tentando somar um campo onde antes de entrar o valor a quem possa ajudar apenas acrescentei antes da soma txtsub_total.text := '0,00'

    obrigada!!!!

  21. Olá pessoal boa tarde ....

    Estou com dificuldade enorme com o dgrid é o seguinte:

    É o seguinte estou contruindo uma tela de venda, para isso estou usando um dbgrid para exibir os dados sa venda

    para somar a quantidade x o valor unitario, to usando:

    if txtquant.text = '' then

    txtquant.SetFocus

    else

    txttotal.Text := CurrToStr(StrToCurr(txtpeco_un.Text) * StrToFloat(txtquant.Text));

    txttotal.Text := FormatCurr('0.00',StrToCurr(txttotal.Text))

    para dar o total da venda estou usando:

    txtsub_total.Text:=CurrToStr(StrToCurr(txtsub_total.Text)+StrToCurr(txttotal.Text));

    txtsub_total.Text:=FormatCurr('0.00',StrToCurr(txtsub_total.Text));

    mas o problema é que nesse ultimo já tentei de tudo mas da o seguinte erro:

    Econvert error with messag ''' is not a valid floating point value'.Process stopped
    tradução:
    Erro Econvert com Mensags'' 'não é um valor de ponto flutuante válido ". Processo parado

    Já mudei no banco do tipo CURRENCY para texto e nada

    já tentei:

    txtsub_total.Text := CurrToStr(StrToCurr(txttotal.Text) * StrToFloat(txtsub_total.Text));

    txtsub_total.Text := FormatCurr('0.00',StrToCurr(txtsub_total.Text)

    var

    ValorTotal : Real;

    begin

    Valortotal := strtofloat(txtsub_total.Text) + strtofloat(txttotal.Text);

    txtsub_total.Text:=floattostr(ValorTotal);

    não sei mais oque tenta...

    agradeço que puder me ajuda

×
×
  • Criar Novo...