
    iBK                        d dl mZmZ dZ eej                               Zd Zd Zd Z	dddd	d
dddddd
Z
i dddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=
d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQi dRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddi ddddddddddddddddddddddddddddddēddƓddȓi ddʓdd̓ddΓddГddғddԓdd֓ddؓddړddܓddޓdddddddddddddddddddddddddddddddddd ddddddddd	d
dddddddddi ddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=Zej                         D  ci c]0  } | j                         D ]  \  }}|j                  d>      d    | 2 c}}} Zy?c c}}} w (@      )print_functionunicode_literalszza c e2d e2ds e2dsa e2t e2ts e2tsr e2v e2vp e2vu ed emp i j lo mcr mte mth mtm mtp nb nc nid nih nth nw p q s ss sss v z zvc                      i ddddddddd	d
dddddddddddddddddddddd d!d"} d#D ]  }|| |<   	 | S )$zargv-to-volflag: simple boolsdav_authdavauthdav_rtdavrteddotshardlink_onlyhardlinkonlyno_clonenocloneno_dirsznodirszno_dupenodupe	no_dupe_mnodupem	no_forgetnoforgetno_pipenopipe	no_robotsnorobotsno_tailnotailno_thumbdthumb	no_vthumbdvthumb	no_athumbdathumbvol_nospawnnospawnvol_or_crashassert_root).dedupdlnidotsrche2de2dse2dsae2te2tse2tsre2ve2vue2vpexpgridgselhardlinkmagicmd_no_brno_db_ipno_sb_mdno_sb_lgnsortog
og_no_head
og_s_titleopdsrandreflink
rm_partialrmagicrss	ui_noacci	ui_nocpla	ui_nolbar	ui_nombarui_nonav	ui_notree	ui_norepl	ui_nosrvi	ui_noctxbwo_up_readmewramxdevxlinkxvolzipmaxu retks     @/home/ubuntu/myenv/lib/python3.12/site-packages/copyparty/cfg.pyvf_bmapr[      s    I' 	f 		
 	I 	I 	8 	Y 	Z 	8 	Z 	8 	H 	Y 	Y  	y!" 	#C&/ 0` Aa0b J    c            
      6    ddddddddd	d
	} dD ]  }|| |<   	 | S )zargv-to-volflag: simple valuesaconvtnohashnoidxscan	safededupconvtthsizecropth3x)	ac_convtno_hashno_idx	re_maxage
safe_dedupth_convtth_sizeth_cropth_x3)Bapnd_whobup_ckcachectlcasechkchmod_dchmod_fdbddb_xattrdu_who	epiloguesufavico	forget_ipfsnthsortn	html_headhtml_head_slg_sbfmd_sbflg_sbamd_sbamd_histnrandu2owog_descog_siteog_thog_title
og_title_a
og_title_v
og_title_iog_tplog_ua	opds_exts	prologuespreadmesput_ckput_namereadmesmv_retryrm_retryrss_sort	rss_fmt_t	rss_fmt_drw_editshr_whosorttail_fd	tail_rate	tail_tmaxtail_whotcolorth_qvth_qvx	th_spec_ptxt_eolunlistu2abortu2tsuidgidunp_whoups_whozip_whozipmaxnzipmaxszipmaxtrV   rW   s     rZ   vf_vmapr   U   sO     !
CC DH AIDJ Jr\   c                  "    i } dD ]  }|| |<   	 | S )zargv-to-volflag: complex/lists)exp_lgexp_mdext_thmtemthmtpxacxadxarxauxbanxbcxbdxbrxbuxiuxmrV   rW   s     rZ   vf_cmapr      s*    
C & A'( Jr\   z*read; list folder contents, download filesz0write; upload files; need "r" to see the uploadsz5move; move files and folders; need "w" at destinationz,delete; permanently delete files and foldersz/dots; user can ask to show dotfiles in listingsz3get; download files, but cannot see folder contentsz<upget; same as "g" but can see filekeys of their own uploadsz5html; same as "g" but folders return their index.htmlz*admin; can see uploader IPs, config-reloadz7all; same as 'rwmda.' (read/write/move/delete/dotfiles))
rwmd.gGhaAr(   z'enable symlink-based file deduplicationr7   z[enable hardlink-based file deduplication,
with fallback on symlinks when that is impossibler   zSdedup with hardlink only, never symlink;
make a full copy if hardlink is impossiblerC   z[enable reflink-based file deduplication,
with fallback on full copy when that is impossiblerb   z-verify on-disk data before using it for dedupr   z5take dupe data from clients, even if available on HDDr   z8rejects existing files (instead of linking/cloning them)r   z+rejects existing files during moves as wellzcasechk=autoz1actively prevent case-insensitive filesystem? y/nzchmod_d=755z$unix-permission for new dirs/folderszchmod_f=644zunix-permission for new fileszuid=573z2change owner of new files/folders to unix-user 573zgid=999z3change owner of new files/folders to unix-group 999z	fsnt=autoz-filesystem filename traits (lin/win/mac/auto)rQ   zallow uploading into ramdiskssparsez7force use of sparse files, mainly for s3-backed storagenosparsez1deny use of sparse files, mainly for slow storagez4delete unfinished uploads from HDD when they timeoutzlenable full WebDAV write support (dangerous);
PUT-operations will now [1;31mOVERWRITE[0;35m existing filesz1forces all uploads into the top folder of the vfsz/enables filetype detection for nameless uploadsz&fallback filename for nameless uploadsz.default checksum-hasher for PUT/WebDAV uploadsz-default checksum-hasher for bup/basic uploadsz7allows server-side gzip compression of uploads with ?gzz7allows server-side lzma compression of uploads with ?xzz2forces server-side compression, optional arg: xz,9)
rD   dawnosubr8   r   r   rq   gzxzpkzwho can append? (aw/dw/w/no)zmax 250 uploads over 15minz-max 1 GiB over 5min (suffixes: b, k, m, g, t)z5total volume size max 1 GiB (suffixes: b, k, m, g, t)z2max 4096 files in volume (suffixes: b, k, m, g, t)z5return medialinks for non-up2k uploads (not hotlinks)z:write-only users can upload logues without getting renamedz3force randomized filenames, 9 chars long by defaultz%randomized filenames are N chars longz2overwrite existing files? 0=no 1=if-older 2=alwaysz/[f]orce [c]lient-last-modified or [u]pload-timezDallow aborting unfinished uploads? 0=no 1=strict 2=ip-chk 3=acct-chkz&allow filesizes between 1 KiB and 3MiBzensure 1 GiB free disk space)zapnd_who=dwzmaxn=250,600zmaxb=1g,300zvmaxb=1gzvmaxn=4k
medialinksrP   rB   znrand=Nzu2ow=Nzu2ts=fcz	u2abort=1zsz=1k-3mzdf=1gz/3 levels of subfolders with 100 entries in eachzdate-formatted organizingztimezone (default=UTC)z uploads are deleted after 1 hour)z
rotn=100,3zrotf=%Y-%m/%d-%Hzrotf_tz=Europe/Oslozlifetime=3600r+   z=enable database; makes files searchable + enables upload-undor,   z>scan writable folders for new files on startup; also sets -e2dr-   z:scans all folders for new files on startup; also sets -e2dr.   z@enable multimedia indexing; makes it possible to search for tagsr/   z7scan existing files for tags on startup; also sets -e2tr0   z:delete all metadata from DB (full rescan); also sets -e2tsd2tsz/disables metadata collection for existing filesr1   z@verify integrity on startup by hashing files and comparing to dbr2   z=when e2v fails, update the db (assume on-disk files are good)r3   z(when e2v fails, panic and quit copypartyd2dsz*disables onboot indexing, overrides -e2ds*d2tz-disables metadata collection, overrides -e2t*d2vz+disables file verification, overrides -e2v*d2dz+disables all database stuff, overrides -e2*zhist=/tmp/cdbz,puts thumbnails and indexes at that locationzdbpath=/tmp/cdbzputs indexes at that locationzlandmark=fooz$disable db if file foo doesn't existz3scan for new files every 60sec, same as --re-maxagez1skips hashing file contents if path matches *.isoz2fully ignores the contents at paths matching *.isoz)don't forget files when deleted from diskz'forget uploader-IP after 30 days (GDPR)z2never store uploader-IP in the db; disables unpostz.avoid excessive reindexing on android sdcardfsz"database speed-durability tradeoffz1cross-volume dupe detection / linking (dangerous)z%do not descend into other filesystemsz.do not follow symlinks leaving the volume rootzshow dotfiles in search resultsz)hide dotfiles in search results (default)z3exclude search results with URL matching this regexzindex file xattrs as media-tags)zscan=60znohash=\.iso$znoidx=\.iso$r   zforget_ip=43200r:   fat32zdbd=[acid|swal|wal|yolo]rS   rR   rT   r*   	nodotsrch	srch_exclzdb_xattr=user.foo,user.barzmedia-tags to index/displayzmedia-tags to hide by defaultzYuses the "audio-bpm.py" program to
generate ".bpm" tags from uploads (f = overwrite tags)zcollects two tags at once)zmte=artist,titlezmth=fmt,res,aczmtp=.bpm=f,audio-bpm.pyzmtp=ahash,vhash=media-hash.pyzdisables all thumbnailszdisables video thumbnailsz(disables audio thumbnails (spectrograms)zdisables image thumbnailsz#compress audio waveforms 33% betterzthumbnail res; WxHzcenter-cropping (y/n/fy/fn)z3x resolution (y/n/fy/fn)z"webp/jpg thumbnail quality (10~90)zjxl thumbnail quality (10~90)z#convert-to-image timeout in secondsz#convert-to-audio timeout in secondsz.make spectrograms? 0=never 1=fallback 2=alwaysz,use /b.png as thumbnail for file-extension s)r   r!   r#   dithumbpngquantrd   re   rf   zth_qv=40z	th_qvx=40rc   r^   zth_spec_p=1zext_th=s=/b.pngz handle 404s by executing PY filez handle 403s by executing PY file)zon404=PYzon403=PYz'execute CMD before a file upload startsz)execute CMD after  a file upload finishesz8execute CMD after  all uploads finish and volume is idlezexecute CMD before a file copyzexecute CMD after  a file copyz%execute CMD before a file rename/movez%execute CMD after  a file rename/movez execute CMD before a file deletez execute CMD after  a file deletezexecute CMD on messagez"execute CMD if someone gets banned)zxbu=CMDzxau=CMDzxiu=CMDzxbc=CMDzxac=CMDzxbr=CMDzxar=CMDzxbd=CMDzxad=CMDzxm=CMDzxban=CMDr5   zshow grid/thumbnails by defaultr6   z"select files in grid by ctrl-clickr   zdefault sort orderr=   z+natural-sort of leading digits in filenamesr}   z)number of sort-rules to add to media URLszufavico=URLz%per-volume favicon (.ico/png/gif/svg)r   zdont list files matching REGEXr)   z)force-download (no-inline) files on clickzhtml_head=TXTz5includes TXT in the <head>, or @PATH for file at PATHzhtml_head_s=TXTz)additional static text in the html <head>ztcolor=#fc0z3theme color (a hint for webbrowsers, discord, etc.)r   zdon't show total folder sizez
du_who=allz show disk-usage info to everyonerobotsz+allows indexing by search engines (default)r   z#kindly asks search engines to leaveunlistcrz&don't list read-access in controlpanelunlistcwz'don't list write-access in controlpanelzprologues=.prologue.htmlz!files to embed above/before fileszepilogues=.epilogue.htmlz files to embed below/after fileszreadmes=readme.md,README.mdzfiles to embed as readmeszpreadmes=preadme.md,PREADME.mdzfiles to embed as preadmesr;   z%disable js sandbox for markdown filesr<   z(disable js sandbox for prologue/epiloguesb_mdz.enable js sandbox for markdown files (default)sb_lgz1enable js sandbox for prologue/epilogue (default)r   z.list of markdown-sandbox safeguards to disabler   z,list of *logue-sandbox safeguards to disabler   z/value of iframe allow-prop for markdown-sandboxr   z-value of iframe allow-prop for *logue-sandboxnohtmlz%return html and markdown as text/htmlrG   zhide account-info in the UIrH   zhide cpanel-link in the UIrI   zhide link-bar in the UIrJ   zhide top-menu in the UIz"hide navpane+breadcrumbs in the UIzhide navpane in the UIzhide repl-button in the UIzhide server-info in the UIzhide context-buttons in the UI)rK   rL   rM   rN   rO   zenable OG (disables hotlinking)z.sitename; defaults to --name, disable with '-'z0description text for all files; disable with '-'z-thumbnail format; j / jf / jf3 / w / w3 / ...z7audio title format; default: {{ artist }} - {{ title }}z(video title format; default: {{ title }}z(image title format; default: {{ title }}z+fallback title if there's nothing in the dbz*force default title; do not read from tagsz#custom html; see --og-tpl in --helpz)you want to add tags manually with og_tplz=if defined: only send OG html if useragent matches this regex)r>   r   r   zog_th=jfr   r   r   zog_title=foor@   r   r?   r   zenable OPDSzBfile formats to list in OPDS feeds; leave empty to show everything)rA   r   z,only require read+write to edit .md and .txtz4newline only on double-newline or two tailing spacesz=where to put markdown backups; s=subfolder, v=volHist, n=nopez)enable textfile expansion; see --help-expz4placeholders to expand in markdown files; see --helpz7placeholders to expand in prologue/epilogue; see --helpz4enable EOL conversion when writing docs (LF or CRLF))zrw_edit=md,txtr9   r   r4   r   r   z
txt_eol=lfz4disable ?tail (download a growing file continuously)z/check if file was replaced (new fd) every 1 secz check for new data every 0.2 seczkill connection after 30 secz4restrict ?tail access (1=admins,2=authed,3=everyone))r   z	tail_fd=1ztail_rate=0.2ztail_tmax=30z
tail_who=2z&allow '?rss' URL suffix (experimental)zdefault sort-order (m/u/n/s)zdefault title-formatzdefault description-format)rF   z
rss_sort=mzrss_fmt_t={fname}zrss_fmt_d={album},{.tn}r   zRallow all users with read-access to
enable the option to show dotfiles in listingszfk=8zgenerates per-file accesskeys,
which are then required at the "g" permission;
keys are invalidated if filesize or inode changeszfka=8zgenerates slightly weaker per-file accesskeys,
which are then required at the "g" permission;
not affected by filesize or inode numberszdk=8zgenerates per-directory accesskeys,
which are then required at the "g" permission;
keys are invalidated if filesize or inode changesdksz4per-directory accesskeys allow browsing into subdirsdkyzuallow seeing files (not folders) inside a specific folder
with "g" perm, and does not require a valid dirkey to do sorE   z(expensive analysis for mimetype accuracyzshr_who=authz who can create shares? no/auth/az	unp_who=2z.unpost only if same... 1=ip+name, 2=ip, 3=namez	ups_who=2z+restrict viewing the list of recent uploadsz	zip_who=2z&restrict access to download-as-zip/tarz
zipmaxn=9kz.reject download-as-zip if more than 9000 filesz
zipmaxs=2gz)reject download-as-zip if size over 2 GiBz
zipmaxt=noz.reply with 'no' if download-as-zip exceeds maxrU   z4zip-size-limit does not apply to authenticated usersr   z3disable race-the-beam (download unfinished uploads)zcachectl=no-cachezcontrols caching in webbrowsersz+ms-windows: timeout for renaming busy filesz+ms-windows: timeout for deleting busy filesz)don't create volume's folder if not existz-crash on startup if volume's folder not existz+ask webdav clients to login for all folderszzshow lastmod time of symlink destination, not the link itself
(note: this option is always enabled for recursive listings))r   r   r%   r'   r   r	   )zuploads, generalzupload ruleszGupload rotation
(moves all uploads into the specified folder structure)zdatabase, generalzTdatabase, audio tags
"mte", "mth", "mtp", "mtm" all work the same as -mte, -mth, ...
thumbnailsz.handlers
(better explained in --help-handlers)z.event hooks
(better explained in --help-hooks)zclient and uxzopengraph (discord embeds)rA   	textfilestailingrF   others=N)
__future__r   r   zssetsplitonedashr[   r   r   	permdescsflagcatsvaluesitems	flagdescs)tabrY   vs   000rZ   <module>r      s   7 B
bhhj/FRRj6 
6	;	@	7	:	>	G	@	5	B	:r 	n 	q	
 	D 	J 	L 	@ 	K 	= 	6 	G 	H 	D 	/  	K!" 	G#$ M EDB<BAGGB7< 64FKHMTE:FD[</" H77;	Q!N!P! 	M! 	Q	!
 	I! 	M! 	A! 	Q! 	O! 	:! 	<! 	>! 	<! 	<! 	G!  	:!!" 	>#!$ IMM?DHA$HD7@4@J&GA!F :9#)D	^ ,.=.9&-+8467GI" 768
 =>M33::55*88(1(4( 	$( 	>	(
 	=( 	>( 	2( 	;( 	P( 	F( 	L( 	1( 	8( 	?( 	9(  	<!(" 	=#($ 	#$G%(& 	#$F'(( 	&'B)(* 	)*F+(, 	;-(. 	>/(0 	A1(2 	D3(4 	B5(6 	@7(8 	C9(: 	A;(< 	9=(> 	2?(@ 	1A(B 	.C(D 	.E(F 9-115O(T 0CECO@@EB7AP# Y
 IJR:HKL IF;6L 843#?	e  T 	  ] 	  Y	
 	E 	  H 	< 	: 	E 	B 	= 	F 	A 	F 	I  	G!" 	>#$ BA>F@ O/]gT ,4??+<UUCUAQWWS\!_aU_U	Us   &5I"