
    nj              #       
   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJr  S SK	J
r
JrJrJrJr  S SKrS SKJrJr  S SKJr  S SKJrJrJr  S SKJrJr  S SKJrJr  S S	KJ r J!r!  S S
K"J#r#  S SK$J%r%J&r&  \'r(\)" \RT                  5      r+\RX                  S\RZ                  S\R\                  S\R^                  S\R`                  S\Rb                  S\Rd                  S\Rf                  S\Rh                  S\Rj                  S\Rl                  S\Rn                  S\Rp                  S\Rr                  S0r:\;" S \:Ry                  5        5       5      r= SSSSSSSSSSSSSSS\R|                  4S\\?   S\\   S\\   S\\\(\?4      S\\?   S\\\?      S\?S\@S\@S\@S \\   S!\\   S"\\\\#4      S#\\
   S$\@S%\@S&\4"S' jjrAS( rB " S) S*\!5      rC\R                  4S+ jrE\FS,:X  a#  \R                  " \E" \R                  5      5        gg)-    N)Number)DictOptionalSequenceTupleUnion)gdal
gdal_array)extent_util)MaybeSequencePathLikeOrStris_path_like)ColorTableLikeget_color_table)GTExtent)GDALArgumentParser
GDALScript)GeoRectangle)GetOutputDriverForopen_ds   i  i l    i  g6pGgc              #   N   #    U  H  n[         R                  " U5      v   M     g 7fN)r	   GetDataTypeName).0dts     Q/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/osgeo_utils/gdal_calc.py	<genexpr>r   O   s      U=Tr$..r22=Ts   #% FcalcoutfileNoDataValuetypeformatcreation_optionsallBands	overwrite
hideNoDataprojectionCheckcolor_tableextentprojwinuser_namespacedebugquietprogress_callbackc                     U(       a  [        SU  35        U(       a`  [        R                  R                  U5      (       a<  U(       d5  U(       d#  U(       d  U(       d  U(       d  U(       d  U(       a  [	        S5      e[        U [        [        45      (       a  U n OU /n U  Vs/ s H  nUR                  S5      PM     n nU=(       d    / n[        [        4 VVs0 s H;  n[        U5        H(  nUR                  S5      (       a  M  U[        UU5      _M*     M=     nnnU(       a  UR                  U5        U (       d  [	        S5      eU(       d  UR                  5       S:w  a  [	        S5      eUc  [!        U5      n[        U["        5      (       a  OaU(       a,  [        U["        5      (       a  UnOB["        R$                  " U6 nO.U(       d  [&        R(                  nO[*        R,                  " U5      nSn[.        R0                  U[&        R2                  :g  [.        R4                  S	[.        R6                  S	[.        R8                  S	0n[.        R0                  S
[.        R4                  S[.        R6                  S[.        R8                  S0n/ n/ n/ n/ n/ n/ n/ nS n / n!S n"S n#/ n$S	n%/ n&/ n'UR;                  5        GHi  u  n(n)[        U)[        [        45      (       a  U'R=                  U(5        O=[?        U)5      (       d  [        U)[@        RB                  5      (       a  U)/n)U(/n(OU)UU('   Mq  [E        U([G        U)5      -  U)5       GH  u  n*n+U*RI                  S5      (       a  M  U* S3n,U,U;   a  UU,   n-OSn-[?        U+5      (       + n.U.(       a  U+n/S n+O[K        U+5      n/U/(       d  [M        SU+ S35      eUR=                  U+5        UR=                  U/5        UR=                  U-5        UR=                  U*5        U/RO                  U-5      RP                  n0UR=                  [@        RR                  " U05      5        UR=                  U05        UR=                  U(       a  S OU/RO                  U-5      RU                  5       5        U/RV                  U/RX                  /n1U (       aX  U U1:w  aQ  Sn%U[&        R(                  [&        R2                  4;   a+  [	        SU+ SU1S   S SU1S   S SU S   S SU S   S S35      eOU1n U/R[                  5       n2U"(       a#  U	(       a  U"U2:w  a  [	        SU+ SU2 SU" S35      eOU2n"U/R]                  SS9n3U[&        R(                  :X  a  U3n#OU!R=                  U15        U$R=                  U35        U#(       d  U3n#Ol[*        R^                  " U#U3UUS9n4U4[.        R`                  [.        Rb                  4;  a1  Sn%U4[.        Rd                  :w  a  [	        S U+ SU3 S!UU4    S"U# S#3	5      eU(       d  GM  [        S$U* S%U+ S&U S    SU S    S'US(    3
5        GM     GMl     S n5Sn6U(       aD  [G        U 5      S:  a  [	        S)5      e URg                  U5      n5UU5   Rj                  n6U6S::  a  S n5O[G        U 5      n6U[&        R(                  [&        R2                  4;  a  U%(       d  [        U["        5      (       a  [*        Rl                  " U$U!U5      u  n#n n7U#c  [	        S,5      e[o        [G        U5      5       Hc  n8[*        Rp                  " UU8   U75      u  n9n:U&R=                  U95        S UU8'   U:UU8'   U:R]                  5       n#U:RV                  U:RX                  /n Me     S n:U(       Ga;  [        R                  R                  U5      (       Ga  U(       Gd  U5b  [	        S-5      e[G        U 5      S:  a  [	        S.5      eU(       a  [        S/U S035        [K        U[@        Rr                  [@        Rt                  -  S19n;U;c  S2n<O\U;RV                  U;RX                  /U :w  a  S3n<O=U"(       a  U"U;R[                  5       :w  a  S4n<OU#(       a  U#U;R]                  SS9:w  a  S5n<OS n<U<(       a  [	        S6U< S735      eU;RO                  S5      n=U=RU                  5       n>U=RP                  n?GO_U(       aP  [        R                  R                  U5      (       a  [        Rv                  " U5        U(       a  [        S8U 35        OS9nU(       dG  [y        [@        S:5      (       a&  US   n?U H  n0[@        Rz                  " U?U05      n?M     O9[}        U5      n?O-Un?[        U?[~        5      (       a  [@        R                  " U?5      n?[@        R                  " U5      n@U@R                  [        R                  " U5      U S   U S   U6U?U5      n;U;c  [	        S;U 35      eU#(       d  US   R]                  SS9n#U#(       a  U;R                  U#5        U"(       d  US   R[                  5       n"U"(       a  U;R                  U"5        Uc  U(       d
  [        U?   n>O.[        U[~        5      (       a  UR                  5       S<:X  a  S n>OUn>[o        SU6S-   5       H|  n8U;RO                  U85      n=U>b  U=R                  U>5        U
(       aK  [?        U
5      (       a  [        U
5      n
U=R                  U
5        U=R                  [@        R                  5        S n=M~     [@        RR                  " U?5      nAU(       a+  [        S=U S&U;RV                   SU;RX                   S'WA 35        US   RO                  US   5      R                  5       nB[        U S   UBS   -   S-
  UBS   -  5      nC[        U S   UBS   -   S-
  UBS   -  5      nDUBS   UBS   -  nEU(       a  [        S>WBS    S?UBS    35        S(nFWCWD-  U6-  nG[o        SU6S-   5       GH  nHWBS   nIUBS   nJ0 nK0 nL[        U5       H  u  n8nMUMU';   d  M  U5b	  U5U8:X  a  WHnNOUU8   nNUU8   RO                  WN5      nOWMWK;  a  SWKWM'   WORP                  WLUM'   MO  WKWM==   S-  ss'   [y        [@        S:5      (       d  Ms  [@        Rz                  " WLWM   WORP                  5      ULUM'   M     [o        SWC5       GH  nPUPWCS-
  :X  a  U S   WPWBS   -  -
  nIWPWBS   -  nQUBS   nJWIUJ-  nE[o        SWD5       GH  nRWFS-  nFU(       d  U" [        WF5      WG-  S9S 5        WRWDS-
  :X  a  U S   WRWBS   -  -
  nJWIUJ-  nEWRWBS   -  nSS nT0 nU0 nV0 nWWK Hc  nM[        R                  " WLUM   5      nXWKUM   S:X  a  [        R                  " WJWI4WXS@9WVWM'   O[        R                  " WKWM   WJWI4WXS@9WVUM'   SWWWM'   Me     [        U5       GH  u  n8nMU5b	  U5U8:X  a  WHnNOUU8   nNWMU';   aS  WKWM   S:X  a  WVWM   nYOWVWM   WWUM      nY[        R                  " UU8   RO                  WN5      WQWSWIWJWYSA9nZWWWM==   S-  ss'   O*[        R                  " UU8   RO                  WN5      WQWSWIWJSB9nZWZc  [	        SCW+U8    35      eUU8   bE  WTc  [        R                  " WE5      nTWJWI4UTlU        S[        R                  " WTS:H  WZUU8   :H  5      -  nTWMU';  a  WZWUWM'   S nZGM
     U' H  n[WVU[   WUU['   M     U [G        U 5      S:  a  WHS-
  OS   n\ [        U\UWU5      n]WTb  U>b  SWTS:H  -  W]-  U>UT-  -   n]O:[        W][        R                  5      (       d  [        R                  " WJWI45      W]-  n]U;RO                  WH5      n=[        R                  " U=W]WQWSSF9S:w  a  [	        SG5      eS n=GM     GM     GM     [        U&5       H!  u  n^n_S UU^'   [        Rv                  " U_5        M#     [@        R                  " 5         U;R                  5         [@        R                  " 5       S9:w  a  [	        SH5      eU(       d
  U" SIS9S 5        U;$ s  snf s  snnf ! [h         a    [	        S*U S+35      ef = f! [         a    [        SDW\ SE35        e f = f)JNz"gdal_calc.py starting calculation zuOne or several options implying file creation have been provided but Output file exists, must use --overwrite option!"__zNo calculation provided.MEMzNo output file provided.gư>Fzdifferent offsetzdifferent pixel sizezdifferent rotationznon zero rotation_band   zNo such file or directory: ''TzError! Dimensions of file z (r   dz, z") are different from other files (z).  Cannot proceedzError! Projection of file  z  are different from other files z.  Cannot proceed)can_return_null)epsdiff_supportzError! GeoTransform of file z is incompatible (z), first file GeoTransform is z. Cannot proceedzfile z: z, dimensions: z, type: z)Error! --allBands implies a single --calcz*Error! allBands option was given but Band z not found.  Cannot proceedz4Error! The requested extent is empty. Cannot proceedzUError! allBands option was given but Output file exists, must use --overwrite option!z\Error! multiple calc options were given but Output file exists, must use --overwrite option!zOutput file z& exists - filling in results into file)access_modezbut cannot be opened for updatezbut is the wrong sizezbut is the wrong projectionzbut is the wrong geotransformzError! Output exists, zJ.  Use the --overwrite option to automatically overwrite the existing filezGenerating output file r    DataTypeUnionz$Error! Could not create output file nonezoutput file: zusing blocksize z x )dtype)xoffyoff	win_xsize	win_ysizebuf_obj)rC   rD   rE   rF   z)Input block reading failed from filename zevaluation of calculation z failed)rC   rD   zBlock writing failedzDataset writing failedg      ?)^printospathisfile	Exception
isinstancelisttuplestripr
   numpydir
startswithgetattrupdateupperr   r   	from_lurdr   IGNOREr   parse_extentr   INCOMPATIBLE_OFFSETFAILINCOMPATIBLE_PIXEL_SIZEINCOMPATIBLE_ROTATIONNON_ZERO_ROTATIONitemsappendr   r	   Datasetziplenendswithr   IOErrorGetRasterBandDataTyper   GetNoDataValueRasterXSizeRasterYSizeGetProjectionGetGeoTransformgt_diffSAMEALMOST_SAMECOMPATIBLE_DIFFindex
ValueErrorRasterCount calc_geotransform_and_dimensionsrangemake_temp_vrt	OF_UPDATE	OF_RASTERremovehasattrr@   maxstrGetDataTypeByNameGetDriverByNameCreatefspathSetGeoTransformSetProjectionDefaultNDVLookuplowerSetNoDataValuer   SetRasterColorTableSetRasterColorInterpretationGCI_PaletteIndexGetBlockSizeint	enumeratefloatGDALTypeCodeToNumericTypeCodeemptyBandReadAsArrayzerosshape
logical_orevalndarrayonesBandWriteArray
ErrorReset
FlushCacheGetLastErrorMsg)`r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   input_filescmodulekeyglobal_namespacecompatible_gt_epsgt_diff_supportgt_diff_errormyFileNamesmyFilesmyBandsmyAlphaList
myDataTypemyDataTypeNummyNDVDimensionsCheck
DimensionsProjectionCheckGeoTransformCheckGeoTransformsGeoTransformDiffermyTempFileNamesmyAlphaFileListsalphas	filenamesalphafilename
alpha_bandmyBand	myF_is_dsmyFiler   myFileDimensionsmyProjectionmyFileGeoTransform
my_gt_diffallBandsIndexallBandsCountExtentCheckitemp_vrt_filenametemp_vrt_dsmyOuterrormyOutBmyOutNDV	myOutTypemyOutDrvmyOutTypeNamemyBlockSizenXBlocksnYBlocks	myBufSize
ProgressCtProgressEndbandNonXValidnYValidcount_file_per_alphalargest_datatype_per_alphaAlphamyBandNobandXmyXYmyYmyNDVslocal_namespacenumpy_arrayscounter_per_alpharB   rG   myvallst	this_calcmyResultidxtempFiles`                                                                                                   r   Calcr   k   s   * 24&9:277>>'**96-v H 
 $u&&v"&'$QAGGCL$D''-2
 "5))Fv;C~~d# 	"WVS!! 	)   /23350233~#G,&,''	g|,,F!++W5F))&1 
&++ 5
""E
  %
e	O 	 2
""$:
  "6
1	M KGGKJMEOJOMO )..0	i$//##F+)$$
9dll(K(K"IXF (1V$"6C	N#:IFOE8>>'** %we_
,(4FF ,X 66	%F#H$X.F!$@
!"LMM""8,v&v&""5)))&1::!!$"6"6r":;$$R(! --f5DDF %+$6$68J8J#K "&*::-1*!fmmV[[%AA"+"<XJbIYZ[I\]^H__a#3A#6q"9 :$$3A$6q#9OA<Nq;QQc!e#  '7O  &335"&?l+J'8
!L> R>>M=NN_a 
 '3O &,%;%;D%;%Q"V]]*(:%%%&67!(();<,,>)%0%8%8-. 1)8	&
 &bggr~~-FF15.)R-?-??&/&B8*AN`Ma b((5j(A'BB`ar`s t5%6'" !"
 5wb
.*1-.b1C0DHZXZ^L\^c  G 1H MMt9q=GHH	'--h7M
  .::A MD	fmmV[[11j>> 88:v
		
 $RSSs;'(A-8-F-F
K.*{ ""#45GAJ$GAJ !, ; ; =*668O8OPO )  277>>'**9$g  t9q=n  L	)OPQT^^dnn-LM=5E!2!23F+EE4G4G4I!I1E#48M8M  9N 9
 $
 4EE( 0? @ 
 $$Q'((*OO	 ww~~g&&		'"/y9:G t_--)!,	'B $ 2 29b AI (  .	I)S)) 229=	 ''/IIgAA
 =B7)LMM ! '
 : :4 : P!!"34%aj668O0z'H S))k.?.?.AV.KH"Hq-!+,A((+F#%%h/,,"1+">K**;733D4I4IJF - ((3MG9N53D3D2ERHYHYGZZbcpbqr	
 !***71:6CCEKoa(;q>9A=QOPHoa(;q>9A=QOPHAQ/I Q 0KN3CDE JX%5K =1,- a.a.!%'"!+.HAu(( ,!1C%H&qzHqz//9 4423(/8<.u5(/14/t_55<@<N<N6u=t}}=259 /& q(#A HqL )!,q;q>/AA k!n$C "!nG')I 1h'a
%eJ&7+&Er4P 1$-a01{1~3EEG '' 1I +a.(  #%  "$&!1E&DD259E ,E2a7.3kk$g.e/U+ /4kk1%8'7KSX/U+ 01%e, 2 !*+ 6HAu %0]a5G#)#*1: 00/6!;&25&9G&25&9:KE:R&SG * : :#AJ44X>!$!$&-&-$+! *%0A50 * : :#AJ44X>!$!$&-&-! }'GQR}U 
 Qx+ "> &+[[%;F,3W+=FL!"U%5%5fk5ERSHCT%U!U $4416. Ec !7f ,C+7+<OC( , !s4y1}!!D	#I/?QH %(*>!"fk!2h >8fCTUH#Hemm<<$zz7G*<=HH ,,V4,,VXCcRVWW#$:;;] ( $? .~ #?3X
		( 4 	OO	#011#r4(L[ (
Z  	<XJFab 	z	 ! 6ykIJs3   "A@")A@'A@'A@- /AA
@-AAA
AA%	c                 b    [        U 5      nSU;   a  UR                  S5      US'   [        S0 UD6$ )NoutFr"    )varspopr   )optskwargss     r   doitr     s2    $ZF"JJv.y>&>    c                   v   ^  \ rS rSrU 4S jr\S 5       rS\S\\	\4   4S jr
S\4S jrS rS\4S	 jrS
rU =r$ )GDALCalci  c                 ~  > [         TU ]  5         SU l        [        R                  " S5      U l        SU l        SU l        U R                  SS5        U R                  SS5        U R                  S	S
5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        g )Nz#Raster calculator with numpy syntaxaB              Use any basic arithmetic supported by numpy arrays such as +, -, *, and
            along with logical operators such as >.
            Note that all files must have the same dimensions (unless extent option is used),
            but no projection checking is performed (unless projectionCheck option is used).Tz	--optfilezadd two files togetherz=-A input1.tif -B input2.tif --outfile=result.tif --calc="A+B"zaverage of two filesz@-A input.tif -B input2.tif --outfile=result.tif --calc="(A+B)/2"zaverage of many filesza-A input.tif input2.tif input3.tif ... inputN.tif --outfile=result.tif --calc="average(A,axis=0)"z'average of many files (using wildcards)z=-A input*.tif --outfile=result.tif --calc="average(A,axis=0)"z$set values of zero and below to nullzB-A input.tif --outfile=result.tif --calc="A*(A>0)" --NoDataValue=0z;using logical operator to keep a range of values from inputzE-A input.tif --outfile=result.tif --calc="A*logical_and(A>100,A<150)"zwork with multiple bandszy-A input.tif --A_band=1 -B input.tif --B_band=2 --outfile=result.tif --calc="(A+B)/2" --calc="A*logical_and(A>100,A<150)")	super__init__titletextwrapdedentdescriptiondisable_h_optionoptfile_argadd_example)self	__class__s    r   r   GDALCalc.__init__  s    :
#??`
 !%&$K	
 	"N	
 	#o	
 	5K	
 	2P	
 	IS	
 	&X	
r   c           
          U(       a  S/nO[         nU HG  n US-   nSU-   nSU-   nU R                  USS[        SSS	9  U R                  USS[        S
U S3SS	9  MI     g ! [        R
                   a     Mc  f = f)NAr6   -z--extend*z9input gdal raster file, you can use any letter [a-z, A-Z]r   )actionnargsr$   helpmetavarznumber of raster band for file z (default 1)n)	AlphaListadd_argumentr|   r   argparseArgumentError)parseris_help
alpha_listr   r   	alpha_argband_args          r   add_alpha_argsGDALCalc.add_alpha_args  s    J #JEw%K	$;###T& $  ###:5'N $   * )) s   AA  A87A8r#   returnc                     UR                  5       S:X  a  U$  [        U5      $ ! [         a    SU 3n[        R                  " U5      ef = f)NrA   z%Invalid float value for NoDataValue: )r   r   rr   r  ArgumentTypeError)r   r#   msgs      r   float_or_noneGDALCalc.float_or_none  sU    &(	2%% 	29+GC,,S11	2s	   
# &A	c                 T   U R                   nUR                  SS[        SSSSSS9  S	U;   nU R                  X#5        UR                  S
SSSSS9  UR                  SSU R                  SSS9  UR                  SSSSS9  UR                  SS[        S[
        SS9  UR                  SS[        S S!S9  UR                  S"S#S$/ S%S&S'S(9  UR                  S)S*[        S+S,S-S.9  UR                  S/S0SS1S9  UR                  S2S3SS4S9  UR                  S5S6SS7S9  UR                  S8[        S9S:S;9  UR                  5       nUR                  S<S=[         Vs/ s H  oUR                  R                  5       PM     snS>S?9  UR                  S@SA[        SBSCSDSE9  UR                  SFSGSSHS9  U$ s  snf )INz--calcr!   Tr  r  zcalculation in numpy syntax using +-/* or any numpy array functions (i.e. log10()). May appear multiple times to produce a multi-band file
expression)destr$   requiredr  r  r  r  z--helpz	--outfiler"   r   zoutput file to generate or fill)r  r  r  r  z--NoDataValuer#   valuez5output nodata value (default datatype specific value))r  r$   r  r  z--hideNoDatar)   
store_truez-ignores the NoDataValues of the input rasters)r  r  r  z--typer$   datatypezoutput datatype)r  r$   r  choicesr  z--formatr%   gdal_formatzGDAL format for output filez--creation-optionz--cor&   r`   optionzPasses a creation option to the output format driver. Multiple options may be listed. See format specific documentation for legal creation options for each format.)r  defaultr  r  r  z
--allBandsr'   r    z
[a-z, A-Z]z,process all bands of given raster [a-z, A-Z])r  r$   r$  r  r  z--overwriter(   z*overwrite output file if it already existsz--debugr/   zprint debugging informationz--quietr0   zsuppress progress messagesz--color-tabler+   zcolor table file name)r$   r  r  z--extentr,   z how to treat mixed geotransforms)r  r!  r  z	--projwinr-      )ulxulylrxlryz1extent corners given in georeferenced coordinates)r  r$   r  r  r  z--projectionCheckr*   z0check that all rasters share the same projection)r  r
  r|   r  r  GDALDataTypeNamesadd_mutually_exclusive_groupr   namer   r   )r   argvr  r  groupes         r   
get_parserGDALCalc.get_parser  sz   E  	 
	
 d"F,2 	 	
 	##H 	 	
 	@	 	 	
 	%" 	 	
 	!. 	 	
 	#0 	 
	
 	 ? 	 	
 	=	 	 	
 	.	 	 	
 	-	 	 	
 	#M@W 	 	
 335-34VVV\\^V43	 	 	
 	0D 	 	
 	"C	 	 	
 + 5s   #F%c                     [        S0 UD6$ )Nr   )r   )r   r   s     r   r   GDALCalc.doitv  s    ~f~r   c                 4   0 n0 n[          GH   nXA;   a  X   nX	 Ub  / nU Hp  nUR                  S5      nSU;   d  SU;   a?  [        R                  R	                  U5      (       d  U[
        R
                  " U5      -  nM_  UR                  U5        Mr     [        U5      S:X  a   [        SSR                  U5      -   S-   5      e[        U5      S:  a  UOUS   X$'   US	-   nX;   d  M  X   n	X	 U	c  M  [        U	5      S:  a  U	OU	S   X8'   GM     0 UEUEUEnU$ )
Nr3   ?r  r   z-A r:   z did not expand to any filer7   r6   )
r	  rP   rI   rJ   existsglobr`   rc   rL   join)
r   r   r   input_bandsr   	alpha_valdst_alpha_valvalband_keyband_vals
             r   augment_kwargsGDALCalc.augment_kwargsy  s<   YE"M	M($&M(!iin3J#*bggnnS>Q>Q)TYYs^;M)005  ) =)Q.'!CHHY$77:WW  *-]);a)?]STEU  & wH!!+$'$'MA$58A;  )3 8 :F9k9[9 r   )r   r   r   r   )__name__
__module____qualname____firstlineno__r   staticmethodr  r|   r   r   r  r   r0  r   dictr?  __static_attributes____classcell__)r   s   @r   r   r     s_    *
X  >2 2ucz1B 2x"4 xt# # #r   r   c                 4    [        5       R                  U 5      $ r   )r   main)r-  s    r   rJ  rJ    s    :??4  r   __main__)Hr  r7  rI   os.pathstringsysr   numbersr   typingr   r   r   r   r   rQ   osgeor	   r
   osgeo_utils.auxiliaryr   osgeo_utils.auxiliary.baser   r   r   !osgeo_utils.auxiliary.color_tabler   r   !osgeo_utils.auxiliary.extent_utilr   r   #osgeo_utils.auxiliary.gdal_argparser   r   osgeo_utils.auxiliary.rectangler   osgeo_utils.auxiliary.utilr   r   r   GDALDataTyperN   ascii_lettersr	  GDT_ByteGDT_Int8
GDT_UInt16	GDT_Int16
GDT_UInt32	GDT_Int32
GDT_UInt64	GDT_Int64GDT_Float32GDT_Float64
GDT_CInt16
GDT_CInt32GDT_CFloat32GDT_CFloat64r   rO   keysr*  TermProgress_nocbr|   boolr   r   r   r-  rJ  rA  exitr   r   r   <module>rm     s  D   	   
   9 9  " - Q Q M 8 N 8 B %%&	 	MM3MM4OOUNNFOOZNNKOOTNNDn,OOTOOTtt $ U=M=R=R=TUU 8 (,$(/3 04!,0#48%)"&"8"8#p

pm$p &!p 5s*+
,	p
 SMp x}-p p p p p .)p Vp eE</01p TNp p  !p"  #pfwz wt hh ! zHHT#((^ r   