func: function contractorCancel(
      bytes16 _jobId,
      address _hirer,
      address _contractor,
      uint256 _value,
      uint256 _fee
    ) external onlyContractor(_contractor)
    {
      
      bytes32 jobHash = getJobHash(
        _jobId,
        _hirer,
        _contractor,
        _value,
        _fee);
  
      uint256 jobValue = hirerEscrowMap[_hirer][jobHash];
  
      
      require(jobEscrows[jobHash].exists);
  
      
      require(jobValue > 0 && jobValue == _value);
  
      
      require(jobValue >= jobValue.sub(_fee));
  
      
      require(totalInEscrow >= jobValue && totalInEscrow > 0);
  
      delete jobEscrows[jobHash];
      delete  hirerEscrowMap[_hirer][jobHash];
      emit CancelledByContractor(jobHash, msg.sender);
  
      totalInEscrow = totalInEscrow.sub(jobValue);
  
      _hirer.transfer(jobValue);
    }