<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def put(contract_name, abi):
        '''
        save the contract's ABI

        :param contract_name: string - name of the contract
        :param abi: the contract's abi JSON file
        :return: None, None if saved okay
                 None, error is an error
        '''

        if not Catalog.path:
            return None, "path to catalog must be set before saving to it"
        if not contract_name:
            return None, "contract name must be provided before saving"
        if not abi:
            return None, "contract ABI missing"

        abi_file = "{}/{}.abi".format(Catalog.path, contract_name)

        try:
            with open(abi_file, "w+") as file:
                file.write(abi)
        except Exception as e:
            return None, "Catalog.put error: {}".format(e)
        return None, None