text: #
  # PySNMP MIB module CISCO-ZS-EXT-MIB (http://snmplabs.com/pysmi)
  # ASN.1 source file:///Users/davwang4/Dev/mibs.snmplabs.com/asn1/CISCO-ZS-EXT-MIB
  # Produced by pysmi-0.3.4 at Wed May  1 12:21:44 2019
  # On host DAVWANG4-M-1475 platform Darwin version 18.5.0 by user davwang4
  # Using Python version 3.7.3 (default, Mar 27 2019, 09:23:15) 
  #
  Integer, OctetString, ObjectIdentifier = mibBuilder.importSymbols("ASN1", "Integer", "OctetString", "ObjectIdentifier")
  NamedValues, = mibBuilder.importSymbols("ASN1-ENUMERATION", "NamedValues")
  ValueSizeConstraint, ValueRangeConstraint, ConstraintsIntersection, SingleValueConstraint, ConstraintsUnion = mibBuilder.importSymbols("ASN1-REFINEMENT", "ValueSizeConstraint", "ValueRangeConstraint", "ConstraintsIntersection", "SingleValueConstraint", "ConstraintsUnion")
  ciscoMgmt, = mibBuilder.importSymbols("CISCO-SMI", "ciscoMgmt")
  vsanIndex, = mibBuilder.importSymbols("CISCO-VSAN-MIB", "vsanIndex")
  ModuleCompliance, NotificationGroup, ObjectGroup = mibBuilder.importSymbols("SNMPv2-CONF", "ModuleCompliance", "NotificationGroup", "ObjectGroup")
  ObjectIdentity, IpAddress, Gauge32, ModuleIdentity, MibScalar, MibTable, MibTableRow, MibTableColumn, iso, NotificationType, Integer32, TimeTicks, Unsigned32, Counter64, Bits, Counter32, MibIdentifier = mibBuilder.importSymbols("SNMPv2-SMI", "ObjectIdentity", "IpAddress", "Gauge32", "ModuleIdentity", "MibScalar", "MibTable", "MibTableRow", "MibTableColumn", "iso", "NotificationType", "Integer32", "TimeTicks", "Unsigned32", "Counter64", "Bits", "Counter32", "MibIdentifier")
  DisplayString, TextualConvention = mibBuilder.importSymbols("SNMPv2-TC", "DisplayString", "TextualConvention")
  ciscoZsExtMIB = ModuleIdentity((1, 3, 6, 1, 4, 1, 9, 9, 427))
  ciscoZsExtMIB.setRevisions(('2006-01-03 00:00', '2004-08-11 00:00',))
  
  if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0):
      if mibBuilder.loadTexts: ciscoZsExtMIB.setRevisionsDescriptions(('Added objects czseGlobalDefaultZoneBehaviour and czseGlobalPropagationMode.', 'Initial version of this MIB.',))
  if mibBuilder.loadTexts: ciscoZsExtMIB.setLastUpdated('200601030000Z')
  if mibBuilder.loadTexts: ciscoZsExtMIB.setOrganization('Cisco Systems Inc.')
  if mibBuilder.loadTexts: ciscoZsExtMIB.setContactInfo(' Cisco Systems Customer Service Postal: 170 W Tasman Drive San Jose, CA 95134 USA Tel: +1 800 553 -NETS E-mail: cs-san@cisco.com')
  if mibBuilder.loadTexts: ciscoZsExtMIB.setDescription("The MIB module for the management of zoning within the framework of Cisco's Zoning Server (ZS) Archi- tecture which realizes the FC-GS4/SW3 requirements for Zone Server. This MIB is an extension to the CISCO-ZS-MIB, which is for managing zoning conforming to FC-GS3/SW2. The FC-GS4 specification is Fibre-Channel - Generic Services - 4 T11/ Project 1505-D/Rev 7.8. The SW3 specification is Fibre-Channel - Switch Fabric - 3 T11/Project 1508- D/Rev 6.6. GS4/SW3 allows zoning to operate in either basic or enhanced mode of operation. Basic mode is essentially GS3/SW2 compatible mode (as modelled by CISCO-ZS-MIB). Enhanced mode of operation provides additional capabilities. In enhanced mode of operation, all the configuration should be done within the scope of a session. The current 'Running Configuration' on the local device for zone server is called the 'effective' database. When the first configuration command on the zone server data is received, a snapshot of the current 'effective database' is taken on the local device. This snapshot is called the 'copy' database. An implicit session is started by the Zone Server on the local device and all subsequent SET operations take place in the context of this session. The 'copy' database is used for all further modifications in the session. There can be only one session active in the entire Fibre Channel fabric. The user who initiates the creation of this 'copy', is called the owner of session. When a session has been created on a device in the Fibre Channel fabric, if an attempt is made to start a session from any other device in the fabric, it results in error. Once the modifications to the 'copy' are done, a 'commit' operation can be done. The 'commit' done on the local device, results in the local 'effective database' being overwritten with the 'copy' and then the new local 'effective database' is distributed to all other devices in the Fibre Channel fabric. The successful 'commit' operation also results in destroying the 'copy' on the local device. The 'commit' can only be performed by the owner of the session. The 'copy' can optionally be destroyed without any distribution. This can be done by performing a 'clear' operation. Glossary of terms used in this MIB ---------------------------------- VSAN - Virtual Storage Area Network.")
  ciscoZsExtMIBNotifs = MibIdentifier((1, 3, 6, 1, 4, 1, 9, 9, 427, 0))
  ciscoZsExtMIBObjects = MibIdentifier((1, 3, 6, 1, 4, 1, 9, 9, 427, 1))
  ciscoZsExtMIBConform = MibIdentifier((1, 3, 6, 1, 4, 1, 9, 9, 427, 2))
  czseConfiguration = MibIdentifier((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1))
  czseStats = MibIdentifier((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 2))
  class CzseSessOwnerType(TextualConvention, Integer32):
      description = 'Represents the type of owner of a GS4 session. other - other type of owner. cli - Command Line Interface (CLI) is the owner. gs4client - Fibre Channel GS4 services client. snmp - SNMP is the owner.'
      status = 'current'
      subtypeSpec = Integer32.subtypeSpec + ConstraintsUnion(SingleValueConstraint(1, 2, 3, 4))
      namedValues = NamedValues(("other", 1), ("cli", 2), ("gs4client", 3), ("snmp", 4))
  
  czseCapabilityTable = MibTable((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 1), )
  if mibBuilder.loadTexts: czseCapabilityTable.setStatus('current')
  if mibBuilder.loadTexts: czseCapabilityTable.setDescription('This table lists the capabilities of the Zone Server on the local device. This information is maintained on a per VSAN basis.')
  czseCapabilityEntry = MibTableRow((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 1, 1), ).setIndexNames((0, "CISCO-VSAN-MIB", "vsanIndex"))
  if mibBuilder.loadTexts: czseCapabilityEntry.setStatus('current')
  if mibBuilder.loadTexts: czseCapabilityEntry.setDescription('An entry represents the capability of the Zone Server on the local device on a VSAN.')
  czseCapabilityObject = MibTableColumn((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 1, 1, 1), Bits().clone(namedValues=NamedValues(("enhancedMode", 0), ("zsetDb", 1), ("dirAct", 2), ("hardZoning", 3)))).setMaxAccess("readonly")
  if mibBuilder.loadTexts: czseCapabilityObject.setReference('Fibre-Channel - Switch fabric - 3 T11/ Project 1505-D/Rev 6.6 Section 6.1.22.4.4')
  if mibBuilder.loadTexts: czseCapabilityObject.setStatus('current')
  if mibBuilder.loadTexts: czseCapabilityObject.setDescription("This bitmap represents the capability of the local Zone Server on this VSAN. If 'enhancedMode(0)' bit is set, the local Zone Server is capable of supporting enhanced Zoning mode of operation. If this bit is reset, it does not have this capability. If 'zsetDb(1)' bit is set, the local Zone Server supports maintaining of zoneset database. If this bit is reset, the local Zone Server does not allow maintaining of zoneset database. If 'dirAct(2)' bit is set, the local Zone Server supports direct activation command. If this bit is reset, the local Zone Server does not support this. If 'hardZoning(3)' bit is set, the local Zone Server supports hard zoning. If this bit is reset, the local Zone Server does not support hard zoning.")
  czseModeTable = MibTable((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 2), )
  if mibBuilder.loadTexts: czseModeTable.setStatus('current')
  if mibBuilder.loadTexts: czseModeTable.setDescription('A table containing information on the mode of operation of the zone server on all VSANs on the local device.')
  czseModeEntry = MibTableRow((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 2, 1), ).setIndexNames((0, "CISCO-VSAN-MIB", "vsanIndex"))
  if mibBuilder.loadTexts: czseModeEntry.setStatus('current')
  if mibBuilder.loadTexts: czseModeEntry.setDescription('An entry represents the mode of operation of the local zone server on a VSAN. The mode can be modified on a VSAN and the outcome of the operation obtained.')
  czseOperationMode = MibTableColumn((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 2, 1, 1), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(1, 2))).clone(namedValues=NamedValues(("basic", 1), ("enhanced", 2))).clone('basic')).setMaxAccess("readwrite")
  if mibBuilder.loadTexts: czseOperationMode.setReference('Fibre-Channel - Generic Services - 4 T11/ Project 1505-D/Rev 7.8 Section 6.4.7. Fibre-Channel - Switch fabric - 3 T11/ Project 1505-D/Rev 6.6 Section 10.6')
  if mibBuilder.loadTexts: czseOperationMode.setStatus('current')
  if mibBuilder.loadTexts: czseOperationMode.setDescription("This object when set to 'basic(1)', results in the zone server operating in the basic mode as defined by FC-GS4 standards. This object when set to 'enhanced(2)', results in the zone server operating in the enhanced mode as defined by FC-GS4 standards. The local zone server can move to the enhanced mode of operation only if all devices in the Fibre Channel fabric are capable of working in enhanced mode. Otherwise, the set operation trying to set this object to 'enhanced(2)' will fail.")
  czseOperationModeResult = MibTableColumn((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 2, 1, 2), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(1, 2, 3))).clone(namedValues=NamedValues(("success", 1), ("failure", 2), ("inProgress", 3)))).setMaxAccess("readonly")
  if mibBuilder.loadTexts: czseOperationModeResult.setStatus('current')
  if mibBuilder.loadTexts: czseOperationModeResult.setDescription('The outcome of setting the mode of operation of the local Zone Server on this VSAN.')
  czseReadFrom = MibScalar((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 3), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(1, 2))).clone(namedValues=NamedValues(("effectiveDB", 1), ("copyDB", 2))).clone('effectiveDB')).setMaxAccess("readwrite")
  if mibBuilder.loadTexts: czseReadFrom.setStatus('current')
  if mibBuilder.loadTexts: czseReadFrom.setDescription("This object specifies whether the management station wishes to read from the 'effective database' or from the 'copy' database.")
  czseSessionTable = MibTable((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 4), )
  if mibBuilder.loadTexts: czseSessionTable.setStatus('current')
  if mibBuilder.loadTexts: czseSessionTable.setDescription("A table containing information on sessions on the local device on all VSANs. Operations are permitted on this table only when the zone server is running in 'enhanced' mode.")
  czseSessionEntry = MibTableRow((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 4, 1), ).setIndexNames((0, "CISCO-VSAN-MIB", "vsanIndex"))
  if mibBuilder.loadTexts: czseSessionEntry.setStatus('current')
  if mibBuilder.loadTexts: czseSessionEntry.setDescription('An entry contains information on the owner of a session on a VSAN. It also assists in performing commit/clear operations on the session.')
  czseSessionOwnerType = MibTableColumn((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 4, 1, 1), CzseSessOwnerType()).setMaxAccess("readonly")
  if mibBuilder.loadTexts: czseSessionOwnerType.setStatus('current')
  if mibBuilder.loadTexts: czseSessionOwnerType.setDescription('This object specifies the owner type for this session.')
  czseSessionOwner = MibTableColumn((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 4, 1, 2), OctetString().subtype(subtypeSpec=ValueSizeConstraint(0, 64))).setMaxAccess("readonly")
  if mibBuilder.loadTexts: czseSessionOwner.setStatus('current')
  if mibBuilder.loadTexts: czseSessionOwner.setDescription("This object specifies the owner for this session. If the value of the corresponding instance of czseSessionOwnerType object is 'cli', this object will contain the user name of the CLI (Command Line Interface) user, who is the owner of the session on this VSAN. If the value of the corresponding instance of czseSessionOwnerType is 'gs4client', this object will contain the FCID of the GS4 management station, which is the owner of the session on this VSAN. If the value of the corresponding instance of czseSessionOwnerType is 'snmp', this object will contain the IP address of the management station, which is the owner of the session on this VSAN.")
  czseSessionCntl = MibTableColumn((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 4, 1, 3), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(1, 2, 3))).clone(namedValues=NamedValues(("commitChanges", 1), ("cleanup", 2), ("noop", 3)))).setMaxAccess("readwrite")
  if mibBuilder.loadTexts: czseSessionCntl.setStatus('current')
  if mibBuilder.loadTexts: czseSessionCntl.setDescription("This object assists in committing or clearing the contents of the 'copy' database on this session. No action is taken if this object is set to 'noop(3)'. The value of this object when read is always 'noop(3)'. The above operation can only be performed by the owner of the session.")
  czseSessionCntlResult = MibTableColumn((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 4, 1, 4), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(1, 2, 3))).clone(namedValues=NamedValues(("commitSuccess", 1), ("commitFailure", 2), ("inProgress", 3)))).setMaxAccess("readonly")
  if mibBuilder.loadTexts: czseSessionCntlResult.setStatus('current')
  if mibBuilder.loadTexts: czseSessionCntlResult.setDescription("This object indicates the outcome of setting the corresponding instance of czseSessionCntl object to 'commitChanges(1)'.")
  czseMergeControlTable = MibTable((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 5), )
  if mibBuilder.loadTexts: czseMergeControlTable.setStatus('current')
  if mibBuilder.loadTexts: czseMergeControlTable.setDescription("A table containing information on zone merge control policy on all VSANs in the entire fabric. Operations on this table are permitted only when the zone server is running in 'enhanced' mode.")
  czseMergeControlEntry = MibTableRow((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 5, 1), ).setIndexNames((0, "CISCO-VSAN-MIB", "vsanIndex"))
  if mibBuilder.loadTexts: czseMergeControlEntry.setReference('Fibre-Channel - Switch fabric - 3 T11/ Project 1505-D/Rev 6.6 Section 10.5.2.2')
  if mibBuilder.loadTexts: czseMergeControlEntry.setStatus('current')
  if mibBuilder.loadTexts: czseMergeControlEntry.setDescription('An entry contains information on the Merge Control policy on a VSAN. The policy can be modified on a per VSAN basis by making use of czseMergeContolRestrict object.')
  czseMergeControlRestrict = MibTableColumn((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 5, 1, 1), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(1, 2))).clone(namedValues=NamedValues(("allow", 1), ("restrict", 2))).clone('allow')).setMaxAccess("readwrite")
  if mibBuilder.loadTexts: czseMergeControlRestrict.setStatus('current')
  if mibBuilder.loadTexts: czseMergeControlRestrict.setDescription("This object controls the zone merge behavior. If this object is set to 'allow', then the merge takes place according to the merge rules. If this object is set to 'restrict', then if the merging databases are not exactly identical, the Inter-Switch Link (ISL) between the devices is isolated.")
  czseGlobalDefaultZoneBehaviour = MibScalar((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 6), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(1, 2))).clone(namedValues=NamedValues(("permit", 1), ("deny", 2))).clone('deny')).setMaxAccess("readwrite")
  if mibBuilder.loadTexts: czseGlobalDefaultZoneBehaviour.setStatus('current')
  if mibBuilder.loadTexts: czseGlobalDefaultZoneBehaviour.setDescription("This object represents the initial value for default zone behaviour on a VSAN when it is created. If a VSAN were to be deleted and re-created again, the default zone behaviour will be set to the value specified for this object. The semantics of setting this object to 'permit' or 'deny' are described in the description for zoneDefaultZoneBehaviour object in CISCO-ZS-MIB. After a VSAN has been created, if the value for default zone behaviour for that VSAN has to be changed, the zoneDefaultZoneBehaviour object in CISCO-ZS-MIB has to be used.")
  czseGlobalPropagationMode = MibScalar((1, 3, 6, 1, 4, 1, 9, 9, 427, 1, 1, 7), Integer32().subtype(subtypeSpec=ConstraintsUnion(SingleValueConstraint(1, 2))).clone(namedValues=NamedValues(("fullZoneset", 1), ("activeZoneset", 2))).clone('activeZoneset')).setMaxAccess("readwrite")
  if mibBuilder.loadTexts: czseGlobalPropagationMode.setStatus('current')
  if mibBuilder.loadTexts: czseGlobalPropagationMode.setDescription("This object represents the initial value for zone set propagation mode on a VSAN when it is created. If a VSAN were to be deleted and re-created again, the zone set propagation mode will be set to the value specified for this object. The semantics of setting this object to 'fullZoneset' or 'activeZoneset' are described in the description for zoneSetPropagationMode object in CISCO-ZS-MIB. After a VSAN has been created, if the value for zone set propagation mode has to be changed for that particular VSAN, the zoneSetPropagationMode object in CISCO-ZS-MIB has to be used.")
  ciscoZsExtMIBCompliances = MibIdentifier((1, 3, 6, 1, 4, 1, 9, 9, 427, 2, 1))
  ciscoZsExtMIBGroups = MibIdentifier((1, 3, 6, 1, 4, 1, 9, 9, 427, 2, 2))
  ciscoZsExtMIBCompliance = ModuleCompliance((1, 3, 6, 1, 4, 1, 9, 9, 427, 2, 1, 1)).setObjects(("CISCO-ZS-EXT-MIB", "ciscoZsExtConfigGroup"))
  
  if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0):
      ciscoZsExtMIBCompliance = ciscoZsExtMIBCompliance.setStatus('deprecated')
  if mibBuilder.loadTexts: ciscoZsExtMIBCompliance.setDescription('The compliance statement for entities which implement the Zone Server conforming to FC-GS4/SW3.')
  ciscoZsExtMIBComplianceRev1 = ModuleCompliance((1, 3, 6, 1, 4, 1, 9, 9, 427, 2, 1, 2)).setObjects(("CISCO-ZS-EXT-MIB", "ciscoZsExtConfigGroup"), ("CISCO-ZS-EXT-MIB", "ciscoZsExtConfigGroupSup1"))
  
  if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0):
      ciscoZsExtMIBComplianceRev1 = ciscoZsExtMIBComplianceRev1.setStatus('current')
  if mibBuilder.loadTexts: ciscoZsExtMIBComplianceRev1.setDescription('The compliance statement for entities which implement the Zone Server conforming to FC-GS4/SW3.')
  ciscoZsExtConfigGroup = ObjectGroup((1, 3, 6, 1, 4, 1, 9, 9, 427, 2, 2, 1)).setObjects(("CISCO-ZS-EXT-MIB", "czseCapabilityObject"), ("CISCO-ZS-EXT-MIB", "czseOperationMode"), ("CISCO-ZS-EXT-MIB", "czseOperationModeResult"), ("CISCO-ZS-EXT-MIB", "czseReadFrom"), ("CISCO-ZS-EXT-MIB", "czseSessionOwnerType"), ("CISCO-ZS-EXT-MIB", "czseSessionOwner"), ("CISCO-ZS-EXT-MIB", "czseSessionCntl"), ("CISCO-ZS-EXT-MIB", "czseSessionCntlResult"), ("CISCO-ZS-EXT-MIB", "czseMergeControlRestrict"))
  if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0):
      ciscoZsExtConfigGroup = ciscoZsExtConfigGroup.setStatus('current')
  if mibBuilder.loadTexts: ciscoZsExtConfigGroup.setDescription('A collection of object(s) for configuring and displaying Zone Server conforming with FC-GS4/SW3.')
  ciscoZsExtConfigGroupSup1 = ObjectGroup((1, 3, 6, 1, 4, 1, 9, 9, 427, 2, 2, 2)).setObjects(("CISCO-ZS-EXT-MIB", "czseGlobalDefaultZoneBehaviour"), ("CISCO-ZS-EXT-MIB", "czseGlobalPropagationMode"))
  if getattr(mibBuilder, 'version', (0, 0, 0)) > (4, 4, 0):
      ciscoZsExtConfigGroupSup1 = ciscoZsExtConfigGroupSup1.setStatus('current')
  if mibBuilder.loadTexts: ciscoZsExtConfigGroupSup1.setDescription('A collection of objects for configuring global zoning policies.')
  mibBuilder.exportSymbols("CISCO-ZS-EXT-MIB", czseOperationMode=czseOperationMode, czseSessionEntry=czseSessionEntry, czseMergeControlTable=czseMergeControlTable, czseSessionOwnerType=czseSessionOwnerType, czseMergeControlEntry=czseMergeControlEntry, PYSNMP_MODULE_ID=ciscoZsExtMIB, czseOperationModeResult=czseOperationModeResult, czseCapabilityTable=czseCapabilityTable, ciscoZsExtMIBCompliance=ciscoZsExtMIBCompliance, ciscoZsExtMIB=ciscoZsExtMIB, czseModeEntry=czseModeEntry, czseModeTable=czseModeTable, czseSessionCntlResult=czseSessionCntlResult, czseCapabilityObject=czseCapabilityObject, czseSessionOwner=czseSessionOwner, czseCapabilityEntry=czseCapabilityEntry, ciscoZsExtMIBComplianceRev1=ciscoZsExtMIBComplianceRev1, ciscoZsExtMIBConform=ciscoZsExtMIBConform, czseStats=czseStats, ciscoZsExtMIBGroups=ciscoZsExtMIBGroups, czseSessionTable=czseSessionTable, ciscoZsExtConfigGroupSup1=ciscoZsExtConfigGroupSup1, ciscoZsExtMIBCompliances=ciscoZsExtMIBCompliances, czseGlobalPropagationMode=czseGlobalPropagationMode, ciscoZsExtConfigGroup=ciscoZsExtConfigGroup, czseSessionCntl=czseSessionCntl, czseReadFrom=czseReadFrom, czseMergeControlRestrict=czseMergeControlRestrict, czseConfiguration=czseConfiguration, ciscoZsExtMIBObjects=ciscoZsExtMIBObjects, CzseSessOwnerType=CzseSessOwnerType, czseGlobalDefaultZoneBehaviour=czseGlobalDefaultZoneBehaviour, ciscoZsExtMIBNotifs=ciscoZsExtMIBNotifs)
  