text:
# This file is auto-generated by AWSMetadata.jl
using AWS
using AWS.AWSServices: robomaker
using AWS.Compat
using AWS.UUIDs

"""
    batch_delete_worlds(worlds)
    batch_delete_worlds(worlds, params::Dict{String,<:Any})

Deletes one or more worlds in a batch operation.

# Arguments
- `worlds`: A list of Amazon Resource Names (arns) that correspond to worlds to delete.

"""
batch_delete_worlds(worlds; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/batchDeleteWorlds", Dict{String, Any}("worlds"=>worlds); aws_config=aws_config)
batch_delete_worlds(worlds, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/batchDeleteWorlds", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("worlds"=>worlds), params)); aws_config=aws_config)

"""
    batch_describe_simulation_job(jobs)
    batch_describe_simulation_job(jobs, params::Dict{String,<:Any})

Describes one or more simulation jobs.

# Arguments
- `jobs`: A list of Amazon Resource Names (ARNs) of simulation jobs to describe.

"""
batch_describe_simulation_job(jobs; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/batchDescribeSimulationJob", Dict{String, Any}("jobs"=>jobs); aws_config=aws_config)
batch_describe_simulation_job(jobs, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/batchDescribeSimulationJob", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("jobs"=>jobs), params)); aws_config=aws_config)

"""
    cancel_deployment_job(job)
    cancel_deployment_job(job, params::Dict{String,<:Any})

Cancels the specified deployment job.

# Arguments
- `job`: The deployment job ARN to cancel.

"""
cancel_deployment_job(job; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/cancelDeploymentJob", Dict{String, Any}("job"=>job); aws_config=aws_config)
cancel_deployment_job(job, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/cancelDeploymentJob", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("job"=>job), params)); aws_config=aws_config)

"""
    cancel_simulation_job(job)
    cancel_simulation_job(job, params::Dict{String,<:Any})

Cancels the specified simulation job.

# Arguments
- `job`: The simulation job ARN to cancel.

"""
cancel_simulation_job(job; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/cancelSimulationJob", Dict{String, Any}("job"=>job); aws_config=aws_config)
cancel_simulation_job(job, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/cancelSimulationJob", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("job"=>job), params)); aws_config=aws_config)

"""
    cancel_simulation_job_batch(batch)
    cancel_simulation_job_batch(batch, params::Dict{String,<:Any})

Cancels a simulation job batch. When you cancel a simulation job batch, you are also
cancelling all of the active simulation jobs created as part of the batch.

# Arguments
- `batch`: The id of the batch to cancel.

"""
cancel_simulation_job_batch(batch; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/cancelSimulationJobBatch", Dict{String, Any}("batch"=>batch); aws_config=aws_config)
cancel_simulation_job_batch(batch, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/cancelSimulationJobBatch", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("batch"=>batch), params)); aws_config=aws_config)

"""
    cancel_world_export_job(job)
    cancel_world_export_job(job, params::Dict{String,<:Any})

Cancels the specified export job.

# Arguments
- `job`: The Amazon Resource Name (arn) of the world export job to cancel.

"""
cancel_world_export_job(job; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/cancelWorldExportJob", Dict{String, Any}("job"=>job); aws_config=aws_config)
cancel_world_export_job(job, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/cancelWorldExportJob", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("job"=>job), params)); aws_config=aws_config)

"""
    cancel_world_generation_job(job)
    cancel_world_generation_job(job, params::Dict{String,<:Any})

Cancels the specified world generator job.

# Arguments
- `job`: The Amazon Resource Name (arn) of the world generator job to cancel.

"""
cancel_world_generation_job(job; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/cancelWorldGenerationJob", Dict{String, Any}("job"=>job); aws_config=aws_config)
cancel_world_generation_job(job, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/cancelWorldGenerationJob", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("job"=>job), params)); aws_config=aws_config)

"""
    create_deployment_job(client_request_token, deployment_application_configs, fleet)
    create_deployment_job(client_request_token, deployment_application_configs, fleet, params::Dict{String,<:Any})

Deploys a specific version of a robot application to robots in a fleet. The robot
application must have a numbered applicationVersion for consistency reasons. To create a
new version, use CreateRobotApplicationVersion or see Creating a Robot Application Version.
  After 90 days, deployment jobs expire and will be deleted. They will no longer be
accessible.

# Arguments
- `client_request_token`: Unique, case-sensitive identifier that you provide to ensure the
  idempotency of the request.
- `deployment_application_configs`: The deployment application configuration.
- `fleet`: The Amazon Resource Name (ARN) of the fleet to deploy.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"deploymentConfig"`: The requested deployment configuration.
- `"tags"`: A map that contains tag keys and tag values that are attached to the deployment
  job.
"""
create_deployment_job(clientRequestToken, deploymentApplicationConfigs, fleet; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createDeploymentJob", Dict{String, Any}("clientRequestToken"=>clientRequestToken, "deploymentApplicationConfigs"=>deploymentApplicationConfigs, "fleet"=>fleet); aws_config=aws_config)
create_deployment_job(clientRequestToken, deploymentApplicationConfigs, fleet, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createDeploymentJob", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("clientRequestToken"=>clientRequestToken, "deploymentApplicationConfigs"=>deploymentApplicationConfigs, "fleet"=>fleet), params)); aws_config=aws_config)

"""
    create_fleet(name)
    create_fleet(name, params::Dict{String,<:Any})

Creates a fleet, a logical group of robots running the same robot application.

# Arguments
- `name`: The name of the fleet.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"tags"`: A map that contains tag keys and tag values that are attached to the fleet.
"""
create_fleet(name; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createFleet", Dict{String, Any}("name"=>name); aws_config=aws_config)
create_fleet(name, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createFleet", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("name"=>name), params)); aws_config=aws_config)

"""
    create_robot(architecture, greengrass_group_id, name)
    create_robot(architecture, greengrass_group_id, name, params::Dict{String,<:Any})

Creates a robot.

# Arguments
- `architecture`: The target architecture of the robot.
- `greengrass_group_id`: The Greengrass group id.
- `name`: The name for the robot.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"tags"`: A map that contains tag keys and tag values that are attached to the robot.
"""
create_robot(architecture, greengrassGroupId, name; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createRobot", Dict{String, Any}("architecture"=>architecture, "greengrassGroupId"=>greengrassGroupId, "name"=>name); aws_config=aws_config)
create_robot(architecture, greengrassGroupId, name, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createRobot", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("architecture"=>architecture, "greengrassGroupId"=>greengrassGroupId, "name"=>name), params)); aws_config=aws_config)

"""
    create_robot_application(name, robot_software_suite, sources)
    create_robot_application(name, robot_software_suite, sources, params::Dict{String,<:Any})

Creates a robot application.

# Arguments
- `name`: The name of the robot application.
- `robot_software_suite`: The robot software suite (ROS distribuition) used by the robot
  application.
- `sources`: The sources of the robot application.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"tags"`: A map that contains tag keys and tag values that are attached to the robot
  application.
"""
create_robot_application(name, robotSoftwareSuite, sources; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createRobotApplication", Dict{String, Any}("name"=>name, "robotSoftwareSuite"=>robotSoftwareSuite, "sources"=>sources); aws_config=aws_config)
create_robot_application(name, robotSoftwareSuite, sources, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createRobotApplication", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("name"=>name, "robotSoftwareSuite"=>robotSoftwareSuite, "sources"=>sources), params)); aws_config=aws_config)

"""
    create_robot_application_version(application)
    create_robot_application_version(application, params::Dict{String,<:Any})

Creates a version of a robot application.

# Arguments
- `application`: The application information for the robot application.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"currentRevisionId"`: The current revision id for the robot application. If you provide
  a value and it matches the latest revision ID, a new version will be created.
"""
create_robot_application_version(application; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createRobotApplicationVersion", Dict{String, Any}("application"=>application); aws_config=aws_config)
create_robot_application_version(application, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createRobotApplicationVersion", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("application"=>application), params)); aws_config=aws_config)

"""
    create_simulation_application(name, robot_software_suite, simulation_software_suite, sources)
    create_simulation_application(name, robot_software_suite, simulation_software_suite, sources, params::Dict{String,<:Any})

Creates a simulation application.

# Arguments
- `name`: The name of the simulation application.
- `robot_software_suite`: The robot software suite (ROS distribution) used by the
  simulation application.
- `simulation_software_suite`: The simulation software suite used by the simulation
  application.
- `sources`: The sources of the simulation application.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"renderingEngine"`: The rendering engine for the simulation application.
- `"tags"`: A map that contains tag keys and tag values that are attached to the simulation
  application.
"""
create_simulation_application(name, robotSoftwareSuite, simulationSoftwareSuite, sources; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createSimulationApplication", Dict{String, Any}("name"=>name, "robotSoftwareSuite"=>robotSoftwareSuite, "simulationSoftwareSuite"=>simulationSoftwareSuite, "sources"=>sources); aws_config=aws_config)
create_simulation_application(name, robotSoftwareSuite, simulationSoftwareSuite, sources, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createSimulationApplication", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("name"=>name, "robotSoftwareSuite"=>robotSoftwareSuite, "simulationSoftwareSuite"=>simulationSoftwareSuite, "sources"=>sources), params)); aws_config=aws_config)

"""
    create_simulation_application_version(application)
    create_simulation_application_version(application, params::Dict{String,<:Any})

Creates a simulation application with a specific revision id.

# Arguments
- `application`: The application information for the simulation application.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"currentRevisionId"`: The current revision id for the simulation application. If you
  provide a value and it matches the latest revision ID, a new version will be created.
"""
create_simulation_application_version(application; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createSimulationApplicationVersion", Dict{String, Any}("application"=>application); aws_config=aws_config)
create_simulation_application_version(application, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createSimulationApplicationVersion", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("application"=>application), params)); aws_config=aws_config)

"""
    create_simulation_job(iam_role, max_job_duration_in_seconds)
    create_simulation_job(iam_role, max_job_duration_in_seconds, params::Dict{String,<:Any})

Creates a simulation job.  After 90 days, simulation jobs expire and will be deleted. They
will no longer be accessible.

# Arguments
- `iam_role`: The IAM role name that allows the simulation instance to call the AWS APIs
  that are specified in its associated policies on your behalf. This is how credentials are
  passed in to your simulation job.
- `max_job_duration_in_seconds`: The maximum simulation job duration in seconds (up to 14
  days or 1,209,600 seconds. When maxJobDurationInSeconds is reached, the simulation job will
  status will transition to Completed.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"clientRequestToken"`: Unique, case-sensitive identifier that you provide to ensure the
  idempotency of the request.
- `"compute"`: Compute information for the simulation job.
- `"dataSources"`: Specify data sources to mount read-only files from S3 into your
  simulation. These files are available under /opt/robomaker/datasources/data_source_name.
  There is a limit of 100 files and a combined size of 25GB for all DataSourceConfig objects.

- `"failureBehavior"`: The failure behavior the simulation job.  Continue  Restart the
  simulation job in the same host instance.  Fail  Stop the simulation job and terminate the
  instance.
- `"loggingConfig"`: The logging configuration.
- `"outputLocation"`: Location for output files generated by the simulation job.
- `"robotApplications"`: The robot application to use in the simulation job.
- `"simulationApplications"`: The simulation application to use in the simulation job.
- `"tags"`: A map that contains tag keys and tag values that are attached to the simulation
  job.
- `"vpcConfig"`: If your simulation job accesses resources in a VPC, you provide this
  parameter identifying the list of security group IDs and subnet IDs. These must belong to
  the same VPC. You must provide at least one security group and one subnet ID.
"""
create_simulation_job(iamRole, maxJobDurationInSeconds; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createSimulationJob", Dict{String, Any}("iamRole"=>iamRole, "maxJobDurationInSeconds"=>maxJobDurationInSeconds, "clientRequestToken"=>string(uuid4())); aws_config=aws_config)
create_simulation_job(iamRole, maxJobDurationInSeconds, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createSimulationJob", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("iamRole"=>iamRole, "maxJobDurationInSeconds"=>maxJobDurationInSeconds, "clientRequestToken"=>string(uuid4())), params)); aws_config=aws_config)

"""
    create_world_export_job(iam_role, output_location, worlds)
    create_world_export_job(iam_role, output_location, worlds, params::Dict{String,<:Any})

Creates a world export job.

# Arguments
- `iam_role`: The IAM role that the world export process uses to access the Amazon S3
  bucket and put the export.
- `output_location`:
- `worlds`: A list of Amazon Resource Names (arns) that correspond to worlds to export.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"clientRequestToken"`: Unique, case-sensitive identifier that you provide to ensure the
  idempotency of the request.
- `"tags"`: A map that contains tag keys and tag values that are attached to the world
  export job.
"""
create_world_export_job(iamRole, outputLocation, worlds; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createWorldExportJob", Dict{String, Any}("iamRole"=>iamRole, "outputLocation"=>outputLocation, "worlds"=>worlds, "clientRequestToken"=>string(uuid4())); aws_config=aws_config)
create_world_export_job(iamRole, outputLocation, worlds, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createWorldExportJob", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("iamRole"=>iamRole, "outputLocation"=>outputLocation, "worlds"=>worlds, "clientRequestToken"=>string(uuid4())), params)); aws_config=aws_config)

"""
    create_world_generation_job(template, world_count)
    create_world_generation_job(template, world_count, params::Dict{String,<:Any})

Creates worlds using the specified template.

# Arguments
- `template`: The Amazon Resource Name (arn) of the world template describing the worlds
  you want to create.
- `world_count`: Information about the world count.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"clientRequestToken"`: Unique, case-sensitive identifier that you provide to ensure the
  idempotency of the request.
- `"tags"`: A map that contains tag keys and tag values that are attached to the world
  generator job.
- `"worldTags"`: A map that contains tag keys and tag values that are attached to the
  generated worlds.
"""
create_world_generation_job(template, worldCount; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createWorldGenerationJob", Dict{String, Any}("template"=>template, "worldCount"=>worldCount, "clientRequestToken"=>string(uuid4())); aws_config=aws_config)
create_world_generation_job(template, worldCount, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createWorldGenerationJob", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("template"=>template, "worldCount"=>worldCount, "clientRequestToken"=>string(uuid4())), params)); aws_config=aws_config)

"""
    create_world_template()
    create_world_template(params::Dict{String,<:Any})

Creates a world template.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"clientRequestToken"`: Unique, case-sensitive identifier that you provide to ensure the
  idempotency of the request.
- `"name"`: The name of the world template.
- `"tags"`: A map that contains tag keys and tag values that are attached to the world
  template.
- `"templateBody"`: The world template body.
- `"templateLocation"`: The location of the world template.
"""
create_world_template(; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createWorldTemplate"; aws_config=aws_config)
create_world_template(params::AbstractDict{String, Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/createWorldTemplate", params; aws_config=aws_config)

"""
    delete_fleet(fleet)
    delete_fleet(fleet, params::Dict{String,<:Any})

Deletes a fleet.

# Arguments
- `fleet`: The Amazon Resource Name (ARN) of the fleet.

"""
delete_fleet(fleet; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/deleteFleet", Dict{String, Any}("fleet"=>fleet); aws_config=aws_config)
delete_fleet(fleet, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/deleteFleet", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("fleet"=>fleet), params)); aws_config=aws_config)

"""
    delete_robot(robot)
    delete_robot(robot, params::Dict{String,<:Any})

Deletes a robot.

# Arguments
- `robot`: The Amazon Resource Name (ARN) of the robot.

"""
delete_robot(robot; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/deleteRobot", Dict{String, Any}("robot"=>robot); aws_config=aws_config)
delete_robot(robot, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/deleteRobot", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("robot"=>robot), params)); aws_config=aws_config)

"""
    delete_robot_application(application)
    delete_robot_application(application, params::Dict{String,<:Any})

Deletes a robot application.

# Arguments
- `application`: The Amazon Resource Name (ARN) of the the robot application.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"applicationVersion"`: The version of the robot application to delete.
"""
delete_robot_application(application; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/deleteRobotApplication", Dict{String, Any}("application"=>application); aws_config=aws_config)
delete_robot_application(application, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/deleteRobotApplication", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("application"=>application), params)); aws_config=aws_config)

"""
    delete_simulation_application(application)
    delete_simulation_application(application, params::Dict{String,<:Any})

Deletes a simulation application.

# Arguments
- `application`: The application information for the simulation application to delete.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"applicationVersion"`: The version of the simulation application to delete.
"""
delete_simulation_application(application; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/deleteSimulationApplication", Dict{String, Any}("application"=>application); aws_config=aws_config)
delete_simulation_application(application, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/deleteSimulationApplication", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("application"=>application), params)); aws_config=aws_config)

"""
    delete_world_template(template)
    delete_world_template(template, params::Dict{String,<:Any})

Deletes a world template.

# Arguments
- `template`: The Amazon Resource Name (arn) of the world template you want to delete.

"""
delete_world_template(template; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/deleteWorldTemplate", Dict{String, Any}("template"=>template); aws_config=aws_config)
delete_world_template(template, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/deleteWorldTemplate", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("template"=>template), params)); aws_config=aws_config)

"""
    deregister_robot(fleet, robot)
    deregister_robot(fleet, robot, params::Dict{String,<:Any})

Deregisters a robot.

# Arguments
- `fleet`: The Amazon Resource Name (ARN) of the fleet.
- `robot`: The Amazon Resource Name (ARN) of the robot.

"""
deregister_robot(fleet, robot; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/deregisterRobot", Dict{String, Any}("fleet"=>fleet, "robot"=>robot); aws_config=aws_config)
deregister_robot(fleet, robot, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/deregisterRobot", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("fleet"=>fleet, "robot"=>robot), params)); aws_config=aws_config)

"""
    describe_deployment_job(job)
    describe_deployment_job(job, params::Dict{String,<:Any})

Describes a deployment job.

# Arguments
- `job`: The Amazon Resource Name (ARN) of the deployment job.

"""
describe_deployment_job(job; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeDeploymentJob", Dict{String, Any}("job"=>job); aws_config=aws_config)
describe_deployment_job(job, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeDeploymentJob", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("job"=>job), params)); aws_config=aws_config)

"""
    describe_fleet(fleet)
    describe_fleet(fleet, params::Dict{String,<:Any})

Describes a fleet.

# Arguments
- `fleet`: The Amazon Resource Name (ARN) of the fleet.

"""
describe_fleet(fleet; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeFleet", Dict{String, Any}("fleet"=>fleet); aws_config=aws_config)
describe_fleet(fleet, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeFleet", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("fleet"=>fleet), params)); aws_config=aws_config)

"""
    describe_robot(robot)
    describe_robot(robot, params::Dict{String,<:Any})

Describes a robot.

# Arguments
- `robot`: The Amazon Resource Name (ARN) of the robot to be described.

"""
describe_robot(robot; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeRobot", Dict{String, Any}("robot"=>robot); aws_config=aws_config)
describe_robot(robot, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeRobot", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("robot"=>robot), params)); aws_config=aws_config)

"""
    describe_robot_application(application)
    describe_robot_application(application, params::Dict{String,<:Any})

Describes a robot application.

# Arguments
- `application`: The Amazon Resource Name (ARN) of the robot application.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"applicationVersion"`: The version of the robot application to describe.
"""
describe_robot_application(application; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeRobotApplication", Dict{String, Any}("application"=>application); aws_config=aws_config)
describe_robot_application(application, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeRobotApplication", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("application"=>application), params)); aws_config=aws_config)

"""
    describe_simulation_application(application)
    describe_simulation_application(application, params::Dict{String,<:Any})

Describes a simulation application.

# Arguments
- `application`: The application information for the simulation application.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"applicationVersion"`: The version of the simulation application to describe.
"""
describe_simulation_application(application; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeSimulationApplication", Dict{String, Any}("application"=>application); aws_config=aws_config)
describe_simulation_application(application, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeSimulationApplication", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("application"=>application), params)); aws_config=aws_config)

"""
    describe_simulation_job(job)
    describe_simulation_job(job, params::Dict{String,<:Any})

Describes a simulation job.

# Arguments
- `job`: The Amazon Resource Name (ARN) of the simulation job to be described.

"""
describe_simulation_job(job; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeSimulationJob", Dict{String, Any}("job"=>job); aws_config=aws_config)
describe_simulation_job(job, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeSimulationJob", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("job"=>job), params)); aws_config=aws_config)

"""
    describe_simulation_job_batch(batch)
    describe_simulation_job_batch(batch, params::Dict{String,<:Any})

Describes a simulation job batch.

# Arguments
- `batch`: The id of the batch to describe.

"""
describe_simulation_job_batch(batch; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeSimulationJobBatch", Dict{String, Any}("batch"=>batch); aws_config=aws_config)
describe_simulation_job_batch(batch, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeSimulationJobBatch", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("batch"=>batch), params)); aws_config=aws_config)

"""
    describe_world(world)
    describe_world(world, params::Dict{String,<:Any})

Describes a world.

# Arguments
- `world`: The Amazon Resource Name (arn) of the world you want to describe.

"""
describe_world(world; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeWorld", Dict{String, Any}("world"=>world); aws_config=aws_config)
describe_world(world, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeWorld", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("world"=>world), params)); aws_config=aws_config)

"""
    describe_world_export_job(job)
    describe_world_export_job(job, params::Dict{String,<:Any})

Describes a world export job.

# Arguments
- `job`: The Amazon Resource Name (arn) of the world export job to describe.

"""
describe_world_export_job(job; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeWorldExportJob", Dict{String, Any}("job"=>job); aws_config=aws_config)
describe_world_export_job(job, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeWorldExportJob", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("job"=>job), params)); aws_config=aws_config)

"""
    describe_world_generation_job(job)
    describe_world_generation_job(job, params::Dict{String,<:Any})

Describes a world generation job.

# Arguments
- `job`: The Amazon Resource Name (arn) of the world generation job to describe.

"""
describe_world_generation_job(job; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeWorldGenerationJob", Dict{String, Any}("job"=>job); aws_config=aws_config)
describe_world_generation_job(job, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeWorldGenerationJob", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("job"=>job), params)); aws_config=aws_config)

"""
    describe_world_template(template)
    describe_world_template(template, params::Dict{String,<:Any})

Describes a world template.

# Arguments
- `template`: The Amazon Resource Name (arn) of the world template you want to describe.

"""
describe_world_template(template; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeWorldTemplate", Dict{String, Any}("template"=>template); aws_config=aws_config)
describe_world_template(template, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/describeWorldTemplate", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("template"=>template), params)); aws_config=aws_config)

"""
    get_world_template_body()
    get_world_template_body(params::Dict{String,<:Any})

Gets the world template body.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"generationJob"`: The Amazon Resource Name (arn) of the world generator job.
- `"template"`: The Amazon Resource Name (arn) of the world template.
"""
get_world_template_body(; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/getWorldTemplateBody"; aws_config=aws_config)
get_world_template_body(params::AbstractDict{String, Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/getWorldTemplateBody", params; aws_config=aws_config)

"""
    list_deployment_jobs()
    list_deployment_jobs(params::Dict{String,<:Any})

Returns a list of deployment jobs for a fleet. You can optionally provide filters to
retrieve specific deployment jobs.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"filters"`: Optional filters to limit results. The filter names status and fleetName are
  supported. When filtering, you must use the complete value of the filtered item. You can
  use up to three filters, but they must be for the same named item. For example, if you are
  looking for items with the status InProgress or the status Pending.
- `"maxResults"`: When this parameter is used, ListDeploymentJobs only returns maxResults
  results in a single page along with a nextToken response element. The remaining results of
  the initial request can be seen by sending another ListDeploymentJobs request with the
  returned nextToken value. This value can be between 1 and 200. If this parameter is not
  used, then ListDeploymentJobs returns up to 200 results and a nextToken value if
  applicable.
- `"nextToken"`: If the previous paginated request did not return all of the remaining
  results, the response object's nextToken parameter value is set to a token. To retrieve the
  next set of results, call ListDeploymentJobs again and assign that token to the request
  object's nextToken parameter. If there are no remaining results, the previous response
  object's NextToken parameter is set to null.
"""
list_deployment_jobs(; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listDeploymentJobs"; aws_config=aws_config)
list_deployment_jobs(params::AbstractDict{String, Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listDeploymentJobs", params; aws_config=aws_config)

"""
    list_fleets()
    list_fleets(params::Dict{String,<:Any})

Returns a list of fleets. You can optionally provide filters to retrieve specific fleets.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"filters"`: Optional filters to limit results. The filter name name is supported. When
  filtering, you must use the complete value of the filtered item. You can use up to three
  filters.
- `"maxResults"`: When this parameter is used, ListFleets only returns maxResults results
  in a single page along with a nextToken response element. The remaining results of the
  initial request can be seen by sending another ListFleets request with the returned
  nextToken value. This value can be between 1 and 200. If this parameter is not used, then
  ListFleets returns up to 200 results and a nextToken value if applicable.
- `"nextToken"`: If the previous paginated request did not return all of the remaining
  results, the response object's nextToken parameter value is set to a token. To retrieve the
  next set of results, call ListFleets again and assign that token to the request object's
  nextToken parameter. If there are no remaining results, the previous response object's
  NextToken parameter is set to null.   This token should be treated as an opaque identifier
  that is only used to retrieve the next items in a list and not for other programmatic
  purposes.
"""
list_fleets(; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listFleets"; aws_config=aws_config)
list_fleets(params::AbstractDict{String, Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listFleets", params; aws_config=aws_config)

"""
    list_robot_applications()
    list_robot_applications(params::Dict{String,<:Any})

Returns a list of robot application. You can optionally provide filters to retrieve
specific robot applications.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"filters"`: Optional filters to limit results. The filter name name is supported. When
  filtering, you must use the complete value of the filtered item. You can use up to three
  filters.
- `"maxResults"`: When this parameter is used, ListRobotApplications only returns
  maxResults results in a single page along with a nextToken response element. The remaining
  results of the initial request can be seen by sending another ListRobotApplications request
  with the returned nextToken value. This value can be between 1 and 100. If this parameter
  is not used, then ListRobotApplications returns up to 100 results and a nextToken value if
  applicable.
- `"nextToken"`: If the previous paginated request did not return all of the remaining
  results, the response object's nextToken parameter value is set to a token. To retrieve the
  next set of results, call ListRobotApplications again and assign that token to the request
  object's nextToken parameter. If there are no remaining results, the previous response
  object's NextToken parameter is set to null.
- `"versionQualifier"`: The version qualifier of the robot application.
"""
list_robot_applications(; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listRobotApplications"; aws_config=aws_config)
list_robot_applications(params::AbstractDict{String, Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listRobotApplications", params; aws_config=aws_config)

"""
    list_robots()
    list_robots(params::Dict{String,<:Any})

Returns a list of robots. You can optionally provide filters to retrieve specific robots.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"filters"`: Optional filters to limit results. The filter names status and fleetName are
  supported. When filtering, you must use the complete value of the filtered item. You can
  use up to three filters, but they must be for the same named item. For example, if you are
  looking for items with the status Registered or the status Available.
- `"maxResults"`: When this parameter is used, ListRobots only returns maxResults results
  in a single page along with a nextToken response element. The remaining results of the
  initial request can be seen by sending another ListRobots request with the returned
  nextToken value. This value can be between 1 and 200. If this parameter is not used, then
  ListRobots returns up to 200 results and a nextToken value if applicable.
- `"nextToken"`: If the previous paginated request did not return all of the remaining
  results, the response object's nextToken parameter value is set to a token. To retrieve the
  next set of results, call ListRobots again and assign that token to the request object's
  nextToken parameter. If there are no remaining results, the previous response object's
  NextToken parameter is set to null.
"""
list_robots(; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listRobots"; aws_config=aws_config)
list_robots(params::AbstractDict{String, Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listRobots", params; aws_config=aws_config)

"""
    list_simulation_applications()
    list_simulation_applications(params::Dict{String,<:Any})

Returns a list of simulation applications. You can optionally provide filters to retrieve
specific simulation applications.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"filters"`: Optional list of filters to limit results. The filter name name is
  supported. When filtering, you must use the complete value of the filtered item. You can
  use up to three filters.
- `"maxResults"`: When this parameter is used, ListSimulationApplications only returns
  maxResults results in a single page along with a nextToken response element. The remaining
  results of the initial request can be seen by sending another ListSimulationApplications
  request with the returned nextToken value. This value can be between 1 and 100. If this
  parameter is not used, then ListSimulationApplications returns up to 100 results and a
  nextToken value if applicable.
- `"nextToken"`: If the previous paginated request did not return all of the remaining
  results, the response object's nextToken parameter value is set to a token. To retrieve the
  next set of results, call ListSimulationApplications again and assign that token to the
  request object's nextToken parameter. If there are no remaining results, the previous
  response object's NextToken parameter is set to null.
- `"versionQualifier"`: The version qualifier of the simulation application.
"""
list_simulation_applications(; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listSimulationApplications"; aws_config=aws_config)
list_simulation_applications(params::AbstractDict{String, Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listSimulationApplications", params; aws_config=aws_config)

"""
    list_simulation_job_batches()
    list_simulation_job_batches(params::Dict{String,<:Any})

Returns a list simulation job batches. You can optionally provide filters to retrieve
specific simulation batch jobs.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"filters"`: Optional filters to limit results.
- `"maxResults"`: When this parameter is used, ListSimulationJobBatches only returns
  maxResults results in a single page along with a nextToken response element. The remaining
  results of the initial request can be seen by sending another ListSimulationJobBatches
  request with the returned nextToken value.
- `"nextToken"`: If the previous paginated request did not return all of the remaining
  results, the response object's nextToken parameter value is set to a token. To retrieve the
  next set of results, call ListSimulationJobBatches again and assign that token to the
  request object's nextToken parameter. If there are no remaining results, the previous
  response object's NextToken parameter is set to null.
"""
list_simulation_job_batches(; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listSimulationJobBatches"; aws_config=aws_config)
list_simulation_job_batches(params::AbstractDict{String, Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listSimulationJobBatches", params; aws_config=aws_config)

"""
    list_simulation_jobs()
    list_simulation_jobs(params::Dict{String,<:Any})

Returns a list of simulation jobs. You can optionally provide filters to retrieve specific
simulation jobs.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"filters"`: Optional filters to limit results. The filter names status and
  simulationApplicationName and robotApplicationName are supported. When filtering, you must
  use the complete value of the filtered item. You can use up to three filters, but they must
  be for the same named item. For example, if you are looking for items with the status
  Preparing or the status Running.
- `"maxResults"`: When this parameter is used, ListSimulationJobs only returns maxResults
  results in a single page along with a nextToken response element. The remaining results of
  the initial request can be seen by sending another ListSimulationJobs request with the
  returned nextToken value. This value can be between 1 and 1000. If this parameter is not
  used, then ListSimulationJobs returns up to 1000 results and a nextToken value if
  applicable.
- `"nextToken"`: If the previous paginated request did not return all of the remaining
  results, the response object's nextToken parameter value is set to a token. To retrieve the
  next set of results, call ListSimulationJobs again and assign that token to the request
  object's nextToken parameter. If there are no remaining results, the previous response
  object's NextToken parameter is set to null.
"""
list_simulation_jobs(; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listSimulationJobs"; aws_config=aws_config)
list_simulation_jobs(params::AbstractDict{String, Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listSimulationJobs", params; aws_config=aws_config)

"""
    list_tags_for_resource(resource_arn)
    list_tags_for_resource(resource_arn, params::Dict{String,<:Any})

Lists all tags on a AWS RoboMaker resource.

# Arguments
- `resource_arn`: The AWS RoboMaker Amazon Resource Name (ARN) with tags to be listed.

"""
list_tags_for_resource(resourceArn; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("GET", "/tags/$(resourceArn)"; aws_config=aws_config)
list_tags_for_resource(resourceArn, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("GET", "/tags/$(resourceArn)", params; aws_config=aws_config)

"""
    list_world_export_jobs()
    list_world_export_jobs(params::Dict{String,<:Any})

Lists world export jobs.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"filters"`: Optional filters to limit results. You can use generationJobId and
  templateId.
- `"maxResults"`: When this parameter is used, ListWorldExportJobs only returns maxResults
  results in a single page along with a nextToken response element. The remaining results of
  the initial request can be seen by sending another ListWorldExportJobs request with the
  returned nextToken value. This value can be between 1 and 100. If this parameter is not
  used, then ListWorldExportJobs returns up to 100 results and a nextToken value if
  applicable.
- `"nextToken"`: If the previous paginated request did not return all of the remaining
  results, the response object's nextToken parameter value is set to a token. To retrieve the
  next set of results, call ListWorldExportJobs again and assign that token to the request
  object's nextToken parameter. If there are no remaining results, the previous response
  object's NextToken parameter is set to null.
"""
list_world_export_jobs(; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listWorldExportJobs"; aws_config=aws_config)
list_world_export_jobs(params::AbstractDict{String, Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listWorldExportJobs", params; aws_config=aws_config)

"""
    list_world_generation_jobs()
    list_world_generation_jobs(params::Dict{String,<:Any})

Lists world generator jobs.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"filters"`: Optional filters to limit results. You can use status and templateId.
- `"maxResults"`: When this parameter is used, ListWorldGeneratorJobs only returns
  maxResults results in a single page along with a nextToken response element. The remaining
  results of the initial request can be seen by sending another ListWorldGeneratorJobs
  request with the returned nextToken value. This value can be between 1 and 100. If this
  parameter is not used, then ListWorldGeneratorJobs returns up to 100 results and a
  nextToken value if applicable.
- `"nextToken"`: If the previous paginated request did not return all of the remaining
  results, the response object's nextToken parameter value is set to a token. To retrieve the
  next set of results, call ListWorldGenerationJobsRequest again and assign that token to the
  request object's nextToken parameter. If there are no remaining results, the previous
  response object's NextToken parameter is set to null.
"""
list_world_generation_jobs(; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listWorldGenerationJobs"; aws_config=aws_config)
list_world_generation_jobs(params::AbstractDict{String, Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listWorldGenerationJobs", params; aws_config=aws_config)

"""
    list_world_templates()
    list_world_templates(params::Dict{String,<:Any})

Lists world templates.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`: When this parameter is used, ListWorldTemplates only returns maxResults
  results in a single page along with a nextToken response element. The remaining results of
  the initial request can be seen by sending another ListWorldTemplates request with the
  returned nextToken value. This value can be between 1 and 100. If this parameter is not
  used, then ListWorldTemplates returns up to 100 results and a nextToken value if
  applicable.
- `"nextToken"`: If the previous paginated request did not return all of the remaining
  results, the response object's nextToken parameter value is set to a token. To retrieve the
  next set of results, call ListWorldTemplates again and assign that token to the request
  object's nextToken parameter. If there are no remaining results, the previous response
  object's NextToken parameter is set to null.
"""
list_world_templates(; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listWorldTemplates"; aws_config=aws_config)
list_world_templates(params::AbstractDict{String, Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listWorldTemplates", params; aws_config=aws_config)

"""
    list_worlds()
    list_worlds(params::Dict{String,<:Any})

Lists worlds.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"filters"`: Optional filters to limit results. You can use status.
- `"maxResults"`: When this parameter is used, ListWorlds only returns maxResults results
  in a single page along with a nextToken response element. The remaining results of the
  initial request can be seen by sending another ListWorlds request with the returned
  nextToken value. This value can be between 1 and 100. If this parameter is not used, then
  ListWorlds returns up to 100 results and a nextToken value if applicable.
- `"nextToken"`: If the previous paginated request did not return all of the remaining
  results, the response object's nextToken parameter value is set to a token. To retrieve the
  next set of results, call ListWorlds again and assign that token to the request object's
  nextToken parameter. If there are no remaining results, the previous response object's
  NextToken parameter is set to null.
"""
list_worlds(; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listWorlds"; aws_config=aws_config)
list_worlds(params::AbstractDict{String, Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/listWorlds", params; aws_config=aws_config)

"""
    register_robot(fleet, robot)
    register_robot(fleet, robot, params::Dict{String,<:Any})

Registers a robot with a fleet.

# Arguments
- `fleet`: The Amazon Resource Name (ARN) of the fleet.
- `robot`: The Amazon Resource Name (ARN) of the robot.

"""
register_robot(fleet, robot; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/registerRobot", Dict{String, Any}("fleet"=>fleet, "robot"=>robot); aws_config=aws_config)
register_robot(fleet, robot, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/registerRobot", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("fleet"=>fleet, "robot"=>robot), params)); aws_config=aws_config)

"""
    restart_simulation_job(job)
    restart_simulation_job(job, params::Dict{String,<:Any})

Restarts a running simulation job.

# Arguments
- `job`: The Amazon Resource Name (ARN) of the simulation job.

"""
restart_simulation_job(job; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/restartSimulationJob", Dict{String, Any}("job"=>job); aws_config=aws_config)
restart_simulation_job(job, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/restartSimulationJob", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("job"=>job), params)); aws_config=aws_config)

"""
    start_simulation_job_batch(create_simulation_job_requests)
    start_simulation_job_batch(create_simulation_job_requests, params::Dict{String,<:Any})

Starts a new simulation job batch. The batch is defined using one or more
SimulationJobRequest objects.

# Arguments
- `create_simulation_job_requests`: A list of simulation job requests to create in the
  batch.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"batchPolicy"`: The batch policy.
- `"clientRequestToken"`: Unique, case-sensitive identifier that you provide to ensure the
  idempotency of the request.
- `"tags"`: A map that contains tag keys and tag values that are attached to the deployment
  job batch.
"""
start_simulation_job_batch(createSimulationJobRequests; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/startSimulationJobBatch", Dict{String, Any}("createSimulationJobRequests"=>createSimulationJobRequests, "clientRequestToken"=>string(uuid4())); aws_config=aws_config)
start_simulation_job_batch(createSimulationJobRequests, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/startSimulationJobBatch", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("createSimulationJobRequests"=>createSimulationJobRequests, "clientRequestToken"=>string(uuid4())), params)); aws_config=aws_config)

"""
    sync_deployment_job(client_request_token, fleet)
    sync_deployment_job(client_request_token, fleet, params::Dict{String,<:Any})

Syncrhonizes robots in a fleet to the latest deployment. This is helpful if robots were
added after a deployment.

# Arguments
- `client_request_token`: Unique, case-sensitive identifier that you provide to ensure the
  idempotency of the request.
- `fleet`: The target fleet for the synchronization.

"""
sync_deployment_job(clientRequestToken, fleet; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/syncDeploymentJob", Dict{String, Any}("clientRequestToken"=>clientRequestToken, "fleet"=>fleet); aws_config=aws_config)
sync_deployment_job(clientRequestToken, fleet, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/syncDeploymentJob", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("clientRequestToken"=>clientRequestToken, "fleet"=>fleet), params)); aws_config=aws_config)

"""
    tag_resource(resource_arn, tags)
    tag_resource(resource_arn, tags, params::Dict{String,<:Any})

Adds or edits tags for a AWS RoboMaker resource. Each tag consists of a tag key and a tag
value. Tag keys and tag values are both required, but tag values can be empty strings.  For
information about the rules that apply to tag keys and tag values, see User-Defined Tag
Restrictions in the AWS Billing and Cost Management User Guide.

# Arguments
- `resource_arn`: The Amazon Resource Name (ARN) of the AWS RoboMaker resource you are
  tagging.
- `tags`: A map that contains tag keys and tag values that are attached to the resource.

"""
tag_resource(resourceArn, tags; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/tags/$(resourceArn)", Dict{String, Any}("tags"=>tags); aws_config=aws_config)
tag_resource(resourceArn, tags, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/tags/$(resourceArn)", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("tags"=>tags), params)); aws_config=aws_config)

"""
    untag_resource(resource_arn, tag_keys)
    untag_resource(resource_arn, tag_keys, params::Dict{String,<:Any})

Removes the specified tags from the specified AWS RoboMaker resource. To remove a tag,
specify the tag key. To change the tag value of an existing tag key, use  TagResource .

# Arguments
- `resource_arn`: The Amazon Resource Name (ARN) of the AWS RoboMaker resource you are
  removing tags.
- `tag_keys`: A map that contains tag keys and tag values that will be unattached from the
  resource.

"""
untag_resource(resourceArn, tagKeys; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("DELETE", "/tags/$(resourceArn)", Dict{String, Any}("tagKeys"=>tagKeys); aws_config=aws_config)
untag_resource(resourceArn, tagKeys, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("DELETE", "/tags/$(resourceArn)", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("tagKeys"=>tagKeys), params)); aws_config=aws_config)

"""
    update_robot_application(application, robot_software_suite, sources)
    update_robot_application(application, robot_software_suite, sources, params::Dict{String,<:Any})

Updates a robot application.

# Arguments
- `application`: The application information for the robot application.
- `robot_software_suite`: The robot software suite (ROS distribution) used by the robot
  application.
- `sources`: The sources of the robot application.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"currentRevisionId"`: The revision id for the robot application.
"""
update_robot_application(application, robotSoftwareSuite, sources; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/updateRobotApplication", Dict{String, Any}("application"=>application, "robotSoftwareSuite"=>robotSoftwareSuite, "sources"=>sources); aws_config=aws_config)
update_robot_application(application, robotSoftwareSuite, sources, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/updateRobotApplication", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("application"=>application, "robotSoftwareSuite"=>robotSoftwareSuite, "sources"=>sources), params)); aws_config=aws_config)

"""
    update_simulation_application(application, robot_software_suite, simulation_software_suite, sources)
    update_simulation_application(application, robot_software_suite, simulation_software_suite, sources, params::Dict{String,<:Any})

Updates a simulation application.

# Arguments
- `application`: The application information for the simulation application.
- `robot_software_suite`: Information about the robot software suite (ROS distribution).
- `simulation_software_suite`: The simulation software suite used by the simulation
  application.
- `sources`: The sources of the simulation application.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"currentRevisionId"`: The revision id for the robot application.
- `"renderingEngine"`: The rendering engine for the simulation application.
"""
update_simulation_application(application, robotSoftwareSuite, simulationSoftwareSuite, sources; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/updateSimulationApplication", Dict{String, Any}("application"=>application, "robotSoftwareSuite"=>robotSoftwareSuite, "simulationSoftwareSuite"=>simulationSoftwareSuite, "sources"=>sources); aws_config=aws_config)
update_simulation_application(application, robotSoftwareSuite, simulationSoftwareSuite, sources, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/updateSimulationApplication", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("application"=>application, "robotSoftwareSuite"=>robotSoftwareSuite, "simulationSoftwareSuite"=>simulationSoftwareSuite, "sources"=>sources), params)); aws_config=aws_config)

"""
    update_world_template(template)
    update_world_template(template, params::Dict{String,<:Any})

Updates a world template.

# Arguments
- `template`: The Amazon Resource Name (arn) of the world template to update.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"name"`: The name of the template.
- `"templateBody"`: The world template body.
- `"templateLocation"`: The location of the world template.
"""
update_world_template(template; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/updateWorldTemplate", Dict{String, Any}("template"=>template); aws_config=aws_config)
update_world_template(template, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = robomaker("POST", "/updateWorldTemplate", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("template"=>template), params)); aws_config=aws_config)

ext: jl


text:
#!/usr/bin/env julia

using LanguageServer;
using Pkg;
import StaticLint;
import SymbolServer;
env_path = dirname(Pkg.Types.Context().env.project_file);
debug = false;
server = LanguageServer.LanguageServerInstance(stdin, stdout, debug, env_path, "", Dict());
server.runlinter = true;
run(server);

max_stars_repo_name: squaresurf/dotfiles

max_issues_repo_name: squaresurf/dotfiles

max_forks_repo_name: squaresurf/dotfiles


text:
# bernstein basis

using Plots
# for the LaTeX labels in the legend
using LaTeXStrings

function compute_bernstein(i,n; steps=100)
    return [binomial(n,i)*t^i*(1-t)^(n-i) for t in LinRange(0,1,steps)]
end

function compute_bernstein_poly(px,py; steps=100)
    n = length(px)-1
    bernsteins = [compute_bernstein(i,n) for i=0:n]
    x_vals = [sum(px[k]*bernsteins[k][t] for k=1:n+1) for t=1:steps]
    y_vals = [sum(py[k]*bernsteins[k][t] for k=1:n+1) for t=1:steps]
    return x_vals, y_vals
end

function plot_bernstein_poly()
    bernsteins = [compute_bernstein(i,2) for i=0:n]
    plot(bernsteins, leg=false)
    png("bernsteins")
end

function plot_with_bernstein(px,py; steps=100, subplot=1)
    x_vals, y_vals = compute_bernstein_poly(px,py; steps=steps)
    plot!(x_vals, y_vals, color=:blue, label="",subplot=subplot)
end

function main()
    px = [0, 3, 7]
    py = [2, 9, 3]

    plot(;size=(700,500), axisratio=:equal, legendfont=font(13))
    plot!(px, py, linetype=:scatter, label="control points")
    plot_with_bernstein(px,py)
    png("using_bernstein")
end

max_stars_repo_name: Ellon-M/visualizations

max_issues_repo_name: Ellon-M/visualizations

max_forks_repo_name: Ellon-M/visualizations


text:
###############################
# SkipOptimized map/broadcast #
###############################

# dispatch #
#----------#

for g in (:map, :broadcast), f in SKIPPED_UNARY_SCALAR_FUNCS
    @eval @inline Base.$(g)(f::typeof($f), t::TrackedArray) = $(g)(SkipOptimize(f), t)
end

for g in (:map, :broadcast), f in SKIPPED_BINARY_SCALAR_FUNCS
    @eval begin
        @inline Base.$(g)(f::typeof($f), x::TrackedArray, y::TrackedArray) = $(g)(SkipOptimize(f), x, y)
        @inline Base.$(g)(f::typeof($f), x::TrackedArray, y::TrackedReal) = $(g)(SkipOptimize(f), x, y)
        @inline Base.$(g)(f::typeof($f), x::TrackedReal, y::TrackedArray) = $(g)(SkipOptimize(f), x, y)
    end
    for A in ARRAY_TYPES
        @eval begin
            @inline Base.$(g)(f::typeof($f), x::$A, y::TrackedArray) = $(g)(SkipOptimize(f), x, y)
            @inline Base.$(g)(f::typeof($f), x::TrackedArray, y::$A) = $(g)(SkipOptimize(f), x, y)
            @inline Base.$(g)(f::typeof($f), x::$A, y::TrackedReal) = $(g)(SkipOptimize(f), x, y)
            @inline Base.$(g)(f::typeof($f), x::TrackedReal, y::$A) = $(g)(SkipOptimize(f), x, y)
        end
    end
    for R in REAL_TYPES
        @eval begin
            @inline Base.$(g)(f::typeof($f), x::$R, y::TrackedArray) = $(g)(SkipOptimize(f), x, y)
            @inline Base.$(g)(f::typeof($f), x::TrackedArray, y::$R) = $(g)(SkipOptimize(f), x, y)
        end
    end
end

# record #
#--------#

for g in (:map, :broadcast)
    @eval @inline Base.$(g)(f::SkipOptimize{F}, t::TrackedArray) where {F} = $(g)(f.f, value(t))
end

for g in (:map, :broadcast)
    @eval begin
        @inline Base.$(g)(f::SkipOptimize{F}, x::TrackedArray, y::TrackedArray) where {F} = $(g)(f.f, value(x), value(y))
        @inline Base.$(g)(f::SkipOptimize{F}, x::TrackedArray, y::TrackedReal) where {F} = $(g)(f.f, value(x), value(y))
        @inline Base.$(g)(f::SkipOptimize{F}, x::TrackedReal, y::TrackedArray) where {F} = $(g)(f.f, value(x), value(y))
    end
    for A in ARRAY_TYPES
        @eval begin
            @inline Base.$(g)(f::SkipOptimize{F}, x::$A, y::TrackedArray) where {F} = $(g)(f.f, value(x), value(y))
            @inline Base.$(g)(f::SkipOptimize{F}, x::TrackedArray, y::$A) where {F} = $(g)(f.f, value(x), value(y))
            @inline Base.$(g)(f::SkipOptimize{F}, x::$A, y::TrackedReal) where {F} = $(g)(f.f, value(x), value(y))
            @inline Base.$(g)(f::SkipOptimize{F}, x::TrackedReal, y::$A) where {F} = $(g)(f.f, value(x), value(y))
        end
    end
    for R in REAL_TYPES
        @eval begin
            @inline Base.$(g)(f::SkipOptimize{F}, x::$R, y::TrackedArray) where {F} = $(g)(f.f, value(x), value(y))
            @inline Base.$(g)(f::SkipOptimize{F}, x::TrackedArray, y::$R) where {F} = $(g)(f.f, value(x), value(y))
        end
    end
end

####################################
# ForwardOptimized map!/broadcast! #
####################################

# dispatch #
#----------#

for g! in (:map!, :broadcast!), (M, f, arity) in DiffRules.diffrules()
    if arity == 1
        @eval @inline Base.$(g!)(f::typeof($M.$f), out::TrackedArray, t::TrackedArray) = $(g!)(ForwardOptimize(f), out, t)
    elseif arity == 2
        @eval begin
            @inline Base.$(g!)(f::typeof($M.$f), out::TrackedArray, x::TrackedArray, y::TrackedArray) = $(g!)(ForwardOptimize(f), out, x, y)
            @inline Base.$(g!)(f::typeof($M.$f), out::TrackedArray, x::TrackedArray, y::TrackedReal) = $(g!)(ForwardOptimize(f), out, x, y)
            @inline Base.$(g!)(f::typeof($M.$f), out::TrackedArray, x::TrackedReal, y::TrackedArray) = $(g!)(ForwardOptimize(f), out, x, y)
        end
        for A in ARRAY_TYPES
            @eval begin
                @inline Base.$(g!)(f::typeof($M.$f), out::TrackedArray, x::$A, y::TrackedArray) = $(g!)(ForwardOptimize(f), out, x, y)
                @inline Base.$(g!)(f::typeof($M.$f), out::TrackedArray, x::TrackedArray, y::$A) = $(g!)(ForwardOptimize(f), out, x, y)
                @inline Base.$(g!)(f::typeof($M.$f), out::TrackedArray, x::$A, y::TrackedReal) = $(g!)(ForwardOptimize(f), out, x, y)
                @inline Base.$(g!)(f::typeof($M.$f), out::TrackedArray, x::TrackedReal, y::$A) = $(g!)(ForwardOptimize(f), out, x, y)
            end
        end
        for R in REAL_TYPES
            @eval begin
                @inline Base.$(g!)(f::typeof($M.$f), out::TrackedArray, x::$R, y::TrackedArray) = $(g!)(ForwardOptimize(f), out, x, y)
                @inline Base.$(g!)(f::typeof($M.$f), out::TrackedArray, x::TrackedArray, y::$R) = $(g!)(ForwardOptimize(f), out, x, y)
            end
        end
    end
end

# record #
#--------#

for (g!, g) in ((:map!, :map), (:broadcast!, :broadcast))
    @eval function Base.$(g!)(f::ForwardOptimize{F}, out::TrackedArray{S}, x::TrackedArray{X}) where {F,S,X}
        result = DiffResults.DiffResult(zero(S), zero(S))
        df = v -> ForwardDiff.derivative!(result, f.f, v)
        results = $(g)(df, value(x))
        map!(DiffResult.value, value(out), results)
        cache = (results, df, index_bound(x, out), nothing)
        record!(tape(x), SpecialInstruction, $(g), x, out, cache)
        return out
    end
    for TX in (:TrackedArray, :TrackedReal), TY in (:TrackedArray, :TrackedReal)
        (TX == TY == :TrackedReal) && continue
        @eval function Base.$(g!)(f::ForwardOptimize{F}, out::TrackedArray{S}, x::$(TX){X}, y::$(TY){Y}) where {F,S,X,Y}
            result = DiffResults.GradientResult(SVector(zero(S), zero(S)))
            df = (vx, vy) -> ForwardDiff.gradient!(result, s -> f.f(s[1], s[2]), SVector(vx, vy))
            results = $(g)(df, value(x), value(y))
            map!(DiffResult.value, value(out), results)
            cache = (results, df, index_bound(x, out), index_bound(y, out))
            record!(tape(x, y), SpecialInstruction, $(g), (x, y), out, cache)
            return out
        end
    end
    for A in ARRAY_TYPES, T in (:TrackedArray, :TrackedReal)
        @eval function Base.$(g!)(f::ForwardOptimize{F}, out::TrackedArray{S}, x::$(T){X}, y::$A) where {F,S,X}
            result = DiffResults.GradientResult(SVector(zero(S), zero(S)))
            df = (vx, vy) -> ForwardDiff.gradient!(result, s -> f.f(s[1], s[2]), SVector(vx, vy))
            results = $(g)(df, value(x), value(y))
            map!(DiffResult.value, value(out), results)
            cache = (results, df, index_bound(x, out), index_bound(y, out))
            record!(tape(x, y), SpecialInstruction, $(g), (x, y), out, cache)
            return out
        end
        @eval function Base.$(g!)(f::ForwardOptimize{F}, out::TrackedArray, x::$A, y::$(T){Y}) where {F,Y}
            result = DiffResults.GradientResult(SVector(zero(S), zero(S)))
            df = (vx, vy) -> ForwardDiff.gradient!(result,  s -> f.f(s[1], s[2]), SVector(vx, vy))
            results = $(g)(df, value(x), value(y))
            map!(DiffResult.value, value(out), results)
            cache = (results, df, index_bound(x, out), index_bound(y, out))
            record!(tape(x, y), SpecialInstruction, $(g), (x, y), out, cache)
            return out
        end
    end
end

for R in REAL_TYPES
    @eval begin
        @inline Base.broadcast!(f::ForwardOptimize{F}, out::TrackedArray, x::TrackedArray, y::$R) where {F} = broadcast!(ForwardOptimize(t -> f.f(t, y)), out, x)
        @inline Base.broadcast!(f::ForwardOptimize{F}, out::TrackedArray, x::$R, y::TrackedArray) where {F} = broadcast!(ForwardOptimize(t -> f.f(x, t)), out, y)
    end
end

##################################
# ForwardOptimized map/broadcast #
##################################

# dispatch #
#----------#

for g in (:map, :broadcast), (M, f, arity) in DiffRules.diffrules()
    if arity == 1
        @eval @inline Base.$(g)(f::typeof($M.$f), t::TrackedArray) = $(g)(ForwardOptimize(f), t)
    elseif arity == 2
        # skip these definitions if `f` is one of the functions
        # that will get a manually defined broadcast definition
        # later (see "built-in infix operations" below)
        g == :broadcast && in(f, (:+, :-, :*, :/, :\, :^)) && continue
        @eval begin
            @inline Base.$(g)(f::typeof($M.$f), x::TrackedArray, y::TrackedArray) = $(g)(ForwardOptimize(f), x, y)
            @inline Base.$(g)(f::typeof($M.$f), x::TrackedArray, y::TrackedReal) = $(g)(ForwardOptimize(f), x, y)
            @inline Base.$(g)(f::typeof($M.$f), x::TrackedReal, y::TrackedArray) = $(g)(ForwardOptimize(f), x, y)
        end
        for A in ARRAY_TYPES
            @eval begin
                @inline Base.$(g)(f::typeof($M.$f), x::$A, y::TrackedArray) = $(g)(ForwardOptimize(f), x, y)
                @inline Base.$(g)(f::typeof($M.$f), x::TrackedArray, y::$A) = $(g)(ForwardOptimize(f), x, y)
                @inline Base.$(g)(f::typeof($M.$f), x::$A, y::TrackedReal) = $(g)(ForwardOptimize(f), x, y)
                @inline Base.$(g)(f::typeof($M.$f), x::TrackedReal, y::$A) = $(g)(ForwardOptimize(f), x, y)
            end
        end
        for R in REAL_TYPES
            @eval begin
                @inline Base.$(g)(f::typeof($M.$f), x::$R, y::TrackedArray) = $(g)(ForwardOptimize(f), x, y)
                @inline Base.$(g)(f::typeof($M.$f), x::TrackedArray, y::$R) = $(g)(ForwardOptimize(f), x, y)
            end
        end
    end
end

# record #
#--------#

for g in (:map, :broadcast)
    @eval function Base.$(g)(f::ForwardOptimize{F}, x::TrackedArray{X,D}) where {F,X,D}
        T = promote_type(X, D)
        result = DiffResults.DiffResult(zero(T), zero(T))
        df = v -> ForwardDiff.derivative!(result, f.f, v)
        results = $(g)(df, value(x))
        tp = tape(x)
        out = track(DiffResults.value.(results), D, tp)
        cache = (results, df, index_bound(x, out), nothing)
        record!(tp, SpecialInstruction, $(g), x, out, cache)
        return out
    end
    for A in ARRAY_TYPES, T in (:TrackedArray, :TrackedReal)
        @eval function Base.$(g)(f::ForwardOptimize{F}, x::$(T){X,D}, y::$A) where {F,X,D}
            result = DiffResults.GradientResult(SVector(zero(X), zero(D)))
            df = (vx, vy) -> ForwardDiff.gradient!(result, s -> f.f(s[1], s[2]), SVector(vx, vy))
            results = $(g)(df, value(x), value(y))
            tp = tape(x)
            out = track(DiffResults.value.(results), D, tp)
            cache = (results, df, index_bound(x, out), index_bound(y, out))
            record!(tp, SpecialInstruction, $(g), (x, y), out, cache)
            return out
        end
        @eval function Base.$(g)(f::ForwardOptimize{F}, x::$A, y::$(T){Y,D}) where {F,Y,D}
            result = DiffResults.GradientResult(SVector(zero(Y), zero(D)))
            df = (vx, vy) -> ForwardDiff.gradient!(result, s -> f.f(s[1], s[2]), SVector(vx, vy))
            results = $(g)(df, value(x), value(y))
            tp = tape(y)
            out = track(DiffResults.value.(results), D, tp)
            cache = (results, df, index_bound(x, out), index_bound(y, out))
            record!(tp, SpecialInstruction, $(g), (x, y), out, cache)
            return out
        end
    end

    for TX in (:TrackedArray, :TrackedReal), TY in (:TrackedArray, :TrackedReal)
        TX == :TrackedReal && TY == :TrackedReal && continue
        @eval function Base.$(g)(f::ForwardOptimize{F}, x::$(TX){X,D}, y::$(TY){Y,D}) where {F,X,Y,D}
            result = DiffResults.GradientResult(SVector(zero(D), zero(D)))
            df = (vx, vy) -> ForwardDiff.gradient!(result, s -> f.f(s[1], s[2]), SVector(vx, vy))
            results = $(g)(df, value(x), value(y))
            tp = tape(x, y)
            out = track(DiffResults.value.(results), D, tp)
            cache = (results, df, index_bound(x, out), index_bound(y, out))
            record!(tp, SpecialInstruction, $(g), (x, y), out, cache)
            return out
        end
    end
end

for R in REAL_TYPES
    @eval begin
        @inline Base.broadcast(f::ForwardOptimize{F}, x::TrackedArray{X,D}, y::$R) where {F,X,D} = broadcast(ForwardOptimize(t -> f.f(t, y)), x)
        @inline Base.broadcast(f::ForwardOptimize{F}, x::$R, y::TrackedArray{Y,D}) where {F,Y,D} = broadcast(ForwardOptimize(t -> f.f(x, t)), y)
    end
end

################
# forward pass #
################

for (g!, g) in ((:map!, :map), (:broadcast!, :broadcast))
    @eval begin
        @noinline function special_forward_exec!(instruction::SpecialInstruction{typeof($g)})
            input, output = instruction.input, instruction.output
            results, df, _, _ = instruction.cache
            if istracked(input)
                ($g!)(df, results, value(input))
            else
                a, b = input
                pull_value!(a)
                pull_value!(b)
                ($g!)(df, results, value(a), value(b))
            end
            output_value = value(output)
            for i in eachindex(output_value)
                output_value[i] = DiffResults.value(results[i])
            end
            return nothing
        end
    end
end

################
# reverse pass #
################

@noinline function special_reverse_exec!(instruction::SpecialInstruction{typeof(map)})
    input = instruction.input
    output = instruction.output
    output_deriv = deriv(output)
    results = first(instruction.cache)
    if istracked(input)
        diffresult_increment_deriv!(input, output_deriv, results, 1)
    else
        a, b = input
        istracked(a) && diffresult_increment_deriv!(a, output_deriv, results, 1)
        istracked(b) && diffresult_increment_deriv!(b, output_deriv, results, 2)
    end
    unseed!(output)
    return nothing
end

@noinline function special_reverse_exec!(instruction::SpecialInstruction{typeof(broadcast)})
    input = instruction.input
    output = instruction.output
    output_deriv = deriv(output)
    results, _, a_bound, b_bound = instruction.cache
    if istracked(input)
        if size(input) == size(output_deriv)
            diffresult_increment_deriv!(input, output_deriv, results, 1)
        else
            diffresult_increment_deriv!(input, output_deriv, results, 1, a_bound)
        end
    else
        a, b = input
        if size(a) == size(b)
            istracked(a) && diffresult_increment_deriv!(a, output_deriv, results, 1)
            istracked(b) && diffresult_increment_deriv!(b, output_deriv, results, 2)
        else
            istracked(a) && diffresult_increment_deriv!(a, output_deriv, results, 1, a_bound)
            istracked(b) && diffresult_increment_deriv!(b, output_deriv, results, 2, b_bound)
        end
    end
    unseed!(output)
    return nothing
end

#############################
# built-in infix operations #
#############################

const TrackedType = Union{TrackedArray,TrackedReal}

# dispatch #
#----------#

for (F, broadcast_f) in ((typeof(+), :broadcast_plus),
                         (typeof(-), :broadcast_minus),
                         (typeof(*), :broadcast_mul),
                         (typeof(/), :broadcast_rdiv),
                         (typeof(\), :broadcast_ldiv),
                         (typeof(^), :broadcast_pow))
    @eval begin
        @inline Base.broadcast(::$F, x::TrackedArray{X,D}, y::TrackedArray{Y,D}) where {X,Y,D} = $(broadcast_f)(x, y, D)
        @inline Base.broadcast(::$F, x::TrackedReal{X,D}, y::TrackedArray{Y,D}) where {X,Y,D} = $(broadcast_f)(x, y, D)
        @inline Base.broadcast(::$F, x::TrackedArray{X,D}, y::TrackedReal{Y,D}) where {X,Y,D} = $(broadcast_f)(x, y, D)
    end
    for A in ARRAY_TYPES
        @eval begin
            @inline Base.broadcast(::$F, x::TrackedArray{X,D}, y::$A) where {X,D} = $(broadcast_f)(x, y, D)
            @inline Base.broadcast(::$F, x::$A, y::TrackedArray{Y,D}) where {Y,D} = $(broadcast_f)(x, y, D)
            @inline Base.broadcast(::$F, x::TrackedReal{X,D}, y::$A) where {X,D} = $(broadcast_f)(x, y, D)
            @inline Base.broadcast(::$F, x::$A, y::TrackedReal{Y,D}) where {Y,D} = $(broadcast_f)(x, y, D)
        end
    end
    for R in REAL_TYPES
        @eval begin
            @inline Base.broadcast(::$F, x::TrackedArray{X,D}, y::$R) where {X,D} = $(broadcast_f)(x, y, D)
            @inline Base.broadcast(::$F, x::$R, y::TrackedArray{Y,D}) where {Y,D} = $(broadcast_f)(x, y, D)
        end
    end
end

# .+ #
#----#

function broadcast_plus(x, y, ::Type{D}) where D
    tp = tape(x, y)
    out = track(value(x) .+ value(y), D, tp)
    cache = (index_bound(x, out), index_bound(y, out))
    record!(tp, SpecialInstruction, (broadcast, +), (x, y), out, cache)
    return out
end

@noinline function special_forward_exec!(instruction::SpecialInstruction{Tuple{typeof(broadcast),typeof(+)}})
    a, b = instruction.input
    output = instruction.output
    pull_value!(a)
    pull_value!(b)
    broadcast!(+, value(output), value(a), value(b))
    return nothing
end

@noinline function special_reverse_exec!(instruction::SpecialInstruction{Tuple{typeof(broadcast),typeof(+)}})
    a, b = instruction.input
    output = instruction.output
    output_deriv = deriv(output)
    a_bound, b_bound = instruction.cache
    istracked(a) && broadcast_increment_deriv!(a, output_deriv, a_bound)
    istracked(b) && broadcast_increment_deriv!(b, output_deriv, b_bound)
    unseed!(output)
    return nothing
end

# .- #
#----#

function broadcast_minus(x, y, ::Type{D}) where D
    tp = tape(x, y)
    out = track(value(x) .- value(y), D, tp)
    cache = (index_bound(x, out), index_bound(y, out))
    record!(tp, SpecialInstruction, (broadcast, -), (x, y), out, cache)
    return out
end

@noinline function special_forward_exec!(instruction::SpecialInstruction{Tuple{typeof(broadcast),typeof(-)}})
    a, b = instruction.input
    output = instruction.output
    pull_value!(a)
    pull_value!(b)
    broadcast!(-, value(output), value(a), value(b))
    return nothing
end

@noinline function special_reverse_exec!(instruction::SpecialInstruction{Tuple{typeof(broadcast),typeof(-)}})
    a, b = instruction.input
    output = instruction.output
    output_deriv = deriv(output)
    a_bound, b_bound = instruction.cache
    istracked(a) && broadcast_increment_deriv!(a, output_deriv, a_bound)
    istracked(b) && broadcast_decrement_deriv!(b, output_deriv, b_bound)
    unseed!(output)
    return nothing
end

# .* #
#----#

function broadcast_mul(x, y, ::Type{D}) where D
    tp = tape(x, y)
    out = track(value(x) .* value(y), D, tp)
    cache = (index_bound(x, out), index_bound(y, out))
    record!(tp, SpecialInstruction, (broadcast, *), (x, y), out, cache)
    return out
end

@noinline function special_forward_exec!(instruction::SpecialInstruction{Tuple{typeof(broadcast),typeof(*)}})
    a, b = instruction.input
    output = instruction.output
    pull_value!(a)
    pull_value!(b)
    broadcast!(*, value(output), value(a), value(b))
    return nothing
end

@noinline function special_reverse_exec!(instruction::SpecialInstruction{Tuple{typeof(broadcast),typeof(*)}})
    a, b = instruction.input
    output = instruction.output
    output_deriv = deriv(output)
    a_bound, b_bound = instruction.cache
    istracked(a) && broadcast_increment_deriv!(a, output_deriv, value(b), a_bound, b_bound)
    istracked(b) && broadcast_increment_deriv!(b, output_deriv, value(a), b_bound, a_bound)
    unseed!(output)
    return nothing
end

# ./ #
#----#

numer_partials(d::Real) = Ref(inv(d))
numer_partials(d::AbstractArray) = broadcast(inv, d)
numer_partials!(out::Ref, d) = (out[] = inv(d); nothing)
numer_partials!(out::AbstractArray, d) = (broadcast!(inv, out, d); nothing)

denom_partials_kernel(n::Real, d::Real) =  -(n / (d * d))
denom_partials(n::Real, d::Real) = Ref(denom_partials_kernel(n, d))
denom_partials(n, d) = broadcast(denom_partials_kernel, n, d)
denom_partials!(out::Ref, n, d) = (out[] = denom_partials_kernel(n, d); nothing)
denom_partials!(out::AbstractArray, n, d) = (broadcast!(denom_partials_kernel, out, n, d); nothing)

rdiv_cache(x, y) = (numer_partials(value(y)), denom_partials(value(x), value(y)))

function broadcast_rdiv(x, y, ::Type{D}) where D
    tp = tape(x, y)
    out = track(value(x) ./ value(y), D, tp)
    n_partials, d_partials = rdiv_cache(x, y)
    cache = (n_partials, d_partials,
             index_bound(x, out), index_bound(y, out),
             index_bound(n_partials, out), index_bound(d_partials, out))
    record!(tp, SpecialInstruction, (broadcast, /), (x, y), out, cache)
    return out
end

@noinline function special_forward_exec!(instruction::SpecialInstruction{Tuple{typeof(broadcast),typeof(/)}})
    a, b = instruction.input
    a_value, b_value = value(a), value(b)
    n_partials, d_partials = instruction.cache
    output = instruction.output
    pull_value!(a)
    pull_value!(b)
    broadcast!(/, value(output), a_value, b_value)
    istracked(a) && numer_partials!(n_partials, b_value)
    istracked(b) && denom_partials!(d_partials, a_value, b_value)
    return nothing
end

@noinline function special_reverse_exec!(instruction::SpecialInstruction{Tuple{typeof(broadcast),typeof(/)}})
    a, b = instruction.input
    output = instruction.output
    output_deriv = deriv(output)
    n_partials, d_partials, a_bound, b_bound,
    n_partials_bound, d_partials_bound = instruction.cache
    istracked(a) && broadcast_increment_deriv!(a, output_deriv, n_partials, a_bound, n_partials_bound)
    istracked(b) && broadcast_increment_deriv!(b, output_deriv, d_partials, b_bound, d_partials_bound)
    unseed!(output)
    return nothing
end

# .\ #
#----#

function broadcast_ldiv(x, y, ::Type{D}) where D
    tp = tape(x, y)
    out = track(value(x) .\ value(y), D, tp)
    n_partials, d_partials = rdiv_cache(y, x)
    cache = (n_partials, d_partials,
             index_bound(x, out), index_bound(y, out),
             index_bound(n_partials, out), index_bound(d_partials, out))
    record!(tp, SpecialInstruction, (broadcast, \), (x, y), out, cache)
    return out
end

@noinline function special_forward_exec!(instruction::SpecialInstruction{Tuple{typeof(broadcast),typeof(\)}})
    a, b = instruction.input
    a_value, b_value = value(a), value(b)
    n_partials, d_partials = instruction.cache
    output = instruction.output
    pull_value!(a)
    pull_value!(b)
    broadcast!(\, value(output), a_value, b_value)
    istracked(b) && numer_partials!(n_partials, a_value)
    istracked(a) && denom_partials!(d_partials, b_value, a_value)
    return nothing
end

@noinline function special_reverse_exec!(instruction::SpecialInstruction{Tuple{typeof(broadcast),typeof(\)}})
    a, b = instruction.input
    output = instruction.output
    output_deriv = deriv(output)
    n_partials, d_partials, a_bound, b_bound,
    n_partials_bound, d_partials_bound = instruction.cache
    istracked(a) && broadcast_increment_deriv!(a, output_deriv, d_partials, a_bound, d_partials_bound)
    istracked(b) && broadcast_increment_deriv!(b, output_deriv, n_partials, b_bound, n_partials_bound)
    unseed!(output)
    return nothing
end

# .^ #
#----#

base_partials_kernel(b::Real, e::Real) = e * b^(e - 1)
base_partials(b::Real, e::Real) = Ref(base_partials_kernel(b, e))
base_partials(b, e) = broadcast(base_partials_kernel, b, e)
base_partials!(out::Ref, b, e) = (out[] = base_partials_kernel(b, e); nothing)
base_partials!(out::AbstractArray, b, e) = (broadcast!(base_partials_kernel, out, b, e); nothing)

exp_partials_kernel(b::Real, e::Real) = log(b) * b^e
exp_partials(b::Real, e::Real) = Ref(exp_partials_kernel(b, e))
exp_partials(b, e) = broadcast(exp_partials_kernel, b, e)
exp_partials!(out::Ref, b, e) = (out[] = exp_partials_kernel(b, e); nothing)
exp_partials!(out::AbstractArray, b, e) = (broadcast!(exp_partials_kernel, out, b, e); nothing)

function pow_cache(x, y)
    pow_x = istracked(x) ? base_partials(value(x), value(y)) : value(x)
    pow_y = istracked(y) ? exp_partials(value(x), value(y)) : value(y)
    return (pow_x, pow_y)
end

function broadcast_pow(x, y, ::Type{D}) where D
    tp = tape(x, y)
    out = track(value(x) .^ value(y), D, tp)
    bs_partials, ex_partials = pow_cache(x, y)
    cache = (bs_partials, ex_partials,
             index_bound(x, out), index_bound(y, out),
             index_bound(bs_partials, out), index_bound(ex_partials, out))
    record!(tp, SpecialInstruction, (broadcast, ^), (x, y), out, cache)
    return out
end

@noinline function special_forward_exec!(instruction::SpecialInstruction{Tuple{typeof(broadcast),typeof(^)}})
    a, b = instruction.input
    a_value, b_value = value(a), value(b)
    bs_partials, ex_partials = instruction.cache
    output = instruction.output
    pull_value!(a)
    pull_value!(b)
    broadcast!(^, value(output), a_value, b_value)
    istracked(a) && base_partials!(bs_partials, a_value, b_value)
    istracked(b) && exp_partials!(ex_partials, a_value, b_value)
    return nothing
end

@noinline function special_reverse_exec!(instruction::SpecialInstruction{Tuple{typeof(broadcast),typeof(^)}})
    a, b = instruction.input
    output = instruction.output
    output_deriv = deriv(output)
    bs_partials, ex_partials, a_bound, b_bound,
    bs_partials_bound, ex_partials_bound = instruction.cache
    istracked(a) && broadcast_increment_deriv!(a, output_deriv, bs_partials, a_bound, bs_partials_bound)
    istracked(b) && broadcast_increment_deriv!(b, output_deriv, ex_partials, b_bound, ex_partials_bound)
    unseed!(output)
    return nothing
end


text:
module Projections

import LinearAlgebra, Statistics, DataFrames, ProgressMeter
import JuMP, Ipopt, CPLEX
import Convex, ECOS

export DRO, Simplex, solve, benchmark
export Solver, Our, General, Philpott
export Constraint
export Divergence, KullbackLeibler, Burg, Hellinger, ChiSquare, ModifiedChiSquare
export Norm, Linf, Lone, Ltwo, Philpott

abstract type Model end

abstract type Solver end
struct Our <: Solver end
struct General <: Solver end
struct Philpott <: Solver end

abstract type Constraint end
abstract type Divergence <: Constraint end
abstract type Norm <: Constraint end

include("model.jl")
include("divergences.jl")
include("norms.jl")
include("simplex.jl")
include("utilities.jl")
include("findroot.jl")
include("generalsolvers.jl")
include("solve.jl")
include("benchmarks.jl")

end # module

max_stars_repo_name: VaclavMacha/Projections

max_issues_repo_name: VaclavMacha/Projections

max_forks_repo_name: VaclavMacha/Projections


text:
# This file was generated by the Julia Swagger Code Generator
# Do not modify this file directly. Modify the swagger specification instead.

mutable struct BootSource <: SwaggerModel
    kernel_image_path::Union{ Nothing, String } # kernel_image_path
    boot_args::Union{ Nothing, String } # boot_args

    function BootSource(;kernel_image_path=nothing, boot_args=nothing)
        o = new()
        set_field!(o, :kernel_image_path, kernel_image_path)
        set_field!(o, :boot_args, boot_args)
        o
    end
end # type BootSource

const _name_map_BootSource = Dict{String,Symbol}(["kernel_image_path"=>:kernel_image_path, "boot_args"=>:boot_args])
const _field_map_BootSource = Dict{Symbol,String}([:kernel_image_path=>"kernel_image_path", :boot_args=>"boot_args"])
Swagger.name_map(::Type{ BootSource }) = _name_map_BootSource
Swagger.field_map(::Type{ BootSource }) = _field_map_BootSource

function check_required(o::BootSource)
    (o.kernel_image_path === nothing) && (return false)
    true
end

function validate_field(o::BootSource, name::Symbol, val)
end


text:
export Signal, MLError
export UnboundTypeVar, UnboundVar
export UnusedAnnotation, InvalidSyntax
export DuplicateDeclaration, DuplicateInstanceError
export InstanceNotFound

export RecursiveType
export UnificationFail, NoError
export TypeVarEscape

@data Signal begin
    UnboundTypeVar(Symbol)
    UnboundVar(Symbol)
    UnusedAnnotation(Symbol)
    InvalidSyntax(String)
    DuplicateDeclaration(Symbol)
    DuplicateInstanceError(Vector{InstRec})
    InstanceNotFound(HMT)
    UnsolvedTypeVariables(Set{Var})
    InvalidNamespaceType(HMT)
    UnificationFailOf(HMT, HMT)

    RecursiveType
    UnificationFail
    TypePartialOrderError
    TypeVarEscape
    PrincipalTypeSearchError
    NoError
end

struct MLError <: Exception
    ln :: LineNumberNode  # where the error occurs
    signal :: Signal
end