code: def valid(self, cnpj):
          
          if len(cnpj) != 14:
              return False
  
          tam = 12
          nums = cnpj[:tam]
          digs = cnpj[tam:]
  
          tot = 0
          pos = tam-7
          for i in range(tam, 0, -1):
              tot = tot + int(nums[tam-i])*pos
              pos = pos - 1
              if pos < 2:
                  pos = 9
          res = 0 if tot % 11 < 2 else 11 - (tot % 11)
          if res != int(digs[0]):
              return False
  
          tam = tam + 1
          nums = cnpj[:tam]
          tot = 0
          pos = tam-7
          for i in range(tam, 0, -1):
              tot = tot + int(nums[tam-i])*pos
              pos = pos - 1
              if pos < 2:
                  pos = 9
          res = 0 if tot % 11 < 2 else 11 - (tot % 11)
          if res != int(digs[1]):
              return False
  
          return True
docs: Check if a CNPJ is valid.
  
          We should avoid sending invalid CNPJ to the web service as we know
          it is going to be a waste of bandwidth. Assumes CNPJ is a string.