text: # basically just parse & make it easier to access the MN data from the output of
  # "masternodelist full"
  
  
  class Masternode():
      def __init__(self, collateral, mnstring):
          (txid, vout_index) = self.parse_collateral_string(collateral)
          self.txid = txid
          self.vout_index = int(vout_index)
  
          (status, protocol, address, ip_port, lastseen, activeseconds, lastpaid) = self.parse_mn_string(mnstring)
          self.status = status
          self.protocol = int(protocol)
          self.address = address
  
          # TODO: break this out... take ipv6 into account
          self.ip_port = ip_port
  
          self.lastseen = int(lastseen)
          self.activeseconds = int(activeseconds)
          self.lastpaid = int(lastpaid)
  
      @classmethod
      def parse_collateral_string(self, collateral):
          (txid, index) = collateral.split('-')
          return (txid, index)
  
      @classmethod
      def parse_mn_string(self, mn_full_out):
          # trim whitespace
          # mn_full_out = mn_full_out.strip()
  
          (status, protocol, address, lastseen, activeseconds, lastpaid,
           lastpaidblock, ip_port) = mn_full_out.split()
  
          # status protocol pubkey IP lastseen activeseconds lastpaid
          return (status, protocol, address, ip_port, lastseen, activeseconds, lastpaid)
  
      @property
      def vin(self):
          return self.txid + '-' + str(self.vout_index)
  