
    m                     Z   S r SSKJr  SSKJr  SSKJr  SSKrSSKrSSKJr  SSKJ	r	  SSK
Jr  SS	K
Jr  SS
K
Jr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  S rS rS rS rS r S!S jrS rS r                 S"S jr!S r"S r#S r$S r%S r&S r'S r(S r) " S S \*5      r+g)#z6Flags and helpers for compute instances bulk commands.    )absolute_import)division)unicode_literalsN)	constants)metadata_utils)arg_parsers)base)
exceptions)
completers)flags)labels_utilc                    [         R                  " SS9n[         R                  " U SS9  [        [        R
                  " 5       [        [        S.nSR                  U5      nU R                  S[        R                  " US9S	US
9  g)z0Adds arguments related to disks for bulk insert.F)container_mount_enabledT
enable_kms)namebootzdevice-namescopea  
      Attaches persistent disks to the instances. The disks
      specified must already exist.

      *name*::: The disk to attach to the instances.

      *boot*::: If ``yes'', indicates that this is a boot disk. The
      virtual machines will use the first partition of the disk for
      their root file systems. The default value for this is ``no''.

      *device-name*::: {}

      *scope*::: Can be `zonal` or `regional`. If ``zonal'', the disk is
      interpreted as a zonal disk in the same zone as the instance (default).
      If ``regional'', the disk is interpreted as a regional disk in the same
      region as the instance. The default value for this is ``zonal''.
      --disk)specappend)typeactionhelpN)	instances_flagsGetDiskDeviceNameHelpAddBootDiskArgsstrr   
ArgBooleanformatadd_argumentArgDict)parserdisk_device_name_helpdisk_arg_spec	disk_helps       >lib/googlecloudsdk/command_lib/compute/instances/bulk/flags.pyAddDiskArgsForBulkr(   $   s     *??# !!&T: $$&	-
  &&
'! $ 	M2	      c                    U R                   =(       d    /  H=  nSU;  d  M  [        R                  " SSR                  [        R
                  5      5      e   [        R                  " U SS9  [        R                  " U SSS9  g)z/Validates the values of all disk-related flags.r   r   zH[name] is missing in [--disk]. [--disk] value must be of the form [{0}].Tr   )enable_snapshotsenable_image_csekN)diskr
   InvalidArgumentExceptionr    r   DISK_METAVARValidateDiskBootFlagsValidateCreateDiskFlags)argsr-   s     r'   ValidateBulkDiskFlagsr3   M   sr    iio2odT//
6/667   ''>))
r)   c            	      P    [         R                  " SS[        R                  SSSS9$ )Nz--source-instance-templatezinstance templateFzcompute.instanceTemplatesz~The name of the instance template that the instance will be created from. Users can override fields by specifying other flags.)r   resource_name	completerrequiredglobal_collection
short_help)compute_flagsResourceArgumentcompute_completersInstanceTemplatesCompleter r)   r'   !MakeBulkSourceInstanceTemplateArgr?   _   s/    		'	'''"==3
 r)   c                 8    SSSS.nU R                  SSS USS	9  g
)z4Adds bulk creation target shape arguments to parser.zEnforces VM placement in one allowed zone. Use this to avoid cross-zone network egress or to reduce network latency. This is the default value.zAllows distribution of VMs in zones where resources are available while distributing VMs as evenly as possible across selected zones to minimize the impact of zonal failures. Recommended for highly available serving or batch workloads.zAllows creating VMs in multiple zones if one zone cannot accommodate all the requested VMs. The resulting distribution shapes can vary.)ANY_SINGLE_ZONEBALANCEDANYz--target-distribution-shapeSHAPEc                 "    U R                  5       $ )N)upper)xs    r'   <lambda>0AddDistributionTargetShapeArgs.<locals>.<lambda>   s
    QWWYr)   z
        Specifies whether and how to distribute VMs across multiple zones in a
        region or to enforce placement of VMs in a single zone.
        The default shape is `ANY_SINGLE_ZONE`.
      )metavarr   choicesr   N)r!   )r#   choices_texts     r'   AddDistributionTargetShapeArgsrM   n   s>    
2,$ 	#
  
r)   c           	      \   U R                  S[        SS9  U R                  S[        SS9  U R                  SSS9nUR                  S[        R                  " 5       S	S
S9  UR                  SSS9  U(       a0  U R                  SSS9nUR                  SSS9  UR                  SSS9  U R                  SS[        R
                  " 5       SS9  U(       a%  U R                  SS[        R
                  " 5       SS9  U(       a.  U R                  SS[        R
                  " [        [        S9SS9  gg) z0Adds bulk creation specific arguments to parser.--countaN  
      Number of Compute Engine virtual machines to create. If specified, and
      `--predefined-names` is specified, count must equal the amount of names
      provided to `--predefined-names`. If not specified,
      the number of virtual machines created will equal the number of names
      provided to `--predefined-names`.
    )r   r   z--min-counta  
        The minimum number of Compute Engine virtual machines that must be
        successfully created for the operation to be considered a success. If
        the operation successfully creates as many virtual machines as
        specified here they will be persisted, otherwise the operation rolls
        back and deletes all created virtual machines. If not specified, this
        value is equal to `--count`.T)mutexr7   z--predefined-namesINSTANCE_NAMEab  
        List of predefined names for the Compute Engine virtual machines being
        created. If `--count` is specified alongside this flag, provided count
        must equal the amount of names provided to this flag. If `--count` is
        not specified, the number of virtual machines
        created will equal the number of names provided.
      r   rJ   r   z--name-patterna  
        Name pattern for generating instance names. Specify a pattern with a
        single sequence of hash (#) characters that will be replaced with
        generated sequential numbers of instances. E.g. name pattern of
        'instance-###' will generate instance names 'instance-001',
        'instance-002', and so on, until the number of virtual machines
        specified using `--count` is reached. If instances matching name pattern
        exist, the new instances will be assigned names to avoid clashing with
        the existing ones. E.g. if there exists `instance-123`, the new
        instances will start at `instance-124` and increment from there.
      r   )r7   rP   --regionz
        Region in which to create the Compute Engine virtual machines. Compute
        Engine will select a zone in which to create all virtual machines.
    z--zoneag  
        Zone in which to create the Compute Engine virtual machines.

        A list of zones can be fetched by running:

            $ gcloud compute zones list

        To unset the property, run:

            $ gcloud config unset compute/zone

        Alternatively, the zone can be stored in the environment variable
        CLOUDSDK_COMPUTE_ZONE.
     --location-policyzZONE=POLICYa  
        Policy for which zones to include or exclude during bulk instance creation
        within a region. Policy is defined as a list of key-value pairs, with the
        key being the zone name, and value being the applied policy. Available
        policies are `allow` and `deny`. Default for zones if left unspecified is `allow`.

        Example:

          gcloud compute instances bulk create --name-pattern=example-###
            --count=5 --region=us-east1
            --location-policy=us-east1-b=allow,us-east1-c=deny
      )rJ   r   r   --max-count-per-zonezZONE=MAX_COUNT_PER_ZONEax  
          Maximum number of instances per zone specified as key-value pairs. The zone name is the key and the max count per zone
          is the value in that zone.

          Example:

            gcloud compute instances bulk create --name-pattern=example-###
              --count=5 --region=us-east1
              --max-count-per-zone=us-east1-b=2,us-east-1-c=1
        --per-instance-hostnameszINSTANCE_NAME=INSTANCE_HOSTNAME)key_type
value_typeac  
          Specify the hostname of the instance to be created. The specified
          hostname must be RFC1035 compliant. If hostname is not specified, the
          default hostname is [INSTANCE_NAME].c.[PROJECT_ID].internal when using
          the global DNS, and [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal
          when using zonal DNS.
        N)r!   int	add_groupr   ArgListr"   r   )r#   add_zone_region_flagssupport_max_count_per_zonesupport_custom_hostnames
name_grouplocations         r'   AddBulkCreateArgsrb      s    	  
 	(  
 dT:* 
	   

   T:H   	  " 	 
	  "  
)  "		   
"1  ##>	   r)   c                 L   [         [         S.nS nX2S'   [        R                  US'   SnSUS'   US-  n[        US	'   US
-  n[        R                  US'   SnUSU S3-  nU(       a  [        R
                  US'   US-  nU R                  S[        R                  " USS9SSUS9  g)z-Adds Networking Args for Bulk Create Command.)networksubnetc                 |    U R                  5       nU[        R                  ;   a  U$ [        R                  " SS5      e)N--network-interfacezInvalid value for network-tier)rF   r   !NETWORK_TIER_CHOICES_FOR_INSTANCEr
   r.   )network_tier_inputnetwork_tiers     r'   ValidateNetworkTier8AddBulkCreateNetworkingArgs.<locals>.ValidateNetworkTier  s=    %++-LyBBB//
!A r)   znetwork-tierznic-typea        Adds a network interface to the instance. Mutually exclusive with any
      of these flags: *--network*, *--network-tier*, *--no-address*, *--subnet*,
      *--stack-type*. This flag can be repeated to specify multiple network
      interfaces.

      *network*::: Specifies the network that the interface will be part of.
      If subnet is also specified it must be subnetwork of this network. If
      neither is specified, this defaults to the "default" network.

      *network-tier*::: Specifies the network tier of the interface.
      ``NETWORK_TIER'' must be one of: `PREMIUM`, `STANDARD`. The default
      value is `PREMIUM`.

      *subnet*::: Specifies the subnet that the interface will be part of.
      If network key is also specified this must be a subnetwork of the
      specified network.

      *nic-type*::: Specifies the  Network Interface Controller (NIC) type for
      the interface. ``NIC_TYPE'' must be one of: `GVNIC`, `VIRTIO_NET`.
  Nz
no-addressz
    *no-address*::: If specified the interface will have no external IP.
    If not specified instances will get ephemeral IPs.
    zqueue-counta&  
    *queue-count*::: Specifies the networking queue count for this interface.
    Both Rx and Tx queues will be set to this number. If it's not specified, a
    default queue count will be assigned. See
    https://cloud.google.com/compute/docs/network-bandwidth#rx-tx for
    more details.
  z
stack-typez%`IPV4_ONLY`, `IPV4_IPV6`, `IPV6_ONLY`zl
    *stack-type*::: Specifies whether IPv6 is enabled on the interface.
    ``STACK_TYPE'' must be one of: z*.
    The default value is `IPV4_ONLY`.
  z
igmp-querya  
      *igmp-query*::: Determines if the Compute Engine Instance can receive and respond to IGMP query packets on the specified network interface.
      ``IGMP_QUERY'' must be one of: `IGMP_QUERY_V2`, `IGMP_QUERY_DISABLED`.
      It is disabled by default.
    rg   T)r   allow_key_onlyr   zPROPERTY=VALUE)r   r   rJ   r   )	r   r   ValidateNetworkInterfaceNicTyperZ   !ValidateNetworkInterfaceStackType!ValidateNetworkInterfaceIgmpQueryr!   r   r"   )r#   support_igmp_query%multiple_network_interface_cards_specrk   network_interface_helpstack_typess         r'   AddBulkCreateNetworkingArgsru     s    +'
 ;N755 (
3, 9='5  
 :='6   77 (5 8+ !$$/= 1  99 *,7    	4 !  	r)   c                     U R                  5       nUR                  S[        R                  " 5       SSS9  UR                  SS[	        5       [        R
                  " 5       SS9  g	)
z9Adds instance flexibility policy arguments to the parser.z"--instance-selection-machine-typesMACHINE_TYPEa  \
      Specifies a list of machine types to consider for instance creation.
      The bulk create operation will attempt to create instances from this list
      based on capacity availability.
      This flag is only valid when a region is specified.
      rR   --instance-selectionzHname=NAME[,rank=RANK][,machine-type=MACHINE_TYPE]...[,disk=DISK_JSON]...a^  \
      Specifies a list of machine types to consider for instance creation.
      The bulk create operation will attempt to create instances from this list
      based on capacity availability.
      This flag is only valid when a region is specified.

      Keys for each instance selection:

      name: (Required) A unique name for this instance selection group.
      machine-type: (Required) Repeatable. Specifies a machine type to include in this group (e.g., machine-type=n1-standard-1).
      rank: (Optional) An integer representing the priority. Lower ranks are preferred. Defaults to 0.
      disk: (Optional) Repeatable. A JSON string defining a disk to attach or override, conforming to the Compute Engine AttachedDisk API structure. Example: disk='{"deviceName": "boot-disk", "boot": true, "initializeParams": {"sourceImage": "IMAGE_URL"}}'
      )rJ   r   r   r   N)add_mutually_exclusive_groupr!   r   r\   ArgMultiValueDictFlattenAction)r#   mutex_groups     r'    AddInstanceFlexibilityPolicyArgsr}   p  sl    335+* 
	  
 X&&(
  r)   c                 ,   SS/n/ nU H,  nU R                  U5      (       d  M  UR                  U5        M.     U(       d  gU R                  S5      (       d  [        R                  " SS5      eU R                  S5      (       a  U R
                   H  nSU;  a  [        R                  " SS5      eS	U;  d
  US	   (       d  [        R                  " SS
5      eSU;   d  MO  US   nUR                  5       (       a  Mk  [        R                  " SS5      e   gg)z>Validates args supplied to --instance-selection-machine-types. instance_selection_machine_typesinstance_selectionNregionrT   zKFlag --region is required for any of the instance flexibility policy flags.r   z Missing instance selection name.machine-typez+Missing machine type in instance selection.rankz-Invalid value for rank in instance selection.)IsKnownAndSpecifiedr   IsSpecifiedr
   RequiredArgumentExceptionr   r.   isdigit)r2   flexibility_policy_argsspecified_argsargr   r   s         r'   ValidateInstanceFlexibilityArgsr     s'    ) .$c$$C  % 

			(	#	#

.
.	 
 
*++"55	)	)11 "D
 	
  2
2#N311 "O
 	
 
%	%!&)||~~33"=  6 ,r)   c           
      	   [         R                  " U 5        [        U 5        [        R                  " U SSSSSUS9  [        R
                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                  " U SS9  [        R                  " U 5        [        R                  " U 5        [        R                  " U US9  U(       a  [        R                  " U SS9  U(       a  [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                   " U SSS9  [        R"                  " U 5        [        R$                  " U 5        [        R&                  " U 5        [        R(                  " U 5        [        R*                  " U SS	9  [-        U U
S
9  [        R.                  " U SUS9  [        R0                  " U 5        [        R2                  " U 5        [        R4                  " U 5        [        R6                  " U 5        [        R8                  " U 5        U(       a  [        R:                  " U 5        U(       a  [        R<                  " U 5        [        R>                  " U SSUS9  [@        RB                  " U SS5        [        RD                  " U 5        [        RF                  " U 5        [H        RJ                  " U S5        [L        RN                  " U 5        U RQ                  SSS9  [R        RT                  RW                  U 5        U RX                  R[                  S5        [        R\                  " U 5        [        R^                  " U 5        [        R`                  " U 5        [        Rb                  " U 5        [e        U 5        [        Rf                  " U SS9  [        Rh                  " X5        [        Rj                  " U SS	9  [        Rl                  " U SSUS9  [        Rn                  " U 5        [q        U UUU5        [        Rr                  " U 5        U	(       a  [        Rt                  " U 5        [        Rv                  " U 5        U(       a  [        Rx                  " U 5        U(       a  [{        U 5        U(       a  [        R|                  " U 5        gg)z*Register parser args common to all tracks.TF)r   r+   
image_csekinclude_namesupport_bootsupport_source_snapshot_region)	deprecate)support_flex_start)	is_createax  However, if neither `--scopes` nor `--no-scopes` are specified and the project has no default service account, then the instance will be created with no scopes. Note that the level of access that a service account has is determined by a combination of access scopes and IAM roles so you must configure both access scopes and IAM roles for the service account to work properly.)extra_scopes_help)instance)rq   )r+   r   z+Specifies the reservation for the instance.z)The type of reservation for the instance.)
group_textaffinity_text support_specific_then_x_affinityzadded tor   z(source snapshots or source machine imagez--descriptionz1Specifies a textual description of the instances.rS   z5multi(instances:format="table(name,zone.basename())"))support_ipv6_only)!support_confidential_compute_type%support_confidential_compute_type_tdxsupport_snp_svsmN)?r   AddMetadataArgsr(   r   AddCreateDiskArgsAddCanIpForwardArgsAddAcceleratorArgsAddMachineTypeArgsAddMaintenancePolicyArgsAddNoRestartOnFailureArgsAddPreemptibleVmArgsAddProvisioningModelVmArgsAddGracefulShutdownArgsAddPreemptionNoticeDurationArgs AddNetworkPerformanceConfigsArgs"AddInstanceTerminationActionVmArgsAddServiceAccountAndScopeArgsAddTagsArgsAddCustomMachineTypeArgsAddNoAddressArgAddNetworkArgsAddNetworkTierArgsru   AddImageArgsAddShieldedInstanceConfigArgsAddNestedVirtualizationArgsAddThreadsPerCoreArgsAddEnableUefiNetworkingArgsAddResourceManagerTagsArgsAddNumaNodeCountArgsAddDisplayDeviceArgAddReservationAffinityGroupmaintenance_flagsAddResourcePoliciesArgsAddMinNodeCpuArgAddLocationHintArgr:   AddEraseVssSignaturer   AddCreateLabelsFlagsr!   r	   
ASYNC_FLAGAddToParserdisplay_info	AddFormatAddVisibleCoreCountArgsAddLocalSsdArgsWithSizeAddMaxRunDurationVmArgsAddDiscardLocalSsdVmArgsrM   AddStackTypeArgsAddMinCpuPlatformArgsAddPublicDnsArgsAddConfidentialComputeArgs"AddPostKeyRevocationActionTypeArgsrb    AddPerformanceMonitoringUnitArgsAddWatchdogTimerArgAddTurboModeArgsAddSkipGuestOsShutdownArgsr}   AddWorkloadIdentityConfigArgs)r#   release_tracksupport_display_devicesupport_numa_node_countr]   r   r^   r_   r   support_watchdog_timerrq   support_graceful_shutdownr   r   support_skip_guest_os_shutdown"support_preemption_notice_duration#support_instance_flexibility_policy support_workload_identity_configs                     r'   AddCommonBulkInsertArgsr     s   *   (V##%C %%f-$$V,$$V,**6TB++F3&&v.,,+ ++FdC'33F;226:44V<//	 f%**62!!&)  ($$Vd;+
 %C
 //7--f5''/--f5,,V4((0''/-->?'G	 ++FJ
K""6*$$V,$$8 ""6*O   //f%= ))&1))&1))&1**62 (""6TB''>""6D9,,(,,0'	 44V< 	 226:''/""6*#..v6($V,%11&9 &r)   c                 >   U R                  S5      (       a-  U R                  S5      (       d  [        R                  " SS5      eU R                  S5      (       aD  U R                  S5      (       d  U R                  S5      (       d  [        R                  " SS	5      eg
g
)zValidates args for bulk create.name_patterncountrO   zYThe `--count` argument must be specified when the `--name-pattern` argument is specified.location_policyzoner   rT   zaThe `--region` argument must be used alongside the `--location-policy` argument and not `--zone`.Nr   r
   r   r2   s    r'   ValidateBulkCreateArgsr   X  s    	n%%d.>.>w.G.G

.
.g  
'((
vd&6&6x&@&@

.
.o  'A )r)   c                     U R                  S5      (       aD  U R                  S5      (       d  U R                  S5      (       d  [        R                  " SS5      egg)z+Validates target shape arg for bulk create.target_distribution_shaper   r   rT   zkThe `--region` argument must be used alongside the `--target_distribution_shape` argument and not `--zone`.Nr   r   s    r'   ValidateBulkTargetShapeArgsr   h  sY    	122
vd&6&6x&@&@

.
.y  'A 3r)   c                    U R                  S5      (       a  U R                  R                  5        H  u  pUR                  S5      n[	        U5      S:w  d  US   S   R                  5       (       d&  [        R                  " SSR                  U5      5      eUS;  d  Mn  [        R                  " SS	R                  U5      5      e   g
g
)z-Validates args supplied to --location-policy.r   -      rU   Key [{}] must be a zone.)allowdenyz'Value [{}] must be one of [allow, deny]N)	r   r   itemssplitlenr   r
   r.   r    )r2   r   policy
zone_splits       r'   ValidateLocationPolicyArgsr   s  s    	'((,,224::c?j
j/Q
Ar"**,,11!;!B!B4!H
 	
 
(	(115<<VD
 	
 5 )r)   c                 P   U R                  S5      (       a  U R                  R                  5        Hq  u  p[        U5      (       d&  [        R
                  " SSR                  U5      5      e[        U5      (       a  MM  [        R
                  " SSR                  U5      5      e   gg)z0Validates args supplied to --max-count-per-zone.max_count_per_zonerV   r   z-Value [{}] must be a positive natural number.N)r   r   r   ValidateZoner
   r.   r    ValidateNaturalCount)r2   r   r   s      r'   ValidateMaxCountPerZoneArgsr     s    	233..446$11"$>$E$Ed$K
 	
 "%((11";BB5I
 	
 7 4r)   c                 <   U R                  S5      (       a  U R                  S5      (       d  [        R                  " SS5      eU R                  R	                  5        H:  u  pXR
                  ;  d  M  [        R                  " SSR                  U5      5      e   gg)z4Validates args supplied to --per-instance-hostnames.per_instance_hostnamespredefined_namesrW   zaThe `--per-instance-hostnames` argument must be used alongside the `--predefined-names` argument.zInstance [{}] missing in predefined_names. Instance names from --per-instance-hostnames must be included in --predefined-names flag.N)r   r
   r   r   r   r   r.   r    )r2   instance_name_s      r'   ValidateCustomHostnamesr     s    	677##$67700
$
q  !77==?	33	311&VM*	
 	
 @ 8r)   c                 z    [        U 5      S:  =(       a'    [        R                  " S5      R                  U 5      SL$ )zValidates if zone is valid.@   z^\w+-\w+\d+-\w+N)r   recompilematch)r   s    r'   r   r     s3     
$i"nO$67==dC4Or)   c                 P    [         R                  " S5      R                  U 5      SL$ )z.Validates if count is positive natural number.z	^[1-9]\d*N)r  r  r  )r   s    r'   r   r     s!    	L	!	'	'	.d	::r)   c                 T   [        U 5        [        U 5        [        U 5        U(       a  [        U 5        U(       a  [	        U 5        [        U 5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                  " U 5        [        R                  " U SS9  U(       a  [!        U 5        gg)z%Validates all bulk and instance args.T)support_max_run_durationN)r   r   r   r   r   r3   r   ValidateImageFlagsValidateLocalSsdFlagsValidateNicFlags"ValidateServiceAccountAndScopeArgsValidateAcceleratorArgsValidateNetworkTierArgs ValidateReservationAffinityGroup%ValidateNetworkPerformanceConfigsArgsValidateInstanceSchedulingr   )r2   r^   r_   r   s       r'   ValidateBulkInsertArgsr    s     d#T"%D!$$T*''-""4(44T:))$/))$/224877=,,
T )#D) )r)   c                   $    \ rS rSrSrS rS rSrg)rz   i  zCustom parser for --instance-selection flag.

Parses a comma-separated string of key=value pairs. Special handling
for the 'disk' key, where the value is expected to be a single-quoted
JSON string.
c           	         U(       d  0 $ U R                  U5      n0 nU Hn  u  pEUS:X  a8   [        R                  " U5      nXC;   a  X4   R                  U5        M<  U/X4'   MC  US:X  a!  XC;   a  X4   R                  U5        Mc  U/X4'   Mj  XSU'   Mp     U$ ! [        R                   a"  n[
        R                  " SSU SU 35      eS nAff = f)Nr-   rx   zInvalid JSON for disk key: z - Received: r   )_SplitArgStringjsonloadsr   JSONDecodeErrorr
   r.   )selfargument_valueentriesresultkeyvalue	disk_dictes           r'   __call__ArgMultiValueDict.__call__  s    i"">2GF
	
	jj')]Ky)$+FK . =
+

U
#&+s' ( M ## 	33$+A3mE7C 	s   .BBC	'CC	c                     Sn[         R                  " X!5      n/ nU H#  u  pVnU(       a  UOUnUR                  XX45        M%     U$ )zTSplits the argument string by commas, respecting single-quoted JSON for disk values.z([\w-]+)=(?:'([^']*)'|([^,]*)))r  findallr   )	r  r  patternmatchesr  r  single_quoted_valunquoted_valr  s	            r'   r  !ArgMultiValueDict._SplitArgString  sJ     0Gjj1GG07,#4,ennc\" 18 Nr)   r>   N)__name__
__module____qualname____firstlineno____doc__r  r  __static_attributes__r>   r)   r'   rz   rz     s    :r)   rz   )F)FFTFFFFFFFFFFFFF),r,  
__future__r   r   r   r  r  googlecloudsdk.api_lib.computer   r   googlecloudsdk.callioper   r	   r
   "googlecloudsdk.command_lib.computer   r<   r   r:   ,googlecloudsdk.command_lib.compute.instancesr   4googlecloudsdk.command_lib.compute.resource_policiesr   $googlecloudsdk.command_lib.util.argsr   r(   r3   r?   rM   rb   ru   r}   r   r   r   r   r   r   r   r   r   r  objectrz   r>   r)   r'   <module>r6     s    = &  '  	 4 9 / ( . O E Q [ <&R$B@J [| F'Z !!$"%* ##(#(',(-%*%X:v 
(

$;
*<2 2r)   