#
# DO NOT EDIT THIS FILE
#
# It was automatically generated
#

#!/bin/bash

_gmic()
{
	COMPREPLY=()

	local cur prev opts

	cur=`_get_cword`
	prev=${COMP_WORDS[COMP_CWORD-1]}

	local help="_command .";
	local add="value[%] [image] filename \'formula\' (noargs)";
	local sub="value[%] [image] filename \'formula\' (noargs)";
	local mul="value[%] [image] filename \'formula\' (noargs)";
	local mmul="value[%] [image] filename \'formula\' (noargs)";
	local div="value[%] [image] filename \'formula\' (noargs)";
	local pow="value[%] [image] filename \'formula\' (noargs)";
	local min="value[%] [image] filename \'formula\' (noargs)";
	local max="value[%] [image] filename \'formula\' (noargs)";
	local mod="value[%] [image] filename \'formula\' (noargs)";
	local and="value[%] [image] filename \'formula\' (noargs)";
	local or="value[%] [image] filename \'formula\' (noargs)";
	local xor="value[%] [image] filename \'formula\' (noargs)";
	local bsl="value[%] [image] filename \'formula\' (noargs)";
	local bsr="value[%] [image] filename \'formula\' (noargs)";
	local rol="value[%] [image] filename \'formula\' (noargs)";
	local ror="value[%] [image] filename \'formula\' (noargs)";
	local eq="value[%] [image] filename \'formula\' (noargs)";
	local neq="value[%] [image] filename \'formula\' (noargs)";
	local gt="value[%] [image] filename \'formula\' (noargs)";
	local ge="value[%] [image] filename \'formula\' (noargs)";
	local lt="value[%] [image] filename \'formula\' (noargs)";
	local le="value[%] [image] filename \'formula\' (noargs)";
	local atan2="[image] .";
	local set="value,_x[%],_y[%],_z[%],_c[%] .";
	local fill="value1,_value2,.. [image] formula";
	local threshold="value[%],_soft (noargs)";
	local cut="{value0[%]|[image0]},{value1[%]|[image1]} [image] (noargs)";
	local normalize="{value0[%]|[image0]},{value1[%]|[image1]} [image]";
	local round="rounding_value>=0,_rounding_type .";
	local equalize="nb_levels>0[%],_value0[%],_value1[%] .";
	local quantize="nb_levels>0[%],_preserve_value_range={0|1} .";
	local noise="std_variation>=0[%],_noise_type .";
	local rand="{value0[%]|[image0]},{value1[%]|[image1]} [image]";
	local map="[image] predefined_palette";
	local index="{[image]|predefined_palette},_is_dithered={0|1},_map_palette={0|1} .";
	local resize="[image],_interpolation,_borders,_cx,_cy,_cz,_cc {[image_w]|width>0[%]},_{[image_h]|height>0[%]},_{[image_d]|depth>0[%]},_{[image_s]|spectrum>0[%]},_interpolation,_borders,_cx,_cy,_cz,_cc (noargs)";
	local crop="x0[%],x1[%],_borders x0[%],y0[%],x1[%],y1[%],_borders x0[%],y0[%],z0[%],x1[%],y1[%],z1[%],_borders x0[%],y0[%],z0[%],c0[%],x1[%],y1[%],z1[%],c1[%],_borders (noargs)";
	local autocrop="value1,value2,.. .";
	local channels="{[image0]|c0[%]},_{[image1]|c1[%]} .";
	local slices="{[image0]|z0[%]},_{[image1]|z1[%]} .";
	local lines="{[image0]|y0[%]},_{[image1]|y1[%]} .";
	local columns="{[image0]|x0[%]},_{[image1]|x1[%]} .";
	local rotate="angle,_borders,_interpolation,_cx[%],_cy[%],_zoom .";
	local mirror="axis={x|y|z|c} .";
	local shift="vx[%],_vy[%],_vz[%],_vc[%],_borders .";
	local solve="[image] .";
	local dijkstra="starting_node>=0,ending_node>=0 .";
	local permute="permutation .";
	local unroll="axis={x|y|z|c} .";
	local split="axis={x|y|z|c},_nb_parts patch_x>0,_patch_y>0,_patch_z>0,_patch_v>0,borders value,_keep_splitting_values={+|-}";
	local append="axis={x|y|z|c},_alignment .";
	local warp="[image],_is_relative={0|1},_interpolation={0|1},_borders,_nb_frames>0 .";
	local deriche="std_variation>=0[%],order={0|1|2},axis={x|y|z|c},_borders .";
	local blur="std_variation>=0[%],_borders .";
	local bilateral="std_variation_s>0[%],std_variation_r>0 .";
	local denoise="std_variation_s>=0,_std_variation_p>=0,_patch_size>0,_lookup_size>0,_smoothness,_fast_approx={0|1} .";
	local smooth="amplitude>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dl>0,_da>0,_precision>0,interpolation,_fast_approx={0|1} nb_iterations>=0,_sharpness>=0,_anisotropy,_alpha,_sigma,_dt>0,0 [image],_amplitude>=0,_dl>0,_da>0,_precision>0,_interpolation,_fast_approx={0|1} [image],_nb_iters>=0,_dt>0,0";
	local median="radius>=0 .";
	local sharpen="amplitude>=0 amplitude>=0,1,_edge>=0,_alpha,_sigma";
	local convolve="[image],_borders .";
	local correlate="[image],_borders .";
	local erode="size>=0\' size_x>=0,size_y>=0,_size_z>=0 [image],_borders";
	local dilate="size>=0 size_x>=0,size_y>=0,size_z>=0 [image],_borders";
	local inpaint="[image] .";
	local gradient="{x|y|z}..{x|y|z},_scheme (noargs)";
	local structuretensors="_scheme .";
	local edgetensors="sharpness>=0,_anisotropy,_alpha,_sigma,is_sqrt={0|1} .";
	local hessian="{xx|xy|xz|yy|yz|zz}..{xx|xy|xz|yy|yz|zz} (noargs)";
	local haar="scale>0 .";
	local ihaar="scale>0 .";
	local histogram="nb_levels>0[%],_val0[%],_val1[%] .";
	local distance="isovalue .";
	local eikonal="nb_iterations>=0,_band_size>=0 .";
	local watershed="[priority_image],_fill_lines={0|1} .";
	local displacement="[source_image],_smoothness>=0,_precision>0,_nb_scales>=0,iteration_max>=0,is_backward={0|1} .";
	local sort="_ordering={+|-},_axis={x|y|z|c} .";
	local psnr="_max_value .";
	local point="x[%],y[%],_z[%],_opacity,_color1,.. .";
	local line="x0[%],y0[%],x1[%],y1[%],_opacity,_pattern,_color1,..\' .";
	local polygon="N,x1[%],y1[%],..,xN[%],yN[%],_opacity,_pattern,_color1,.. .";
	local spline="x0[%],y0[%],u0[%],v0[%],x1[%],y1[%],u1[%],v1[%],_opacity,_pattern,_color1,.. .";
	local ellipse="x[%],y[%],R[%],r[%],_angle,_opacity,_color1,.. .";
	local text="text,_x[%],_y[%],_font_height>0,_opacity,_color1,.. .";
	local graph="[function_image],_plot_type,_vertex_type,_ymin,_ymax,_opacity,_pattern,_color1,.. \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax,_opacity,_pattern,_color1,..";
	local axes="x0,x1,y0,y1,_opacity,_pattern,_color1,.. .";
	local grid="sizex[%]>=0,sizey[%]>=0,_offsetx[%],_offsety[%],_opacity,_pattern,_color1,.. .";
	local quiver="[function_image],_sampling>0,_factor,_is_arrow={0|1},_opacity,_pattern,_color1,.. .";
	local flood="x[%],_y[%],_z[%],_tolerance>=0,_opacity,_color1,.. .";
	local image="[sprite],_x[%],_y[%],_z[%],_c[%],_opacity,_[sprite_mask] .";
	local object3d="[object3d],_x[%],_y[%],_z,_opacity,_is_zbuffer={0|1} .";
	local plasma="alpha,_beta,_opacity .";
	local mandelbrot="z0r,z0i,z1r,z1i,_iteration_max>=0,_is_julia={0|1},_c0r,_c0i,_opacity .";
	local move="position[%] .";
	local name="name .";
	local point3d="x0,y0,z0 .";
	local line3d="x0,y0,z0,x1,y1,z1 .";
	local triangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2 .";
	local quadrangle3d="x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3 .";
	local circle3d="x0,y0,z0,radius>=0 .";
	local box3d="size size_x,size_y,size_z";
	local cone3d="radius,_size_z,_nb_subdivisions>0 .";
	local cylinder3d="radius,_height,_nb_subdivisions>0 .";
	local torus3d="radius1,_radius2,_nb_subdivisions1>0,_nb_subdivisions2>0 .";
	local plane3d="size1_size2,_nb_subdivisions1>0,_nb_subdisivions2>0 .";
	local sphere3d="radius,_nb_recursions>=0 .";
	local elevation3d="z-factor [image] \'formula\',_x0,_y0,_x1,y1,_dx[%],_dy[%] (noargs)";
	local isoline3d="isovalue[%] \'formula\',value,_x0,_y0,_x1,_y1,_dx>0[%],_dy>0[%]";
	local isosurface3d="isovalue[%] \'formula\',value,_x0,_y0,_z0,_x1,_y1,_z1,_dx>0[%],_dy>0[%],_dz>0[%]";
	local streamline3d="x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1} \'formula\',x,y,z,_L>=0,_dl>0,_interp,_is_backward={0|1},_is_oriented={0|1}";
	local add3d="tx,_ty,_tz [object3d] (noargs)";
	local sub3d="tx,_ty,_tz .";
	local mul3d="factor factor_x,factor_y,_factor_z";
	local div3d="factor factor_x,factor_y,_factor_z";
	local rotate3d="u,v,w,angle .";
	local color3d="R,G,B,_opacity .";
	local opacity3d="opacity .";
	local primitives3d="mode .";
	local light3d="position_x,position_y,position_z [image] (noargs)";
	local focale3d="focale>=0 .";
	local pose3d="value1,..,value16 (noargs)";
	local specl3d="value .";
	local specs3d="value .";
	local double3d="is_double={0|1} .";
	local mode3d="mode .";
	local moded3d="mode .";
	local background3d="R,_G,_B [image] (noargs)";
	local skip="item .";
	local status="item $variable";
	local exec="command .";
	local while="boolean filename";
	local repeat="nb_iterations .";
	local if="boolean filename";
	local elif="boolean filename";
	local check="expression .";
	local push="item .";
	local push=="item .";
	local error="message .";
	local progress="0<=value<=100 -1";
	local input="filename [image]x_nb_copies>0 {width>0[%]|[image_w]},{_height>0[%]|[image_h]},{_depth>0[%]|[image_d]},{_spectrum>0[%]|[image_s]},_value1,_value2,.. (value1{,|;|/|^}value2{,|;|/|^}..)";
	local output="filename,_format_options .";
	local verbose="level {+|-}";
	local echo="message .";
	local warning="message .";
	local command="filename \"string\"";
	local type="datatype .";
	local shared="x0[%],x1[%],y[%],z[%],v[%] y0[%],y1[%],z[%],v[%] z0[%],z1[%],v[%] v0[%],v1[%] (noargs)";
	local plot="_plot_type,_vertex_type,_xmin,_xmax,_ymin,_ymax \'formula\',_resolution>=0,_plot_type,_vertex_type,_xmin,xmax,_ymin,_ymax";
	local window="_width[%]>=-1,_height[%]>=-1,_normalization,_fullscreen,_title .";
	local wait="delay (noargs)";
	local select="feature .";
	local h="eq.to\'-help\'. .";
	local f="eq.to\'-fill\'. .";
	local t="eq.to\'-threshold\'. .";
	local c="eq.to\'-cut\'. .";
	local n="eq.to\'-normalize\'. .";
	local r="eq.to\'-resize\'. .";
	local s="eq.to\'-split\'. .";
	local a="eq.to\'-append\'. .";
	local rm="eq.to\'-remove\'. .";
	local k="eq.to\'-keep\'. .";
	local mv="eq.to\'-move\'. .";
	local rv="eq.to\'-reverse\'. .";
	local nm="eq.to\'-name\'. .";
	local c3d="eq.to\'-center3d\'. .";
	local n3d="eq.to\'-normalize3d\'. .";
	local rot3d="eq.to\'-rotate3d\'. .";
	local col3d="eq.to\'-color3d\'. .";
	local o3d="eq.to\'-opacity3d\'. .";
	local rv3d="eq.to\'-reverse3d\'. .";
	local p3d="eq.to\'-primitives3d\'. .";
	local s3d="eq.to\'-split3d\'. .";
	local l3d="eq.to\'-light3d\'. .";
	local f3d="eq.to\'-focale3d\'. .";
	local sl3d="eq.to\'-specl3d\'. .";
	local ss3d="eq.to\'-specs3d\'. .";
	local db3d="eq.to\'-double3d\'. .";
	local m3d="eq.to\'-mode3d\'. .";
	local md3d="eq.to\'-moded3d\'. .";
	local b3d="eq.to\'-background3d\'. .";
	local x="eq.to\'-exec\'. .";
	local u="eq.to\'-status\'. .";
	local b="eq.to\'-break\'. .";
	local l="eq.to\'-local\'. .";
	local endl="eq.to\'-endlocal\'. .";
	local q="eq.to\'-quit\'. .";
	local p="eq.to\'-push\'. .";
	local p=="eq.to\'-push=\'. .";
	local pp="eq.to\'-pop\'. .";
	local e="eq.to\'-echo\'. .";
	local i="eq.to\'-input\'. .";
	local o="eq.to\'-output\'. .";
	local sh="eq.to\'-shared\'. .";
	local v="eq.to\'-verbose\'. .";
	local m="eq.to\'-command\'. .";
	local d="eq.to\'-display\'. .";
	local d3d="eq.to\'-display3d\'. .";
	local w="eq.to\'-window\'. .";
	local replace_nan="_expression .";
	local replace_inf="_expression .";
	local roundify="_gamma>=0 .";
	local apply_gamma="gamma .";
	local apply_curve="0<smoothness<1,y0,x1,y1,x2,y2,...,xN-1,yN-1,yN .";
	local tones="N>0 .";
	local t2="eq.to\'-threshold2\'. .";
	local threshold2="_min,_max .";
	local split_tiles="M!=0,_N!=0,_is_homogeneous={0|1} .";
	local append_tiles="M>0,_N>0 .";
	local r2dx="eq.to\'-resize2dx\'. .";
	local resize2dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dx="eq.to\'-resize3dx\'. .";
	local resize3dx="width>0,_interpolation_type={0,1,2,3,4,5} .";
	local r2dy="eq.to\'-resize2dy\'. .";
	local resize2dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dy="eq.to\'-resize3dy\'. .";
	local resize3dy="height>0,_interpolation_type={0,1,2,3,4,5} .";
	local r3dz="eq.to\'-resize3dz\'. .";
	local resize3dz="depth>0,_interpolation_type={0,1,2,3,4,5} .";
	local upscale_smart="width,height,_depth,smoothness>=0,_anisotropy=[0,1],sharpening>=0 .";
	local expand_x="size_x>=0,_borders={0=dirichlet|1=neumann|2=cyclic} .";
	local expand_y="size_y>=0,_borders={0=dirichlet|1=neumann|2=cyclic} .";
	local expand_z="size_z>=0,_borders={0=dirichlet|1=neumann|2=cyclic} .";
	local expand_xy="size>=0,_borders={0=dirichlet|1=neumann|2=cyclic} .";
	local expand_xyz="size>=0,_borders={0=dirichlet|1=neumann|2=cyclic} .";
	local shrink_x="size_x>=0 .";
	local shrink_y="size_y>=0 .";
	local shrink_z="size_z>=0 .";
	local shrink_xy="size>=0 .";
	local elevate="_depth,_is_plain,_is_colored .";
	local ow="eq.to\'-outputw\'. .";
	local op="eq.to\'-outputp\'. .";
	local outputp="prefix .";
	local on="eq.to\'-outputn\'. .";
	local outputn="filename .";
	local d0="eq.to\'-display0\'. .";
	local dfft="eq.to\'-display_fft\'. .";
	local drgba="eq.to\'-display_rgba\'. .";
	local dh="eq.to\'-display_histogram\'. .";
	local display_histogram="_width>0,_height>0,_clusters>0,_max_value>0,_show_axes={0|1} .";
	local dt="eq.to\'-display_tensors\'. .";
	local display_tensors="_size_factor>0,_ellipse_factor>=0,_opacity,_pattern,_color1,.. .";
	local ball="_R,_G,_B .";
	local sierpinski="recursion_level>=0 .";
	local text_outline="text,_x[%],_y[%],_font_height>0,_outline>=0,_opacity,_color1,.. .";
	local histogram_cumul="_nb_levels>0,_is_normalized={0|1} .";
	local rgb2bayer="_start_pattern=0,_color=0 .";
	local bayer2rgb="_GM_smoothness,_RB_smoothness1,_RB_smoothness2 .";
	local lic="_amplitude>0,_channels>0 .";
	local gaussian="_sigma1[%],_sigma2[%],_angle .";
	local blur_x="amplitude[%]>=0,_borders={0|1} .";
	local blur_y="amplitude[%]>=0,_borders={0|1} .";
	local blur_z="amplitude[%]>=0,_borders={0|1} .";
	local blur_xy="amplitude_x[%],amplitude_y[%],_borders={0|1} .";
	local blur_xyz="amplitude_x[%],amplitude_y[%],amplitude_z,_borders={0|1} .";
	local blur_angular="_amplitude[%],_cx,_cy .";
	local blur_radial="_amplitude[%],_cx,_cy .";
	local blur_linear="_amplitude1[%],_amplitude2[%],_angle=0,_borders={0=dirichlet|1=neumann} .";
	local dog="_sigma1>=0[%],_sigma2>=0[%] .";
	local pde_flow="_nb_iter>=0,_dt,_velocity_command,_sequence_flag={0|1} .";
	local heat_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local meancurvature_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local tv_flow="_nb_iter>=0,_dt,_sequence_flag={0|1} .";
	local inpaint_flow="_nb_iter1>=0,_nb_iter2>=0,_dt>=0,_alpha,_sigma .";
	local remove_hotpixels="_mask_size>0,_threshold[%]>0 .";
	local richardson_lucy="amplitude[%]>=0,_nb_iter>=0,_dt>=0,_regul>=0,_regul_type={0=Tikhonov|1=meancurv.|2=TV} .";
	local oriented_richardson_lucy="amplitude1[%]>=0,_amplitude2[%]>=0,_angle,_nb_iter>=0,_dt>=0,_regul>=0,_regul_type={0=Tikhonov|1=meancurv.|2=TV} .";
	local unsharp="_radius[%]>=0,_amount>=0,_threshold[%]>=0 .";
	local unsharp_octave="_nb_scales>0,_radius[%]>=0,_amount>=0,threshold[%]>=0 .";
	local normalize_local="_amplitude>=0,_radius>0,_n_smooth>=0[%],_a_smooth>=0[%],_cut={0|1},_min=0,_max=255 .";
	local bandpass="_min_freq[%],_max_freq[%] .";
	local watermark="_text .";
	local split_freq="smoothness>0[%] .";
	local erode_oct="_size>=0 .";
	local dilate_oct="_size>=0 .";
	local erode_circ="_size>=0 .";
	local dilate_circ="_size>=0 .";
	local gradient_orientation="_dimension={1,2,3} .";
	local gradient2rgb="_orientation={0|1} .";
	local edges="_threshold>=0 .";
	local isophotes="_nb_levels>0 .";
	local topographic_map="_nb_levels>0,_smoothness .";
	local segment_watershed="_threshold>=0 .";
	local array="_M>0,_N>0,_expand_type={0,1,2} .";
	local array_fade="_M>0,_N>0,0<=_fade_start<=100,0<=_fade_end<=100,_expand_type={0,1,2} .";
	local array_mirror="_N>=0,_dir={0,1,2},_expand_type={0|1} .";
	local array_random="_Ms>0,_Ns>0,_Md>0,_Nd>0 .";
	local array_pattern="_M>0,_N>0,_density>=0,_angle>=0,_zoom>=0,_opacity,_expand_type={0,1,2} .";
	local taquin="_M>0,_N>0 .";
	local grid="_M>0,_N>0 .";
	local frame="_size_x[%]>=0,_size_y[%]>=0,_col1,...,_colN .";
	local frame_fuzzy="_size_x>=0,_size_y>=0,_fuzzyness>=0,_smoothness>=0,_R,_G,_B,_A .";
	local frame_round="_sharpness>0,_size>=0,_smoothness,_shade,_R,_G,_B,_A .";
	local frame_blur="_sharpness>0,_size>=0,_smoothness,_shade,_blur .";
	local frame_pattern="_M>=3,_pattern={0=firstimage|1=self},_constrain_size={0|1} .";
	local rotate_tiles="_angle,_M>0,N>0 .";
	local shift_tiles="_M>0,_N>0,_amplitude .";
	local linearize_tiles="_M>0,_N>0 .";
	local quadratize_tiles="_M>0,_N>0 .";
	local polaroid="_size1>=0,_size2>=0 .";
	local drop_shadow="_offset_x[%],_offset_y[%],_smoothness[%] .";
	local tetris="_scale>0 .";
	local mosaic="_density>=0,_edges={0|1} .";
	local puzzle="_scale>=0 .";
	local sponge="_size>0 .";
	local hearts="_density>=0 .";
	local color_ellipses="_count>0,_radius>=0,_opacity>=0 .";
	local ellipsionism="_R>0[%],_r>0[%],_smoothness>=0[%],_opacity,_outline>0,_density>0 .";
	local whirls="_texture>=0,_smoothness>=0,_darkness>=0,_lightness>=0 .";
	local cartoon="_smoothness,_sharpening,_threshold>=0,_thickness>=0,_color>=0,quantization>0 .";
	local drawing="_amplitude>=0 .";
	local draw_whirl="_amplitude>=0 .";
	local stencil="_radius[%]>=0,_smoothness>=0,_iterations>=0 .";
	local stencilbw="_edges>=0,_smoothness>=0 .";
	local pencilbw="_size>=0,_amplitude>=0 .";
	local dotsbw="_nb_scales>=0,_resolution>0,_radius>=0 .";
	local warhol="_M>0,_N>0,_smoothness>=0,_color>=0 .";
	local cubism="_nb_iter>=0,_bloc_size>0,_max_angle,_opacity,_smoothness>=0 .";
	local glow="_amplitude>=0 .";
	local euclidean2polar="_cx,_cx,_n>0,_borders={0=dirichlet|1=neumann|2=cyclic} .";
	local polar2euclidean="_cx,_cy,_n>0,_borders={0=dirichlet|1=neumann|2=cyclic} .";
	local warp_perspective="_x-angle,_y-angle,_zoom>0,_x-center,_y-center,_borders={0=dirichlet|1=neumann|2=cyclic} .";
	local water="_amplitude>=0,_smoothness>=0 .";
	local wave="_amplitude>=0,_frequency>=0,_center_x,_center_y .";
	local twirl="_amplitude,_cx,_cy,_borders={0=dirichlet|1=neumann|2=cyclic} .";
	local map_sphere="_width>0,_height>0,_radius,_dilation>0 .";
	local flower="_amplitude,_frequency,_offset_r[%],_angle,_cx,_cy,_borders={0=dirichlet|1=neumann|2=cyclic} .";
	local zoom="_factor,_cx,_cy,_cz,_borders={0=dirichlet|1=neumann|2=cyclic} .";
	local deform="_amplitude>=0 .";
	local fish_eye="_x,_y,0<=_radius<=100,_amplitude>=0 .";
	local transform_polar="\"expr_radius\",_\"expr_angle\",_x_center,_y_center,_borders={0|1} .";
	local kaleidoscope="_cx,_cy,_radius,_angle,_borders={0=dirichlet|1=neumann|2=cyclic} .";
	local rotoidoscope="_cx,_cy,_tiles>0,_smoothness[%]>=0,_borders={0=dirichlet|1=neumann|2=cyclic} .";
	local spread="_dx>=0,_dy>=0,_dz>=0 .";
	local shade_stripes="_frequency>=0,_direction={0|1},_darkness>=0,_lightness>=0 .";
	local stripes_y="_frequency>=0 .";
	local shadow_patch="_opacity>=0 .";
	local light_patch="_density>0,_darkness>=0,_lightness>=0 .";
	local light_relief="_ambient_light,_specular_light,_specular_size,_darkness,_xl,_yl,_zl,_zscale,_opacity_bumpmap={0|1} .";
	local noise_hurl="_amplitude>=0 .";
	local pixelize="_scale_x>0,_scale_y>0,_scale_z>0 .";
	local cracks="_density>=0,_amplitude,_relief={0|1} .";
	local apply_channels="\"command\",_channels={All,RGBA,RGB,Y,CbCr,Cb,Cr,L,ab,a,b,H,S,V,K,A,ch,c,h},_normalize={0=cut|1=normalize} .";
	local to_colormode="mode={0=adaptive|1=G|2=GA|3=RGB|4=RGBA} .";
	local select_color="_tolerance[%]>=0,col1,..,colN .";
	local replace_color="_tolerance[%]>=0,_smoothness[%]>=0,src1,...,srcN,dest1,...,destN .";
	local fc="eq.to\'-fill_color\'. .";
	local fill_color="col1,...,colN .";
	local mix_rgb="a11,a12,a13,a21,a22,a23,a31,a32,a33 .";
	local mix_channels="(a00,...,aMN) .";
	local red_eye="0<=_threshold<=100,_smoothness>=0,0<=attenuation<=1 .";
	local fade_x="0<=_start<=100,0<=_end<=100 .";
	local fade_y="0<=_start<=100,0<=_end<=100 .";
	local fade_z="0<=_start<=100,0<=_end<=100 .";
	local fade_radial="0<=_start<=100,0<=_end<=100 .";
	local fade_diamond="0<=_start<=100,0<=_end<=100 .";
	local fade_linear="_angle,0<=_start<=100,0<=_end<=100 .";
	local compose_edges="_smoothness[%]>=0 .";
	local morph="nb_frames>0,_smoothness>=0,_precision>0 .";
	local register_nonrigid="_smoothness>=0,_precision>0,_nb_scale>=0 .";
	local register_rigid="_smoothness>=0 .";
	local deinterlace="_method={0|1} .";
	local apply_pose3d="p1,..,p12 .";
	local animate3d="_width>0,_height>0,_dx,_dy,_dz,_zoom>=0,_filename .";
	local balls3d="_size>0,_R,_G,_B,_opacity .";
	local pyramid3d="_width,_height .";
	local text3d="text,_font_height>0,_depth>0,_smoothness .";
	local sierpinski3d="_recursion_level>=0,_width,_height .";
	local snapshot3d="_size>0,_zoom>=0 .";
	local x_mandelbrot="_julia={0|1},_c0r,_c0i .";
	local x_jawbreaker="0<_width<20,0<_height<20,0<_balls<=8 .";
	opts="-help --help -debug --debug -add --add -sub --sub -mul --mul -mmul --mmul -div 
		--div -pow --pow -min --min -max --max -mod --mod -and --and -or --or -xor --xor 
		-bsl --bsl -bsr --bsr -rol --rol -ror --ror -eq --eq -neq --neq -gt --gt -ge 
		--ge -lt --lt -le --le -cos --cos -sin --sin -sinc --sinc -tan --tan -cosh --cosh 
		-sinh --sinh -tanh --tanh -acos --acos -asin --asin -atan --atan -atan2 --atan2 
		-abs --abs -sign --sign -sqr --sqr -sqrt --sqrt -exp --exp -log --log -log10 --log10 
		-endian --endian -set --set -fill --fill -threshold --threshold -cut --cut -normalize 
		--normalize -round --round -equalize --equalize -quantize --quantize -noise --noise 
		-rand --rand -norm --norm -orientation --orientation -map --map -index --index -rgb2hsv 
		--rgb2hsv -rgb2hsl --rgb2hsl -rgb2hsi --rgb2hsi -rgb2yuv --rgb2yuv -rgb2ycbcr --rgb2ycbcr 
		-rgb2xyz --rgb2xyz -rgb2lab --rgb2lab -rgb2cmy --rgb2cmy -rgb2cmyk --rgb2cmyk -hsv2rgb 
		--hsv2rgb -hsl2rgb --hsl2rgb -hsi2rgb --hsi2rgb -yuv2rgb --yuv2rgb -ycbcr2rgb --ycbcr2rgb 
		-xyz2rgb --xyz2rgb -lab2rgb --lab2rgb -cmy2rgb --cmy2rgb -cmyk2rgb --cmyk2rgb -resize 
		--resize -resize2x --resize2x -resize3x --resize3x -crop --crop -autocrop --autocrop 
		-channels --channels -slices --slices -lines --lines -columns --columns -rotate --rotate 
		-mirror --mirror -shift --shift -transpose --transpose -invert --invert -solve --solve 
		-eigen --eigen -dijkstra --dijkstra -permute --permute -unroll --unroll -split --split 
		-append --append -warp --warp -deriche --deriche -blur --blur -bilateral --bilateral 
		-denoise --denoise -smooth --smooth -median --median -sharpen --sharpen -convolve 
		--convolve -correlate --correlate -erode --erode -dilate --dilate -inpaint --inpaint 
		-gradient --gradient -structuretensors --structuretensors -edgetensors --edgetensors 
		-hessian --hessian -haar --haar -ihaar --ihaar -fft --fft -ifft --ifft -histogram 
		--histogram -distance --distance -eikonal --eikonal -watershed --watershed -label --label 
		-displacement --displacement -sort --sort -mse --mse -psnr --psnr -point --point 
		-line --line -polygon --polygon -spline --spline -ellipse --ellipse -text --text 
		-graph --graph -axes --axes -grid --grid -quiver --quiver -flood --flood -image 
		--image -object3d --object3d -plasma --plasma -mandelbrot --mandelbrot -remove --remove 
		-keep --keep -move --move -reverse --reverse -name --name -point3d --point3d -line3d 
		--line3d -triangle3d --triangle3d -quadrangle3d --quadrangle3d -circle3d --circle3d 
		-box3d --box3d -cone3d --cone3d -cylinder3d --cylinder3d -torus3d --torus3d -plane3d 
		--plane3d -sphere3d --sphere3d -elevation3d --elevation3d -isoline3d --isoline3d -isosurface3d 
		--isosurface3d -streamline3d --streamline3d -add3d --add3d -sub3d --sub3d -mul3d --mul3d 
		-div3d --div3d -center3d --center3d -normalize3d --normalize3d -rotate3d --rotate3d 
		-color3d --color3d -opacity3d --opacity3d -reverse3d --reverse3d -primitives3d --primitives3d 
		-split3d --split3d -light3d --light3d -focale3d --focale3d -pose3d --pose3d -specl3d 
		--specl3d -specs3d --specs3d -double3d --double3d -mode3d --mode3d -moded3d --moded3d 
		-background3d --background3d -skip --skip -return --return -status --status -exec 
		--exec -do --do -while --while -repeat --repeat -done --done -break --break -continue 
		--continue -if --if -elif --elif -else --else -endif --endif -local --local -endlocal 
		--endlocal -check --check -quit --quit -push --push -push= --push= -pop --pop -error 
		--error -progress --progress -input --input -output --output -verbose --verbose -print 
		--print -echo --echo -warning --warning -command --command -type --type -shell --shell 
		-shared --shared -display --display -display3d --display3d -plot --plot -window --window 
		-wait --wait -select --select -h --h -f --f -t --t -c --c -n --n -r --r -s 
		--s -a --a -rm --rm -k --k -mv --mv -rv --rv -nm --nm -c3d --c3d -n3d --n3d 
		-rot3d --rot3d -col3d --col3d -o3d --o3d -rv3d --rv3d -p3d --p3d -s3d --s3d -l3d 
		--l3d -f3d --f3d -sl3d --sl3d -ss3d --ss3d -db3d --db3d -m3d --m3d -md3d --md3d 
		-b3d --b3d -x --x -u --u -b --b -l --l -endl --endl -q --q -p --p -p= --p= 
		-pp --pp -e --e -i --i -o --o -sh --sh -v --v -m --m -d --d -d3d --d3d -w 
		--w -replace_nan --replace_nan -replace_inf --replace_inf -roundify --roundify -complex2polar 
		--complex2polar -polar2complex --polar2complex -plot2value --plot2value -transfer_histogram 
		--transfer_histogram -normalize_sum --normalize_sum -apply_gamma --apply_gamma -apply_curve 
		--apply_curve -negative --negative -tones --tones -t2 --t2 -threshold2 --threshold2 
		-split_tiles --split_tiles -append_tiles --append_tiles -r2dx --r2dx -resize2dx --resize2dx 
		-r3dx --r3dx -resize3dx --resize3dx -r2dy --r2dy -resize2dy --resize2dy -r3dy --r3dy 
		-resize3dy --resize3dy -r3dz --r3dz -resize3dz --resize3dz -upscale_smart --upscale_smart 
		-expand_x --expand_x -expand_y --expand_y -expand_z --expand_z -expand_xy --expand_xy 
		-expand_xyz --expand_xyz -shrink_x --shrink_x -shrink_y --shrink_y -shrink_z --shrink_z 
		-shrink_xy --shrink_xy -elevate --elevate -ow --ow -outputw --outputw -op --op -outputp 
		--outputp -on --on -outputn --outputn -d0 --d0 -display0 --display0 -dfft --dfft 
		-display_fft --display_fft -drgba --drgba -display_rgba --display_rgba -dh --dh -display_histogram 
		--display_histogram -dt --dt -display_tensors --display_tensors -float2int8 --float2int8 
		-int82float --int82float -float2fft8 --float2fft8 -fft82float --fft82float -ball --ball 
		-sierpinski --sierpinski -text_outline --text_outline -histogram_cumul --histogram_cumul 
		-direction2rgb --direction2rgb -vector2tensor --vector2tensor -rgb2bayer --rgb2bayer 
		-bayer2rgb --bayer2rgb -lic --lic -gaussian --gaussian -blur_x --blur_x -blur_y --blur_y 
		-blur_z --blur_z -blur_xy --blur_xy -blur_xyz --blur_xyz -blur_angular --blur_angular 
		-blur_radial --blur_radial -blur_linear --blur_linear -dog --dog -pde_flow --pde_flow 
		-heat_flow --heat_flow -meancurvature_flow --meancurvature_flow -tv_flow --tv_flow -inpaint_flow 
		--inpaint_flow -remove_hotpixels --remove_hotpixels -richardson_lucy --richardson_lucy 
		-oriented_richardson_lucy --oriented_richardson_lucy -unsharp --unsharp -unsharp_octave 
		--unsharp_octave -normalize_local --normalize_local -fftpolar --fftpolar -ifftpolar --ifftpolar 
		-convolve_fft --convolve_fft -deconvolve_fft --deconvolve_fft -bandpass --bandpass -watermark 
		--watermark -split_freq --split_freq -compose_freq --compose_freq -erode_oct --erode_oct 
		-dilate_oct --dilate_oct -erode_circ --erode_circ -dilate_circ --dilate_circ -gradient_norm 
		--gradient_norm -gradient_orientation --gradient_orientation -gradient2rgb --gradient2rgb 
		-laplacian --laplacian -inn --inn -iee --iee -curvature --curvature -edges --edges 
		-isophotes --isophotes -topographic_map --topographic_map -segment_watershed --segment_watershed 
		-array --array -array_fade --array_fade -array_mirror --array_mirror -array_random --array_random 
		-array_pattern --array_pattern -taquin --taquin -grid --grid -frame --frame -frame_fuzzy 
		--frame_fuzzy -frame_round --frame_round -frame_blur --frame_blur -frame_pattern --frame_pattern 
		-rotate_tiles --rotate_tiles -shift_tiles --shift_tiles -linearize_tiles --linearize_tiles 
		-quadratize_tiles --quadratize_tiles -polaroid --polaroid -drop_shadow --drop_shadow 
		-tetris --tetris -mosaic --mosaic -puzzle --puzzle -sponge --sponge -hearts --hearts 
		-color_ellipses --color_ellipses -ellipsionism --ellipsionism -whirls --whirls -cartoon 
		--cartoon -drawing --drawing -draw_whirl --draw_whirl -stencil --stencil -stencilbw 
		--stencilbw -pencilbw --pencilbw -sketchbw --sketchbw -ditheredbw --ditheredbw -dotsbw 
		--dotsbw -warhol --warhol -cubism --cubism -glow --glow -old_photo --old_photo -euclidean2polar 
		--euclidean2polar -polar2euclidean --polar2euclidean -warp_perspective --warp_perspective 
		-water --water -wave --wave -twirl --twirl -map_sphere --map_sphere -flower --flower 
		-zoom --zoom -deform --deform -fish_eye --fish_eye -transform_polar --transform_polar 
		-kaleidoscope --kaleidoscope -rotoidoscope --rotoidoscope -spread --spread -shade_stripes 
		--shade_stripes -stripes_y --stripes_y -shadow_patch --shadow_patch -light_patch --light_patch 
		-light_relief --light_relief -noise_hurl --noise_hurl -pixelize --pixelize -paper --paper 
		-cracks --cracks -apply_channels --apply_channels -to_gray --to_gray -to_graya --to_graya 
		-to_rgb --to_rgb -to_rgba --to_rgba -to_colormode --to_colormode -remove_opacity --remove_opacity 
		-select_color --select_color -replace_color --replace_color -fc --fc -fill_color --fill_color 
		-luminance --luminance -mix_rgb --mix_rgb -mix_channels --mix_channels -solarize --solarize 
		-sepia --sepia -split_opacity --split_opacity -red_eye --red_eye -rgb2lch --rgb2lch 
		-lch2rgb --lch2rgb -lab2lch --lab2lch -lch2lab --lch2lab -fade_x --fade_x -fade_y 
		--fade_y -fade_z --fade_z -fade_radial --fade_radial -fade_diamond --fade_diamond -fade_linear 
		--fade_linear -compose_rgba --compose_rgba -compose_channels --compose_channels -compose_average 
		--compose_average -compose_multiply --compose_multiply -compose_screen --compose_screen 
		-compose_darken --compose_darken -compose_lighten --compose_lighten -compose_difference 
		--compose_difference -compose_negation --compose_negation -compose_exclusion --compose_exclusion 
		-compose_overlay --compose_overlay -compose_hardlight --compose_hardlight -compose_softlight 
		--compose_softlight -compose_dodge --compose_dodge -compose_colorburn --compose_colorburn 
		-compose_reflect --compose_reflect -compose_freeze --compose_freeze -compose_stamp --compose_stamp 
		-compose_interpolation --compose_interpolation -compose_xor --compose_xor -compose_edges 
		--compose_edges -compose_fade --compose_fade -compose_shapeaverage --compose_shapeaverage 
		-cross_correlation --cross_correlation -normalized_cross_correlation --normalized_cross_correlation 
		-phase_correlation --phase_correlation -morph --morph -register_nonrigid --register_nonrigid 
		-register_rigid --register_rigid -deinterlace --deinterlace -animate --animate -empty3d 
		--empty3d -apply_pose3d --apply_pose3d -animate3d --animate3d -balls3d --balls3d -imagecube3d 
		--imagecube3d -imagepyramid3d --imagepyramid3d -pyramid3d --pyramid3d -text3d --text3d 
		-gmic3d --gmic3d -sierpinski3d --sierpinski3d -snapshot3d --snapshot3d -x_mandelbrot 
		--x_mandelbrot -x_fish_eye --x_fish_eye -x_spline --x_spline -x_tictactoe --x_tictactoe 
		-x_fourier --x_fourier -x_life --x_life -x_fire --x_fire -x_light --x_light -x_jawbreaker 
		--x_jawbreaker -x_paint --x_paint ";

	case "${prev}" in 
			-help | --help)
			COMPREPLY=( $(compgen -W "$help"))
			return 0
			;;
			-add | --add)
			COMPREPLY=( $(compgen -W "$add"))
			return 0
			;;
			-sub | --sub)
			COMPREPLY=( $(compgen -W "$sub"))
			return 0
			;;
			-mul | --mul)
			COMPREPLY=( $(compgen -W "$mul"))
			return 0
			;;
			-mmul | --mmul)
			COMPREPLY=( $(compgen -W "$mmul"))
			return 0
			;;
			-div | --div)
			COMPREPLY=( $(compgen -W "$div"))
			return 0
			;;
			-pow | --pow)
			COMPREPLY=( $(compgen -W "$pow"))
			return 0
			;;
			-min | --min)
			COMPREPLY=( $(compgen -W "$min"))
			return 0
			;;
			-max | --max)
			COMPREPLY=( $(compgen -W "$max"))
			return 0
			;;
			-mod | --mod)
			COMPREPLY=( $(compgen -W "$mod"))
			return 0
			;;
			-and | --and)
			COMPREPLY=( $(compgen -W "$and"))
			return 0
			;;
			-or | --or)
			COMPREPLY=( $(compgen -W "$or"))
			return 0
			;;
			-xor | --xor)
			COMPREPLY=( $(compgen -W "$xor"))
			return 0
			;;
			-bsl | --bsl)
			COMPREPLY=( $(compgen -W "$bsl"))
			return 0
			;;
			-bsr | --bsr)
			COMPREPLY=( $(compgen -W "$bsr"))
			return 0
			;;
			-rol | --rol)
			COMPREPLY=( $(compgen -W "$rol"))
			return 0
			;;
			-ror | --ror)
			COMPREPLY=( $(compgen -W "$ror"))
			return 0
			;;
			-eq | --eq)
			COMPREPLY=( $(compgen -W "$eq"))
			return 0
			;;
			-neq | --neq)
			COMPREPLY=( $(compgen -W "$neq"))
			return 0
			;;
			-gt | --gt)
			COMPREPLY=( $(compgen -W "$gt"))
			return 0
			;;
			-ge | --ge)
			COMPREPLY=( $(compgen -W "$ge"))
			return 0
			;;
			-lt | --lt)
			COMPREPLY=( $(compgen -W "$lt"))
			return 0
			;;
			-le | --le)
			COMPREPLY=( $(compgen -W "$le"))
			return 0
			;;
			-atan2 | --atan2)
			COMPREPLY=( $(compgen -W "$atan2"))
			return 0
			;;
			-set | --set)
			COMPREPLY=( $(compgen -W "$set"))
			return 0
			;;
			-fill | --fill)
			COMPREPLY=( $(compgen -W "$fill"))
			return 0
			;;
			-threshold | --threshold)
			COMPREPLY=( $(compgen -W "$threshold"))
			return 0
			;;
			-cut | --cut)
			COMPREPLY=( $(compgen -W "$cut"))
			return 0
			;;
			-normalize | --normalize)
			COMPREPLY=( $(compgen -W "$normalize"))
			return 0
			;;
			-round | --round)
			COMPREPLY=( $(compgen -W "$round"))
			return 0
			;;
			-equalize | --equalize)
			COMPREPLY=( $(compgen -W "$equalize"))
			return 0
			;;
			-quantize | --quantize)
			COMPREPLY=( $(compgen -W "$quantize"))
			return 0
			;;
			-noise | --noise)
			COMPREPLY=( $(compgen -W "$noise"))
			return 0
			;;
			-rand | --rand)
			COMPREPLY=( $(compgen -W "$rand"))
			return 0
			;;
			-map | --map)
			COMPREPLY=( $(compgen -W "$map"))
			return 0
			;;
			-index | --index)
			COMPREPLY=( $(compgen -W "$index"))
			return 0
			;;
			-resize | --resize)
			COMPREPLY=( $(compgen -W "$resize"))
			return 0
			;;
			-crop | --crop)
			COMPREPLY=( $(compgen -W "$crop"))
			return 0
			;;
			-autocrop | --autocrop)
			COMPREPLY=( $(compgen -W "$autocrop"))
			return 0
			;;
			-channels | --channels)
			COMPREPLY=( $(compgen -W "$channels"))
			return 0
			;;
			-slices | --slices)
			COMPREPLY=( $(compgen -W "$slices"))
			return 0
			;;
			-lines | --lines)
			COMPREPLY=( $(compgen -W "$lines"))
			return 0
			;;
			-columns | --columns)
			COMPREPLY=( $(compgen -W "$columns"))
			return 0
			;;
			-rotate | --rotate)
			COMPREPLY=( $(compgen -W "$rotate"))
			return 0
			;;
			-mirror | --mirror)
			COMPREPLY=( $(compgen -W "$mirror"))
			return 0
			;;
			-shift | --shift)
			COMPREPLY=( $(compgen -W "$shift"))
			return 0
			;;
			-solve | --solve)
			COMPREPLY=( $(compgen -W "$solve"))
			return 0
			;;
			-dijkstra | --dijkstra)
			COMPREPLY=( $(compgen -W "$dijkstra"))
			return 0
			;;
			-permute | --permute)
			COMPREPLY=( $(compgen -W "$permute"))
			return 0
			;;
			-unroll | --unroll)
			COMPREPLY=( $(compgen -W "$unroll"))
			return 0
			;;
			-split | --split)
			COMPREPLY=( $(compgen -W "$split"))
			return 0
			;;
			-append | --append)
			COMPREPLY=( $(compgen -W "$append"))
			return 0
			;;
			-warp | --warp)
			COMPREPLY=( $(compgen -W "$warp"))
			return 0
			;;
			-deriche | --deriche)
			COMPREPLY=( $(compgen -W "$deriche"))
			return 0
			;;
			-blur | --blur)
			COMPREPLY=( $(compgen -W "$blur"))
			return 0
			;;
			-bilateral | --bilateral)
			COMPREPLY=( $(compgen -W "$bilateral"))
			return 0
			;;
			-denoise | --denoise)
			COMPREPLY=( $(compgen -W "$denoise"))
			return 0
			;;
			-smooth | --smooth)
			COMPREPLY=( $(compgen -W "$smooth"))
			return 0
			;;
			-median | --median)
			COMPREPLY=( $(compgen -W "$median"))
			return 0
			;;
			-sharpen | --sharpen)
			COMPREPLY=( $(compgen -W "$sharpen"))
			return 0
			;;
			-convolve | --convolve)
			COMPREPLY=( $(compgen -W "$convolve"))
			return 0
			;;
			-correlate | --correlate)
			COMPREPLY=( $(compgen -W "$correlate"))
			return 0
			;;
			-erode | --erode)
			COMPREPLY=( $(compgen -W "$erode"))
			return 0
			;;
			-dilate | --dilate)
			COMPREPLY=( $(compgen -W "$dilate"))
			return 0
			;;
			-inpaint | --inpaint)
			COMPREPLY=( $(compgen -W "$inpaint"))
			return 0
			;;
			-gradient | --gradient)
			COMPREPLY=( $(compgen -W "$gradient"))
			return 0
			;;
			-structuretensors | --structuretensors)
			COMPREPLY=( $(compgen -W "$structuretensors"))
			return 0
			;;
			-edgetensors | --edgetensors)
			COMPREPLY=( $(compgen -W "$edgetensors"))
			return 0
			;;
			-hessian | --hessian)
			COMPREPLY=( $(compgen -W "$hessian"))
			return 0
			;;
			-haar | --haar)
			COMPREPLY=( $(compgen -W "$haar"))
			return 0
			;;
			-ihaar | --ihaar)
			COMPREPLY=( $(compgen -W "$ihaar"))
			return 0
			;;
			-histogram | --histogram)
			COMPREPLY=( $(compgen -W "$histogram"))
			return 0
			;;
			-distance | --distance)
			COMPREPLY=( $(compgen -W "$distance"))
			return 0
			;;
			-eikonal | --eikonal)
			COMPREPLY=( $(compgen -W "$eikonal"))
			return 0
			;;
			-watershed | --watershed)
			COMPREPLY=( $(compgen -W "$watershed"))
			return 0
			;;
			-displacement | --displacement)
			COMPREPLY=( $(compgen -W "$displacement"))
			return 0
			;;
			-sort | --sort)
			COMPREPLY=( $(compgen -W "$sort"))
			return 0
			;;
			-psnr | --psnr)
			COMPREPLY=( $(compgen -W "$psnr"))
			return 0
			;;
			-point | --point)
			COMPREPLY=( $(compgen -W "$point"))
			return 0
			;;
			-line | --line)
			COMPREPLY=( $(compgen -W "$line"))
			return 0
			;;
			-polygon | --polygon)
			COMPREPLY=( $(compgen -W "$polygon"))
			return 0
			;;
			-spline | --spline)
			COMPREPLY=( $(compgen -W "$spline"))
			return 0
			;;
			-ellipse | --ellipse)
			COMPREPLY=( $(compgen -W "$ellipse"))
			return 0
			;;
			-text | --text)
			COMPREPLY=( $(compgen -W "$text"))
			return 0
			;;
			-graph | --graph)
			COMPREPLY=( $(compgen -W "$graph"))
			return 0
			;;
			-axes | --axes)
			COMPREPLY=( $(compgen -W "$axes"))
			return 0
			;;
			-grid | --grid)
			COMPREPLY=( $(compgen -W "$grid"))
			return 0
			;;
			-quiver | --quiver)
			COMPREPLY=( $(compgen -W "$quiver"))
			return 0
			;;
			-flood | --flood)
			COMPREPLY=( $(compgen -W "$flood"))
			return 0
			;;
			-image | --image)
			COMPREPLY=( $(compgen -W "$image"))
			return 0
			;;
			-object3d | --object3d)
			COMPREPLY=( $(compgen -W "$object3d"))
			return 0
			;;
			-plasma | --plasma)
			COMPREPLY=( $(compgen -W "$plasma"))
			return 0
			;;
			-mandelbrot | --mandelbrot)
			COMPREPLY=( $(compgen -W "$mandelbrot"))
			return 0
			;;
			-move | --move)
			COMPREPLY=( $(compgen -W "$move"))
			return 0
			;;
			-name | --name)
			COMPREPLY=( $(compgen -W "$name"))
			return 0
			;;
			-point3d | --point3d)
			COMPREPLY=( $(compgen -W "$point3d"))
			return 0
			;;
			-line3d | --line3d)
			COMPREPLY=( $(compgen -W "$line3d"))
			return 0
			;;
			-triangle3d | --triangle3d)
			COMPREPLY=( $(compgen -W "$triangle3d"))
			return 0
			;;
			-quadrangle3d | --quadrangle3d)
			COMPREPLY=( $(compgen -W "$quadrangle3d"))
			return 0
			;;
			-circle3d | --circle3d)
			COMPREPLY=( $(compgen -W "$circle3d"))
			return 0
			;;
			-box3d | --box3d)
			COMPREPLY=( $(compgen -W "$box3d"))
			return 0
			;;
			-cone3d | --cone3d)
			COMPREPLY=( $(compgen -W "$cone3d"))
			return 0
			;;
			-cylinder3d | --cylinder3d)
			COMPREPLY=( $(compgen -W "$cylinder3d"))
			return 0
			;;
			-torus3d | --torus3d)
			COMPREPLY=( $(compgen -W "$torus3d"))
			return 0
			;;
			-plane3d | --plane3d)
			COMPREPLY=( $(compgen -W "$plane3d"))
			return 0
			;;
			-sphere3d | --sphere3d)
			COMPREPLY=( $(compgen -W "$sphere3d"))
			return 0
			;;
			-elevation3d | --elevation3d)
			COMPREPLY=( $(compgen -W "$elevation3d"))
			return 0
			;;
			-isoline3d | --isoline3d)
			COMPREPLY=( $(compgen -W "$isoline3d"))
			return 0
			;;
			-isosurface3d | --isosurface3d)
			COMPREPLY=( $(compgen -W "$isosurface3d"))
			return 0
			;;
			-streamline3d | --streamline3d)
			COMPREPLY=( $(compgen -W "$streamline3d"))
			return 0
			;;
			-add3d | --add3d)
			COMPREPLY=( $(compgen -W "$add3d"))
			return 0
			;;
			-sub3d | --sub3d)
			COMPREPLY=( $(compgen -W "$sub3d"))
			return 0
			;;
			-mul3d | --mul3d)
			COMPREPLY=( $(compgen -W "$mul3d"))
			return 0
			;;
			-div3d | --div3d)
			COMPREPLY=( $(compgen -W "$div3d"))
			return 0
			;;
			-rotate3d | --rotate3d)
			COMPREPLY=( $(compgen -W "$rotate3d"))
			return 0
			;;
			-color3d | --color3d)
			COMPREPLY=( $(compgen -W "$color3d"))
			return 0
			;;
			-opacity3d | --opacity3d)
			COMPREPLY=( $(compgen -W "$opacity3d"))
			return 0
			;;
			-primitives3d | --primitives3d)
			COMPREPLY=( $(compgen -W "$primitives3d"))
			return 0
			;;
			-light3d | --light3d)
			COMPREPLY=( $(compgen -W "$light3d"))
			return 0
			;;
			-focale3d | --focale3d)
			COMPREPLY=( $(compgen -W "$focale3d"))
			return 0
			;;
			-pose3d | --pose3d)
			COMPREPLY=( $(compgen -W "$pose3d"))
			return 0
			;;
			-specl3d | --specl3d)
			COMPREPLY=( $(compgen -W "$specl3d"))
			return 0
			;;
			-specs3d | --specs3d)
			COMPREPLY=( $(compgen -W "$specs3d"))
			return 0
			;;
			-double3d | --double3d)
			COMPREPLY=( $(compgen -W "$double3d"))
			return 0
			;;
			-mode3d | --mode3d)
			COMPREPLY=( $(compgen -W "$mode3d"))
			return 0
			;;
			-moded3d | --moded3d)
			COMPREPLY=( $(compgen -W "$moded3d"))
			return 0
			;;
			-background3d | --background3d)
			COMPREPLY=( $(compgen -W "$background3d"))
			return 0
			;;
			-skip | --skip)
			COMPREPLY=( $(compgen -W "$skip"))
			return 0
			;;
			-status | --status)
			COMPREPLY=( $(compgen -W "$status"))
			return 0
			;;
			-exec | --exec)
			COMPREPLY=( $(compgen -W "$exec"))
			return 0
			;;
			-while | --while)
			COMPREPLY=( $(compgen -W "$while"))
			return 0
			;;
			-repeat | --repeat)
			COMPREPLY=( $(compgen -W "$repeat"))
			return 0
			;;
			-if | --if)
			COMPREPLY=( $(compgen -W "$if"))
			return 0
			;;
			-elif | --elif)
			COMPREPLY=( $(compgen -W "$elif"))
			return 0
			;;
			-check | --check)
			COMPREPLY=( $(compgen -W "$check"))
			return 0
			;;
			-push | --push)
			COMPREPLY=( $(compgen -W "$push"))
			return 0
			;;
			-push= | --push=)
			COMPREPLY=( $(compgen -W "$push="))
			return 0
			;;
			-error | --error)
			COMPREPLY=( $(compgen -W "$error"))
			return 0
			;;
			-progress | --progress)
			COMPREPLY=( $(compgen -W "$progress"))
			return 0
			;;
			-input | --input)
			COMPREPLY=( $(compgen -W "$input"))
			return 0
			;;
			-output | --output)
			COMPREPLY=( $(compgen -W "$output"))
			return 0
			;;
			-verbose | --verbose)
			COMPREPLY=( $(compgen -W "$verbose"))
			return 0
			;;
			-echo | --echo)
			COMPREPLY=( $(compgen -W "$echo"))
			return 0
			;;
			-warning | --warning)
			COMPREPLY=( $(compgen -W "$warning"))
			return 0
			;;
			-command | --command)
			COMPREPLY=( $(compgen -W "$command"))
			return 0
			;;
			-type | --type)
			COMPREPLY=( $(compgen -W "$type"))
			return 0
			;;
			-shared | --shared)
			COMPREPLY=( $(compgen -W "$shared"))
			return 0
			;;
			-plot | --plot)
			COMPREPLY=( $(compgen -W "$plot"))
			return 0
			;;
			-window | --window)
			COMPREPLY=( $(compgen -W "$window"))
			return 0
			;;
			-wait | --wait)
			COMPREPLY=( $(compgen -W "$wait"))
			return 0
			;;
			-select | --select)
			COMPREPLY=( $(compgen -W "$select"))
			return 0
			;;
			-h | --h)
			COMPREPLY=( $(compgen -W "$h"))
			return 0
			;;
			-f | --f)
			COMPREPLY=( $(compgen -W "$f"))
			return 0
			;;
			-t | --t)
			COMPREPLY=( $(compgen -W "$t"))
			return 0
			;;
			-c | --c)
			COMPREPLY=( $(compgen -W "$c"))
			return 0
			;;
			-n | --n)
			COMPREPLY=( $(compgen -W "$n"))
			return 0
			;;
			-r | --r)
			COMPREPLY=( $(compgen -W "$r"))
			return 0
			;;
			-s | --s)
			COMPREPLY=( $(compgen -W "$s"))
			return 0
			;;
			-a | --a)
			COMPREPLY=( $(compgen -W "$a"))
			return 0
			;;
			-rm | --rm)
			COMPREPLY=( $(compgen -W "$rm"))
			return 0
			;;
			-k | --k)
			COMPREPLY=( $(compgen -W "$k"))
			return 0
			;;
			-mv | --mv)
			COMPREPLY=( $(compgen -W "$mv"))
			return 0
			;;
			-rv | --rv)
			COMPREPLY=( $(compgen -W "$rv"))
			return 0
			;;
			-nm | --nm)
			COMPREPLY=( $(compgen -W "$nm"))
			return 0
			;;
			-c3d | --c3d)
			COMPREPLY=( $(compgen -W "$c3d"))
			return 0
			;;
			-n3d | --n3d)
			COMPREPLY=( $(compgen -W "$n3d"))
			return 0
			;;
			-rot3d | --rot3d)
			COMPREPLY=( $(compgen -W "$rot3d"))
			return 0
			;;
			-col3d | --col3d)
			COMPREPLY=( $(compgen -W "$col3d"))
			return 0
			;;
			-o3d | --o3d)
			COMPREPLY=( $(compgen -W "$o3d"))
			return 0
			;;
			-rv3d | --rv3d)
			COMPREPLY=( $(compgen -W "$rv3d"))
			return 0
			;;
			-p3d | --p3d)
			COMPREPLY=( $(compgen -W "$p3d"))
			return 0
			;;
			-s3d | --s3d)
			COMPREPLY=( $(compgen -W "$s3d"))
			return 0
			;;
			-l3d | --l3d)
			COMPREPLY=( $(compgen -W "$l3d"))
			return 0
			;;
			-f3d | --f3d)
			COMPREPLY=( $(compgen -W "$f3d"))
			return 0
			;;
			-sl3d | --sl3d)
			COMPREPLY=( $(compgen -W "$sl3d"))
			return 0
			;;
			-ss3d | --ss3d)
			COMPREPLY=( $(compgen -W "$ss3d"))
			return 0
			;;
			-db3d | --db3d)
			COMPREPLY=( $(compgen -W "$db3d"))
			return 0
			;;
			-m3d | --m3d)
			COMPREPLY=( $(compgen -W "$m3d"))
			return 0
			;;
			-md3d | --md3d)
			COMPREPLY=( $(compgen -W "$md3d"))
			return 0
			;;
			-b3d | --b3d)
			COMPREPLY=( $(compgen -W "$b3d"))
			return 0
			;;
			-x | --x)
			COMPREPLY=( $(compgen -W "$x"))
			return 0
			;;
			-u | --u)
			COMPREPLY=( $(compgen -W "$u"))
			return 0
			;;
			-b | --b)
			COMPREPLY=( $(compgen -W "$b"))
			return 0
			;;
			-l | --l)
			COMPREPLY=( $(compgen -W "$l"))
			return 0
			;;
			-endl | --endl)
			COMPREPLY=( $(compgen -W "$endl"))
			return 0
			;;
			-q | --q)
			COMPREPLY=( $(compgen -W "$q"))
			return 0
			;;
			-p | --p)
			COMPREPLY=( $(compgen -W "$p"))
			return 0
			;;
			-p= | --p=)
			COMPREPLY=( $(compgen -W "$p="))
			return 0
			;;
			-pp | --pp)
			COMPREPLY=( $(compgen -W "$pp"))
			return 0
			;;
			-e | --e)
			COMPREPLY=( $(compgen -W "$e"))
			return 0
			;;
			-i | --i)
			COMPREPLY=( $(compgen -W "$i"))
			return 0
			;;
			-o | --o)
			COMPREPLY=( $(compgen -W "$o"))
			return 0
			;;
			-sh | --sh)
			COMPREPLY=( $(compgen -W "$sh"))
			return 0
			;;
			-v | --v)
			COMPREPLY=( $(compgen -W "$v"))
			return 0
			;;
			-m | --m)
			COMPREPLY=( $(compgen -W "$m"))
			return 0
			;;
			-d | --d)
			COMPREPLY=( $(compgen -W "$d"))
			return 0
			;;
			-d3d | --d3d)
			COMPREPLY=( $(compgen -W "$d3d"))
			return 0
			;;
			-w | --w)
			COMPREPLY=( $(compgen -W "$w"))
			return 0
			;;
			-replace_nan | --replace_nan)
			COMPREPLY=( $(compgen -W "$replace_nan"))
			return 0
			;;
			-replace_inf | --replace_inf)
			COMPREPLY=( $(compgen -W "$replace_inf"))
			return 0
			;;
			-roundify | --roundify)
			COMPREPLY=( $(compgen -W "$roundify"))
			return 0
			;;
			-apply_gamma | --apply_gamma)
			COMPREPLY=( $(compgen -W "$apply_gamma"))
			return 0
			;;
			-apply_curve | --apply_curve)
			COMPREPLY=( $(compgen -W "$apply_curve"))
			return 0
			;;
			-tones | --tones)
			COMPREPLY=( $(compgen -W "$tones"))
			return 0
			;;
			-t2 | --t2)
			COMPREPLY=( $(compgen -W "$t2"))
			return 0
			;;
			-threshold2 | --threshold2)
			COMPREPLY=( $(compgen -W "$threshold2"))
			return 0
			;;
			-split_tiles | --split_tiles)
			COMPREPLY=( $(compgen -W "$split_tiles"))
			return 0
			;;
			-append_tiles | --append_tiles)
			COMPREPLY=( $(compgen -W "$append_tiles"))
			return 0
			;;
			-r2dx | --r2dx)
			COMPREPLY=( $(compgen -W "$r2dx"))
			return 0
			;;
			-resize2dx | --resize2dx)
			COMPREPLY=( $(compgen -W "$resize2dx"))
			return 0
			;;
			-r3dx | --r3dx)
			COMPREPLY=( $(compgen -W "$r3dx"))
			return 0
			;;
			-resize3dx | --resize3dx)
			COMPREPLY=( $(compgen -W "$resize3dx"))
			return 0
			;;
			-r2dy | --r2dy)
			COMPREPLY=( $(compgen -W "$r2dy"))
			return 0
			;;
			-resize2dy | --resize2dy)
			COMPREPLY=( $(compgen -W "$resize2dy"))
			return 0
			;;
			-r3dy | --r3dy)
			COMPREPLY=( $(compgen -W "$r3dy"))
			return 0
			;;
			-resize3dy | --resize3dy)
			COMPREPLY=( $(compgen -W "$resize3dy"))
			return 0
			;;
			-r3dz | --r3dz)
			COMPREPLY=( $(compgen -W "$r3dz"))
			return 0
			;;
			-resize3dz | --resize3dz)
			COMPREPLY=( $(compgen -W "$resize3dz"))
			return 0
			;;
			-upscale_smart | --upscale_smart)
			COMPREPLY=( $(compgen -W "$upscale_smart"))
			return 0
			;;
			-expand_x | --expand_x)
			COMPREPLY=( $(compgen -W "$expand_x"))
			return 0
			;;
			-expand_y | --expand_y)
			COMPREPLY=( $(compgen -W "$expand_y"))
			return 0
			;;
			-expand_z | --expand_z)
			COMPREPLY=( $(compgen -W "$expand_z"))
			return 0
			;;
			-expand_xy | --expand_xy)
			COMPREPLY=( $(compgen -W "$expand_xy"))
			return 0
			;;
			-expand_xyz | --expand_xyz)
			COMPREPLY=( $(compgen -W "$expand_xyz"))
			return 0
			;;
			-shrink_x | --shrink_x)
			COMPREPLY=( $(compgen -W "$shrink_x"))
			return 0
			;;
			-shrink_y | --shrink_y)
			COMPREPLY=( $(compgen -W "$shrink_y"))
			return 0
			;;
			-shrink_z | --shrink_z)
			COMPREPLY=( $(compgen -W "$shrink_z"))
			return 0
			;;
			-shrink_xy | --shrink_xy)
			COMPREPLY=( $(compgen -W "$shrink_xy"))
			return 0
			;;
			-elevate | --elevate)
			COMPREPLY=( $(compgen -W "$elevate"))
			return 0
			;;
			-ow | --ow)
			COMPREPLY=( $(compgen -W "$ow"))
			return 0
			;;
			-op | --op)
			COMPREPLY=( $(compgen -W "$op"))
			return 0
			;;
			-outputp | --outputp)
			COMPREPLY=( $(compgen -W "$outputp"))
			return 0
			;;
			-on | --on)
			COMPREPLY=( $(compgen -W "$on"))
			return 0
			;;
			-outputn | --outputn)
			COMPREPLY=( $(compgen -W "$outputn"))
			return 0
			;;
			-d0 | --d0)
			COMPREPLY=( $(compgen -W "$d0"))
			return 0
			;;
			-dfft | --dfft)
			COMPREPLY=( $(compgen -W "$dfft"))
			return 0
			;;
			-drgba | --drgba)
			COMPREPLY=( $(compgen -W "$drgba"))
			return 0
			;;
			-dh | --dh)
			COMPREPLY=( $(compgen -W "$dh"))
			return 0
			;;
			-display_histogram | --display_histogram)
			COMPREPLY=( $(compgen -W "$display_histogram"))
			return 0
			;;
			-dt | --dt)
			COMPREPLY=( $(compgen -W "$dt"))
			return 0
			;;
			-display_tensors | --display_tensors)
			COMPREPLY=( $(compgen -W "$display_tensors"))
			return 0
			;;
			-ball | --ball)
			COMPREPLY=( $(compgen -W "$ball"))
			return 0
			;;
			-sierpinski | --sierpinski)
			COMPREPLY=( $(compgen -W "$sierpinski"))
			return 0
			;;
			-text_outline | --text_outline)
			COMPREPLY=( $(compgen -W "$text_outline"))
			return 0
			;;
			-histogram_cumul | --histogram_cumul)
			COMPREPLY=( $(compgen -W "$histogram_cumul"))
			return 0
			;;
			-rgb2bayer | --rgb2bayer)
			COMPREPLY=( $(compgen -W "$rgb2bayer"))
			return 0
			;;
			-bayer2rgb | --bayer2rgb)
			COMPREPLY=( $(compgen -W "$bayer2rgb"))
			return 0
			;;
			-lic | --lic)
			COMPREPLY=( $(compgen -W "$lic"))
			return 0
			;;
			-gaussian | --gaussian)
			COMPREPLY=( $(compgen -W "$gaussian"))
			return 0
			;;
			-blur_x | --blur_x)
			COMPREPLY=( $(compgen -W "$blur_x"))
			return 0
			;;
			-blur_y | --blur_y)
			COMPREPLY=( $(compgen -W "$blur_y"))
			return 0
			;;
			-blur_z | --blur_z)
			COMPREPLY=( $(compgen -W "$blur_z"))
			return 0
			;;
			-blur_xy | --blur_xy)
			COMPREPLY=( $(compgen -W "$blur_xy"))
			return 0
			;;
			-blur_xyz | --blur_xyz)
			COMPREPLY=( $(compgen -W "$blur_xyz"))
			return 0
			;;
			-blur_angular | --blur_angular)
			COMPREPLY=( $(compgen -W "$blur_angular"))
			return 0
			;;
			-blur_radial | --blur_radial)
			COMPREPLY=( $(compgen -W "$blur_radial"))
			return 0
			;;
			-blur_linear | --blur_linear)
			COMPREPLY=( $(compgen -W "$blur_linear"))
			return 0
			;;
			-dog | --dog)
			COMPREPLY=( $(compgen -W "$dog"))
			return 0
			;;
			-pde_flow | --pde_flow)
			COMPREPLY=( $(compgen -W "$pde_flow"))
			return 0
			;;
			-heat_flow | --heat_flow)
			COMPREPLY=( $(compgen -W "$heat_flow"))
			return 0
			;;
			-meancurvature_flow | --meancurvature_flow)
			COMPREPLY=( $(compgen -W "$meancurvature_flow"))
			return 0
			;;
			-tv_flow | --tv_flow)
			COMPREPLY=( $(compgen -W "$tv_flow"))
			return 0
			;;
			-inpaint_flow | --inpaint_flow)
			COMPREPLY=( $(compgen -W "$inpaint_flow"))
			return 0
			;;
			-remove_hotpixels | --remove_hotpixels)
			COMPREPLY=( $(compgen -W "$remove_hotpixels"))
			return 0
			;;
			-richardson_lucy | --richardson_lucy)
			COMPREPLY=( $(compgen -W "$richardson_lucy"))
			return 0
			;;
			-oriented_richardson_lucy | --oriented_richardson_lucy)
			COMPREPLY=( $(compgen -W "$oriented_richardson_lucy"))
			return 0
			;;
			-unsharp | --unsharp)
			COMPREPLY=( $(compgen -W "$unsharp"))
			return 0
			;;
			-unsharp_octave | --unsharp_octave)
			COMPREPLY=( $(compgen -W "$unsharp_octave"))
			return 0
			;;
			-normalize_local | --normalize_local)
			COMPREPLY=( $(compgen -W "$normalize_local"))
			return 0
			;;
			-bandpass | --bandpass)
			COMPREPLY=( $(compgen -W "$bandpass"))
			return 0
			;;
			-watermark | --watermark)
			COMPREPLY=( $(compgen -W "$watermark"))
			return 0
			;;
			-split_freq | --split_freq)
			COMPREPLY=( $(compgen -W "$split_freq"))
			return 0
			;;
			-erode_oct | --erode_oct)
			COMPREPLY=( $(compgen -W "$erode_oct"))
			return 0
			;;
			-dilate_oct | --dilate_oct)
			COMPREPLY=( $(compgen -W "$dilate_oct"))
			return 0
			;;
			-erode_circ | --erode_circ)
			COMPREPLY=( $(compgen -W "$erode_circ"))
			return 0
			;;
			-dilate_circ | --dilate_circ)
			COMPREPLY=( $(compgen -W "$dilate_circ"))
			return 0
			;;
			-gradient_orientation | --gradient_orientation)
			COMPREPLY=( $(compgen -W "$gradient_orientation"))
			return 0
			;;
			-gradient2rgb | --gradient2rgb)
			COMPREPLY=( $(compgen -W "$gradient2rgb"))
			return 0
			;;
			-edges | --edges)
			COMPREPLY=( $(compgen -W "$edges"))
			return 0
			;;
			-isophotes | --isophotes)
			COMPREPLY=( $(compgen -W "$isophotes"))
			return 0
			;;
			-topographic_map | --topographic_map)
			COMPREPLY=( $(compgen -W "$topographic_map"))
			return 0
			;;
			-segment_watershed | --segment_watershed)
			COMPREPLY=( $(compgen -W "$segment_watershed"))
			return 0
			;;
			-array | --array)
			COMPREPLY=( $(compgen -W "$array"))
			return 0
			;;
			-array_fade | --array_fade)
			COMPREPLY=( $(compgen -W "$array_fade"))
			return 0
			;;
			-array_mirror | --array_mirror)
			COMPREPLY=( $(compgen -W "$array_mirror"))
			return 0
			;;
			-array_random | --array_random)
			COMPREPLY=( $(compgen -W "$array_random"))
			return 0
			;;
			-array_pattern | --array_pattern)
			COMPREPLY=( $(compgen -W "$array_pattern"))
			return 0
			;;
			-taquin | --taquin)
			COMPREPLY=( $(compgen -W "$taquin"))
			return 0
			;;
			-grid | --grid)
			COMPREPLY=( $(compgen -W "$grid"))
			return 0
			;;
			-frame | --frame)
			COMPREPLY=( $(compgen -W "$frame"))
			return 0
			;;
			-frame_fuzzy | --frame_fuzzy)
			COMPREPLY=( $(compgen -W "$frame_fuzzy"))
			return 0
			;;
			-frame_round | --frame_round)
			COMPREPLY=( $(compgen -W "$frame_round"))
			return 0
			;;
			-frame_blur | --frame_blur)
			COMPREPLY=( $(compgen -W "$frame_blur"))
			return 0
			;;
			-frame_pattern | --frame_pattern)
			COMPREPLY=( $(compgen -W "$frame_pattern"))
			return 0
			;;
			-rotate_tiles | --rotate_tiles)
			COMPREPLY=( $(compgen -W "$rotate_tiles"))
			return 0
			;;
			-shift_tiles | --shift_tiles)
			COMPREPLY=( $(compgen -W "$shift_tiles"))
			return 0
			;;
			-linearize_tiles | --linearize_tiles)
			COMPREPLY=( $(compgen -W "$linearize_tiles"))
			return 0
			;;
			-quadratize_tiles | --quadratize_tiles)
			COMPREPLY=( $(compgen -W "$quadratize_tiles"))
			return 0
			;;
			-polaroid | --polaroid)
			COMPREPLY=( $(compgen -W "$polaroid"))
			return 0
			;;
			-drop_shadow | --drop_shadow)
			COMPREPLY=( $(compgen -W "$drop_shadow"))
			return 0
			;;
			-tetris | --tetris)
			COMPREPLY=( $(compgen -W "$tetris"))
			return 0
			;;
			-mosaic | --mosaic)
			COMPREPLY=( $(compgen -W "$mosaic"))
			return 0
			;;
			-puzzle | --puzzle)
			COMPREPLY=( $(compgen -W "$puzzle"))
			return 0
			;;
			-sponge | --sponge)
			COMPREPLY=( $(compgen -W "$sponge"))
			return 0
			;;
			-hearts | --hearts)
			COMPREPLY=( $(compgen -W "$hearts"))
			return 0
			;;
			-color_ellipses | --color_ellipses)
			COMPREPLY=( $(compgen -W "$color_ellipses"))
			return 0
			;;
			-ellipsionism | --ellipsionism)
			COMPREPLY=( $(compgen -W "$ellipsionism"))
			return 0
			;;
			-whirls | --whirls)
			COMPREPLY=( $(compgen -W "$whirls"))
			return 0
			;;
			-cartoon | --cartoon)
			COMPREPLY=( $(compgen -W "$cartoon"))
			return 0
			;;
			-drawing | --drawing)
			COMPREPLY=( $(compgen -W "$drawing"))
			return 0
			;;
			-draw_whirl | --draw_whirl)
			COMPREPLY=( $(compgen -W "$draw_whirl"))
			return 0
			;;
			-stencil | --stencil)
			COMPREPLY=( $(compgen -W "$stencil"))
			return 0
			;;
			-stencilbw | --stencilbw)
			COMPREPLY=( $(compgen -W "$stencilbw"))
			return 0
			;;
			-pencilbw | --pencilbw)
			COMPREPLY=( $(compgen -W "$pencilbw"))
			return 0
			;;
			-dotsbw | --dotsbw)
			COMPREPLY=( $(compgen -W "$dotsbw"))
			return 0
			;;
			-warhol | --warhol)
			COMPREPLY=( $(compgen -W "$warhol"))
			return 0
			;;
			-cubism | --cubism)
			COMPREPLY=( $(compgen -W "$cubism"))
			return 0
			;;
			-glow | --glow)
			COMPREPLY=( $(compgen -W "$glow"))
			return 0
			;;
			-euclidean2polar | --euclidean2polar)
			COMPREPLY=( $(compgen -W "$euclidean2polar"))
			return 0
			;;
			-polar2euclidean | --polar2euclidean)
			COMPREPLY=( $(compgen -W "$polar2euclidean"))
			return 0
			;;
			-warp_perspective | --warp_perspective)
			COMPREPLY=( $(compgen -W "$warp_perspective"))
			return 0
			;;
			-water | --water)
			COMPREPLY=( $(compgen -W "$water"))
			return 0
			;;
			-wave | --wave)
			COMPREPLY=( $(compgen -W "$wave"))
			return 0
			;;
			-twirl | --twirl)
			COMPREPLY=( $(compgen -W "$twirl"))
			return 0
			;;
			-map_sphere | --map_sphere)
			COMPREPLY=( $(compgen -W "$map_sphere"))
			return 0
			;;
			-flower | --flower)
			COMPREPLY=( $(compgen -W "$flower"))
			return 0
			;;
			-zoom | --zoom)
			COMPREPLY=( $(compgen -W "$zoom"))
			return 0
			;;
			-deform | --deform)
			COMPREPLY=( $(compgen -W "$deform"))
			return 0
			;;
			-fish_eye | --fish_eye)
			COMPREPLY=( $(compgen -W "$fish_eye"))
			return 0
			;;
			-transform_polar | --transform_polar)
			COMPREPLY=( $(compgen -W "$transform_polar"))
			return 0
			;;
			-kaleidoscope | --kaleidoscope)
			COMPREPLY=( $(compgen -W "$kaleidoscope"))
			return 0
			;;
			-rotoidoscope | --rotoidoscope)
			COMPREPLY=( $(compgen -W "$rotoidoscope"))
			return 0
			;;
			-spread | --spread)
			COMPREPLY=( $(compgen -W "$spread"))
			return 0
			;;
			-shade_stripes | --shade_stripes)
			COMPREPLY=( $(compgen -W "$shade_stripes"))
			return 0
			;;
			-stripes_y | --stripes_y)
			COMPREPLY=( $(compgen -W "$stripes_y"))
			return 0
			;;
			-shadow_patch | --shadow_patch)
			COMPREPLY=( $(compgen -W "$shadow_patch"))
			return 0
			;;
			-light_patch | --light_patch)
			COMPREPLY=( $(compgen -W "$light_patch"))
			return 0
			;;
			-light_relief | --light_relief)
			COMPREPLY=( $(compgen -W "$light_relief"))
			return 0
			;;
			-noise_hurl | --noise_hurl)
			COMPREPLY=( $(compgen -W "$noise_hurl"))
			return 0
			;;
			-pixelize | --pixelize)
			COMPREPLY=( $(compgen -W "$pixelize"))
			return 0
			;;
			-cracks | --cracks)
			COMPREPLY=( $(compgen -W "$cracks"))
			return 0
			;;
			-apply_channels | --apply_channels)
			COMPREPLY=( $(compgen -W "$apply_channels"))
			return 0
			;;
			-to_colormode | --to_colormode)
			COMPREPLY=( $(compgen -W "$to_colormode"))
			return 0
			;;
			-select_color | --select_color)
			COMPREPLY=( $(compgen -W "$select_color"))
			return 0
			;;
			-replace_color | --replace_color)
			COMPREPLY=( $(compgen -W "$replace_color"))
			return 0
			;;
			-fc | --fc)
			COMPREPLY=( $(compgen -W "$fc"))
			return 0
			;;
			-fill_color | --fill_color)
			COMPREPLY=( $(compgen -W "$fill_color"))
			return 0
			;;
			-mix_rgb | --mix_rgb)
			COMPREPLY=( $(compgen -W "$mix_rgb"))
			return 0
			;;
			-mix_channels | --mix_channels)
			COMPREPLY=( $(compgen -W "$mix_channels"))
			return 0
			;;
			-red_eye | --red_eye)
			COMPREPLY=( $(compgen -W "$red_eye"))
			return 0
			;;
			-fade_x | --fade_x)
			COMPREPLY=( $(compgen -W "$fade_x"))
			return 0
			;;
			-fade_y | --fade_y)
			COMPREPLY=( $(compgen -W "$fade_y"))
			return 0
			;;
			-fade_z | --fade_z)
			COMPREPLY=( $(compgen -W "$fade_z"))
			return 0
			;;
			-fade_radial | --fade_radial)
			COMPREPLY=( $(compgen -W "$fade_radial"))
			return 0
			;;
			-fade_diamond | --fade_diamond)
			COMPREPLY=( $(compgen -W "$fade_diamond"))
			return 0
			;;
			-fade_linear | --fade_linear)
			COMPREPLY=( $(compgen -W "$fade_linear"))
			return 0
			;;
			-compose_edges | --compose_edges)
			COMPREPLY=( $(compgen -W "$compose_edges"))
			return 0
			;;
			-morph | --morph)
			COMPREPLY=( $(compgen -W "$morph"))
			return 0
			;;
			-register_nonrigid | --register_nonrigid)
			COMPREPLY=( $(compgen -W "$register_nonrigid"))
			return 0
			;;
			-register_rigid | --register_rigid)
			COMPREPLY=( $(compgen -W "$register_rigid"))
			return 0
			;;
			-deinterlace | --deinterlace)
			COMPREPLY=( $(compgen -W "$deinterlace"))
			return 0
			;;
			-apply_pose3d | --apply_pose3d)
			COMPREPLY=( $(compgen -W "$apply_pose3d"))
			return 0
			;;
			-animate3d | --animate3d)
			COMPREPLY=( $(compgen -W "$animate3d"))
			return 0
			;;
			-balls3d | --balls3d)
			COMPREPLY=( $(compgen -W "$balls3d"))
			return 0
			;;
			-pyramid3d | --pyramid3d)
			COMPREPLY=( $(compgen -W "$pyramid3d"))
			return 0
			;;
			-text3d | --text3d)
			COMPREPLY=( $(compgen -W "$text3d"))
			return 0
			;;
			-sierpinski3d | --sierpinski3d)
			COMPREPLY=( $(compgen -W "$sierpinski3d"))
			return 0
			;;
			-snapshot3d | --snapshot3d)
			COMPREPLY=( $(compgen -W "$snapshot3d"))
			return 0
			;;
			-x_mandelbrot | --x_mandelbrot)
			COMPREPLY=( $(compgen -W "$x_mandelbrot"))
			return 0
			;;
			-x_jawbreaker | --x_jawbreaker)
			COMPREPLY=( $(compgen -W "$x_jawbreaker"))
			return 0
			;;
	esac

	if [[ "$cur" == -* ]] ; then
		COMPREPLY=($(compgen -W "$opts" -- "$cur" ))
	else
		_filedir
	fi
}

	complete -o filenames -F _gmic gmic