code: async function (showPrompts) {
      logger.step('** Deploying Value Registrar Contract');
      if (showPrompts) {
        // confirming the important addresses
        logger.info("Deployer Address: " + deployerAddress);
        logger.info("Value Ops Address: " + valueOpsAddress);
  
        await new Promise(
          function (onResolve, onReject) {
            prompts.question("Please verify all above details. Do you want to proceed? [Y/N]", function (intent) {
              if ((intent === 'Y') || (intent === 'y')) {
                logger.info('Great! Proceeding deployment.');
                prompts.close();
                onResolve();
              } else {
                logger.error('Exiting deployment scripts. Change the env vars and re-run.');
                process.exit(1);
              }
            });
          }
        );
      } else {
        prompts.close();
      }
  
      const contractDeployTxReceipt = await deployHelper.perform(valueRegistrarContractName, web3Provider,
        valueRegistrarContractAbi, valueRegistrarContractBin, valueDeployerName, {gasPrice: VC_GAS_PRICE, gas: VC_GAS_LIMIT});
  
      const valueRegistrarContractAddr = contractDeployTxReceipt.contractAddress;
  
      logger.step('** Setting Ops Address of Value Registrar contract to valueOps address and verifying it');
      const valueRegistrar = new ValueRegistrarKlass(valueRegistrarContractAddr);
      await valueRegistrar.setOpsAddress(valueDeployerName, valueOpsAddress);
  
      const getOpsAddressResponse = await valueRegistrar.getOpsAddress();
  
      if (!valueOpsAddress.equalsIgnoreCase(getOpsAddressResponse.data.address)) {
        logger.error('Exiting the deployment as opsAddress which was set just before does not match.');
        process.exit(1);
      }
  
      return Promise.resolve(responseHelper.successWithData(
        {contract: 'valueRegistrar', address: valueRegistrarContractAddr}));
    }
docs: Perform
  
  @param {boolean} showPrompts - show prompts
  
  @return {promise<result>}