Bitcoin
Public Member Functions | Public Attributes | List of all members
interfaces::anonymous_namespace{wallet.cpp}::WalletImpl Class Reference
Inheritance diagram for interfaces::anonymous_namespace{wallet.cpp}::WalletImpl:
interfaces::Wallet

Public Member Functions

 WalletImpl (const std::shared_ptr< CWallet > &wallet)
 
bool encryptWallet (const SecureString &wallet_passphrase) override
 Encrypt wallet. More...
 
bool isCrypted () override
 Return whether wallet is encrypted. More...
 
bool lock () override
 Lock wallet. More...
 
bool unlock (const SecureString &wallet_passphrase) override
 Unlock wallet. More...
 
bool isLocked () override
 Return whether wallet is locked. More...
 
bool changeWalletPassphrase (const SecureString &old_wallet_passphrase, const SecureString &new_wallet_passphrase) override
 Change wallet passphrase. More...
 
void abortRescan () override
 Abort a rescan. More...
 
bool backupWallet (const std::string &filename) override
 Back up wallet. More...
 
std::string getWalletName () override
 Get wallet name. More...
 
bool getNewDestination (const OutputType type, const std::string label, CTxDestination &dest) override
 
bool getPubKey (const CKeyID &address, CPubKey &pub_key) override
 Get public key. More...
 
bool getPrivKey (const CKeyID &address, CKey &key) override
 Get private key. More...
 
bool isSpendable (const CTxDestination &dest) override
 Return whether wallet has private key. More...
 
bool haveWatchOnly () override
 Return whether wallet has watch only keys. More...
 
bool setAddressBook (const CTxDestination &dest, const std::string &name, const std::string &purpose) override
 Add or update address. More...
 
bool delAddressBook (const CTxDestination &dest) override
 
bool getAddress (const CTxDestination &dest, std::string *name, isminetype *is_mine, std::string *purpose) override
 Look up address in wallet, return whether exists. More...
 
std::vector< WalletAddressgetAddresses () override
 Get wallet address list. More...
 
void learnRelatedScripts (const CPubKey &key, OutputType type) override
 
bool addDestData (const CTxDestination &dest, const std::string &key, const std::string &value) override
 Add dest data. More...
 
bool eraseDestData (const CTxDestination &dest, const std::string &key) override
 Erase dest data. More...
 
std::vector< std::string > getDestValues (const std::string &prefix) override
 Get dest values with prefix. More...
 
void lockCoin (const COutPoint &output) override
 Lock coin. More...
 
void unlockCoin (const COutPoint &output) override
 Unlock coin. More...
 
bool isLockedCoin (const COutPoint &output) override
 Return whether coin is locked. More...
 
void listLockedCoins (std::vector< COutPoint > &outputs) override
 List locked coins. More...
 
std::unique_ptr< PendingWalletTxcreateTransaction (const std::vector< CRecipient > &recipients, const CCoinControl &coin_control, bool sign, int &change_pos, CAmount &fee, std::string &fail_reason) override
 Create transaction. More...
 
bool transactionCanBeAbandoned (const uint256 &txid) override
 Return whether transaction can be abandoned. More...
 
bool abandonTransaction (const uint256 &txid) override
 Abandon transaction. More...
 
bool transactionCanBeBumped (const uint256 &txid) override
 Return whether transaction can be bumped. More...
 
bool createBumpTransaction (const uint256 &txid, const CCoinControl &coin_control, CAmount total_fee, std::vector< std::string > &errors, CAmount &old_fee, CAmount &new_fee, CMutableTransaction &mtx) override
 Create bump transaction. More...
 
bool signBumpTransaction (CMutableTransaction &mtx) override
 Sign bump transaction. More...
 
bool commitBumpTransaction (const uint256 &txid, CMutableTransaction &&mtx, std::vector< std::string > &errors, uint256 &bumped_txid) override
 Commit bump transaction. More...
 
CTransactionRef getTx (const uint256 &txid) override
 Get a transaction. More...
 
WalletTx getWalletTx (const uint256 &txid) override
 Get transaction information. More...
 
std::vector< WalletTxgetWalletTxs () override
 Get list of all wallet transactions. More...
 
bool tryGetTxStatus (const uint256 &txid, interfaces::WalletTxStatus &tx_status, int &num_blocks, int64_t &block_time) override
 Try to get updated status for a particular transaction, if possible without blocking. More...
 
WalletTx getWalletTxDetails (const uint256 &txid, WalletTxStatus &tx_status, WalletOrderForm &order_form, bool &in_mempool, int &num_blocks) override
 Get transaction details. More...
 
WalletBalances getBalances () override
 Get balances. More...
 
bool tryGetBalances (WalletBalances &balances, int &num_blocks) override
 Get balances if possible without blocking. More...
 
CAmount getBalance () override
 Get balance. More...
 
CAmount getAvailableBalance (const CCoinControl &coin_control) override
 Get available balance. More...
 
isminetype txinIsMine (const CTxIn &txin) override
 Return whether transaction input belongs to wallet. More...
 
isminetype txoutIsMine (const CTxOut &txout) override
 Return whether transaction output belongs to wallet. More...
 
CAmount getDebit (const CTxIn &txin, isminefilter filter) override
 Return debit amount if transaction input belongs to wallet. More...
 
CAmount getCredit (const CTxOut &txout, isminefilter filter) override
 Return credit amount if transaction input belongs to wallet. More...
 
CoinsList listCoins () override
 
std::vector< WalletTxOutgetCoins (const std::vector< COutPoint > &outputs) override
 Return wallet transaction output information. More...
 
CAmount getRequiredFee (unsigned int tx_bytes) override
 Get required fee. More...
 
CAmount getMinimumFee (unsigned int tx_bytes, const CCoinControl &coin_control, int *returned_target, FeeReason *reason) override
 Get minimum fee. More...
 
unsigned int getConfirmTarget () override
 Get tx confirm target. More...
 
bool hdEnabled () override
 
bool canGetAddresses () override
 
bool IsWalletFlagSet (uint64_t flag) override
 
OutputType getDefaultAddressType () override
 
OutputType getDefaultChangeType () override
 
CAmount getDefaultMaxTxFee () override
 Get max tx fee. More...
 
void remove () override
 
std::unique_ptr< HandlerhandleUnload (UnloadFn fn) override
 
std::unique_ptr< HandlerhandleShowProgress (ShowProgressFn fn) override
 
std::unique_ptr< HandlerhandleStatusChanged (StatusChangedFn fn) override
 
std::unique_ptr< HandlerhandleAddressBookChanged (AddressBookChangedFn fn) override
 
std::unique_ptr< HandlerhandleTransactionChanged (TransactionChangedFn fn) override
 
std::unique_ptr< HandlerhandleWatchOnlyChanged (WatchOnlyChangedFn fn) override
 
std::unique_ptr< HandlerhandleCanGetAddressesChanged (CanGetAddressesChangedFn fn) override
 
- Public Member Functions inherited from interfaces::Wallet
virtual ~Wallet ()
 

Public Attributes

std::shared_ptr< CWalletm_wallet
 

Additional Inherited Members

- Public Types inherited from interfaces::Wallet
using CoinsList = std::map< CTxDestination, std::vector< std::tuple< COutPoint, WalletTxOut > >>
 
using UnloadFn = std::function< void()>
 Register handler for unload message. More...
 
using ShowProgressFn = std::function< void(const std::string &title, int progress)>
 Register handler for show progress messages. More...
 
using StatusChangedFn = std::function< void()>
 Register handler for status changed messages. More...
 
using AddressBookChangedFn = std::function< void(const CTxDestination &address, const std::string &label, bool is_mine, const std::string &purpose, ChangeType status)>
 Register handler for address book changed messages. More...
 
using TransactionChangedFn = std::function< void(const uint256 &txid, ChangeType status)>
 Register handler for transaction changed messages. More...
 
using WatchOnlyChangedFn = std::function< void(bool have_watch_only)>
 Register handler for watchonly changed messages. More...
 
using CanGetAddressesChangedFn = std::function< void()>
 Register handler for keypool changed messages. More...
 

Constructor & Destructor Documentation

◆ WalletImpl()

interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::WalletImpl ( const std::shared_ptr< CWallet > &  wallet)
inlineexplicit

Member Function Documentation

◆ abandonTransaction()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::abandonTransaction ( const uint256 txid)
inlineoverridevirtual

Abandon transaction.

Implements interfaces::Wallet.

◆ abortRescan()

void interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::abortRescan ( )
inlineoverridevirtual

Abort a rescan.

Implements interfaces::Wallet.

◆ addDestData()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::addDestData ( const CTxDestination dest,
const std::string &  key,
const std::string &  value 
)
inlineoverridevirtual

Add dest data.

Implements interfaces::Wallet.

◆ backupWallet()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::backupWallet ( const std::string &  filename)
inlineoverridevirtual

Back up wallet.

Implements interfaces::Wallet.

◆ canGetAddresses()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::canGetAddresses ( )
inlineoverridevirtual

Implements interfaces::Wallet.

◆ changeWalletPassphrase()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::changeWalletPassphrase ( const SecureString old_wallet_passphrase,
const SecureString new_wallet_passphrase 
)
inlineoverridevirtual

Change wallet passphrase.

Implements interfaces::Wallet.

◆ commitBumpTransaction()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::commitBumpTransaction ( const uint256 txid,
CMutableTransaction &&  mtx,
std::vector< std::string > &  errors,
uint256 bumped_txid 
)
inlineoverridevirtual

Commit bump transaction.

Implements interfaces::Wallet.

◆ createBumpTransaction()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::createBumpTransaction ( const uint256 txid,
const CCoinControl coin_control,
CAmount  total_fee,
std::vector< std::string > &  errors,
CAmount old_fee,
CAmount new_fee,
CMutableTransaction mtx 
)
inlineoverridevirtual

Create bump transaction.

Implements interfaces::Wallet.

◆ createTransaction()

std::unique_ptr<PendingWalletTx> interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::createTransaction ( const std::vector< CRecipient > &  recipients,
const CCoinControl coin_control,
bool  sign,
int &  change_pos,
CAmount fee,
std::string &  fail_reason 
)
inlineoverridevirtual

Create transaction.

Implements interfaces::Wallet.

◆ delAddressBook()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::delAddressBook ( const CTxDestination dest)
inlineoverridevirtual

Implements interfaces::Wallet.

◆ encryptWallet()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::encryptWallet ( const SecureString wallet_passphrase)
inlineoverridevirtual

Encrypt wallet.

Implements interfaces::Wallet.

◆ eraseDestData()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::eraseDestData ( const CTxDestination dest,
const std::string &  key 
)
inlineoverridevirtual

Erase dest data.

Implements interfaces::Wallet.

◆ getAddress()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getAddress ( const CTxDestination dest,
std::string *  name,
isminetype is_mine,
std::string *  purpose 
)
inlineoverridevirtual

Look up address in wallet, return whether exists.

Implements interfaces::Wallet.

◆ getAddresses()

std::vector<WalletAddress> interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getAddresses ( )
inlineoverridevirtual

Get wallet address list.

Implements interfaces::Wallet.

◆ getAvailableBalance()

CAmount interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getAvailableBalance ( const CCoinControl coin_control)
inlineoverridevirtual

Get available balance.

Implements interfaces::Wallet.

◆ getBalance()

CAmount interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getBalance ( )
inlineoverridevirtual

Get balance.

Implements interfaces::Wallet.

◆ getBalances()

WalletBalances interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getBalances ( )
inlineoverridevirtual

Get balances.

Implements interfaces::Wallet.

◆ getCoins()

std::vector<WalletTxOut> interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getCoins ( const std::vector< COutPoint > &  outputs)
inlineoverridevirtual

Return wallet transaction output information.

Implements interfaces::Wallet.

◆ getConfirmTarget()

unsigned int interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getConfirmTarget ( )
inlineoverridevirtual

Get tx confirm target.

Implements interfaces::Wallet.

◆ getCredit()

CAmount interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getCredit ( const CTxOut txout,
isminefilter  filter 
)
inlineoverridevirtual

Return credit amount if transaction input belongs to wallet.

Implements interfaces::Wallet.

◆ getDebit()

CAmount interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getDebit ( const CTxIn txin,
isminefilter  filter 
)
inlineoverridevirtual

Return debit amount if transaction input belongs to wallet.

Implements interfaces::Wallet.

◆ getDefaultAddressType()

OutputType interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getDefaultAddressType ( )
inlineoverridevirtual

Implements interfaces::Wallet.

◆ getDefaultChangeType()

OutputType interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getDefaultChangeType ( )
inlineoverridevirtual

Implements interfaces::Wallet.

◆ getDefaultMaxTxFee()

CAmount interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getDefaultMaxTxFee ( )
inlineoverridevirtual

Get max tx fee.

Implements interfaces::Wallet.

◆ getDestValues()

std::vector<std::string> interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getDestValues ( const std::string &  prefix)
inlineoverridevirtual

Get dest values with prefix.

Implements interfaces::Wallet.

◆ getMinimumFee()

CAmount interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getMinimumFee ( unsigned int  tx_bytes,
const CCoinControl coin_control,
int *  returned_target,
FeeReason reason 
)
inlineoverridevirtual

Get minimum fee.

Implements interfaces::Wallet.

◆ getNewDestination()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getNewDestination ( const OutputType  type,
const std::string  label,
CTxDestination dest 
)
inlineoverridevirtual

Implements interfaces::Wallet.

◆ getPrivKey()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getPrivKey ( const CKeyID address,
CKey key 
)
inlineoverridevirtual

Get private key.

Implements interfaces::Wallet.

◆ getPubKey()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getPubKey ( const CKeyID address,
CPubKey pub_key 
)
inlineoverridevirtual

Get public key.

Implements interfaces::Wallet.

◆ getRequiredFee()

CAmount interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getRequiredFee ( unsigned int  tx_bytes)
inlineoverridevirtual

Get required fee.

Implements interfaces::Wallet.

◆ getTx()

CTransactionRef interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getTx ( const uint256 txid)
inlineoverridevirtual

Get a transaction.

Implements interfaces::Wallet.

◆ getWalletName()

std::string interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getWalletName ( )
inlineoverridevirtual

Get wallet name.

Implements interfaces::Wallet.

◆ getWalletTx()

WalletTx interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getWalletTx ( const uint256 txid)
inlineoverridevirtual

Get transaction information.

Implements interfaces::Wallet.

◆ getWalletTxDetails()

WalletTx interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getWalletTxDetails ( const uint256 txid,
WalletTxStatus tx_status,
WalletOrderForm order_form,
bool &  in_mempool,
int &  num_blocks 
)
inlineoverridevirtual

Get transaction details.

Implements interfaces::Wallet.

◆ getWalletTxs()

std::vector<WalletTx> interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::getWalletTxs ( )
inlineoverridevirtual

Get list of all wallet transactions.

Implements interfaces::Wallet.

◆ handleAddressBookChanged()

std::unique_ptr<Handler> interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::handleAddressBookChanged ( AddressBookChangedFn  fn)
inlineoverridevirtual

Implements interfaces::Wallet.

◆ handleCanGetAddressesChanged()

std::unique_ptr<Handler> interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::handleCanGetAddressesChanged ( CanGetAddressesChangedFn  fn)
inlineoverridevirtual

Implements interfaces::Wallet.

◆ handleShowProgress()

std::unique_ptr<Handler> interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::handleShowProgress ( ShowProgressFn  fn)
inlineoverridevirtual

Implements interfaces::Wallet.

◆ handleStatusChanged()

std::unique_ptr<Handler> interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::handleStatusChanged ( StatusChangedFn  fn)
inlineoverridevirtual

Implements interfaces::Wallet.

◆ handleTransactionChanged()

std::unique_ptr<Handler> interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::handleTransactionChanged ( TransactionChangedFn  fn)
inlineoverridevirtual

Implements interfaces::Wallet.

◆ handleUnload()

std::unique_ptr<Handler> interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::handleUnload ( UnloadFn  fn)
inlineoverridevirtual

Implements interfaces::Wallet.

◆ handleWatchOnlyChanged()

std::unique_ptr<Handler> interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::handleWatchOnlyChanged ( WatchOnlyChangedFn  fn)
inlineoverridevirtual

Implements interfaces::Wallet.

◆ haveWatchOnly()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::haveWatchOnly ( )
inlineoverridevirtual

Return whether wallet has watch only keys.

Implements interfaces::Wallet.

◆ hdEnabled()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::hdEnabled ( )
inlineoverridevirtual

Implements interfaces::Wallet.

◆ isCrypted()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::isCrypted ( )
inlineoverridevirtual

Return whether wallet is encrypted.

Implements interfaces::Wallet.

◆ isLocked()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::isLocked ( )
inlineoverridevirtual

Return whether wallet is locked.

Implements interfaces::Wallet.

◆ isLockedCoin()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::isLockedCoin ( const COutPoint output)
inlineoverridevirtual

Return whether coin is locked.

Implements interfaces::Wallet.

◆ isSpendable()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::isSpendable ( const CTxDestination dest)
inlineoverridevirtual

Return whether wallet has private key.

Implements interfaces::Wallet.

◆ IsWalletFlagSet()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::IsWalletFlagSet ( uint64_t  flag)
inlineoverridevirtual

Implements interfaces::Wallet.

◆ learnRelatedScripts()

void interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::learnRelatedScripts ( const CPubKey key,
OutputType  type 
)
inlineoverridevirtual

Add scripts to key store so old so software versions opening the wallet database can detect payments to newer address types.

Implements interfaces::Wallet.

◆ listCoins()

CoinsList interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::listCoins ( )
inlineoverridevirtual

Implements interfaces::Wallet.

◆ listLockedCoins()

void interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::listLockedCoins ( std::vector< COutPoint > &  outputs)
inlineoverridevirtual

List locked coins.

Implements interfaces::Wallet.

◆ lock()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::lock ( )
inlineoverridevirtual

Lock wallet.

Implements interfaces::Wallet.

◆ lockCoin()

void interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::lockCoin ( const COutPoint output)
inlineoverridevirtual

Lock coin.

Implements interfaces::Wallet.

◆ remove()

void interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::remove ( )
inlineoverridevirtual

Implements interfaces::Wallet.

◆ setAddressBook()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::setAddressBook ( const CTxDestination dest,
const std::string &  name,
const std::string &  purpose 
)
inlineoverridevirtual

Add or update address.

Implements interfaces::Wallet.

◆ signBumpTransaction()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::signBumpTransaction ( CMutableTransaction mtx)
inlineoverridevirtual

Sign bump transaction.

Implements interfaces::Wallet.

◆ transactionCanBeAbandoned()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::transactionCanBeAbandoned ( const uint256 txid)
inlineoverridevirtual

Return whether transaction can be abandoned.

Implements interfaces::Wallet.

◆ transactionCanBeBumped()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::transactionCanBeBumped ( const uint256 txid)
inlineoverridevirtual

Return whether transaction can be bumped.

Implements interfaces::Wallet.

◆ tryGetBalances()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::tryGetBalances ( WalletBalances balances,
int &  num_blocks 
)
inlineoverridevirtual

Get balances if possible without blocking.

Implements interfaces::Wallet.

◆ tryGetTxStatus()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::tryGetTxStatus ( const uint256 txid,
interfaces::WalletTxStatus tx_status,
int &  num_blocks,
int64_t block_time 
)
inlineoverridevirtual

Try to get updated status for a particular transaction, if possible without blocking.

Implements interfaces::Wallet.

◆ txinIsMine()

isminetype interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::txinIsMine ( const CTxIn txin)
inlineoverridevirtual

Return whether transaction input belongs to wallet.

Implements interfaces::Wallet.

◆ txoutIsMine()

isminetype interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::txoutIsMine ( const CTxOut txout)
inlineoverridevirtual

Return whether transaction output belongs to wallet.

Implements interfaces::Wallet.

◆ unlock()

bool interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::unlock ( const SecureString wallet_passphrase)
inlineoverridevirtual

Unlock wallet.

Implements interfaces::Wallet.

◆ unlockCoin()

void interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::unlockCoin ( const COutPoint output)
inlineoverridevirtual

Unlock coin.

Implements interfaces::Wallet.

Member Data Documentation

◆ m_wallet

std::shared_ptr<CWallet> interfaces::anonymous_namespace{wallet.cpp}::WalletImpl::m_wallet

The documentation for this class was generated from the following file: