def deploy_token(
    deploy_client: JSONRPCClient,
    contract_manager: ContractManager,
    initial_amount: typing.TokenAmount,
    decimals: int,
    token_name: str,
    token_symbol: str,
) -> ContractProxy:
    token_address = deploy_contract_web3(
        contract_name=CONTRACT_HUMAN_STANDARD_TOKEN,
        deploy_client=deploy_client,
        contract_manager=contract_manager,
        constructor_arguments=(initial_amount, decimals, token_name, token_symbol),
    )

    contract_abi = contract_manager.get_contract_abi(CONTRACT_HUMAN_STANDARD_TOKEN)
    return deploy_client.new_contract_proxy(
        contract_interface=contract_abi, contract_address=token_address
    )
def run_model(prior, images, model, disc_reg_weight):
  """Run the model with new data and samples.

  Args:
    prior: the noise source as the generator input.
    images: images sampled from dataset.
    model: a GAN model defined in gan.py.
    disc_reg_weight: regularisation weight for discrmininator gradients.

  Returns:
    debug_ops: statistics from the model, see gan.py for more detials.
    disc_grads: discriminator gradients.
    gen_grads: generator gradients.
  """
  generator_inputs = prior.sample(FLAGS.batch_size)
  model_output = model.connect(images, generator_inputs)
  optimization_components = model_output.optimization_components

  disc_grads = tf.gradients(
      optimization_components['disc'].loss,
      optimization_components['disc'].vars)

  gen_grads = tf.gradients(
      optimization_components['gen'].loss,
      optimization_components['gen'].vars)

  if disc_reg_weight > 0.0:
    reg_grads = _compute_reg_grads(gen_grads,
                                   optimization_components['disc'].vars)
    disc_grads = _acc_grads(disc_grads, disc_reg_weight, reg_grads)

  debug_ops = model_output.debug_ops

  return debug_ops, disc_grads, gen_grads