<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def contract_type( name: str, compiler_output: Dict[str, Any], alias: Optional[str] = None, abi: Optional[bool] = False, compiler: Optional[bool] = False, contract_type: Optional[bool] = False, deployment_bytecode: Optional[bool] = False, natspec: Optional[bool] = False, runtime_bytecode: Optional[bool] = False, ) -> Manifest: """ Returns a copy of manifest with added contract_data field as specified by kwargs. If no kwargs are present, all available contract_data found in the compiler output will be included. To include specific contract_data fields, add kwarg set to True (i.e. `abi=True`) To alias a contract_type, include a kwarg `alias` (i.e. `alias="OwnedAlias"`) If only an alias kwarg is provided, all available contract data will be included. Kwargs must match fields as defined in the EthPM Spec (except "alias") if user wants to include them in custom contract_type. """

    contract_type_fields = {
        "contract_type": contract_type,
        "deployment_bytecode": deployment_bytecode,
        "runtime_bytecode": runtime_bytecode,
        "abi": abi,
        "natspec": natspec,
        "compiler": compiler,
    }
    selected_fields = [k for k, v in contract_type_fields.items() if v]
    return _contract_type(name, compiler_output, alias, selected_fields)